C++ because you have multiple versions, you can write in different styles (C, OOP, functional, meta-stuff, very low level like assembly, very high level like Python), it has undefined behaviors, and you can waste your whole life optimizing code.
Depends on what you already know.
Functional languages like Haskell, Clojure or Erlang have a reputation of being hard to grasp.
Rust’s borrow mechanics are hard for some people at first, especially because it’s very unique to the language.
Javascript can be frustrating because it also has some rare features among popular languages, and uses the same keywords for different concepts. It’s not bad at all once you let go of your assumptions and dedicate the time to understand how it works under the hood.
C++ is also notorious for being hard but I haven’t used it for a very long time so I can’t say anything about it.
Clojure : if lisp had an illegitimate baby with java. Add to it the pain of setting up fireplace in vim or having to use emacs. At a former employer we had one area in closure. I could read it without much difficulty but damn if it didn’t take me weeks to write or update it
For Erlang I would say that the hard part is not the language itself (maybe a bit because it is influenced by prolog) but because of the mental model. Using concurrency and parallelism as core concepts of the language and understanding that you don’t need a lot of the external tools you would with the more mainstream languages is what’s hard imo.
Yeah I bet, I’ve always wanted to learn Erlang. People always speak to highly of it. The guy that made Sonic Pi was saying he wished he would’ve used it because Sonic Pi involves a lot of music loops playing at the same time and stopping individual ones and modifying them etc and because so many of those concepts are baked in he said it would’ve been nice
Brainfuck
Actually one of the few languages you can learn in its completeness in less than a day, so I wouldn’t really say it’s “hard to understand”. More like hard to read and understands programs written in it.
Perl is a write-only language.
You can write clean Perl easily. But it’s maybe a bit easier to write illegible code in Perl than in most other languages. It’s all up to you though.
I am just regurgitating one of my favorite Perl jokes for a laugh. Though for me the joke contains some truth. Most of the Perl code I’ve ever seen is pretty impenetrable for non-Perl programmers. I quite literally have returned to my own Perl efforts after just a couple of weeks and had some trouble working out what the code is doing (in ways I do not experience with other languages).
When Python was trying to unseat Perl, that in my view was reason alone to prefer it: I didn’t know Python but I could read Python. Though at that point Perl had the benefit of loads of libraries and ubiquity, and Python hadn’t got there yet. But it was enough to have me cheering for Python’s success at the expense of Perl. I get that Perl has many virtues, but they’re nullified by the ugliness and relative inaccessibility of its code in my eyes.
I really hate the magic side-effect variables where you do a pattern match or something and then various obtusely named variables have meaningful values with relation to the last match. To me that’s just flat out bad coding, and it’s built into the language.
The above was my second-favorite Perl joke. My favorite being:
Perl is the vise-grips* of programming languages. It’s a tool that can do most jobs, and it’s the wrong tool for all of them.
*BrEng: mole-grips
No one has mentioned COBOL yet, but COBOL.
Cobol wasn’t that bad… the use of line numbers was weird but at the time it wasn’t unique either. Assembler now… that was a bitch… the operations weren’t exactly intuitive and playing with registers wasn’t my thing. But I could pickup cobol if I was starving no problem :)
Assembler or assembly? Just curious because in my computer engineering course we had to create a C based computer that used assembly.
The college I went to taught COBOL in 2 mainframe courses, and as far as I’m aware, they still do.
It was either you like it, or you absolutely despise it. It wasn’t all the difficult, but it is very different than your standard java, C#, C++, etc, so the syntax really throws people off.
I remember reading about COBOL devs being able to earn pretty solid incomes. I thought, “Let’s check this out.” I found a site that did common things in different languages and compared them. Reverse string in ruby. 1 line. Reverse string in COBOL. 40-50 lines. “Ehh… Maybe I don’t want to learn this after all.”