How to choose a programming language for your project
Are you a beginner? Or a professional looking for a change in 2021. This year has been a blast for new technologies and so with that much information floating around how to choose one language over another. What to look for and what’s in the future for us. What makes language a good language and what are the different parameters which can help you write better code and develop what you heart desires.
This article is attributed towards developers who are just starting out or professionals who are looking for a change in their daily driver languages and embrace the future of new programming languages. It will help you to get a clear picture and pros and cons of various programming languages and will help you choose the best language for your preference and field.
As we are all surrounded by people from various fields it is really hard to choose the language which will be better suited to your needs and make you a better developer and create new innovations for the future. So are you in a dilemma or in so much doubt that you are still unsure about which programming language to start from and that’s taking you forever to choose what’s best for you.
Well in the start it was hard for me too, with so much information in the rapidly changing world I know it’s hard to choose and settle on one language which does it all. Well congrats now I know there isn’t such a language which can do it all. We need to understand that each language has its purpose and scope and every language is beautiful in it’s own field (e.g can’t expect a knife to cut down trees, as a knife shines in the kitchen).
On an average a developer learns about lots of languages that will help them advance in their career but only use one or two for the rest of their career (best example is Game Devs) isn’t it crazy.
So What you can do to get you out of this doubt. I have listed some of the few steps which will help you to decide the language trends in your field and choose the language which will be your companion for a long time.
Step 1 — The first thing you need to do is understand your field in which you are passionate about and willing to learn as it will help to get you started easily in the field. A broad category of fields in computer science is available at your disposal such as Theoretical computer science, Computer Systems and Computational Processes and much more check you more here https://en.wikipedia.org/wiki/Computer_science . Take you time in exploring the fields and choose whichever suits you better.
Step 2 — Alright so once you know what your field is (for example `Software engineering`) and set on to sail deeper you need to look into the trends of programming languages used in that particular field (e.g C, C++ and Rust in Systems Programming, etc.). A little bit of googling and reading forums will do the trick for us here (Use Github, Reddit, Blogs, etc) so be patient, look and understand some of the particulars on which languages people use.
Step 3 — Alright so now you know what is the field you want to go in and a rough idea on what languages are developers using globally on average, now we want to have a rough idea on language features such as Paradigm which it uses (as if you building real time systems then you might consider a faster language over slower languages in terms of processing) and how it has evolved and of course how it scales, usually scaling isn’t much of a factor in personal projects but in industry scalability is a real parameter that companies do look for it before setting on a language for their project. And you need to get a little insight about syntactic sugar and feel about the language used according to you understanding (for example in elixir case statements are written as:
case n do
some_case -> matching res
And similarly in C++ we write it as
case some_case: matching result; break;
) so do look into syntax which you like.
Now if you are interested in getting a job, you can also look into which companies use that language(which you have chosen in the previous step) in their project and which languages they support (e.g Ethereum supports solidity, Google supports Golang, etc.) And about the security models which language gives like strict types, memory security etc.
Step 4 — Now comes the hard part as we know a little about language now you task is to do at least one or two guided tutorials (look into youtube, blogs, dev.to etc.) in that specific language which you have chosen, it will help you get more feel and understanding about the language and it’s good to write something to train the brain. It will be hard in the start but as with everything we learn , it will take some time too. So now we know a little about language insights and syntax of language. If you are now not comfortable with the syntax then you can try out other languages too following the above steps again.
Step 5 — Now let us assume you are not still satisfied with the language you choose and want to do something more specific like really domain specific , then you should try considering DSLs (Domain Specific Languages) which are purposefully built to work on a specific task or field. There are numerous DSLs with very simple to very complex one, so you might have to dig deeper to get more knowledge, and if you care lucky you might also find some general purpose languages which transpile to that DSL (e.g Python can be used to write smart contract in Tezos which uses Michelson Language or in short Python code is transpiled into Michelson before being deployed on the blockchain.)
Step 6 — Huh long journey so far, well let us assume that even now you are clueless and don’t know how to get started then now is a good time to connect with community and ask for their opinion on why they use the languages they use and maybe they also have the same purpose as you want and will help you too. Also there are many great platforms such as Github, Gitlab where you can surf through to find the projects which match your needs and give that language a try.
Well in my journey I have tried many languages and am still learning. I encourage you too to learn about new languages that might piqued your interest and give those a try. For now I am learning Elixir and Rust because of Elixir’s fast runtime(in context of concurrency and backends) and Rust’s secured memory model. These are relatively new languages and are rapidly changing for bugs and fixes if there are any. What made me interested in Rust is its safe memory model and compiler. It is memory safe because it uses a ownership based memory model which doesn’t need any garbage collector hence making it a fast language. Elixir is built on top of erlang and it is a successful language in distributed computing. You can read about its really great experiment which surely had captivated my interest in learning it https://www.phoenixframework.org/blog/the-road-to-2-million-websocket-connections it is on phoenix framework which is built on elixir.
So choosing and learning a programming language isn’t too hard but we need to get started somewhere to learn and grow. I hope this article has helped you in getting more insights over choosing a programming language in the field which you want to work on and have a happy learning journey ahead and have fun.😊