What programming language?

How to chose your next programming language.

What programming language?

Learning one programming language is a significant investment of time and energy. New developers should think twice before choosing a programming language to learn. There are very few mentors who can tell why a programming language is good or bad. Some people will say that the best programming language to learn first is the most popular. I have a different opinion!!

According to the TIOBE index Python is the most popular right now, therefore it is only logical to start programming with this one. Or is it? Like many others, I think this can depend on your future goals and ambitions. My advice that follows next is a conclusion after many hours of study and profound meditation.

If you chose Python you will do fine but this is not the best language out there even if it is the most popular. Python has many issues that will bother you and give you a hard time creating large projects therefore you will need a second language.

My journey

I have started programming in Fortran and Basic. My third language was Pascal, then C and DBase. Soon after I used FoxPro until was bought and destroyed by Microsoft. Then I switched to Delpy and Oracle PL/SQL. Lately, I have learned other languages in order: C, C#, Ada, Java, Python, HTML, JavaScript, PHP, Ruby, Scala, OCaml, Dart, Rust, Swift, Julia. I have never truly mastered C++ due to its fast evolution. I was not able to keep up with all issues so I have given up after glimpsing the syntax.

My advice

Avoid specific:

  • Do not start computer programming with a pure language like: (Java, Haskell, Ruby, OCaml). Pure languages are difficult to grasp and lock you into a specific idiom.

  • Do not start learning with a commercial language like: (C#, Swift, MatLab, Delphi, Kotlin, Scala, Dart). These languages try to box you on a specific platform.

  • Do not start learning with a domain-specific language like: (HTML/CSS SQL, PL/SQL, FoxPro, R, Cobol, ABAP). These languages are for elite & professional developers.

Chose paradigm:

  • Functional programming languages are better than object-oriented languages;

  • Interpreted, scripting languages have a short response time for demo snippets;

  • General-purpose languages are more potent than domain-specific languages.

These strategic reasons narrow down the list to select from. It must be a general-purpose language, it should support a functional programming paradigm, should be multi-platform so that it can run on Linux and should be open source. It should have type inference and global scope and should be fast enough for all purposes. My research has revealed such languages do exist and they are production ready.

My favorites

First language that you learn is the one you will probably use for many years until you have the energy and motivation to learn a second language. I recommend as your first computer language one of these:

  1. Julia

  2. Go

  3. Dart

These are not the most popular, but potent and modern languages. If you start now and you are young enough you need at least 2 years to master a language. At least you start with one of the best languages that have the potential to grow not the traditional ones that are stacked in the old ways.

Machine learning

You need to invest your time in the study of data structure and algorithms, also called DSA. By using one of mentioned top 4 languages you will be able to master algorithms and memory models that can handle machine learning.

  • Julia is one of the most elegant languages out there. It is much faster than Python and more organized. It has a fast response time so you can learn it quickly online using Jupiter Notebook or replit.com website.

  • Go also known as GoLang was created by a team of 3 at Google. It is a very fast compiler similar to C which borrows some features from Python. This language is suitable for fast enterprise applications that outperform Java and Python for back-end development;

  • Dart is more complex than the other 3 but more potent. It is not yet as mature as Julia and you struggle a lot as a beginner to understand the error messages. Dart is also good for mobile app development.

Freelancing

For freelancers, there is an entirely different story. Freelancers need productive solutions that work out of the box on multiple platforms. Most ISP provide low-cost hosting for LAMP (Linux Apache, MariaDB and PHP). Of course, MariaDB requires SQL. This is the most easy to use platform to create a dynamic website for a company. Though instead of PHP I recommend Ruby on Rails so it will be LAMR instead of LAMP.

  1. Python - is the most popular and loved for its productivity

  2. Ruby - is the most productive back-end & scripting language

  3. PHP - is friendly and fast but vulnerable to hacker attacks

  4. SQL - is the most productive data-specific language

  5. PL/SQL - enterprise, database-specific procedural language

Web development

Web developers need different languages. PHP, Python, Ruby can not be used for modern Web Design. So what you need is a different set of languages that are not good for beginners. These are domain-specific languages and not general purpose and are part of MEAN stack (MongoDB, ExpressJS, AngularJS and NodeJS):

  1. HTML - Web-specific, document-oriented language

  2. CSS - Web-specific, descriptive language

  3. JavaScript - Web-specific, browser-native scripting language

Back end services

For back-end web services and cloud computing, you must choose a strongly typed language of higher performance. This category will help you to get the highly paid job that you deserve. I have learned these languages with hard work and I don't feel sorry for doing it.

  1. Go - native, strongly typed compiled language

  2. Java - a virtual machine, strongly typed, compiled language

  3. Scala - a virtual machine, strongly typed, functional language

Mobile APP

One of the most profitable domains is to create native applications for mobile devices, so-called Apps. These can be developed by individuals or small teams but require new skills and new tools. The best languages for mobile are:

  1. Swift - for Apple devices

  2. Dart - good for all devices and desktops

  3. Kotlin - for Android devices

Swift is the strongest competitor in this category. It has more intelligent syntax easy to grasp and has innovations that make the language native on Apple platforms. You can't go wrong with this language but is expensive to be an Apple developer.

Dart is an elegant JIT (just in time) compiled language. It is similar to Go but more flexible. It has modern syntax and a good framework: Flutter which can be used for 2D graphic design. Dart developers are very productive and happy with the language. I have heard it has some bugs but will stabilize in the future. Amazing language!

Games

For game development, I'm not yet qualified but my son is using C# to make a mobile game and is working. So I guess this is the best choice. He is using Unity and Blender together with C#. Some other people are using Lua. Though JavaScript can be used to make games at this time hard-core gamers prefer C++. Maybe in the future Rust can be used for games.

  1. C# is a native compiler, loved by Windows developers

  2. Lua is a fast, gaming-specific, interpreted language

  3. C++ is feature reach, system native compiled

Higher performance

Now ... if you already are a developer and wish to boost your career the list you can choose from is different. You can not do high-performance computing using Python. Here are the languages you could use for this purpose:

  1. Fortran - traditional, higher performance, compiled

  2. C - legendary system language, compiled

  3. Rust - new, very safe system language, compiled

  4. Nim - new, very fast compiled language

  5. Assembly - second-generation system language

Job hunting:

If you need a job quickly then learn Python, JavaScript, HTML, CSS, JSON and API then SQL and put them all on your resume. This will make you a full-stack developer, in higher demand than ever. Invest in some courses take a diploma and go to the interview. Good luck!

Conclusion:

I hope this will help you select a language and avoid some of my mistakes. I have tried many languages without considering where I will work, evolving and failing with the current. Sometimes I was the first in the company to select a new programming language or technology. Don't try this! If the company is using Java, then that's the language you should master.


Get started with Sage-Code Programming

Did you find this article valuable?

Support Elucian Moise by becoming a sponsor. Any amount is appreciated!