I see this question coming up all the time:
What are the best programming languages that all developers should learn?
I have tried in the past in the argue that there is in fact not such a thing, but many good options in general, and more than one good options for you in particular, depending on what your context is.
I have to admit that I failed to convince anyone.
People still really would love to know what is the best programming language that all people should learn. And that makes sense. Honestly if there was a right answer, I would also love to know it.
The challenge
It might be much easier for you though to answer the reverse question:
What is the worst programming language that nobody should ever learn?
Is it Java, JavaScript, C#, CoffeeScript, Objective C, Perl, PHP, Cobol, Erlang, Brainfuck, F#, ...?
Please pick the one you think that it definitely never makes sense to learn it.
And me or my smart readers will play the role of the devil advocate that find a good scenario you when it actually would make sense to learn this useless language.
RULES: be polite. Insulting other developers community is not right.
Update: challenge results
The evil advocate was on a good streak to defend the case to defend BrainFuck, Python, Cobol, CoffeeScript, etc...
But then readers began to be always more astute and @daveford nailed it.
So this is the accepted answer.
The worst programming language to learn is the language that you have no motivation or desire to learn. It will be a miserable experience causing you to dislike the time it takes and the language.
Where to Go From There
Pick something that sounds like a sane choice for you and iterate from there. Relax the fuck out from the impossible idea to find the "correct" solution.
If for reasons you want to receive updates from me, you can follow me on dev.to or enter your email here https://jmfayard.substack.com/
Top comments (57)
Obligatory brainfuck
Nobody should ever learn brainfuck?
en.wikipedia.org/wiki/Brainfuck
I think that is wrong and here is my counter-argument.
Brainfuck is a legend among developers. Its name is brillant. Lots of developers have secretly dreamed of being good at Brainfuck. What if you could actually master just enough of Brainfuck to impress your friends? I think that would be a lifetime asset to connect with fellow developers. So much opportunity to make them laugh if you know a bit of brainfuck. Really worth learning if that motivates you.
I agree that obscure/obfuscated languages can be as helpful as learning advanced mathematics. You will get a more essential understanding of what a programming language is or can be.
You also would have to make some hard decisions about putting it on your CV, or mentioning it in an interview.
if a company reject you because you have brainfuck in your CV, they don't deserve your awesomeness, it may even be a great filter, if you don't appreciate that someone took his or better yet her time learning brainfuck, don't even call me. :D
I think you have overlooked a part of the issue...
the "fuck" part?, my same argument apply, if an adult is not capable to understand the difference on context of "I'm gonna f*(K you" and "I know brainfuck" probably don't have a lot of common sense, I wouldn't want them as my employers, of course all depends on how tough is the work market, if things are bad I'll work for anyone who pays :)
words are tools, no matter the word itself is the intent and context what can hurt. There are always people looking to be offended to feel some sort of moral superiority, but I don't care about them, those "moral trolls" will find something to be offended anyway. :)
I know this is a website for the young, but you will find that gratuitous cursing doesn't impress anyone over the age of about 20. It's not about morality... the problem is that using it makes you look like a fool, and unprofessional to boot.
Is the name of the programming language, is not gratuitous, is part of a noun refering to a specific thing, and I would say it doesn't impress anyone over 8.
Is not just being impress by it what is childish is giving so much importance to something so irrelevant.
Discard someone for a job because of it to me is childish: in one hand you have a person motivated and interested enough to learn something that will probably will never give any profit, just for the love of it, but discard her/him for saying the name of a PL with a bubu word, that is ridiculous and childish, if I can avoid an employer like that, I will.
In this case is not about expressing in a offensive or even in a vulgar manner, is just a name, so you'll call it "Brainstuff"?, "Brainthingy"?, what if the interviewer doesn't know about it and is interested?, they won't be able to look for it, you just took the funcionality of a name, because of the form, that fundamental view would be a red flag to me.
My point is, of curse if you can't give an interview without cursing like a sailor, will get you nowhere, this is not the case.
If an interviewer curses, shows lack of interest, lack of self control or education; either way, is a bad thing; someone who mention that s(he) learned Brainfuck, doesn't show any of the before-mentioned attributes. Not being able to see the difference is, to me, a problem in someone older than 8-10 years old.
PS: And being young has nothing to do with this (many wouldn't consider me young), and being condescend or dismissive because of age is not professional either; in my time reading posts and comments here I never got the impression that their users are "too young" to understand that cursing is not funny, and you shouldn't do it in an interview. Specially because to me "too young" would be about 8-10 not 20.
I agree that it is a good idea to learn - you have to understand the very basic principles of computing!
But it still is not the most pleasant to code in π΅
I prefer to call it B****fuck in order not to offend those with delicate sensibilities.
they will probably being too busy looking for other stuff to be offended, for example, those people would really enjoy being offended by Spanish language, every noun has gender!
Python because copy / pasting can be painfull !
Could it be the case that nobody would ever need to learn Python?
en.wikipedia.org/wiki/Python_%28pr...
Evil advocate counter-argument:
The fact that copy/pasting can be painful can be seen as a good constraint for a developer who wants to master his craft. It's painful to copy/paste. Fine. Then I have to find better ways to come up with code. That will probably be a big win in the long term
Apart from that, Python has a massive developer community that produces lots of good stuff. They are expert at teaching programming to beginners, to non-programmers who need to program. It's a great solution for prototyping stuff. It is used at Google, Facebook Instagram, Spotify and a lot more. It's a great solution for data science, scripting, backend programming.
And I'm just scratching the surface because I don't know a lot about python. Just imagine what someone good at Python and who like it could reply!
So suggesting nobody would ever need to learn Python is courageous because transparently wrong :)
"The fact that copy/pasting can be painful can be seen as a good constraint for a developer who wants to master his craft. It's painful to copy/paste. Fine. Then I have to find better ways to come up with code. That will probably be a big win in the long term"
When you have 20+ years of experiences you really don't care about mastering : you want to be efficient.
By the way despite this it's a good language with a good community, I just regret this poor syntax choice even if at first it sounds good.
Oh I agree with you on both points.
1) Being efficient matter and those little things should be fixed
2) Building a language is something, building a good language community is even more important
Why would copy-pasting be substantially more painful with Python than any other programming language?
I've heard that argument before, to copy/paste you just add the proper amount of space, unless you are using ed or nano is very trivial. On the other hand, Python2/Python3 being 90% of books and half of tutorials in py2, that's is somewhat annoying for new users.
Copy pasting what, and where? I'm not sure I understand the reasoning here, unless it's a joke that I don't get.
Think they're talking about potential indentation errors!
Which aren't a problem if your text editor was made in the last 40 years.
If you care about code readability and quality, you are gonna reindent it anyway.
CoffeeScript. It's obsolete and will never return. And you can migrate existing RoR projects to modern JS.
Ah that's an interesting one, because you have really good reasons to never return to CoffeeScript.
Could it be the case though that nobody else would never be right to learn CoffeeScript?
en.wikipedia.org/wiki/CoffeeScript
The evil advocate has found this scenario:
Alice wants to learn programming. Specifically front-end programming. Her friend Thorsten tell her that the standard of the industry today is JavaScript, and probably TypeScript if you care about better productivity. And he is right.
But Thorsten lives in a different country or is too busy to help her. On the other hand, they have a friend called Charlie. Charlie is not a professional developer, he teaches programming concepts at the university. Charlie really doesn't like JavaScript, whose design was rushed in just ten days before it was shipped in the Netscape 1.0 monopoly. True, JavaScript is the industry standard, but that doesn't matter a lot for Charlie because he teaches programming concepts. And he is really good at that.
Charlie is ready to help Alice. As an academic, he is a fan of Ruby. He was hoping that CoffeeScript would clear up the JavaScript mess. That didn't happen for the industry at large, but CoffeeScript is good enough for Charlie's needs. And he is eager to share what he knows..
Thorsten thinks a bit. Learning front-end programming is tough when you are alone. The hard part is to learn the concepts. Charlie is great at that. He would love to help Alice with learning front-end concepts, if he is allowed to do it with CoffeeScript. Heck isn't that the most important part right now for Alice? Once she knows the concepts, she can switch to TypeScript really easily.
What advice would you tell Alice in this case?
To be fair, your argument sounds to me like someone might like or use it. If accepted, this argument trumps anything, so it's pointless to propose any language in this discussion because someone might like it.
Will learning CoffeeScript be a terrible mistake that will set Alice years back in her learning path? Most probably not. She will even learn useful concepts and have fun with her friend.
Are there any employment opportunities with CoffeeScript? I'm pretty sure that at leas one or two companies still use it in some product.
Will she have to learn alone if she doesn't learn CoffeeScript with Charlie? That's her choice, but there are plenty of online communities and meetup groups where she can find other people to learn with.
Is CoffeeScript a reasonably good choice if the goal is to become a professional developer? Not really.
This, of course, begs the question of what is the context of the challenge. If we are trying to find the worst language that nobody should ever learn we either must define some constraints (the worst language for what?) or accept that no such language exists because I just want to have fun is as a valid argument to choose a language as any other.
Hello @avalander I agree with all your points.
To be clear, my own answer to What are the worst programming languages that nobody should learn? is ... 42.
You cannot answer that question unless you can be in the context of everyone... which you can't do unless you are God.
My point was people are wasting energy because they would really like to know the correct answer to the reverse question.
And the bleak truth again here is... again 42.
It's the wrong question to ask.
Pick one that sounds fine in your context and get started.
That's a tough scenario. ;-)
But challenge accepted. Avalander already has very good arguments in her reply. I'd like to add that Coffeescript has a rather unique history. It's not so much a programming language of its own, but rather a syntactic sugar version of Javascript. It was created by Ruby-on-Rails developers specifically "in an effort to enhance Javascript's brevity and readability" (Wikipedia), to make it more Ruby-like. You've got to know that his was in a time when you didn't have separate developers for frontend and backend and there was no ES2015.
In other words: Coffeescript is the product of backend developers, who hated Javascript (but had to use it as the output of their transpiler), and thought that the frontend is just a tiny part of their web app.
Do you think a good programming language can be the result of such a mindset? I don't. And there are lots of articles out there describing Coffeescript's shortcomings like its ambiguous syntax or how hard it is to debug. So we have good reason to say that by Coffeescript is not a well-crafted programming language.
Sometimes technology doesn't need to be good to succeed, it just needs mainstream adoption. So you could argue that it's good to learn Coffeescript in order to get a job. But that's not the case. Frontend development has changed dramatically during the past 10 years and JS is not less important (~Coffeescript mindset), but more important than ever before! So from a practical point of view it's also not advisable to learn Coffeescript.
You have really good points, but the evil advocate has found something to reply.
Well, if everything you say is true, then learning Coffescript and the story behind it is super valuable for a programming language designer who would like to know which basic mistakes to avoid when designing a new programming language. Don't try to pretend to replace something you hate and don't really understand.
Indeed. There is nothing so bad that it couldn't at least be a bad example.
As long as one considers CoffeeScript2 to be different from CoffeeScript, then I'd have to agree that CoffeeScript is obsolete.
The worst programming language to learn is the language that you have no motivation or desire to learn. It will be a miserable experience causing you to dislike the time it takes and the language.
This is canon!
Even the "worst" language is worth studying (if not learning), so as to appreciate why its bad. And maybe why it's not.
(Let's exclude esoteric languages, because they are designed to be "bad", and its trivial to understand why that are bad. In this regard, they are fun, but not interesting).
In less black-and-white terms, I'm tired of developers telling me that, for example, functional programming is not relevant, but who have never actually bothered to study it.
The more you learn (or at least study), the more informed your opinions will be. As a software development professional, you have duty to inform your opinions.
Exactly. It takes a lot of time to realize that there is no right answer and that everything is a question of context and of trade-offs.
@daedtech is really good on this here Coders in the Hands of a Missing God: How Newly Minted Freelancers Badly Miss the Point
Probably HolyC. It has only been used to create one "real world" application, and that was an OS whose creator sadly passed away and isn't really used for anything besides novelty. It's impressive in that a single person created a language and OS from scratch, but also it's not worth learning where there are hundreds of other languages you could learn.
I spent the last 90 years mastering whitespace but then whenever I choose to use it in whiteboard interviews I don't seem to make the cut.
I think this old piece says it all still being relevant :) PHP a fractal of bad design
This is also a favorite of mine.
But in fact there are really good reasons to learn PHP.
Wikipedia is built on it for example.
Wouldn't you accept the quirks of PHP if you had the opportunity to work on such a great project but it had to be in PHP?
Tough call, but I don't think I would :) There are so many other great (OSS) projects that doesn't use PHP...
I am ready to bet that working on 99.9% of those open-source projects won't have the same positive impact than making Wikipedia 1% better.
I would choose Wikipedia.
you are right about the positive impact for sure, but for me it would just bring too much misery working with technology i really don't enjoy. :) If they'd ever need skills I have, I'll be happy to help :)
Maybe it's time for wikipedia to become more technology agnostic. Think more in line of a microservice architecture. At first glance it looks pretty monolithic
I mean, I guess that the pay is pretty good at Wikipedia, no? So you could work on the impactful things during 3-4 days a week, and on the interesting tech things for the rest of the week.
And also once you are there you are smart, so will find smart ways to improve their architecture, nothing is fixed in stone.
C++
At first it looks all nice and feature full and easier than C but it ends up having a lot of quirks.
As junior at least I wouldn't recommend and I feel there's a lot of other very nice complied langages nowadays.
I've never met anyone with anything good to say about MUMPS.
Some comments may only be visible to logged-in visitors. Sign in to view all comments.