Facing problem in choosing your First Programming Language?
Dhawal Deshpande
Founder & CEO at Codigo Aldea | Mentor | Educator | Tech enthusiast | Gamer | Learner
So you are adamant you want to learn to program and you have told yourself, “this is it!”. Brilliant, I commend you on your conviction. But now what? Where do you start? Well, the obvious place is choosing your first Programming language.
Many of us are facing challenges in choosing the 1st programming language, There are so many options, how do you decide?
To tell you the truth “There's no right answer to this question”.
But what we can find is some right questions that We can ask ourselves. If you really want to start a career as a programmer, they would be your first test. If you are ready to dive in, so - let's do that.
Well anyway,you can ask about:
What do you plan to learn for?
That's a very important point and you need to ask this question primarily. Would you like to get some extra tool for you main occupation (such as microbiology or accounting)? To have fun in your free time? To help your kid with the school stuff? Well, okay, here, on mkdev it is anticipated by default that you are going to work as a programmer (but we are happy to teach a microbiologist too. Have you heard that they love Ruby?).But let's see, Are you absolutely confident about finding an IT job as soon as possible or do you just want to give it a shot and see if it's your cup of tea? If it's the latter, you might try dozens of languages and approaches or maybe not try anything, both are cool.
How much time do you have?
It might be sensible to start with an academic approach (i.e. creating a list of several classical languages as Scheme, Haskell, Prolog, some commercial as Java, Ruby, JS and some hyped as Rust, Pony, Elixir), in case you don't have a strict deadline like 'I should have X dollars in a year'. And then the question, 'What do I choose to write in?' will arise by itself.
What would you actually like to do?
To you it may look like, that it's the same question as the previous one? Well, it's not. Close your eyes and imagine that you are perfect working process. Would you like to be experimenting with an interface, so the user is happy without assuming how hard it was for you? To create a new particle collision algorithm for a game physics engine and then polish it for three years? To write lots of code real quick, integrate dozens of well-known components into a new startup idea, before someone does it for you? To come to grips with some difficult thing so it can work in a new environment? There are many alternatives and some of them are far from 'being just a programmer'. They are about being a DevOps, a UI-specialist or a Data Analyst. Try to spend at least 20 minutes on this kind of meditation, the result might be Very Surprising.
For instance , even if you're certain that you want to work in the field of game development, it might not be easy to understand what exactly you want. Maybe you want to adjust new levels or work out physically accurate collision algorithms or create a game server which can handle a multitude of connections. All of those are variable areas for a self-education.
Only when you have answered (or put off the answer deliberately) all the aforementioned questions, it might be worth asking yourself such a utilitarian question as 'Which languages are being used actively nowadays?' (in the area, theme and environment that you like). And then choose three (yes, indeed!) for mastering them in the nearest future.
You'll have to decide from what to choose on-the-spot, even though we have a short review on some of most popular languages below.
There is a subjective, short and incomplete list of modern programming languages hereafter (in alphabetic order).
1. C
It is the one and only Programming ancestor, On top of that it is very much alive. It's still used for everything systems-related , for programming of different microcontrollers and built-in devices, some drivers and drones of all kinds and all those mindblowing things. It's also a host language for integrating or accelerating other languages or libraries . To cut a long story short, it might not be so useful being your first language, but it's definitely a must-know. Moreover, it's always in progress and some modern specifications are great indeed.
2. C++
It is an obnoxious or delightfully complicated C's nephew. It's object-oriented, with meta-programming capabilities, unnaturally complex and takes forever to compile, well C++ is my programming first love. As far as one can judge, now it's used in the game and desktop system development and a little bit everywhere where C is okay, but also something more complex is needed (since GCC compiler is available on almost every OS and compiles both).
3. C#
It is one of the several languages, where programmers are tightly connected to the Microsoft ecosystem . The field of use includes generally games and expensive and complex Enterprise software. As of today the language is pretty attractive and promising. As all other not so new and pragmatic general-purpose languages, it has a little bit of functional, lots of object-oriented programming, some meta programming stuff and other things.
4. ES (JavaScript, CoffeeScript, TypeScript etc.)
It is an obvious frontrunner currently. ES/JS/... are not just the separate languages, but the family of one. They are used for writing the web-interfaces, administrative software and what not. Now it's bloody difficult to define what is being meant by 'JavaScript language'. If you're hired as a 'JavaScript programmer', You should keep your fingers crossed, as you might become the one who supports an ancient banking system interface (which have to work properly in any browser no matter what), or the part of the team which uses only specialized TypeScript to visualize some scientific data, or the one who takes part in the interface development of the next version of the language, which might be compiled into something that should support old Nokia phones. Yup, the whole world which cannot be described in one paragraph. So it's rather wicked to search for your first language here.
5. Go
It is as plain as day and effective, created by Google mostly for situations when you need some 'fast, dull and steady code'. All the creativity is stopped by its rough structure. But it's beyond words how effective it is, though.
6. Java
It is special. It's a language and a platform (JVM) both. Funny and cool Clojure, mind-bending Scala and JRuby (the same Ruby, but for JVM) all work in JVM. And Java itself now is not an infamous 'limited language for corporate slaves', as it was called before. Every qualified programmer should be savvy about Java, as there is a vast number of powerful libraries and the platform is versatile. And Java is the only Android development language (with an asterisk, of course).
7. PHP
It is an infamous web-invader. The modern specification almost got rid of its dreadful heritage and now it's a fairly decent object-oriented language. But the most part of the Internet infrastructure includes it for times' sake. If you're hired as a PHP programmer, you might either end up in a neat project with an Architecture and Tests, or in a support team of an ancient system with 2000 lines of unstructured if/else.
8. Python
It was a Ruby 'rival' back in the days as it was a trend to use it for a web-development and startups. Nowadays it is used mostly to support complex and serious web-apps, which have grown from it, and further on for scientific/Big Data researches And it even exceeds R occasionally (see below).
9. R
It is a wannabe general-purpose language, but it's used by researchers and those who work with Big Data. Its syntax is somewhat infernal (because it's old), there are a lot of awesome packages written for it (and a bunch of different researches done using this language). So, if you want to satisfy your curiosity, it might look like the best language in the world for you.
10. Ruby
It was 'trendy' and 'hipsterish' just some years ago, but today is yet another mainstream language. It's wealthy and concise, even a little bit 'magical', but rather slow. Ruby is used for web-development mostly. Now it is a simple matter to fall in love with it or come to hate it instantly, as well as to find a job. Ruby is rated highly by administrators and testers, as it has some awesome tools for both.
11. Swift / Objective-C
It is the only choice if you have to deal with iOS development. We're talking mostly about Swift, of course, as Objective-C is now used only to support the old apps. It is just a decent modern language that can be compared to C# and Java, has no special features or any absurdness. It can be recommended as the first language just in case you are ready to work with Apple only, as its applicability is limited on purpose.
There are so many more!
Sorry but this is where the list ends. There are so many languages out there and unfortunately, I just can’t go through them all because we would literally be here all day! However, I have managed to cover the most common ones out there.
But how and what should I choose after all?
Route 1 :
You can start by learning a relatively easy language, with a simple syntax, then progress to other languages.
Route 2 :
You can choose a language that aligns more with your end goals. For example, a particular job or project you want to build. Well, take it all.
Route 1
An easier language is… l Obviously, easier to pick up and learn. l Provides quicker motivational pay off thanks to a shorter time between learning and creating. l Like any other language, it will still teach you the concepts of programming, A.K.A the hard part!
Route 2
A language based on your goals… l Will shorten the time between learning and achieving your end goals. l Can be more fulfilling as you are working with a language you have a vested interest in. This can also help maintain long-term focus. l May set a higher standard. If your chosen language which is particularly hard anything after that will seem like child’s play.
If you want to ease yourself in, and you are okay with taking some time before moving towards your chosen field. Then start with a simpler language to get the concepts down, then progress.
This is perfectly fine, and to be frank, you’re going to be learning many other languages down the line anyway.
However, if you have a very focused goal, and learning this certain language will help you achieve it. Then sure, go ahead follow this route and pick the languages that will lead you straight to your goal. Just be aware if your language is particularly hard, you may have a few sleepless nights ahead!
One final note…Not everyone is going to have such a specific goal in mind, or know exactly what kind of developer they want to be. You may even change your mind down the road. And that is FINE.
When it comes to choosing your first language remember it is not a fatal decision. You can always change or pick up another language. The key is to get started! I defined the two routes as a way of narrowing your choice and giving you focus.
In my opinion, the role of your first language is to teach you programming concepts. These concepts are the hard part, and are universal across most languages. So by learning one you will have a fundamental understanding of the others, which will makes learning other languages easier.
No kidding!!!
The most rational plan is to decide which several ones are interesting enough for you at least to look at. That, of course, providing that you're going to spend much of your time working as a programmer and not just make some extra cash for half a year. You can follow the same principle as the designers do: 'from the closest ones', 'from the opposites' or 'from the complementary ones'.
Your aim, for starters, is to enjoy the process and make some progress. And you're the only one who can open the door to it and it'll take you more than one try apparently. That's the way it is.
Long story short…
1. First decide where your interests and priorities lie. Whether you’re looking to ease yourself in, carve out a career in the particular field, or have a really cool idea for a startup. Know what the important factors are for you, this will give you your starting point.
2. Next, do some research, and hopefully, this post has helped a bit with that. Also, have a clear idea of how you can use the language, and possible projects you could build.
Finally, don’t waste time on researching and just GET STARTED! In all honesty, your first language is not a fatal decision. You can always pick up and learn another, and chances are you will learn a handful of languages on your journey.