this post was submitted on 28 May 2025
711 points (96.2% liked)

Programmer Humor

23609 readers
1534 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 32 points 5 days ago* (last edited 5 days 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 5 days ago (1 children)

Academic code is absolutely horrific.

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

[–] arbitrary_sarcasm@lemmy.world 12 points 5 days ago

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

[–] HK65@sopuli.xyz 15 points 5 days 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 14 points 5 days 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 5 days 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 4 days 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
}