Disclosure: This post includes affiliate links; I may receive compensation if you purchase products or services from the different links provided i...
For further actions, you may consider blocking this person and/or reporting abuse
I think this is a great selection of languages, but I personally think you have to be a bit careful saying things like ‘you’re not a real programmer unless XYZ...’ - so many of us, even very experienced and capable people, struggle with imposter syndrome and we have to be careful not to encourage ‘gatekeeping’. Otherwise great article! I might have to give scala a go!
I didn't mean that, and you are right; even I am not expert on all of this language. the whole point is learning multiple programming languages with different paradigm help you to become a better developer. So it's more an encouragement to learn more programming language to become a polyglot and improve yourself.
On that front I totally agree with you 😊
Did you quote yourself, with a statement which is just not correct and has a typo?
Also, C and C++ are pretty damn different so it's quite weird to lump them together like that....
Yes, I quote myself when I say C++ programmer is better than Java programmers in most cases. To be honest, I am not gifted, I am an average programmer but I have worked with some really great developers and most of them were from the C/C++ background. Regarding typo, I put all blame to Grammarly - my writing assistant :-)
I'm sure there are great programmers who know C/C++ as well as horrible programmers who know C/C++. I don't think knowing a certain language makes you a better programmer.
That is true but C++ people are like hardened on the battlefield, but again, this is my personal opinion which is based on my own experience, working with some of the great people who came from C/C++ background.
This is unequivocally false.
This is like saying builders who use 16 oz hammers are better than builders who use 12 oz hammers.
This is just my view and its based on my experience, but there is a logic behind it. C/C++ programmers generally have a better knowledge of how hardware, OS, and machine work. They are also more careful about resource initialization and cleanup, which makes them more disciplined. It's more of a practice and attitude than anything else.
That is a completely false generalization, and you're stating it as fact. Sorry, you're just plain wrong. Your anecdotal experience isn't valid ammunition to just say C and C++ programmers are better than other programmers.
How is it that manual memory management is the only thing that makes a good programmer?
This frustrates me because if someone who didn't know how wrong you are were reading this, it would probably make them feel insecure.
Well, I just say in general and that's what I have found. Other people can comment based upon there experience. I didn't say that other programmers are not good or good enough, I myself code in Java more than C/C++.
This is anyway an opinion piece and you should take it as opinion, no one need to feel insecure because they don't know C/C++ but I do suggest them to learn C/C++ if you want to become a better developer. They are the language which takes you closer to metal and force you to learn some computer fundamentals which many programmers overlook in today's programming world.
Well, to be honest C developers are really bad because they aren't writing assembly.
(☝️ sarcasm)
Again, you're wrong and spreading disinformation in a way that's harmful, so forgive me if I'm annoyed.
🤣🤣🤣🤣🤣🤣🤣🤣
Hi javinpaul, you seem to love affiliate links but not one mention on the article. On the Web Site Terms and Conditions of Use, it is mentioned that:
This is not the first time we've called you out on this practice.
I definitely like to follow rules and this article did have a disclosure, with I think is the most highlighted way possible using quotes, did you missed that or is there something I am missing? I am happy to correct myself ...
I may have missed that. But thank you.
I'm a bit disagree with your article because of your selection of programming languages.
You didn't mention C# or PowerShell as two of the languages of the .net stack and, of course, Pascal as a language to start learning basic concepts like OOP. I don't know if knowing 5 or more languages makes you a real programner but why not 4 or 6 or 10? Where is the real limit?
I would've prefered to have a programming languages classification as the first part of the article like operations, front end and back end so you will be able to point to several of them or even adding the tech stack where these belongs to so people will have some guide of the relationship between them.
Well, Yes, C# is definitely a great programming language, especially if you are on the .NET background. It may be because I come from Java background and even though I have done web development its not on .NET world. Though, I did explore C# for creating GUI and game development, which again proves the point that its a useful language to have in your arsenal.
Hmm...
...Hm.
:-)
Out of curiosity, what do you feel classifies Python as a scripting language, and what kinds of languages are the others on this list?
Well, Python has come a long way from a scripting language, but I started using that for automating tasks. It classifies as a scripting language because you don't need to compile them, just write code in a script and you are done. It's great for automating simple housekeeping and other tasks.
Hmm... I'm curious about where to draw the dividing line between scripting and non-scripting languages now. Erlang and Elixir can both be run within an interpreter, but officially have a compilation phase where the source is converted to bytecode for the BEAM virtual machine; Ruby has existed as an interpreted language for most of its lifetime, but now ships with an optional JIT-compiler, and Java has had the ability to be JIT-compiled afaik since version 1.7. If there were ever a moment when the Java VM could skip the compilation phase altogether, I wonder if it would then be a "scripting" language, or if it's it feeling as if it runs in an interpreter is already sufficient to consider it a scripting language. Conversely, assuming that Ruby 3 will always at least be JIT-compiled, I wonder if it will then graduate to no longer being a scripting language.
I had sort of considered any language where engineers are capable of building structured, multi-file and multi-module applications as being at least multipurpose, if not general purpose, languages, while languages incapable of supporting structured applications (e.g. bash, awk, perl) as scripting languages. This gives me something to think about... thank you
I have such a long list of languages I want to learn, but I'm glad to see that I already know four of the ones on this list: Python, C++, C, and Java.
I'm also in the middle of picking up Haskell. Functional programming has a unique and refreshing feel, I'm finding.
For the record, I despise Javascript with every fiber of my being. I refuse to use it except in the most extreme of circumstances, and only minimally as possible. However, I'm starting to warm up to the idea of learning Typescript, which seems at a glance to have overcome a number of Javascript's fatal flaws.
JavaScript is one of the best languages. You can do OOP or FP, it's very malleable and does the perfect job for what it's designed for; i.e. exploit Web APIs.
Other languages are good too. But it's annoying to see such subjective statements against JavaScript.
Well, IMO, Javascript is too malleable. You're more likely to get unpredictable behavior than an outright error when your logic is backwards. Anything goes.
There are going to be people who dislike any language. I'm a C++ programmer, and I hear a lot of complaints about that, but I don't let it get to me. Besides, I'm not going to pretend it doesn't have sharp edges.
So, if you like working with the "malleability" of JS, you are definitely welcome to it. I just am not required to like that same unpredictability.
P.S. Yes, I know the language. I hate it on that basis.
You may enjoy ReasonML. It's OCaml with less weird syntax, so it occupies a nice space somewhere between Haskell and TypeScript.
That’s a lot.
You can certainly have a working knowledge of 5 languages - I have used all of these except Scala - but unless you have 20+ years experience, I don’t think it’s practical to have expert level knowledge in 5 languages.
Especially if you aren’t using them regularly. I used C/C++ for many years but have since forgotten much of it.
That’s not to say there isn’t value in learning multiple languages like this. I have learned some languages, such as Elixir, that I have almost completely forgotten, but have remembered some useful tidbits or patterns, which can definitely be helpful.
Is Scala still popular? I have been out of the Java space for about 4 years now so I’m definitely not current.
Thanks for the post.
Writing C is like riding a bike, it's not something you forget.
agree
Well, you made a good point, You can't be an expert of many things but a decent working knowledge goes a long way. Even in my case, I can only say that I know only Java at the expert level.
Why I do not like reading writeups such as yours is because they cause disinformation. A beginner or a newcomer might be thinking that the above-listed languages are the best and the only languages one needs to learn to become a software developer.
There are far more many better languages you did not enlist.
Anyways, thanks for your effort in putting this article together.
Well, I respect your thought and comment but if a beginner learns any of these languages, he is definitely not making any mistake. It will only help him in job, career and becoming a better developer.
Making informed decision on what to learn based on correct/ accurate pieces of information is inevitable.
Everyone should just stick to C. All modern languages encourage bloat and patterns of nonsense.
oh noes
so bloat
much incomprehense
unable to parse
wow
Yes, the best thing about C is that it doesn't change much like any other programming language.
This is a huge bugbear of mine, since I first looked at Java v1 and every few weeks (it seemed) at the time there was a new version that cadded loads of new functions and deprecated others. C++ has been going through this to some extent recently with auto_ptr, lock_guard (?) etc; I think 3 years is too short a release cycle when you're trying to make think your language is suitable for "professional" programming. And the move from Python 2 to Python 3 was a disaster that was only really resolved after the Raspberry Pi was released and encouraged the adoption of Python 3.
Compare this to development
JavaScript has a replacement it's called Dart. Google is doing a very good job replacing it too. E.g look at Flutter it's absolutely blowing up in 2019. Keep in mind JavaScript won't go anywhere anytime soon but it does have its limitations (e.g single threaded) I believe Dart is a step in the right direction. It's also open-source where JavaScript is not.
Who uses Java in 2019 when you can use Kotlin. Java is too verbose, the same code in Kotlin is significantly shorter.
I would argue Kotlin is a better choice over Scala. Kotlin is easier to learn than Scala. Last time I used Scala it was not backwards compatible. I think the only real reason why someone would choose Scala over Kotlin is if you want a functional programming language over an object orientated.
Not every programmer needs to know C or C++ because it depends on the type of programmer you are. We typically fall into backend, full stack or front end. Your front end people don't typically use C or C++ because they don't need to. Likewise your backend developers don't use JavaScript because they don't need to. It is good however to learn the concepts C and C++ offers e.g memory management, pointers, limited standard library.
Yes you are right there is no replacement for JavaScript as a mainstream power law demand in the market.
However typescript would be more suggested. Please note there is also scalajs and web assembly as a potentially good alternative. Ok those are more niches, but still better than just JavaScript.
One word; Ada.
Ada has been deprecated in the F-35, except for F-22 legacy code.
One letter; C
I don't think the F-35 is a particularly good advertisement for not using Ada in aviation - see craftofcoding.wordpress.com/2016/0... for a brief discussion. As for C, we'll it's already mentioned in the article above, but you can get closer to the hardware by learning assembler, which can be advantageous in safety critical systems where C has many restrictions placed on its use (see MISRA) and, as I understand it, object code is often analysed.
Aren't the Boeing airplanes that sometimes require a hard reboot due to integer overflow errors (and miraculously have yet to be in mid-flight at the moment of software failure) programmed in C?
One of the best ways, I have learned from my own experience is trying to solve the same problem in a different language. Like a data structure problem of reversing string or a design problem of coding your own vending machine. This ensures you are only learning one thing - the new programming language. maybe you can try this.
Try not to conflate C and C++.
While you can just about write in C but use the C++ compiler, the latter is a vast and sprawling language that even one of its creators doesn't know all of its nooks and crannies.
You also need to try some projects in languages that are not so C-like. Forth, J, lisp,...
Loved it! 🖤
thx
Great piece!
Note: once you start on Scalaz (note the trailing z) and have trouble, it will be easier to learn the concepts in Haskell and then apply them in Scala.
well, yes, I completely agree :-) PHP is bread and butter of many web developers but no one suggests it to fellow developers :-)
Python is definitely a great asset in today's programming world.