>>19168>OP, don't follow this advice. Literally. Those wannabe elitists who act like rebel without cause can really screw up your first approach to programming (it happened to me too: I started with PROLOG as a first language.)
Well, that's rather insulting to me, without substance. I don't like common languages, for reasons listed in >>13476
, so I'm an idiotic elitist to you.
I don't see what's wrong with learning Prolog as a first language. You simply dismiss it with no reasoning.
>C is the language used for the linux kernel.
It's very hard to write correct software in C, as evidenced by the number of Linux security vulnerabilities. You would've made a better point in mentioning OpenBSD, which goes to great lengths to avoid security flaws in its programs.
It's worthwhile to point out that the flaws found in new C programs are almost certainly in the same class of issues the language has had for decades.
Requiring manual memory management is fine, but making it unnecessarily difficult with a compiler that will undercut the programmer at every opportunity isn't. This still affects professional programmers with decades of experience in the language.
>Nowadays even most of the firmwares are written in C instead of assembly.
This is too vague to be true. Firmware is written in assembler languages, Forths, Ada, C, custom languages, and sometimes even languages like Java.
A great deal of firmware is proprietary and can't be inspected at all for implementation language.
>c++ is constantly in the top 5 of most used languages, and that doesn't surprise me given its speed and how it hands low-level control to the programmer.
It's been called the COBOL of the 90s.
C++ may be popular, but read a resource such as the FQA (Frequently Questioned Answers), for an idea of how well it all really works: http://yosefk.com/c++fqa/
C++ is certainly famous for the ire it receives:
Saw comment // NEW BOOST CODE, and had a moment of panic before realizing it was vehicle boost, not C++ boost. --John Carmack
C++ is a horrible language. It's made more horrible by the fact that a lot
of substandard programmers use it, to the point where it's much much
easier to generate total and utter crap with it. --Linus Torvalds
Compare C++ to Forth, which has (more advanced) metaprogramming, lower-level control, smaller size, faster compiles, faster execution, and manages to be far, far simpler.
>python has a soykaf tons of awesome libraries, and if you aim to work on AI stuff it's indeed one of the best languages to start with. ruby is not excellent, but it's quite popular among penetration tester so it's worth to be studied if you're interested in cybersecurity.
Python still has a horrible version schism and I sincerely doubt Python or Ruby will be used often in a decade, but they'll certainly leave a glut of indecipherable programs, just like Perl.
Similarly to Perl, the interesting features they have will probably be stripped and made into libraries for other languages, like PCRE, which Common Lisp has an optimized library for, CL-PPCRE.
>Unless you want to become a malware analyst or you really want to know in details how computer architectures work, you can totally avoid assembly.
Assembler languages are fun. Can't we agree that being able to know what the computer is actually doing is a valuable skill that will improve programming skills in general?
>common lisp is a great language, but you won't find many active projects around to work on and this is a huge disadvantage for a beginner, forth and APL are dead as fuarrrk and it's not like many miss them.
It's strange to see this learning culture that demands projects that beginners can contribute to or work on. Doesn't it seem that a project that many beginners contribute to will be lower quality than a project only worked on by experienced programmers?
Isn't it enough to automate something simple, make a little game, or read an existing, good project?
Anyways, Forth is too simple to die, considering many Forth projects will write a custom implementation for the problem.
APL has Free Software and proprietary implementations in heavy use in many industries and has survived for too many decades to be considered dead just because it never got popular enough to be taught to children or in coding camps. There's never been an incredibly large userbase, but I don't believe that detracts from it.
>if you wanna alienate yourself from the FOSS community
This is fair enough, but it's not as if there's no Free Software projects written in any of these languages and it's not as if one couldn't be started if someone wanted it.
Guido, Matz, and friends don't own Free Software.
>cut your chances to get a programmer job almost to 0
It's easy to get employment in any language. I don't want to bring my personal life into this, so take my word for it.
Also, understand that knowing a more common language increases the chances of being replaced. Knowing languages less people know is good for salary and job security.
>not be able to understand most of the academia's research papers
Most research papers I've read use a pseudocode to describe algorithms. Several resources invent new languages to discuss their topic.
>Otherwise, OP, figure out which field you wanna work on, and choose your language accordingly.
I wouldn't recommend it, but it's not as if someone couldn't learn both Ruby and, say, a Forth, although the Forth would be significantly easier to learn, use, and almost certainly prove more valuable in the long term.