Honestly, this article has long been ripening, because I have been running into discussions, holivars and similar articles lately, where authors and participants put forward various hypotheses to the best of their understanding as an answer to the title question. And their whole meaning boils down to the same confusing argumentation as the ornate sentence written above.
I have come a long way from
sperm to programmer from a teenager who loves pascal and windows 3.11, to a man who loves nothing but rolls and a terminal. So now I’ll explain everything to you and even, perhaps, show some pictures. Go.
So which programming language to choose?
The stupidity of all such questions is that you cannot become a conditional spherical programmer in a vacuum. The programmer now is not a discrete mathematician of the past, for whom software and hardware are secondary. In most cases, the programmer is now a craftsman who works within the framework of the current “window” of technology. And this is the “window” of the moving car, for which you are running. Technology is constantly changing, and we are forced, like Alice Carroll, to flee to stay in place. If you take at least my favorite Google, you won’t have time to understand one Android API, and already there are half of the deprecated features, they also tighten the screws …
Ahem, yes, an article like for beginners, well, let’s figure it out. To begin with, you still have to determine what exactly you want to do? Area, well, at least approximately?
Do not understand anything at all?
Start learning algorithmic constructs. Branches, loops, data structures, block diagrams. It helps a lot to transfer (transfer, not copy-paste from Wikipedia!) Algorithms and blocks to a real programming language.
What language to choose to start with if you want to lay the foundation?
In principle, any. Since you just need to learn how to write simple programs, understand what variables, operators are, explore classical algorithms such as maximum search, sorting, binary search, etc. Next, get down to OOP and data structures, because you will be asked at the interview, how the vector is different from the list!
But what if you need a language for applied tasks?
Yes, and you do not want to become a programmer. Maybe you are a scientist who needs to parse text files with DNA chains, or an investor with the idea to write a trading robot. Here I would advise Python, may adherents of other languages forgive me. Python is a dizzying language with a low entry threshold. At first, it even seems to beginners that this is some kind of easy, “educational” language (until you start poking them into coroutines and functional).
Ok you say but where to go next? Not a single python …? Of course not. Where is it pulling you? The web? Desktop? Scripts? System level? Mobile phone? You, dear, decide, there are no universal solutions!
Want harsh web services? PHP, node.js, ruby, Java and the same Python.
Want to get closer to hardware and operating systems? Grasp C / C ++ (just don’t shoot yourself a leg and cut yourself, although everyone went there in a cast). By the way, I would advise all programmers to at least deal with the basics of C / C ++ and the base classes from STL, you know, it helps to look at the GC with different eyes. If a piece of iron falls on your head, learn assembler.
Want to script, parse, mine, work with big data, build models, write bots, administer the OS and much more? Take already voiced Python3 +. If more work with data – you can still take R.
Dreaming of writing a desktop application? Here on anything! Though Delphi take it! A joke, of course. Here you need to look at which system to write for, and whether cross-platform is needed. For example, Python or Java code will be portable. C / C ++ will have to be built separately for each platform.
Want to learn java core? So you already know why you need java. Do not know? How would you explain now why you need it. Have you seen the air? Nevertheless, one cannot live without it. 🙂
Of course there are fashionable things, Kotlin, for example. Cool thing, this language killed my old friend, nicknamed NPE, well, as he killed – he injured! I just didn’t understand how to study it normally for people who do not know java? No, “Hello world” is written on it easily and without Java, but I don’t know any further.
Maybe you decided to write games? There are many ready-made designers, the same Unity3D, as well as two-dimensional engines, usually immediately under a bunch of platforms. You already look there yourself: C #, Java, etc. And all this is polished from above by knowledge of various data transfer protocols, operating systems, frameworks, encryption and cryptography, authorization and authentication, XML, JSON, database technologies, application protection, version control systems and much, much more.
Now I’ll open the biggest secret how to become a programmer: program! Anything! Write programs even when nobody needs it. Write because you need it, not someone else. Constantly rest against incompetence, fill in these gaps and again rest against new ones. And so long as there is enough memory in all the possible caches of your head.
How else can you answer the question: “What language to learn?”. Obviously the one you are going to talk to.
Regards, Edward Koch,
Lecturer, International School of IT and Cybersecurity HackerU