this post was submitted on 08 Jun 2025
279 points (97.6% liked)

Programmer Humor

36257 readers
798 users here now

Post funny things about programming here! (Or just rant about your favourite programming language.)

Rules:

founded 5 years ago
MODERATORS
top 39 comments
sorted by: hot top controversial new old
[–] Natanox@discuss.tchncs.de 10 points 2 hours ago (1 children)

Rust: Borrow handler got mad at you for asking

(I'd assume)

[–] drbluefall@toast.ooo 9 points 2 hours ago (1 children)

It's either a reference to an object instance, or the instance itself (depending on whether you specified &mut self, &self or just self).

[–] ferric_carcinization@lemmy.ml 3 points 58 minutes ago

Don't forget Self, the type of self.

[–] bobo1900@sopuli.xyz 41 points 4 hours ago (5 children)

Partially unrelated to the meme, but I find it almost malicious how some python keywords are named differently from the nearly universal counterpart of other languagues.

This/self, continue/pass, except/catch and they couldn't find a different word for switch so they just didn't implement it.

It's as if the original designers purposefully wanted to be different for the sake of it.

[–] CanadaPlus@lemmy.sdf.org 1 points 49 minutes ago

PHP naming "::" a Paamayim Nekudotayim is also pretty infamous.

When I'm designing shit, I'm pretty zealous about borrowing terminology from anything even vaguely related to avoid this.

[–] lime@feddit.nu 27 points 4 hours ago (1 children)

pass and continue are absolutely not equal (pass is a noop, and python has a continue keyword that does what you think), and switch is called match like in many other languages. except is weird though.

[–] Phen@lemmy.eco.br 3 points 2 hours ago

"except" is also used in Pascal (or at least the main derivatives of it), but not sure if that's older than its use in Python or not.

[–] scrubbles@poptalk.scrubbles.tech 4 points 3 hours ago (3 children)

Iv come to loathe the "pythonic way" because of this. They claim they wanted to make programming easier, but they sure went out of their way to not follow conventions and make it difficult to relearn. For example, for me not having lambdas makes python even more complex to work with. List operations are incredibly easy with map and filter, but they decided lambdas weren't "pythonic" and so we have these big cumbersome things instead with wildly different syntax.

Speaking of big cumbersome things with wildly different syntax have you tried a ternary operation in python lately? Omg that thing is ugly. JavaScripts is hard to beat.

uglyTernary = True: if python_syntax == “shit” else: False prettyTernary = javascript_syntax == “pretty” ? true : false

[–] jacksilver@lemmy.world 6 points 3 hours ago (2 children)

Maybe I'm missing something, but:

[–] wewbull@feddit.uk 4 points 2 hours ago (1 children)

So much Python criticism comes from people who don't know the language.

[–] jacksilver@lemmy.world 1 points 1 hour ago

I mean, there is a lot wrong with it, but every language has its quirks. Generally I like discussing it's actual flaws cause it helps me better understand the language.

[–] Natanox@discuss.tchncs.de 3 points 2 hours ago* (last edited 2 hours ago)

And switch cases (called match cases) are there as well.

I use lambdas all the time to shovel GTK signal emitions from worker threads into GLib.idle_add in a single line, works as you'd expect.

Previous commenters probably didn't look at Python in a really long time.

[–] MonkderVierte@lemmy.zip 1 points 3 hours ago

Tf, who needs lambdas in python?

[–] bestelbus22@lemmy.world 12 points 4 hours ago (1 children)

I read that self as a keyword also has quite a history. It was already used in Smalltalk, an OOP language from the early 80's.

[–] Jambalaya@lemmy.zip 7 points 4 hours ago (2 children)

Isn't self not actually a keyword? Like you can name the first variable in a class method anything and it will behave like self.

[–] Diplomjodler3@lemmy.world 10 points 3 hours ago (1 children)

You could use "this" instead of "self". And if you want a lynch mob of Python programmers outside your house, make a push request with that to some commonly used package.

[–] pastermil@sh.itjust.works 3 points 1 hour ago (2 children)

I think there will be a lynch mob of git users outside your house for calling PR as "push request".

[–] lime@feddit.nu 4 points 1 hour ago

only github users. git itself doesn't have PRs, and other forges call them different things. gitlab calls them merge requests, pico calls them patch requests...

[–] Diplomjodler3@lemmy.world 5 points 1 hour ago

I've been wondering about the noise.

[–] mkwt@lemmy.world 1 points 3 hours ago

You could even choose the name this.

[–] Dagnet@lemmy.world 2 points 4 hours ago

List instead of array, dict instead on object (tho it also has objects)

[–] Phen@lemmy.eco.br 2 points 2 hours ago

The last bullet point is not really that common anymore.

[–] schnurrito@discuss.tchncs.de 42 points 5 hours ago (1 children)

TBF the last two bullet points are verbose descriptions of the thing it means in C++, Java, and Python too. It's just that in JS, "this" can also be used in other places.

But yeah, in practice, every time I write JS I want to throw my hands in the air and shout "this is bullshit", but never know what "this" refers to... :D

[–] bestelbus22@lemmy.world 8 points 5 hours ago

Yeah that's fair, though it also discusses that whole prototype thing that JS has going on

[–] bjoern_tantau@swg-empire.de 7 points 4 hours ago

My JS:

Ah, you mean that?

[–] AdamEatsAss@lemmy.world 10 points 5 hours ago (2 children)

In Python you can use this as a variable name

[–] pennomi@lemmy.world 6 points 4 hours ago* (last edited 4 hours ago) (4 children)

In Python you can use 🍆 as a variable name.

Edit: oops, guess I was mistaken, you can use most Unicode but emojis are not valid.

[–] CanadaPlus@lemmy.sdf.org 1 points 48 minutes ago

Edit: oops, guess I was mistaken, you can use most Unicode but emojis are not valid.

That actually seems even more arbitrary. Like, do they just hate fun?

[–] captain_aggravated@sh.itjust.works 1 points 54 minutes ago

you might be thinking of Rust.

[–] embed_me@programming.dev 8 points 4 hours ago (1 children)

Just going by the reputation, you probably can do this in JavaScript

[–] scott@lemmy.org 1 points 1 hour ago
~ $ python
Python 3.12.10 (main, Apr  9 2025, 18:13:11) [Clang 18.0.3 (https://android.googlesource.com/toolchain/llvm-project d8003a456 on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> ❗ = 'nah'
  File "<stdin>", line 1
    ❗ = 'nah'
    ^
SyntaxError: invalid character '❗' (U+2757)
>>>
~ $ node
Welcome to Node.js v23.11.1.
Type ".help" for more information.
> const 👍 = 'test'
const 👍 = 'test'
      ^

Uncaught SyntaxError: Invalid or unexpected token
>
[–] QuazarOmega@lemy.lol 2 points 4 hours ago (1 children)
[–] mkwt@lemmy.world 2 points 3 hours ago

The source character set is implementation defined.

[–] ryedaft@sh.itjust.works 4 points 4 hours ago (1 children)

You can use anything that doesn't start with a digit or punctuation as a variable name (underscore beginning also allowed) unless it's a keyword.

[–] funkless_eck@sh.itjust.works 2 points 3 hours ago* (last edited 3 hours ago) (1 children)

_ (sic) as a variable name is often used when a function returns multiple outputs but you only want one

 def my_function 
      return 1, 2, 3

 _, two, _ = my_function()
[–] ryedaft@sh.itjust.works 3 points 3 hours ago

Underscore alone is a special variable name and I'm pretty sure anything assigned to it goes straight to garbage collection. Whereas _myvariable is typically use to indicate a "private" class variable or method (Python doesn't have private so it's just a convention).

[–] Demdaru@lemmy.world 4 points 5 hours ago (1 children)

Not much experience, but quickly learned .bind() in JS after it switched me to window instead of object.

[–] bleistift2@sopuli.xyz 1 points 1 hour ago

The key is to not reassign function names to local variables.

const print = obj.toString
print() // gives you a bad time