2019-09-28 07:42:52

Hello.

The choice of programming language - the problem of the individual. Someone should just decide on the area of activity, and this is an obvious choice. And someone like me, undecided, looking for a versatile option. And don't find ...
Today I'm writing here with the hope that you give me really good advice on choosing the first programming language. And no, I'm not talking about completely the first programming language, as I touched many. We are talking about choosing a first programming language, which I'll use in real projects.
Of course, before I write here, I conducted my own research. Here I will make them, so you can give an answer on the basis of this.
The main objective is:
Find the programming language for use in real projects and work.
I mean, I need a language with which I will work with the comfort that is able to develop real projects, and with which, will be able to find a job.

My research is divided into 2 parts. Interests and opportunities.

interests

I itself is a versatile personality and programming too.
I'm interested in:
Developing applications for Windows, Linux and Android;
Backend development of Web applications;
Artificial intelligence, machine learning, robotics.
It should be emphasized that I'm not interesting development from scratch, and the possibility of using ready-made tools.
Options on interests not so much.
Languages that I can use for Windows, and for Linux, and Android - C++/C#/Java/JS;
Languages that I can use for developing web applications (Backend) - PHP/C#/Java/JS/Python/Ruby (took only popular in this);
Artificial intelligence, machine learning, robotics - C++/Java/Python.
As a result, the list of the programming languages: C++, C#, Java, JS, PHP, Python, Ruby.
Discard excess.
C++. I need to know, but not a good idea to use it on the Web or Android.
PHP. Due to the limited web.
Ruby. Because of the low popularity in Ukraine, where I live, a narrow range of applications.
The final list of the first part of the research of programming languages: C#, Java, JS, Python.

Opportunities

Here I mean employment opportunities, prospects, etc.
2 Restrictions:
The opportunity to become a Junior developer no more than six months;
It attracts remote work.
On the first paragraph everything is OK. But looking at the second paragraph, discard Java. Remote work is possible only for Android developers, but here goes Kotlin. Learn Java for Android development, since it is the leader in job openings, in addition to the Enterprise, does it make sense?
The rest assess the ratings by DOU:
https://dou.ua/lenta/articles/language-rating-jan-2017/
https://dou.ua/lenta/articles/language-rating-jan-2018/
https://dou.ua/lenta/articles/language-rating-jan-2019/
The ratings on the Ukrainian and Russian languages. There you can find a table. We are interested in the first 4 elements:
Position
Programming language
part of the market
Changes compared to the previous year
See that JS grows, however, the recent JS growth falls.
We see that C# has fallen in recent years, but not by much. Considering the active development, there is hope for growth in the future.
Finally, Python, about which is spoken everywhere. I see a slow but inexorable rise.
Python would be ideal, if not Android. C# allows you to develop native applications. I don't know about JS, but Python I know that Python cannot.
I see 2 options:
Learn C++ with Python;
Add the third language, and spend it more time than in C++, or replace the Python JS.

Now only your ideas and advice.

Thanks in advance!

2019-09-28 08:27:42

I am happy you have done your own research, but I hope you understand that this is a question you (generally) should just not ask purely because it is an incredibly subjective question with incredibly subjective answers. 99.999 percent of the time, asking this kind of question leads to flames and people throwing around misinformation.
I'd like to caution you on jumping to conclusions and using a programming language purely based on its popularity alone as you have demonstrated in your original post. This approach has a major problem wherein you use a programming language not for its comforts and how easy you can work with it and its tooling, but purely based on what a few websites say about it. This is a bad habit and I urge you to rid yourself of it as soon as you can. Learning about the hottest technology is good, and I encourage this practice, as well as trying out the hottest programming languages to see how they fit you and your mental thought processes. However, selecting a language based on the latest trend and using that in your job (even if you dislike it) is a bad idea because you will be less productive with it than you would be in a language that you were comfortable with. (If you do work at a job you may not even be able to use the most trending language either.) My advice would, instead, be this:
1. Breeze through articles and code samples on the languages you have outlined in your original post to get a general feel for the language, its flow, and its rules, but at this point don't start diving deep into any of them. You are skirting the peeks of mountains and peeking inside the caves on its cliffs to get brief glimpses, not diving in every single cave and looking around for hours on end and then moving to the next one (because there may be an innumerable amount of caves).
2. Once you have found a language that you like or believe you would enjoy programming in, select that out of all the others and go diving a bit deeper. Download necessary tools and try out a few tutorials and make your own programs to try it out for yourself and see how comfortable it feels to you. Are you able to understand it and work with it? Do you believe that this particular language will accomplish most of your needs?
Performing the above tasks will allow you to determine your "general" programming language -- that language which you will fall back to when you believe that no other language that you know of will aid you in accomplishing your task. Remember: the tools you use are your friends aiding you; work with them and they will bring your dreams to life.
Next, ask yourself, "Will this language help me in <given field>? If yes, how easy is it to get started?"
The reason I raise this point is because you eliminated PHP because it had "limited use." By far this is most definitely false. I can say with most likely 100-percent accuracy that PHP powers over 60 percent of the internet today. One of the reasons it does -- or has such an influence -- is that it is incredibly easy to develop web applications with PHP. All you need do is set up a LAMP/LEMP server (which can be automated these days) and you can immediately start coding. You don't need .NET, the JDK or JRE, a C compiler, Node.JS, or anything else to run your apps -- all you need are a Linux box, a web server, PHP and a database of your choosing, and your good to go.
I know this didn't directly answer your question. However, doing my own research, I find that JavaScript, Python, Java, Go, Elixir, Ruby, Kotlin, TypeScript, Scala, and Clojure to be the top (according to https://codeburst.io/10-top-programming … 1798d652). This is countered by Learn to Code, which agrees with the above site, but also says that C, C++, C#, VB.NET, PHP, Objective-C, and SQL are the top. This, though, is countered by Hackr.io, which, wile agreeing with some of the other two articles, also indicates that R, Swift, and Matlab are also onces you should learn (and also recommends PHP). As you can see, the shear amount fo diversity makes this question quite literally impossible to answer. (My sources were https://fossbytes.com/most-popular-prog … -languages and https://hackr.io/blog/best-programming- … obs-future.)
If we go by (what I believe to be) the ultimate authority on the top programming languages of the month -- the TIOBE index -- then we immediately gather that Java, C, Python, and C++ remained in their top 10 places from September 2018 to this month; however, changes begin to be noticed after C++: C# moves from sixth to fifth place; VB.NET moved from the fifth to sixth place; JavaScript moved from eighth to seventh place; SQL moved from ninth to eighth; PHP moved from seventh to ninth; and Objective-C remained at its current place. (Source: https://www.tiobe.com/tiobe-index.)
I hope this information helps!

"On two occasions I have been asked [by members of Parliament!]: 'Pray, Mr. Babbage, if you put into the machine wrong figures, will the right answers come out ?' I am not able rightly to apprehend the kind of confusion of ideas that could provoke such a question."    — Charles Babbage.
My Github

2019-09-28 13:24:57 (edited by Munawar 2019-09-28 13:30:07)

Since we're talking mostly potential for employment here, these are the languages I use most often in the real world:
Node: Getting started is simply a matter of of installing NodeJS with the Express package and you have a fully functional, production-ready web server. We use this so we don't have to tinker with things like Apache whose setup is sometimes a specialization in itself. Time is money, and managers don't care that it's taking a while to set up Apache because you want to do it correctly. Their only question is: when can we see something? Also, because it uses JavaScript, your front-end developers can switch to back-end development rather quickly. Just yesterday I challenged a coworker to write an endpoint in the back-end using Node. They were fearful, but ended up having their first endpoint ready in a matter of half an hour. Now they're one of my fellow back-end developers.
Java: With its Springboot framework allows fast back-end setup.
C++: If one was ever inclined to develop a block chain as we have done because of its low-level functionality and native compilation. Also for the granular control it offers the developer from strict memory management if one chooses, to its move semantics if one chooses to employ them.
Python: For AI, using APIs like Tensorflow. Also for its wide use on microdevices such as Pi.

2019-09-28 14:29:27

Hi there,
I won't answer this directly because as Ethin said it's very subjective.
I just wanted to note on the list of languages suitable for AI development, that while yes, all of them can be potentially used, there is a big difference between Python and C++ & Java. Python is very powerful for scipy - packages like numpy, sympy, IPython etc. but also for its dynamic syntax, which provides many benefits like a possibility to iterate a list backward by minus sign i.e. list[-2], or the way, how it doesn't require input to functions be exactly specified, so you can pipe in whatever won't crash and get good & immediate results.
These two properties of Python combined are really awesome, making it possible to do magical things with data and computations at really no time.
That's why Python became so popular in scientific community and why will statically typed languages never reach its power in this area.
Yes, you can develop neural networks in Java and with some struggling I believe also in C++. But still, these two sides are so different, completely different worlds & development experiences, that I personally would be very careful about writing them in one row.

Also what comes as an advantage of Python on AI field, is one of its main disadvantages on field of developing real applications. Yes, it's great that you can perform magic with neural networks, however those are normally just few lines of code, where it's primarily important what techniques do you use and how, so it isn't very probable that you would make a mistake on such a small program, if you are not me of course. smile
However when you're making a real application, the code tends to be larger and thus it's more profitable to go slower with compiler looking on your mistakes and announcing them to you, than developing blazingly fast an application, which will be full of mistakes, because wrong types went on wrong places etc.

So you see, a feature, which is an unvaluable tool to have for one thing, is a major problem for other thing. Your interests are simply too broad to be covered with one language, or better said to have an ideal tool for each of them.

I would myself say, if you want to make multiplatform native applications, go for C#. if you want to play with AI & machinelearning, go for Python. If you want to play with robots, go for C++.
There is no single answer for all of them, and even those I recommended could be still surpassed by your personal preference i.e. how do you like the language.

Best regards

Rastislav

2019-10-01 06:34:30

In my work as a coder, I use Javascript, python, and C++, but mostly Javascript and python every day.
If you want to be the most effective coder and leverage your time with producing full-stack apps, you can't beat Javascript. Do a PWA with a Node backend and you have everything you need.
For speed of coding, you can't beat python. It's just so fast to write basic applications in python, you can get a simple model for machine learning trained in very few lines of code.
I have found that being able to work equally well in Javascript and python has made me very employable.
Start with one and learn the other as you progress. They are very similar, but I would say that python is better for learning, as in Javascript you have several versions of the language that can be used in the same app. To loop through a list in Javascript, I can think of 3 ways that are completely valid for a simple for loop, whereas in python there are two, and for i in list is used most of the time.
But it is completely subjective and the above fits all your criteria, so do what I did and learn python first, then learn Javascript.