Overview of Reference Languages
The C language is a true reference. It is a low-level, static, imperative language that is ideal for many challenges, particularly when it comes to accessing system resources or managing performance issues. However, developing applications in C requires solid experience and is relatively complex.
The C++ language is also a reference. It brings the object-oriented paradigm to the C language and its latest version adds functional elements, making it a low-level static imperative, functional, and object-oriented language. Compared to C, it facilitates the creation of certain types of applications, but without necessarily making development simpler, since the developer must master new concepts. Here too, solid experience is necessary to envision creating a complex application.
The Java language has been supported since its birth in 1995 by pillars of the IT industry, including the late Sun, IBM, followed by most IT services companies. Java is a purely object-oriented static language (with its own vision of the paradigm), high-level, and ideal for creating complex applications. A beginner developer can easily contribute to creating Java applications, but it is absolutely necessary to have architect-level skills when these applications become significant.
Trends
In 2004, Python experienced a very clear resurgence of interest, allowing it to reach a wider audience, at a time when C, Java, and C++ were losing their hegemonic character while still being very widely used. At that time, it was Python 2.3.
Among the leading languages in 2004, Python was, along with PHP, the only dynamic language. Note that it was during this period that PHP 5 was released, marking a turning point in the history of that language.
It is the growth of these two languages that would balance the scales between static and dynamic languages, which have remained to this day at roughly 70 versus 30 respectively.
That year, PHP was TIOBE's language of the year, and Python earned the title for 2007 (version 2.5) and 2010 (2.7). Indeed, these two evolutions of the language had significant repercussions on Python's adoption.
The other axis concerns the use of paradigms. Although experienced developers keep praising the functional paradigm, it has not really taken off. The reference in the field, Lisp, still remains in the Top 20 (whereas it was once in the top 5). Python is the leading language with a complete functional paradigm.
Beyond that, the object-oriented paradigm is largely over-represented compared to the procedural paradigm (60 versus 40). This trend has been a true constant for several years. Indeed, while C is the number one language, widespread object-oriented languages are far more numerous, to the point that knowledge of this paradigm is indispensable for a developer, which is clearly not the case for the functional paradigm.
Recent Events in Programming Language History
Besides the year 2004, which marked a resurgence of interest in dynamic languages and a disruption, we can note the following trends among developers:
The C language was (wrongly) considered outdated. It is now experiencing a resurgence of interest due, among other things, to the adoption of new standards and the fact that demand for embedded systems has grown enormously, and C remains a true reference in this field because it addresses embedded-specific challenges well.
The Java language has been steadily declining, which is difficult to explain since it remains at the heart of IT services companies' and many publishers' strategies, and the Java software offering (especially open-source) is exploding. One cause is that the language's complexity keeps increasing, its constraints are very strong, and there are many changes that make it difficult to stay well-trained while in IT services the developer always has their nose to the grindstone and can only train on personal time. Today, one of the paths allowing Java to bounce back is Android development with the superb success of that platform.
The Objective-C language exploded with the demand for mobile application development. It also benefits from a particular appeal for its novelty and trendiness, though its growth is steady. Its success remains conditioned by the market share of specific mobile hardware using it.
The C++ language remains a reference but has suffered from the interest in dynamic languages. Its great complexity and the existence of alternatives in its application domains act as a barrier to its adoption by developers.
The C# language owes its adoption to its proximity to C and the fact that it is at the center of Microsoft's strategy, which weaves a very broad network of partnerships. It therefore sits in second place, behind Java, in IT services companies and among publishers.
The PHP language experienced a very strong resurgence of interest with the release of PHP 5, but the hesitations and difficulties encountered within the community, difficulties in evolving the language, various halts in framework development, and the fact that very many framework alternatives have taken over in other languages mean it has been sidelined since 2010 in favor of other technologies. It remains, however, a safe bet.
The Visual Basic language draws its strength from being embedded in many applications. It is an effective scripting tool for numerous non-Microsoft applications, integrates into their global strategy regarding programming language development, and has the advantage of being usable by non-programmers.
Until 2005, Perl perfectly achieved its goal of competing with C for system programming. However, it has since been declining, having many effective alternatives of its own, because it requires a lot of investment to master and its usual application domain remains narrow.
Some languages, like C, have been abandoned in favor of technologies that seemed newer, more pleasant, original, seductive — more "hype" in short. These are reasons why Python is discovered and tested. However, unlike Python, the excitement quickly died down for these languages because they failed to cross the barrier of being usable professionally in various domains while truly bringing something new. Although there are always many success stories achieved with these languages, their adoption remains confidential and has often required heavy investments, which are most often not renewed.
The State of Python
Python is clearly one of those languages that people may want to discover for their "hype" factor. But Python is not made to just look good — it is made to be effective. For developers who appreciate being able to choose their paradigm, having an enormous number of libraries at their disposal, easily installable and easily usable, it is a professional, precise, easy-to-use yet very powerful and very flexible language.
It is not the developer who bends to a language's constraints, but the language that allows each developer to express themselves.
Python allows the use of object-oriented programming in a very simple way, without requiring extensive knowledge, but it also allows going very far in applying the paradigm and building very complex architectures without stumbling.
Python allows the use of the imperative paradigm, and that is what many researchers want who seek, for example, a free alternative to MatLab to create their own libraries without restrictions. The object-oriented paradigm should not be made mandatory just because some language guru decided it was the right way to think.
Python allows the use of the functional paradigm without requiring the developer to be a domain specialist, instead making it obvious, trivial to use, and turning it into a supplementary weapon.
Python covers an enormous range of application domains, from the Web where many frameworks attract and create new Pythonistas, to system programming, distributed computing with new tools, and GUI design. Today, Python has become a pillar of graphical interfaces on Linux, a reference for the web, and for system programming.
Python positions itself as a competitor to Java, C#, Perl, PHP (since it can do the same things they do in their application domains) and even Visual Basic, as it already allows scripting applications as diverse as Gimp, Inkscape, Blender, Scribus, OpenOffice, KOffice, and more.
Python positions itself as a complementary language to C.
Conclusion
In my view, Python has the tools in hand to ensure that the release of version 3 enables even broader adoption. For this to succeed, several conditions must be met:
The rapid migration of external libraries, particularly for accessing external resources such as MySQL or LDAP connectivity (Python 3.3 should facilitate this work).
The migration of scriptable applications (such as Gimp, Inkscape, etc.) and web frameworks to Python 3, with graphical libraries having already nearly all made good progress.
The widespread adoption of Python 3 practices that enable performance (generators instead of list comprehensions, etc.).
The development of a JIT would be an essential plus to bring Python to Java's level in this regard, knowing that in the domain of pure algorithmics, Python is very sophisticated and the lack of a JIT prevents this from being highlighted.
Greater inroads into the embedded and mobile development domains would allow Python to definitively establish itself as the multi-domain application language.
Today, Python is suited to the demands of developers from all backgrounds, as it covers all application domains, has a relatively low barrier to entry allowing beginner developers to easily pick up the language, and offers an arsenal of non-constraining features enabling developers of all levels to express themselves almost without limits.
It is the modern language par excellence, combining effectiveness and efficiency, performance and profitability.
Indeed, its dynamic, multi-paradigm nature and its very large library allow it to produce quality applications in shorter timeframes than the competition.
The longevity of the language, despite not being at the center of the strategy of large corporations, major publishers, or IT services companies, testifies to its solid foundations. The fact that it is increasingly adopted and supported by companies with complex challenges to solve (see the list of PyCon sponsors) and that many quality applications use it clearly show that it is a choice for the future.
