this post was submitted on 08 Jun 2025
526 points (97.5% liked)

Programmer Humor

36878 readers
82 users here now

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

Rules:

founded 5 years ago
MODERATORS
top 50 comments
sorted by: hot top controversial new old
[–] bobo1900@sopuli.xyz 81 points 3 weeks ago* (last edited 3 weeks ago) (21 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, catch/except 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.

[–] lime@feddit.nu 66 points 3 weeks 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 11 points 3 weeks 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.

[–] bestelbus22@lemmy.world 22 points 3 weeks 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 16 points 3 weeks 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 17 points 3 weeks 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 14 points 3 weeks ago (2 children)

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

[–] Diplomjodler3@lemmy.world 10 points 3 weeks ago* (last edited 3 weeks ago) (1 children)

I've been wondering about the noise.

Edit: turns out, they weren't there to lynch me. They just gave me a two hour lecture on proper usage of git.

[–] naught@sh.itjust.works 3 points 3 weeks ago* (last edited 3 weeks ago)

TECHNICALLY, there is no such thing as a pull request in git. That's a Github convention. It's really a merge request

e: drat someone already out-pedantic'd me

[–] lime@feddit.nu 8 points 3 weeks 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...

load more comments (1 replies)
[–] sjmarf@sh.itjust.works 17 points 3 weeks ago (1 children)

Python does have a switch statement now, actually. And yes, they went out of their way to call it something different - match.

https://docs.python.org/3/tutorial/controlflow.html#match-statements

[–] NichtElias@sh.itjust.works 11 points 3 weeks ago (1 children)

match isn't just equivalent to switch though, so in this case it actually makes sense to call it something different.

load more comments (1 replies)
[–] CanadaPlus 15 points 3 weeks ago (4 children)

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.

load more comments (4 replies)
[–] SolNine@lemmy.ml 3 points 3 weeks ago (2 children)

List and Array terminology also bothers me ... Why not just call it an array?

load more comments (2 replies)
load more comments (16 replies)
[–] schnurrito@discuss.tchncs.de 57 points 3 weeks 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 10 points 3 weeks ago

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

[–] WolfLink@sh.itjust.works 47 points 3 weeks ago (2 children)

In Python, self is not a keyword, it’s a conventional variable name. You can replace all instances of “self” with “this” and your code will work the same.

[–] jsomae@lemmy.ml 8 points 3 weeks ago (1 children)

Lua might have been a better choice, since self is special in lua.

[–] diemartin@sh.itjust.works 6 points 3 weeks ago* (last edited 2 weeks ago) (1 children)

Kinda.

Lua defines it implicitly only when you use the

function foo:bar(a, b, c) -- note the colon

syntactic sugar, which gets translated to

function foo.bar(self, a, b, c) -- note the period

In all cases, self is a regular variable name. You can even redeclare a new local with that name even when the old one is in scope.

Edit: some typos

[–] jsomae@lemmy.ml 3 points 3 weeks ago (1 children)

I don't see how what you said is inconsistent with me saying "self" is special in lua. Note that I did not say it's a keyword.

load more comments (1 replies)
[–] SkyNTP@lemmy.ml 7 points 3 weeks ago

Python is just distancing itself from JS.

[–] dan@literature.cafe 29 points 3 weeks ago

Sweet dreams are made of this

[–] Natanox@discuss.tchncs.de 24 points 3 weeks ago (1 children)

Rust: Borrow handler got mad at you for asking

(I'd assume)

[–] drbluefall@toast.ooo 19 points 3 weeks 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 13 points 3 weeks ago

Don't forget Self, the type of self.

[–] JakenVeina@lemm.ee 14 points 3 weeks ago

Alternative image for C: Mr. Incredible: "A PARAMETER IS A PARAMETER!"

[–] bjoern_tantau@swg-empire.de 12 points 3 weeks ago

My JS:

Ah, you mean that?

[–] AdamEatsAss@lemmy.world 11 points 3 weeks ago (2 children)

In Python you can use this as a variable name

[–] pennomi@lemmy.world 9 points 3 weeks ago* (last edited 3 weeks 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 10 points 3 weeks 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?

[–] embed_me@programming.dev 10 points 3 weeks ago (1 children)

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

[–] scott@lemmy.org 4 points 3 weeks 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
>

you might be thinking of Rust.

[–] QuazarOmega@lemy.lol 4 points 3 weeks ago (1 children)
[–] mkwt@lemmy.world 4 points 3 weeks ago

The source character set is implementation defined.

[–] ryedaft@sh.itjust.works 4 points 3 weeks 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 3 points 3 weeks ago* (last edited 3 weeks ago) (2 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 6 points 3 weeks ago* (last edited 3 weeks 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 used to indicate a "private" class variable or method (Python doesn't have private so it's just a convention).

load more comments (1 replies)
[–] xiii@lemmy.world 8 points 3 weeks ago* (last edited 3 weeks ago) (1 children)

I was working on a C code base with classes, inheritance, and polymorphism, all done by hands and macros.

Something like

typedef struct s_some_class {
    void (*method)(this *s_some_class);
} t_some_class;

Overall, learning C was the best enabler in my whole career. For instance I was learning Python by tinkering with CPython VM, so when I see these ‘WAT’ quircks I know exactly what’s up.

[–] bestelbus22@lemmy.world 4 points 3 weeks ago (3 children)

Interesting, how did they do inheritance? Something like void *super? Also why not switch to CPP if you wanna do OOP?

load more comments (3 replies)
[–] Demdaru@lemmy.world 4 points 3 weeks ago (1 children)

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

load more comments (1 replies)
[–] Phen@lemmy.eco.br 4 points 3 weeks ago

The last bullet point is not really that common anymore.

load more comments
view more: next ›