this post was submitted on 16 Jan 2024
548 points (98.8% liked)

Programmer Humor

19721 readers
68 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 1 year ago
MODERATORS
 
all 33 comments
sorted by: hot top controversial new old
[–] [email protected] 99 points 10 months ago (6 children)

Put it in an if-else and it executes both blocks.

[–] [email protected] 36 points 10 months ago

But only if you don't look

[–] [email protected] 34 points 10 months ago* (last edited 10 months ago) (1 children)
[–] [email protected] 3 points 10 months ago
[–] [email protected] 14 points 10 months ago (1 children)

Fun fact I learned today - you know how when there's a compound conditional, the interpreter stops once the result is known? (Eg, if the left side of an and is false, it's false so it doesn't bother checking the second condition)

Apparently, visual basic doesn't do this thing every other language I know of does... It might be a debug only thing for the convenience of the depreciated ide I'm forced to use, but I did a null check && called a function on it if it's not null, and it blew up

I pride myself on my ability to change to a new programming language and make progress on day one, but vb is truly the most disgusting POS language I've ever seen. From syntax to jarring inconsistencies in language design, it's just gross

[–] noli 2 points 10 months ago (1 children)
  1. That's behaviour that's just part of language design. If you rely on it you should probably check how the language you're using handles it.

  2. relying on that behaviour sounds a lot like "clever" (read unnecessarily unreadable) code

[–] [email protected] 1 points 10 months ago (1 children)

Are you serious? It's one of the most basic and common if statements that exist.

If( foo != null && foo.isBar() )

That's what we're talking about. Looking before you leap.

I take issue with the whole "too clever" argument fundamentally (for a number of reasons), but this isn't some fancy quality of life feature. This is as simple as it gets

[–] noli 1 points 10 months ago (1 children)
[–] [email protected] 1 points 10 months ago (1 children)

Scroll on down to the first common example there champ.

If you really think that's being "too clever" I don't know what to tell you... A big reason I think that argument is bullshit is because writing simple code isn't a goal (what does that even mean?) - readability is a big one, and breaking up every part of every conditional would just lead to unreadable spaghetti

Also, take a look at the languages being discussed. This is a long settled question - every language I've ever used has this.

Including VB, I found out it uses AndAlso...so gross

[–] noli 1 points 10 months ago* (last edited 10 months ago) (1 children)
  1. several languages that are still in use have eager evaluation.

  2. I'm a dumb programmer. The more I need to keep implicit behaviour in mind, the higher the probability I'm writing bugs. Short circuit evaluation is an optimization technique IMO and shouldn't be relied upon for control flow.

  3. The aggressive tone you're using is completely unnecessary and immature, so I'll refrain from responding any further. Have a nice day.

[–] [email protected] 1 points 10 months ago

You're the one who started this by criticizing my knowledge and my coding practices, in response to me sharing one very specific example of why I believe VB is a bad language

I held off because I thought you must've misread it and we'd laugh and maybe talk about language design... But no, you confirmed you just came at me with a bad take extremely dismissively

If you want respect, try showing it.

[–] [email protected] 9 points 10 months ago

Here is one of the programmers who is quantum ready as well

[–] [email protected] 2 points 10 months ago

doesn't the CPU already do this?

[–] [email protected] 0 points 10 months ago* (last edited 10 months ago) (2 children)

Screw else statements, people who use if-return have 180% more readable code.

[–] SpeakinTelnet 5 points 10 months ago (1 children)

Because everyone knows a function stops at the if-else. Nothing ever happens afterward.

[–] [email protected] 3 points 10 months ago

It's much more readable when you use else depending on the checks. You can still use return in an else block.

def Allowed()

  if name == "Octopus1348": return True

  elif name == "Bobert": return True

  else:
        return "You are not allowed to use this script."

print(Allowed())

`

[–] [email protected] 45 points 10 months ago* (last edited 10 months ago) (1 children)
[–] mrkite 29 points 10 months ago (1 children)

Known to cause heisenbugs. They're bugs that disappear when you try to measure them with a debugger or a printf.

[–] [email protected] 16 points 10 months ago

So regular bugs then.

[–] [email protected] 30 points 10 months ago (2 children)

Weird. Booleanish isn't a built-in, I'm pretty sure. I'd like to see the definition.

[–] [email protected] 16 points 10 months ago

This looks like javascript so let me guess the typescript definition

any|unknown

this is a joke, please chill

[–] [email protected] 25 points 10 months ago (1 children)

That gave me an idea: A variable that is only defined when observed by a debugger, otherwise it's null.

[–] [email protected] 9 points 10 months ago

How about an instruction that jumps only when a debugger is attached? Cause that exists.

[–] [email protected] 4 points 10 months ago
[–] [email protected] 4 points 10 months ago

Call me when defining it a second time makes it guaranteed false again.