How do you choose a programming language to learn?

If you haven’t picked your first programming language, the programming world is your oyster. Yet with evangelists for every language telling you their language is the best, choosing one to start with can be incredibly overwhelming.
 
Start with C since almost all languages seem to be based off of it in some way. This also could be just what works/will work for me. I program more on the Linux side and prefer “closer to the metal” of what is actually happening, having lower level networking knowledge, and working with almost all that I do using open source tools. If you feel otherwise, then “your mileage might vary.”


Is it mobile native development? Then it’s easy: Swift/Obj-C for iOS and Java for Android. You can jerry rig simple solutions with tools like Cordova, or you can use platforms that build for both systems such as React Native, RubyMotion or Mono.
Is it desktop development? Which OS? For Windows you should just use .NET WPF. For macOS fire up XCode and do Swift. If you really need a cross-compatible alternative you should use Java and Swing, but it’s really not enjoyable.
Is it embedded development, small systems, IoT? You should study low level development with C/C++ or invest in new languages such as Rust. But it’s mostly low level.
Is it distributed systems? If you want the “safe” side, it’s Java and perhaps Scala (although Scala is falling down lately). But ideally it’s Erlang and/or Elixir. Depending on the size of the system it can be anything that can bind to ZeroMQ.
Is it systems development? Command line tools? Orchestration tools? Daemons or agents? Then try either Go or Rust. Some small things can be done with scripting languages such as Bash itself.
Is it gaming development? You should start with C# on Mono with Unity framework. For starters, that’s the best alternative right now.
Is it big enterprise systems, I mean for companies with thousands of employees and at the billion dollar annual revenue? Then go learn business first. Then learn SAP.
Is it analytics and statistics? You will want to learn R and/or Julia. Think of it as the Excel of big data. Don’t try to program data analysis by hand in a generic language. At most you will want to use the ScyPy tools such as numpy, Scykit-Learn and so on.
Is it web development? Now it really is a question of taste. Ruby on Rails is at the top of the list. But if you want “Wordpress” or “Magento” just use the real thing, don’t try to replicate. Rails has the largest and most mature ecosystem. But if you need to build a super-rich interface, Spotify-like, then add React to the front-end. Avoid choosing something just for the hype or unfounded notions such as isomorphism. If you really want to be the hipster, then use Elm instead of pure Javascript. If you want to stay in the safe side, the combo of Rails + React + ES6/webpack is hard to beat.
So the process is simple: what is the use case? Choose the best tool for the job. Most people choose the tool and then try to make it fit in the problem, and this is recipe for disaster.
Every programming language is “Turing Complete” so you can build anything in any language. But I would hardly recommend anyone to write a web framework in Cobol. But if you need to write new code for mainframes, by all means use Cobol. If you need to develop for the military, go learn ADA.
The use cases narrow down the choices. Then you can choose based on your experience, subjective taste, risk assessment, future-proofing, styles, etc.
And no language replaces good understanding of general software development techniques. And practice, lot’s of practice.

No comments:

Post a Comment

Genuine websites to earn money.

If you are interested in PTC sites then this article is for you. I have personally tried many of the sites and found that the best thing ...