So in another toot I said I hate Python, and let me substantiate that:

1) Language is too rigid, community dogmatic, and extensions are haphazard.

E.g. we can't get a postfix if statement because Zen of Python, but we can create a silly @ operator just to accomodate numpy's (which is better than x @ y to begin with, given @ is already in use in a totally unrelated syntax), or we can get it in the specific context of list comprehension.

2) Significant whitespace

Significant whitespace is a terrible thing. I find it confusing, and lose my place in code all the time. Silly useless mistakes because there was one space less or one space too much. Inside longer blocks sometimes you can't know where a function or other block ends and where another begins. You become then a human linter and have to adjust spaces here and there, which IMHO need not be necessary when you're trying to get code running.

When I'm writing Elisp I just indent haphazardly as I'm getting a function to do something. Then I just run paredit-indent-defun (M-q) to have it all look nice. Thanks to this, I don't need to have to make code look nice while I'm trying to make it run right, which is unnecessary cognitive load.

3) Terrible interpreter versioning

I love how with Perl you can write "use v5.24;" up top and expect to work with a compatible interpreter, or panic.

With Python you use the shebang "#!/usr/bin/env python3". If you have sth. introduced in, IDK, 3.6 (e.g. f-strings, IIRC), and if you use python3.6 in the shebang, but if the system has the compatible python3.8, then you need machinery to fix shebangs.

4) and finally, for me, the whole packaging and distribution mess.

Simply put, after a decade of scripting in it, I still don't know how to reliably package and distribute sth. written in Python.

Which is little trouble when using other languages I know almost nothing about.

@cadadr I'm a former fan, even wrote a book about it, but the mess with UTF-8 in Python 3 was the final nail in the coffin for me. I wrote about it at

@jgoerzen Neat post, thx for the link!

Didn't come up often for me (possibly because I'm very disciplined with file names), but from reading what you write it's pretty obvious and sad that a big breaking change like Python 2 to 3 didn't handle this right.

@holger @cadadr Hah, well that's one way :-) Personally I have become a fan of , but then my background perhaps makes me predisposed to safety-focused languages with elegant type systems. There's always elisp if you get bored 🙂

@jgoerzen @holger Elisp is the programming language supreme for me. Maybe not the language itself but the paradigm its in, it's been really productive experience.

I love Haskell but two things make it a no-go for me: it's packaging / build stuff is slow and hard to get right, and it's hard to do interactive programming / debugging. Esp. when you're not familiar enough to not need much trial and error.

Sign in to participate in the conversation
Mastodon @ SDF

"I appreciate SDF but it's a general-purpose server and the name doesn't make it obvious that it's about art." - Eugen Rochko