this post was submitted on 28 May 2025
729 points (96.3% liked)

Programmer Humor

23899 readers
1488 users here now

Welcome to Programmer Humor!

This is a place where you can post jokes, memes, humor, etc. related to programming!

For sharing awful code theres also Programming Horror.

Rules

founded 2 years ago
MODERATORS
 

Also, do y'all call main() in the if block or do you just put the code you want to run in the if block?

you are viewing a single comment's thread
view the rest of the comments
[–] eager_eagle@lemmy.world 33 points 1 week ago* (last edited 1 week ago) (3 children)

I work in an academic / research environment. Depending who wrote it, even seeing a __name__ == "__main__" is a bit of a rare thing...

[–] SpaceNoodle@lemmy.world 23 points 1 week ago (1 children)

Academic code is absolutely horrific.

Fortunately, it is possible to translate it for practical applications.

[–] arbitrary_sarcasm@lemmy.world 13 points 1 week ago

As someone in academia who writes code, I can confirm.

[–] HK65@sopuli.xyz 16 points 1 week ago (1 children)

Do you also have nothing but love for those 50+ cell Jupyter notebooks that don't use a single function and have everything in the global scope?

[–] eager_eagle@lemmy.world 15 points 1 week ago (1 children)

the best thing is when not even the author knows the correct order of running the cells; because of course it isn't top-to-bottom.

[–] HK65@sopuli.xyz 11 points 1 week ago

Yeah, and also zero dependency management, so you are free to figure out what combination of Python, Tensorflow and Keras will make it not throw random exceptions.

And don't forget the number one rule: you must use all the graphing libraries, all the time.

[–] brian@programming.dev 4 points 1 week ago

python isn't the only language to do "execute everything imported from a particular file and all top level statements get run". both node and c# (but with restrictions on where top level statements can be) can do that type of thing, I'm sure there's more.

python conventions are unique because they attempt to make their entrypoint also importable itself without side effects. almost no one needs to do that, and I imagine the convention leaked out from the few people that did since it doesn't hurt either.

for instance in node this is the equivalent, even though I've never seen someone try before:

if (path.resolve(url.fileURLToPath(import.meta.url)).includes(path.resolve(process.argv[1])))
{
  // main things
}