What programming language?
Tags: javascript, python, rust, julialang
Published: 2022-02-17 12:59:48

Hello world!

I'm burned out software engineer. I'm no longer able to focus on large scale projects. I use to work in enterprise on very large projects with many teams of developers. After a life spend teaching others how to make applications I have decided is time to work by myself as independent instructor.

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

New developers should think twice before choosing a programming language to learn and there are very few the ones 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.

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

## Strategic Facts

* Do not start computer programming with a pure language
* Do not start learning with a commercial language (C#, Swift, Go, MatLab)
* Procedural languages are better than structured languages
* Object oriented languages are better than procedural languages
* Functional programming languages are better than object oriented languages
* Dynamic scripting language are easy to grasp and faster to assimilate
* General purpose languages are more potent than domain specific languages

These strategic advices narrows down the list to select from. It must be a dynamic language it should support functional programming paradigm and should be open source and multi-platform so that can run on Linux.

## General Purpose

Therefore my top 3 most favorite languages I recommend as your first computer language are these:

1. Dart 
2. Julia
3. Python

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

## 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 require 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. SQL
2. Ruby
3. PHP

## Web development

Web developers need a different language. Dart, Julia or Python can not be used for modern Web Design. So what you need is a different set of languages very hacky and not at all good for beginners. These are domain specific languages and not general purpose and are part of MEAN stack (MongoDB, ExpressJS, AngularJS and Node) :

1. HTML
2. CSS
3. JavaScript

## Higher performance
 
Now .. if you already are a developer and wish to boost your career then the story changes. You can not do high performance computing using Python. Here are the 3 languages you could use for this purpose:

1. Rust
2. Fortran
3. C

## And now, the conclusion:

I hope this will help the new generation of developers to avoid my mistakes. I have try many languages without considering careful where I will go next, 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. People who introduce change are not appreciated for the effort. If the company you are aiming is using Java then learn Java and that's the language you should learn first.

Thanks for reading!