Learning a programming language for today.
The article focuses on the presenting current issue of the IT field related to programming languages and trends for 2015. Today, when almost everybody within the modern and civilized societies is connected to the internet we have to learn how to talk to the computers more efficient and easier than ever before. When the internet access is even protected by law in some countries  we need more and more programmers able to convince the computers to do what we want them to do. As we have a lot of languages to express ourselves, depending on the geographical location, we also have a lot of programming languages in order to make ourselves understood by different types of intelligent machines.
The current programming languages environment is a very crowded place today. If someone just gets teleported onto Earth and wants to choose a programming language in order to develop computer applications... he would have a great dilemma [??]. There are tens, maybe even hundreds counting the niche version too, of available programming languages for someone to learn. Also, in most cases there is no exact boundary among them as related to what or how you can do certain things with them: almost all of the current high profile programming languages can finally do the same thing, more or less in the same manner, more or less in the same parameters--as thinking of ergonomics, memory usage, user interface etc.
Most of the times the market share of one programming language or another is not exactly related to its own capabilities but to its ability to be "connected" with the already available applications or developers. For example, I can build the exact same desktop application with Java or C#, in the same conditions and with the same results, but when looking for developers to follow the project through of course I will look for those that now the programming language that my other members of the team already master.
Nevertheless, the programmers are here, and are here to stay! Programming is now part of our life as much as any classical utility, from the field of mechanics, engineering, medicine to education or socializing. As the number of different intelligent machines, such as computers, smartphones, tablets or industrial robots, grew exponentially during the last decades, there was a quite similar increase in ways of "talking" to them. These communication possibilities between man and machine are all based on the so called programming languages.
2. PROGRAMMING LANGUAGES ENVIRONMENT
By researching the publicly available statics, on the internet, regarding the requirements of job opportunities in the IT programming field, I have compiled quite an interesting landscape. The data taken into consideration comprises mostly job availability announcements requirements but not only; an important part of the data is also taken from the largest free online code repositories, the best known free tutorials websites, the publicly available surveys and social media data mining.
Among the best sources for finding accurate statistics related to the use of different programming languages for either developing new applications or for the development background of already available applications are: IEEE (1), TIOBE (2), RedMonk (3) or GitHub (4) for the international level and the public reports of EJobs of HIPO for the Romanian IT recruiting websites.
We can see that, comparing to the 2014 TIOBE Index, JAVA is back on top of the hill, surpassing the C programming language. Truth be told, if we see the C environment as a whole, comprising all the programming languages derived from the venerable C--such as C++, C# or Objective-C--the C will regain its first place by a large margin. But personally I consider the different C "flavors" as different programming languages. If we want to take into account similarities or disparities between different programming languages we might end with, for example, JAVA and C++ being much more similar to one another than C and Objective-C!
The comparison chart published by TIOBE is based on the most popular search engines, online shopping and media delivery websites data, such as: Google, Bing, Yahoo, Baidu, Amazon or YouTube.
In order to better understand the complexity of the programming languages environment and its dynamics I think that TIOBE's Programming Community Index for a twelve years period would be a good start.
By analyzing this chart we can understand that for the past decade, despite quite an abrupt decline at some points, JAVA and C are the clear winners of the contest. During all the 12 years covered by the chart the two main programming languages together have almost the double numbers of the rest of the pack together.
Of course, there are some circumstances responsible for this fact. One of the most important one being the educational system--JAVA and C programming languages are for the most modern educational systems the starting point for all the students to learn. Some of the other programming languages are usually studied much later and by just a fraction of the people trained in IT programming.
Another very important thing is the usual learning-path for these programming languages. Usually one learns C first and then C++ or C# or Objective-C. Of course, like in any other context, from those that start this learning pyramid quite a lot learn just the first step and then abandon the path, thus increasing the pool of the "basic" programming language paradigm and not going to the more "specialized" versions of the same programming language.
The ranking of RedMonk is very comprehensive and recognized for its accurate data but, personally, I have a problem with the setup of the chart. In my view CSS for example should not be taken as a programming language comparable to JAVA or C because it is part of another category (and there are several other examples too). The RedMonk chart remains a great tool for keeping up to date with the state of the IT development environment but I would personally modify the title of the survey--it is more likely to be regarded as "Technologies Popularity Chart" instead of programming languages.
As even the authors of the chart - RedMonk - agree, their visual approach is somehow difficult to understand at first. So, in order to make it clearer I extracted the results in a more classical manner of a top 10 ranking enumeration:
GitHub is arguably the largest publicly available code repository in the world today, with almost three and a half million users from all over the globe. Being based on open-source community gives a clear image of the real-use of programming languages for development, less determined by certain corporative constraints related to the use of a certain technology over another.
Again, for an easier reading of the chart, I will extract the top 10 in an easier manner:
The prestigious IEEE Spectrum programming languages ranking for 2014, being a more technical approach, comprises also the category of embedded languages (such as for example Assembly or Arduino).
Again, the main contenders remain Java, C and the dynamic web programming languages.
Moving to the domestic market, in Romania, we can find and analyze the programming language requirements by the number of appearances in job announcements for some of the largest online job aggregators, such as EJobs or Hipo.
Java 17.9% C 17.7% C++ 9.0% PHP 6.8% C# 6.7% Objective C 6.2% Visual Basic 4.5% Python 3.9% Perl 2.4% Java Script 2.1% Figure 6. GitHub Programming Languages Statistics (1) Note: Table made from pie chart.
From the domestic overview, JAVA is considered the first among the requirements of employers, followed closely by C and its different flavors.
Before compiling together these data from several recognized and widely appreciated sources, I think a short presentation of the main programming languages that consistently appear in the charts must be done:
* JAVA--is an object oriented programming language developed by Sun Microsystems during the '80s. It is a sort of de-facto standard for the enterprise environment, for games and mobile applications but also for the Android mobile operating system. Java was developed from the beginning to work seamlessly on different platforms. The language syntax borrows a lot from C and C++ but it implements an easier objects model. Since 2010, after the Sun's acquisition by Oracle, JAVA has entered the portfolio of Oracle and is further developed under their supervision.
* C++ - is a generalist programming language, object oriented, based on the C syntax. It is used in a variety of cases, including operating system applications, software applications, client-side and server-side applications or video games. Lately, C++ as well as C, are able to access the latest NVIDIA hardware capabilities through the CUDA  platform.
* C# - it is an object-oriented C flavor developed by Microsoft as part of the .NET family initiative. It actually combines elements of C and C++ and is a generalist language, with an ease of use for rapid development of applications, with support for the COM and .Net platforms. Its use is mainly restricted to applications developed for the Microsoft Windows environment.
* Objective-C--it is another C flavor, used for the Apple environment development, for OS X and iOS operating systems. Its entire ecosystem is based on the Apple software market.
* PHP--it is arguably the most widely used server-sided language for the web, is open-source and built from the beginning to help create dynamic websites and web applications. It is used in over 200 million websites, including the social media leader Facebook. The number of users if based not only on its simplicity, flexibility, efficiency but also on the fact that is free of any charge.
* Python--is a server-sided web programming language used by giants like Google or Yahoo. It is used for its simplicity in cases where high speeds of data processing is not a must.
* Ruby--it is a web programming language, designed for easy development of websites and dynamic web applications. Its simplicity and ease of learn made him a very user-friendly version for beginners. It is used by well-known websites such as GitHub or Scribd.
* SQL--it is arguably the most widely used programming language for relational databases. It was standardize in the '80s by ISO and is the de facto base for most query languages for databases today (PL/SQL, Transact-SQL etc.).
3. CHOOSING A PROGRAMMING LANGUAGE
Compiling together all the data from the above sources and applying an algorithm of ranking based on points awarded for the ranking position in each of those charts, together with a global pondering grade for each of ranking charts I have obtained the following image:
I have retained 15 programming languages (and/or technologies) that appeared inside the five sources taken into account. For the programming languages that did not appear inside a certain chart at all I have used a "0" ranking. For each position inside a chart I have awarded a number of points consistent with the following scheme: 15 points for ranking number 1, 13 points for ranking number 2, 10 points for ranking number 3, 9 points for number 4, 8 points for number 5, 7 points for number 6, 6 points for number 7, 5 points for number 8, 4 points for number 9, 3 points for number 10, 2 points for any ranking number below 10.
By expanding the above image to comprise the scoring points too, I have obtained the following results, in alphabetical order:
Another educated view of the ranking above can consolidate a bit the family of languages, and so the C family of languages would actually be the clear leader with C and C++ taken into account together for a total of 91 points. In this ranking Python would also climb on the fifth position with 38 points.
This ranking is, by now means, meant to be an absolute truth--in fact, as I have already stated before, this ranking is only useable for the actual situation of the present day number of uses of these technologies. The ranks do not exactly give a number of users or an absolute value of any of those programming languages. In fact any of the above ranked programming languages can be a very good, even best, solution for a certain situation, in a certain moment and for a certain amount of allocated resources.
The educational systems are also a factor that is determinant for the results. For example, Java has a distinct advantage of being used on a large scale for educational purposes (for web, desktop, mobile or embedded applications), Python or PHP are widely used for academic project in a lot of countries, but Objective-C for example is usually taught only on a small-bases inside the academic environment.
As one of the conclusions I can clearly state--go and learn Java, is ranked number 1 or number 2 almost in every chart, is stable and established, it has a large array of uses.
As a more realistic conclusion I would say something a bit different--go and learn any of the top 15 programming languages! Do it well and thorough and you will always find a use for it.
This paper has been financially supported within the project entitled "Horizon 2020 - Doctoral and Postdoctoral Studies: Promoting the National Interest through Excellence, Competitiveness and Responsibility in the Field of Romanian Fundamental and Applied Economic Research", contract number POSDRU/159/1.5/S/140106. This project is co-financed by European Social Fund through Sectoral Operational Programme for Human Resources Development 2007-2013. Investing in people!"
REFERENCES & BIBLIOGRAPHY
1. Tabusca, Silvia Maria - "The Internet Access as a Fundamental Right"; published in "Journal of Information Systems and Operations Management", Vol.4. No.2 / 2010, pp 206-212, ISSN 1843-4711.
2. Pirjan, Alexandru; Petrosanu, Dana-Mihaela--"Solutiouns for Optimizing the Radix Sort Algorithm Function using the Compute Unified Device Architecture", published in "Journal of Information Systems & Operations Management", Vol.6 No.2 / 2012, ISSN 1843-4711
(1) IEEE--Institute of Electrical and Electronics Engineering, the world's largest professional associations dedicated to advancing technological innovation.
(2) TIOBE--specialized company in assessing and tracking the quality of software. It usually checks more than 300 million lines of code daily, in real-time on world-wide scale
(3) RedMonk--a widely recognized developer focused industry analyst company
(4) GitHub--largest code-sharing repository online, with over eight million users
(5) Comparison table available on the internet, from http://www.tiobe.com/index.php/content/paperinfo/tpci/index.html
(1) Comparison table available on the internet, from http://www.tiobe.com/index.php/content/paperinfo/tpci/index.html
(1) Comparison table available on the internet, from http://redmonk.com/sogrady/2015/01/14/language-rankings-1-15
(1) Comparison table available on the internet, from http://githut.info/
(1) Infographic available on the internet, from http://www.sitepoint.com/best-programming-language-learn-2014-mid-year-update
(1) Infographic available on the internet, http://www.hipo.ro/locuri-de-munca/vizualizareArticol/731/Limbaje+de+programare+de+viitor
TABUSCA, ALEXANDRU (1)
(1) Associate Professor, PhD, School of Computer Science for Business Management--Romanian-American University; 1B, Expozitiei Blvd., district 1, code 012101, Bucharest, Romania. Email: firstname.lastname@example.org
|Printer friendly Cite/link Email Feedback|
|Publication:||Journal of Information Systems & Operations Management|
|Date:||May 1, 2015|
|Previous Article:||Aspects concerning nonlinearity in econometric modeling.|
|Next Article:||Financial volatility measurement using fractal dimension.|