Printer Friendly

Learning a programming language for today.

ABSTRACT

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 [1] 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.

Keywords: Java, C++, JavaScript, programming languages

1. INTRODUCTION

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:

1. JavaScript

2. Java

3. PHP

4. Python

5. C#

6. C++

7. Ruby

8. CSS

9. C

10. Objective-C

JAVA and C are still in top but they are surpassed by JavaScript, indeed with a very small difference. This case might be explained by the way RedMonk calculates its numbers. For example, there are unaccountable HTML pages counted by RedMonk for their statistics; if those pages from code repositories contain code written in another language in more than 50% of their size than the code is seen as "belonging" to that second programming language. Such an algorithm clearly favors JavaScript as there are lots of website codes that contain mostly JavaScript and are as such reported to this language--and increase its ranking from the point of view of the number of appearances.

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.

As in the case of RedMonk, the first position goes to JavaScript, mostly on the same logic of the enormous data of web code available through the GitHub repository. Still, JAVA and C flavors are in top 10 and remain the strongest contenders from the "real" programming languages family.

Again, for an easier reading of the chart, I will extract the top 10 in an easier manner:

1. JavaScript

2. Java

3. Python

4. CSS

5. PHP

6. Ruby

7. C++

8. C

9. Shell

10. C#

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 standard mid-range programming language developed during the beginning of the '70s, compiled and very much appreciated for the ergonomics of the object code. Its syntax is in fact the base of some of the most advanced and widely used programming languages today: C++, C#, Objective-C, Java, JavaScript or Python. It is now used mainly for low-level operating systems development and embedded applications.

* 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 [2] 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.

* JavaScript--it is an object-oriented language, mostly used for web programming. It is fairly easy to learn and use but prone to errors and security issues due to its interpreted system (compared to the compiled one for the other programming languages presented above). It can be used in either server-side or client-side approach but lately its use is almost solely based on the client-side part. Mostly due to the HTML5 approach, JavaScript is seen as a future star usable for web animations, plugins, extensions or gaming applications even.

* 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:

                          Ranking position
    Programming Language  TIOBE  RedMonk  GitHub  Hipo  IEEE

 1  C                         2        9       8     2     2
 2  C++                       3        6       7     3     3
 3  Objective-C               4       10      11     6    16
 4  C#                        5        5      10     5     5
 5  Java                      1        2       2     1     1
 6  JavaScript                6        1       1    10     7
 7  PHP                       7        3       5     4     6
 8  Python                    8        4       3     8     4
 9  VisualBasic               9       17      31     7    15
10  VisualBasic .NET         10        0       0     0     0
11  Ruby                     18        7       6     0     8
12  CSS                       0        8       4     0    14
13  Shell                    48       12       9     0    19
14  Perl                     12       11      15     9    12
15  SQL                      17        0       0     0    11

Figure 7. Personally compiled ranking


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:

                        Ranking position
    Programming         TIOBE  Points  RedMonk  Points  GitHub  Points
    Language

 1  C                     2      13        9       4       8       5
 2  C#                    5       8        5       8      10       3
 3  C++                   3      10        6       7       7       6
 4  CSS                   0       2        8       5       4       9
 5  Java                  1      15        2      13       2      13
 6  JavaScript            6       7        1      15       1      15
 7  Objective-C           4       9       10       3      11       2
 8  Perl                 12       2       11       2      15       2
 9  PHP                   7       6        3      10       5       8
10  Python                8       5        4       9       3      10
11  Ruby                 18       2        7       6       6       7
12  Shell                48       2       12       2       9       4
13  SQL                  17       2        0       2       0       2
14  VisualBasic           9       4       17       2      31       2
15  VisualBasic .NET     10       3        0       2       0       2

                        Ranking position
    Programming         Hipo  Points  IEEE  Points  TOTAL
    Language

 1  C                    2      13     2      13     48
 2  C#                   5       8     5       8     35
 3  C++                  3      10     3      10     43
 4  CSS                  0       2    14       2     20
 5  Java                 1      15     1      15     71
 6  JavaScript          10       3     7       6     46
 7  Objective-C          6       7    16       2     23
 8  Perl                 9       4    12       2     12
 9  PHP                  4       9     6       7     40
10  Python               8       5     4       9     38
11  Ruby                 0       2     8       5     22
12  Shell                0       2    19       2     12
13  SQL                  0       2    11       2     10
14  VisualBasic          7       6    15       2     16
15  VisualBasic .NET     0       2     0       2     11

Figure 8. Personal scoring sheet of programming languages popularity


4. CONCLUSION

From the above calculated ranking, the clear winner is JAVA with 71 points, quite far from the second ranked C with 48 points and the third runner-up JavaScript with 46 points. The other only two programming languages with scores of at least 40 are C++ with 43 points and PHP with 40 points.

These final ranking with: 1. Java, 2. C, 3. JavaScript, 4. C++ and 5. PHP is quite accurate and arguably true for almost any region of the world.

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.

The applications today, and especially the backbone of now-a-days environment--the web applications, require more than one programming language or technology. Almost every simple website today englobes at least several distinct technologies: HTML, PHP, JavaScript, CSS etc. For the case of desktop, secure network or embedded applications the paradigm is a little bit different; the use of programming languages such as Java, C++ or Objective-C is usually more individualistic. They tend to be used for fewer projects but on larger, enterprise, scales.

Acknowledgement:

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: alextabusca@rau.ro
COPYRIGHT 2015 Romanian-American University
No portion of this article can be reproduced without the express written permission from the copyright holder.
Copyright 2015 Gale, Cengage Learning. All rights reserved.

 
Article Details
Printer friendly Cite/link Email Feedback
Author:Alexandru, Tabusca
Publication:Journal of Information Systems & Operations Management
Date:May 1, 2015
Words:3391
Previous Article:Aspects concerning nonlinearity in econometric modeling.
Next Article:Financial volatility measurement using fractal dimension.
Topics:

Terms of use | Privacy policy | Copyright © 2018 Farlex, Inc. | Feedback | For webmasters