Sounds like a joke: A crash course in 4 minutes on technology stacks for software development projects. I wished it were so simple, however, it is not. The idea behind this blogpost is less ambitious: It provides project managers (without technical background) with an overview and some useful buzzwords; this will help project managers (with domain knowledge) to establish a better communication with software architects and software developers in a common project. A deep understanding of the strength-weakness-profile of any given programming language cannot be conveyed in a single blogpost; this knowhow would be anyway the responsibility of the development team.
You will, however, have difficulty to find any single person in the world who can claim to know (let alone master) all programming languages in use. Not anymore. As late as the mid-1990s, a handful of programming languages were actively used; the number of programming languages has exploded since. Wikipedia gives you an idea of the vast number of programming languages in use as of today: list of programming languages.
The most important programming languages at a glance
Java is most probably the most frequently used programming language at present. Advantage: Java is platform independent, so it runs on Linux, Unix, Windows and other OS. Java is a object-oriented programming language and thus facilitates the development of large and complex applications. It is considered suitable for beginners, if only because there is a huge global user community. There’s a lot of well-known applications written in Java: SAP, Minecraft (Gaming), parts of OpenOffice, and most of the apps for Android Smartphones; Java is also used in many small processors, e.g. in cars, ovens, microwaves, TV, etc.
Another widely used and long-established programming language: C, it was actually developed in the 1970s. It’s a quite machine-oriented language, that’s why you can write applications in C will excellent performance. This language is mainly used in mechanical engineering, automotive industry, in short: In embedded systems. If you know the graphics processing program GIMP, it is written in C.
In contrast to C the language C++ is an object-oriented language. Compared to Java, this language allows more freedom, but is also harder to learn and master. Just like C, C++ is also used in machine-oriented programming, and C++ has a high performance. Companies like Google, Facebook and Apple like to use the language. C++ is also found in the following well-known products: Firefox, Google Chrome, Adobe Reader, Skype, Filezilla, VLC Player, 7zip, Notepad, and so on. The irony is that the Java Virtual Machine (on which the Java code runs) is also written in C++/C (no joke!)
There’s another important member of the “C language family”: It’s the language C# (pronounced: C Sharp) is a programming language, that was developed more recently, namely in 2001 by Microsoft. It’s Object-oriented. Note: C / C++ are better in performance, but C# offers some conveniences. Sharepoint, for example, is developed in C#, as well as the IDE Visual Studio, and most of the apps in the Windows Store. Less well known applications in C# are Flowster or ayehu.
Although a lot of new programming languages have popped up recently, there’s still a dozen elder programming languages in use today. This is true for the assembler languages: This is a machine-oriented language that uses the available instruction sets of a specific computer/processor architecture. This also means that an assembler program must be adapted when changing from one computer system to another. Assembler can still be found today in mainframes (IBM Mainframe), in the field of wearables or even in the field of computer games, where program parts are used in assembler to exploit specific processor characteristics (such as extensions). Another very old language (since the end of the 1950s) still in use is COBOL. COBOL is widely used in the economy and administration (including tax authorities). Small side note: The former SPD family minister Renate Schmidt was once a software developer, she wrote applications in assembler languages and COBOL.
A highly popular language is Python, which can be found mainly in the fields of machine learning, data science and also web design. There is also a very large community for this programming language and very many, very powerful libraries. Python is one out of three official programming languages at Google, it’s also widely used at Facebook. Parts of YouTube were developed in Python; even NASA uses Python for their space shuttle missions.
Finally, a few more languages in the environment of Artificial Intelligence / Machine Learning and Big Data: For the (statistical) data analysis of Big Data we like to use R. For AI and for the implementation of algorithms MATLAB is also commonly used. The less common language Haskell is used to map mathematical algorithms. And FORTRAN is used for programming technical-scientific applications.
It’s no-brainer: Make sure you use a future-proof technology stack for your development projects. As in many other areas of life, there are fashions in software technology, that may be short-lived. It’s about the maintainability of software. An example of a language that is now one of the “dinosaurs”: Delphi: Developed in the mid-1990s, temporarily very popular with developers, one could quickly pull up applications. Today, Delphi has been put to the sidelines. Software applications in Delphi are migrated to other technologies.
Introduction to some important frameworks
Let me start with a simple question: What’s the difference between a framework and a library? In short: A Framework provides a programming environment that makes development work easier, faster and – ultimately – more cost-effective. Within a framework, the developer can usually access ready-made features (such as login, logout, password reset, etc.), class libraries, programming interfaces, standardized interfaces to databases or utilities / services. In short. A framework is much more than just a library.
One of the most frequently used frameworks is the .NET Framework, which can be used for desktop, mobile and/or web applications. The initial release of that framework only runs under the Windows operating system. However, the open source variant .NET Core is platform independent.
For web development the following frameworks are quite popular: Symfony for PHP, Ruby on Rails, Django for Python and Play and Struts for Java. Vue.js is gaining popularity right now.
In view of the large number of available frameworks, it’s not always easy to pick the right one for a development team. In order to understand the criteria for choosing a framework over another option, let’s take a look at “Angular vs React”. Quite a number of web developer teams are currently (spring 2019) torn between “Angular” on one hand, and “React” on the other hand. The latter is actually merely a library, but quite a powerful one. Angular is an OpenSource project, led by Google. React is developed by Facebook.
In terms of licensing law, however, there are huge differences, namely uncertainties regarding React. In fact, Facebook had for some time reserved the right to revoke the license in case of patent litigation; this policy has been softened, but it is still the case today that anyone who starts a patent dispute against Facebook loses their license.
As a framework, Angular naturally offers extensive plug-and-play features and thus allows very fast development. At the same time, this programming framework is – metaphorically speaking – a bit like a corset: It offers less freedom, is more restrictive in some points. In short: development speed vs flexibility.
React, on the other hand, is actually merely a library, but developers usually use a set of libraries that can be as powerful as a framework. Difference: This set of libraries has to be created by the developers themselves and they have to ensure compatibility amongst the different libraries.
More about this on various discussion forums on the Internet …