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.”
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