this post was submitted on 23 May 2024
265 points (91.5% liked)

Programmer Humor

19699 readers
121 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
 

...from people who seem to refuse to install paredit or coloring plugins for either? ps lisp syntax ftw, it's a feature!

top 50 comments
sorted by: hot top controversial new old
[–] [email protected] 85 points 6 months ago (2 children)

No, YAML can fuck right off. I hate that this shit format is used for cloud stuff.

[–] [email protected] 56 points 6 months ago (2 children)

YAML is the Excel of data formats due to the Norway Problem

[–] [email protected] 21 points 6 months ago (3 children)

OK, that's excessively "convenient" for booleans. But I don't get the passionate YAML hate, seems like a simple enough language for config. Didn't have the pleasure ("pleasure"?) to work with it though, so what's why else is it shitty?

[–] [email protected] 31 points 6 months ago (2 children)

A property can have the wrong indentation and it would still be a syntactically correct yaml. It’s hard to distinguish whether a line is wrongly indented or not. Copy and paste a line and mistakenly use the wrong indentation, and the entire production breaks.

In json it’s much harder to do similar mistakes.

load more comments (2 replies)
[–] [email protected] 27 points 6 months ago

Do a search for 'why yaml is bad' and you'll get a lot of stories.

Constant passing problems, especially when the yaml gets very large and complex. After I implemented a new feature I was pulled into a call with 12-15 people demanding to know why it didn't work. The new feature worked fine, The guys yaml had the wrong amount of white space and so it didn't parse.

[–] [email protected] 19 points 6 months ago

White space in the wrong place? Fails Wrong amount of tabs? Fail

Working in a big configuration file that has a lot of nesting? Good luck.

Best part is that most of these things don't throw errors or anything, it just doesn't work and you are left scratching your head as to why your deploy only fails in the production environment.

load more comments (1 replies)
[–] [email protected] 11 points 6 months ago

Since it’s a superset of JSON, couldn’t you just use the JSON notation if you hate the semantic whitespace?

[–] [email protected] 45 points 6 months ago

I hate YAML so much

[–] [email protected] 41 points 6 months ago (5 children)

Who hates s-expressions? They're elegant as fuck...

Python, on the other hand, deserves all the hate it gets for making whitespace syntactically significant - I even prefer Go's hamfisted go fmt approach to a forced syntax to python's bullshit.

[–] [email protected] 17 points 6 months ago* (last edited 6 months ago) (1 children)

I dgaf about indices starting at 0 or 1, I can deal with case-insensitivity, but syntactically significant whitespace drives me up the wall.

[–] [email protected] 26 points 6 months ago (8 children)

What's so hard to understand about it? It's how you should format your code anyway. Only it's enforced.

[–] [email protected] 11 points 6 months ago* (last edited 6 months ago)

It’s quite often I have to second guess whether the code is correctly intended or not. Is this line supposed to be part of this if block or should I remove that extra indentation? It’s not always entirely obvious. Extra troublesome during refactors.

In other languages it’s always obvious when a line is incorrectly indented.

[–] [email protected] 6 points 6 months ago

sometimes, a script needs to be edited in a plain text editor, without having access to an lsp or any other dev tools.

load more comments (6 replies)
[–] [email protected] 9 points 6 months ago

You take that back, python is my homie!

In all seriousness, I freely admit that I'm biased towards python because it was my first language and remains my favorite. I use an IDE for anything but the simplest scripts, so I've very rarely had any issues with spacing.

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

I hate em cos regardless of language auto formatter takes care of everything. So now im typing extra characters and fucking shit up and confusing myself when moving code between scopes.

[–] pkill 4 points 6 months ago (1 children)

I agree but still you can oftentimes expect that the average person's initial reaction to be somehow reluctant... until they understand it. it's like those foods and drinks that you might need to try a couple times before you start enjoying them.

load more comments (1 replies)
load more comments (1 replies)
[–] [email protected] 34 points 6 months ago* (last edited 6 months ago) (1 children)
I love python:
     Fight me IRL.
[–] Tamkish 39 points 6 months ago (1 children)

fine i will take the bait: thats 5 spaces

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

As long as the next line also has 5 spaces, that's fine. Python only complains about inconsistency, not the exact number of spaces/tabs.

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

Make, on the other hand... Ugh.

[–] [email protected] 4 points 6 months ago (3 children)

What, you don't like tabs and spaces being syntactically different?

load more comments (3 replies)
[–] [email protected] 31 points 6 months ago

Go home OP, you're drunk.

And give us your keys, you've had too much minimalism to drive.

[–] [email protected] 29 points 6 months ago

Load-bearing whitespace is a mistake.

[–] [email protected] 27 points 6 months ago* (last edited 6 months ago) (3 children)

I don't get why people hate semantic whitespace. The whitespace would be there anyway, and if anything it's easier to read as long as you avoid 15 nested if statements, and you're not using a dynamically typed abomination like python.

S-expressions are a hack because the Lisp devs didn't know how to make an actual compiler, and instead had the users write the syntax tree for them. (For legal reasons I am being facetious).

In all honesty, I can understand the reason people love s-expressions, but to me they're just unreadable at a glance.

[–] [email protected] 23 points 6 months ago

Semantic whitespace is awful because whitespace (something that you can't actually see) has meaning in how the program runs. Braces { } for scopes gives you the ability to easily tell at a glance where a scope ends. Whitespace doesn't allow for that. Especially, especially when you can accidentally exit a scope (two new lines in a row with Python) and it's not actually an error (Pythons global scope). Yeah formatters and linters make this less of an issue but it sucks... Languages with legible symbols for scoping are significantly easier to reason about, see end symbols in Lua.

[–] yogsototh 12 points 6 months ago (1 children)

S-expressions are a hack because the Lisp devs didn’t know how to make an actual compiler, and instead had the users write the syntax tree for them. (For legal reasons I am being facetious).

Just for anyone thinking you are serious; https://en.wikipedia.org/wiki/M-expression I love how S-expression existed.

McCarthy had planned to develop an automatic Lisp compiler (LISP 2) using M-expressions as the language syntax and S-expressions to describe the compiler's internal processes. Stephen B. Russell read the paper and suggested to him that S-expressions were a more convenient syntax. Although McCarthy disapproved of the idea, Russell and colleague Daniel J. Edwards hand-coded an interpreter program that could execute S-expressions.[2] This program was adopted by McCarthy's research group, establishing S-expressions as the dominant form of Lisp.

load more comments (1 replies)
[–] [email protected] 6 points 6 months ago

I literally can't see whitespace, it gives me headaches looking for it. With brackets, I can get bracket matching in my IDE.

[–] [email protected] 21 points 6 months ago (2 children)

ITT: Developers who think their code is readable complaining about Python and YAML.

[–] [email protected] 12 points 6 months ago (2 children)

Might just be me but YAML is some of the least readable shit I've ever used.

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

Honestly, I agree. But I don't think Python is anywhere near that bad.

load more comments (1 replies)
[–] onlinepersona 4 points 6 months ago* (last edited 6 months ago)

People with bracketed languages just want to write the most unreadable code ever to feel superior.

Anti Commercial-AI license

[–] [email protected] 18 points 6 months ago (5 children)

So I'm going to say what I always say when people complain about semantic whitespace: Your code should be properly indented anyway. If it's not, it's a bad code.

I'm not saying semantic whitespace is superior to brackets or parentheses. It's clearly not. But it's not terrible either.

As someone who codes in Python pretty much everyday for years, I NEVER see indentation errors. I didn't see them back when I started either. Code without indentation is impossible to read for me anyway so it makes zero difference whether the whitespace has semantic meaning or not. It will be there either way.

[–] technom 14 points 6 months ago* (last edited 6 months ago)

Python decided to use a single convention (semantic whitespace) instead of two separate ones for machine decodeable scoping and manual/visual scoping. That's part of Python's design principle. The program should behave exactly like what people expect it to (without strenuous reasoning exercises).

But some people treat it as the original sin. Not surprised though. I've seen developers and engineers nurture weird irrational hatred towards all sorts of conventions. It's like a phobia.

Similar views about yaml. It may not be the most elegant - it had to be the superset of JSON, after all. But Yaml is a semi-configuration language while JSON is a pure serialization language. Try writing a kubernetes manifest or a compose file in pure JSON without whitespace alignment or comments (which pure JSON doesn't support anyway). Let's see how pleasant you find it.

[–] [email protected] 6 points 6 months ago* (last edited 6 months ago) (1 children)

This leads to weird bugs when you change indentation and miss a line or reorder lines. The logic changes. Not too bad when you’re on your own, as Python seems to be intended for. Add multiple developers and git merges and it is a recipe for disaster. With end tags at least you just end up with poorly formatted working code.

load more comments (1 replies)
[–] eluvatar 5 points 6 months ago (1 children)

The number of times I move code around and can just press a hotkey to fix indentation though. Not possible with Python.

load more comments (1 replies)
load more comments (2 replies)
[–] [email protected] 16 points 6 months ago (1 children)

one of my least favorite things about python is semantic whitespace. no need to comment on yaml.

fuck it, parenthesis all the way.

load more comments (1 replies)
[–] [email protected] 9 points 6 months ago

you'll pry my END command from my cold, dead hands...

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

Haskell does both! Most people prefer to use whitespace when writing Haskell but it’s not required. Braces and semicolons are preferred if you’re going to be generating Haskell code.

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

Clearly, the superiour mode is to just use keyword based scoping (à la Ruby do ... end). When I was a kid I read an OBSCENE MAGAZINE where I saw a Forth program go dup dup dup and I was like "ok so what's the problem here? Things happen and everything is just keywords?" and my young mind was corrupted forever I guess

[–] [email protected] 7 points 6 months ago (5 children)

Everyone that prefers whitespaces over parentheses is an animal.

[–] runeko 11 points 6 months ago
[–] [email protected] 6 points 6 months ago
[–] [email protected] 5 points 6 months ago

Yep! Most of us are even homo sapiens!

load more comments (2 replies)
[–] [email protected] 5 points 6 months ago

It’s fascinating how s-expressions are both data type and language syntax. Such power. Only other time I saw something remotely like this was XSLT & XML, which I admittedly do not miss one bit.

[–] somegeek 4 points 6 months ago

Python has one of the worst syntaxes out there

[–] KindaABigDyl 4 points 6 months ago* (last edited 6 months ago)
a = [ Haskell
    , is
    , the
    , GOAT ]
[–] [email protected] 4 points 6 months ago

This post made me go try something in clojure again and man I forgot just how fucking good the language is. Everything fits together so nicely.

load more comments
view more: next ›