
Many start the path to learning programming by opening Google late in the evening. Usually looking for something like "How to learn ...". But how does the one who is looking for this decide which programming language to choose?
Someone, after reading websites and blogs of the largest computer companies, argues as follows: “In Silicon Valley, not a word is Java. I think this is what I need. ” It happens like this: “Haskell. He's at the peak of popularity. It is terrible to think what will happen next. Definitely - Haskell. ” And even so: “This gopher on the Go logo is such a nyashka. I want to know Go.
Some, driven by the desire to learn how to program, are looking for this: "Which programming language should you learn first?"
There are questions that are asked so often that, to answer them, they create whole schemes. Here, for example, one of them, dedicated to the choice of the first programming language, prepared by the team of
this site.
')
Clickable:

If you look at this scheme, it turns out, for example, that Ruby is suitable for those who, as a child, liked to sculpt from plasticine.
Choosing a first programming language can be an exciting activity, like semi-serious questionnaires, like: “Who are the characters from Quentin Tarantino?”.
But, before you go headlong into learning Ruby, and just because you could not live without clay in childhood, let me draw your attention to the fact that the first programming language is very, very important. Too much depends on him.
In order to at least in general terms to deal with the chosen language, it will take hundreds of hours of practice. Therefore, cute logos and ingenious schemes should not confuse you.
Choosing the first language is to soberly assess the following factors:
- Labor market.
- Long-term perspectives of the language.
- The difficulty of learning a language.
- What exactly you can create in the process of learning, and, showing others, to support motivation.
New programming languages appear several times a year. About them write articles in scientific journals, they devote comics that can be found on the web.
When it comes to choosing the first programming language, you will have to face a whole avalanche of options. In order to narrow the search a bit, here’s an analysis of Google’s search queries for the last 12 years regarding the study of programming.

From the analysis of search queries, you can find out that Java has had its ups and downs. And, for example, Python rating gradually grew, it became almost the most popular programming language. There is also one language here, simple but with remarkable capabilities, the schedule of interest in which is slowly growing from year to year, although it is at the very bottom. This is javascript.
Before talking about these programming languages, let me clarify something.
- I do not argue that a certain language is objectively better than any other.
- I agree that developers ultimately learn more than one language.
- I am for the fact that at the very beginning of the way a programmer should study a single language well. And, as you most likely guessed, after reading the cleverly disguised headline hint, I believe that this first language should be JavaScript.
We begin our conversation about the first language with a look at how programming is taught today.
Basics of information technology and programming training
In higher education institutions, they usually learn to program in the framework of information technology subjects, which often look like additions to mathematical courses, or are tied to some basic specialty, say, electrical engineering.
Surely you are familiar with this statement of Eric Raymond: "Education in the field of computer technology just does not make you an excellent programmer, as the study of brushes and paints will not make you an excellent artist."
Today, just as before, most educational institutions place an equal sign between programming and information technology, and information technology equates to mathematics.
As a result, many introductory programming courses are built around fairly low-level abstractions of languages such as C, or languages used in math packages like MATLAB.
And those who make decisions about what to teach in programming courses usually follow all sorts of official sources who regularly publish reports with language ratings. Among such reports, for example,
TIOBE Index . And here is the
IEEE leaderboard.
Such “leaderboards” look almost exactly the same as ten years ago. However, things are changing, even in academic circles.
So, in 2014, Python
overtook Java , becoming the most popular programming language in the leading courses on information technology in the United States.
And I am sure that another change will happen, but what can I say - this is already happening.
Looking at the languages used by programmers performing real projects, we will see a very different picture.
Here is the result of a survey that was conducted at the Stack Overflow in 2016. It was attended by 49397 developers. More than half of them use javascript.

Without JavaScript, the development of web interfaces is impossible, and recently, thanks to Node.js, the relevance of JavaScript in the server code is growing. This language is rapidly spreading to other areas, such as game development and the Internet of things.
Among programmer jobs, JavaScript is mentioned more often than other languages, not counting Java. Here are the data from the largest job aggregator
Indeed.com .

It is no coincidence that we, on
freecodecamp.com , have gathered a community of developers involved in open source JavaScript projects. Over the past two years, more than 5,000 people have used the Free Code Camp to find their first job as a programmer.
By the way, I don’t stand up for JavaScript just because I teach programming in it. Everything, just the opposite. I teach this language precisely because knowledge of JavaScript is the right way to the first work of a programmer.
But is JavaScript just right for you? Is it worth it to become your first programming language? Let us consider in more detail the factors of language choice, about which I spoke above.
Factor # 1: Labor Market
If you are learning to program out of pure curiosity and love of intellectual entertainment, you can skip this section. But if you, like a huge number of other people, are studying programming in order to find a job with the help of acquired knowledge and skills, you should pay attention to what is being discussed here.
As I said before, in vacancy announcements, Java is most often mentioned. In second place is JavaScript.
But in the case of JavaScript, there is one important thing to consider. Although the language has existed for two decades, only relatively recently it has become a serious tool by which giants like Netflix, Walmart and PayPal create full-fledged applications.
As a result, many companies hire JavaScript developers, but not so many developers.
Here is the data from
Indeed.com , here shows the ratio of vacancies and applicants.
So what we see. At one place Java-developer has 2.7 programmer. In the field of vacancies, where knowledge of PHP is required, as well as in the iOS development environment, a similar situation arises.
If you look at the data on JavaScript, it turns out that there is only 0.6 programmer per job. For JavaScript developers, this is definitely a seller’s market.
Factor # 2: long-term perspectives
JavaScript projects on GitHub receive, on average, twice as many pull requests as Java, Python, or Ruby projects. And besides that, JavaScript is growing faster than any other popular language.
Here are the relevant
GitHub Octoverse data:

The JavaScript ecosystem is also positively influenced by serious investments, both financial and human capital talented engineers, from companies such as Google, Microsoft, Facebook and Netflix.
For example, over 100 developers contributed to the TypeScript open source programming language (an enhanced version of JavaScript with static typing). Many of them are Microsoft and Google employees who get paid for this job.
It is more difficult to find a similar form of collaboration between companies in the Java environment. For example, Oracle, which actually owns Java by swallowing Sun Microsystems,
often sues companies that are trying to work on this language.
Factor number 3: the complexity of learning a language
Here's a cartoon about the complexity of programming languages from
XKCD .

Most programmers would agree that high-level scripting languages are relatively easy to learn. JavaScript falls under this category, along with Python and Ruby.
And even though in educational institutions the languages with which they start learning to program are still such as Java and C ++, it is much more difficult to understand them.
Factor # 4: projects that can be created using the knowledge gained
This is where javascript has no equal. It can work on any device that has a browser. Why, at least right here, where you read it. In principle, using JavaScript, you can create almost anything you want and spread it around the world with the confidence that it will work on almost anything that resembles a computer or mobile phone.
The ubiquity of JavaScript has led to the famous saying of Jeff Atwood, co-founder of Stack Overflow: "Any application that can be written in JavaScript will eventually be written in JavaScript."
Over time, this statement, which is also called the “Atwood Law”,
does not lose its relevance .
In the environment of other languages one can observe several other trends. For example, once promised that Java will work literally everywhere. Remember
java applets ? Earlier this year, Oracle officially abandoned them.
Python suffers from similar problems. That's what James Hag wrote about this in an
article that it’s time to abandon Python as the main language used in teaching programming. The student asks: “How can I give this game that I wrote to my friends? Or, it will be even better, is it possible to somehow write it on my phone so that I can show it to everyone at school, but they would not have to install it? ” The teacher, if we are talking about Python, can only sniff. In a nutshell, there is no answer.
If we talk about JavaScript, here are the live answers to the above question. These are applications that members of the Free Code Camp community wrote in CodePen using a browser.
Here is the
game "Simon" , created in the style of the 1970s.
Here is the implementation of the mathematical game of John Conway
"Life .
"
Here is a Star Wars
search page for Wikipedia .

And here is a
bagel game with a traditional dungeon.

First language: walk on tops, or dig a little deeper?
First learn one language thoroughly. Then take up the next one.
If you jump from one language to another, without really lingering anywhere,
you will not go far . In order to advance noticeably further “Hello World”, you need to properly study your first language. After that, the second and subsequent languages will be much easier to understand.
Having mastered the first language well, you will be able to expand your knowledge by studying other languages and developing as a programmer. Here are a few words about languages that should be considered after a decent mastering of JavaScript.
- Learning C is a great way to figure out how computers actually work, particularly in terms of memory management. C is especially good at high performance computing.
- C ++ is great for game development.
- Python has no equal in scientific and statistical calculations.
- Java is useful to those who see themselves as a programmer in a large company.
But first, again, it's worth exploring javascript.So, now I want to do the impossible. I'm going to try to imagine the objections of some readers, criticism of JavaScript and my ideas, which may appear in the comments, and respond to this criticism.
Objection number 1. Javascript - slow language
JavaScript, for most practical purposes, is as fast as languages that are traditionally considered high-performing.
JavaScript (this is about Node.js) is orders of magnitude faster than Python, Ruby and PHP. Its speed is approaching C ++, Java and Go. Here are the results of one very serious performance test for various programming languages.

Objection number 2. There is no static typing in JavaScript.
Like Python and Ruby, JavaScript is a language with dynamic typing. And this, on the one hand, is convenient, and on the other, it is able to lead a developer into a maze of errors. For example, here I want the variable
exampleArray to be an array. I write values to the array, check its length, that is, the number of elements contained in the array. It looks like this:
exampleArray = [1, 2]
-> [1, 2]
exampleArray.length
-> 2
, , , JavaScript, , ,
length:
exampleArray = "text"
-> "text"
exampleArray.length
-> 4
, . . , .
, , , JavaScript. TypeScript. : « , TypeScript, , , JavaScript, ».
№3. , JavaScript
, JavaScript. , , , , , . :
- JavaScript . , Angular Cordova React Native.
- , - - , , , , Node.js + Express.js.
, , .
, ,
Stack Overflow, 49525 , -. .

, , .
.
, . Facebook, Google Maps . . .
. , , JavaScript. , Facebook Google, JavaScript- .
2016- , -. , « ». , , , – .
: JavaScript.
№4: JavaScript , ?
,
. , JavaScript, ,
. . , -
.
, C++. , JavaScript, C++ . , , .
JavaScript – .
!
. - , JavaScript, « », , , C++: « : , , , ».
!