Which Programing Language to Learn?

By Xah Lee. Date: .

Which Programing Language to Learn?

Let me quickly type out a monolog on which language to learn. It depends on what you want to do with it. Like everything else. Here's some of the top criterion.

For vast majority of people, learning a lang's primary purpose is to find a job coding it, a life long endeaver, becoming a programer. This is most comp sci students in college need. In that case, you need a lang that's popularly used in coding industry. Such as, c cpp java csharp rust golang, php js ruby python.

These are basically the langs with the most opportunity for money, in almost any city or country.

Among these, there are many differences, in their area and community, type of people. For example in area, c cpp are usually low level, often the tasks involved usually related to operating system, or hardware. In the case of cpp, a lot game dev.

For example, java, is more related to enterprise computing. In business, in finance, and other. Typically, you work in a big team creating enterprise software (as opposed to, consumer software that are used on your windows machine).

Js, php, ruby, are predominantly used for creating websites. Typically heavily used together with css, html. Python, is used in more diverse areas. Some system admin, scripting, automating things, and in past decade used heavily in machine learning.

The above, are some examples of the lang and the type of tasks they are mostly related by. All are super popular, gets you a job. You can also check if the area is something you are interested.

Note that if you are just a college student, you may not know, what the kinda of tasks are exactly. But you'll pick up as you move along the years. Also, often, a particular task area, is associated with different type of people and community. For example, c, cpp, you'll encounter a lot hardware type of people, with particular way of thinking.

With java, you likely to meet more suits or conservatives. With js and php and python ruby, you tend to meet less intellectuals, but just a lot average coders. Of course, there are a lot exceptions, to a lang's tasks and community. The above is just a rough picture.

Now, maybe you already have a job coding. You are looking to learn a lang for other purposes. For example, you want to learn a learn for computer science studies, or learn a lang for your own personal interest, or other specialized tasks. This group, usually means, they have already been coded for a couple of years. If so, you have at least some idea what you are looking for, or why you are not happy with the lang you know. To chose a lang, is a matter of listing exactly what you want, list our your criterions.

For example, the type that follows me, often are intellectual type, and often ask me, is lisp worth learning, is rust worth learning, or is xyz exotic lang worth learning, things like that. For this group, a minority of society, the question becomes, what are the language's characteristics, out of the tens of languages each used by millions of people, but is not a mainstream lang. Such lang includes: emacs lisp, common lisp, scheme racket lisp, clojure lisp, elm, elixir, haskell, ml sml ocaml fsharp, coq agda lean proof systems, julia, dart, nim, wolfram lang etc many. And also forth smalltalk apl logo self... Etc. So again, if you are not interested about money job for a lang, usually it means you are interested in the technical characteristics of the lang, and computer science related issues.

What is it, you want? Do you simply want to learn a lang diff from the typical C-like syntax? Do you want to understand functional programing? Do you want to explore logic programing? Or other paradims other than oop? Such as term rewriting system, parallel programing langs, stack based, array langs? Scientific programing? Text processing? Massive database manipulation?

Each of these criterion, narrows down the list of non-mainstream langs you can explore.

I hope the above is a helpful guide, a clarification, on answering the question of which language to learn.

Which Programing Language to Learn?