Original post in Kodumaro.
Sometimes I spend some time trying to acquire new programming skills, to finally figure out I was wasting time with something useless.
But even well-known programming tools and languages have their own issues, and this is why we hate them.
Why we hate Python
Python is one of my favourite programming languages, but I haven’t work with it for a while, and it isn’t for nothing.
Python is strongly typed, but also dynamically typed – which wouldn’t be a problem if it respected the assigned types, but you can assign an integer to a variable and then assign a named tuple right after that.
Erlang has a very useful line: “fail fast and noisily.” When Python allows to change variable types, it potentially allows to carry errors away from where they were caused too, which is the worse situation in a debug.
Why we hate Ruby
Ruby is one of the most beloved toy programming languages, mainly because it makes bad programmers to look cool. Everything wrong you can imagine in programming, you can find in Ruby.
Ruby falls in the same Python’s typing issues. It also promotes monkey-patch, code injection, assets’ implicit exportation, and tool monopoly. It’s nearly impossible to track down where a bad behaviour comes from.
You might call Ruby a debugging hell.
However, it’s great for PoC.
Why we hate Java
Java is the big static companies’ darling.
Unlike Python and Ruby, Java is statically typed, and you need to carry errors explicitly if you don’t want them to explode right where they arise.
Still, Java is extremely bureaucratic though, the simplest procedure is hard to be done and requires many code statements.
Besides, Java is very greedy, consuming every hardware resource it can take.
Why we hate Scala
The worst flaw of Scala is to be not Dotty. Every nice and useful feature you expect from an impure functional programming language, you get from Scala.
However, Scala compiles to JVM bytecodes 😖 – and this is enough reason not to use it.
One can say you could do Scala Native, but that’s a hell you don’t wanna get in – believe me.
[update]
Actually Scala is Dotty currently. I haven’t worked with Scala for so long, that I missed that.[/update]
Why we hate OCaml
OCaml is the perfect impure functional programming language, except for requiring widely long boilerplates to work.
The simplest project is more bureaucratic than Java, and you can get into a hell of cyclical references much too soon.
Why we hate Standard ML
An alternative to OCaml is its grandpa, Standard ML, which doesn’t have the OCaml’s same issues.
But Standard ML has another one, very annoying: lack of tools.
You can find libraries for almost everything you need in OCaml, and what you can’t find, you can bind from C. Standard ML is way poorer on libraries, and you can get in trouble missing something very easily.
Why we hate C/C++
C and C++ are great programming languages, so great that lots of other programming languages are built on top of them. Everything you need, you can find or build in C/C++.
But C is too verbose, everything is tough to get done, C++ is a pitfall of infinite tokens, and both have unexpected behaviour. Don’t get me wrong! C/C++ are very stable, but they simply don’t behave like you may expect.
The better description for those languages could be: C/C++ do exactly what you ask, not what you want.
Why we hate Julia
Regarding Julia, I think we don’t need to go further than this:
What to expect from a programming language that, when you assign a value to a constant, raises a warning instead of an error? And the program keeps going!
[update 2022-05-29]
I must be honest, and I owe Julia a retractation: Julia doesn’t allow anymore a program to go on if a constant is redefined. I’m intending to write another post about Julia exclusively.[/update]
Why we hate Nim
Nim is Python made right. Or it would be…
The Nim’s big no-no is that you keep bumping into things that don’t behave as they told – or don’t work at all.
The Nim creators’ line is: WORKS ON MY MACHINE.
Why we hate Elixir
Elixir is a toy programming language created because kids can’t code in Erlang – but Erlang is cool, and they wanna look cool.
BEAM is the Erlang’s virtual machine, and it has a lotta restrictions that ensure your app isn’t gonna crash unexpectedly.
At some point in the past, Erlang had become cooler than Ruby, so all cool kids wanted to code in it, but they aren’t able to. Bad programmers can’t deal with the BEAM’s restrictions. 🤷
In order to allow then to work with Erlang, some imbecile developer decided to work around the BEAM restrictions, obliterating all Erlang advantages – but it’s still cool. This is Elixir: a workaround to obliterate BEAM advantages.
Why we hate X
I could keep going on and on, talking about Javascript, TypeScript, Wren, Odin, Moonscript, Lua, Dart, C#, F★, and every other noteworthy programming language, but I think we’re good here.
Top comments (24)
I think you should've added the remaining languages.
I’ve just realised I have no fair complaints about Erlang!
I'm actually working on a phoenix frame work rn.
Elixir / erlang is dope
I have worked with Erlang before, and I wouldn’t say that. I would say Elixir is dope, but I really have no complaints about Erlang (no fair ones).
Maybe you could write your complaints down. 😉
I agree. I've had to unlearn alot of thinking of the way i go about designing Web apps when I'm using any beam approach
🤣 I would take a lotta work. Be my guess and write your own impressions about them, will ya. 😉
Nooooooo I want you to do it. Cause you captured the essence of my experience with that list wonderfully
Well… I think it deserves a part Ⅱ. 😁
But it’s gonna take a lotta work, so it’s gonna take some time. 🤷
LOL 🤣
So my conclusion is that you definitely want to learn Elm 😂
I love Elm. 😉
About Python, something annoying me are annotations:
They ensure nothing.
Fair enough. 🤔
Umm... When exactly was that? I've been following these two languages for about 14 years and could not recall anything like that.
The same could be applied to Ruby, BTW. Although Ruby does not have
const
keyword.It was about 2014~2016, I guess. You maybe have missed it, the hype was strong.
So it cannot be applied to Ruby, since Ruby doesn’t have
const
keyword. 😜I’m talking about thinks like this:
But it has constants.
However, at no time Ruby tries to mislead you by using the token
const
– which is the point.But I have to admit it shouldn’t use the word “constant” anywhere, not in code (it doesn’t), not in documentation (it does).
I’m not defending Ruby, I don’t recommend Ruby to anyone, I’m just trying to be fair in my hits. You cannot expect to write an immutable variable in Ruby – Ruby doesn’t propose to support such a feature.
But, when you write a constant in Julia, it’s fair to expect it to be constant. 🤷
(But it isn’t.)
So many haters 😂
🤡 Why so serious?
Fail fast and noisily is one of the best philosophies for a language to follow
Indeed.
A thing I should’ve noticed is that currently Scala is Dotty. 🤪
But I haven’t worked with Scala for so long, that I missed that.