07 July 2015

Programming languages

There won't be a next big programming language

Programming languages are continuously changing and new ones are emerging. Where does this lead to? How does this development impact the future work of a programmer? Read the answers in the article by Netcetera’s CTO Corsin Decurtins published on inside-it.ch.

Programming languages are a serious subject for software developers. If you don't believe this, try telling a programmer that a particular language is the best programming language – and be prepared for a long lecture, because developers have an emotional attachment to programming languages.

The world of programming languages is dynamic. Existing languages are extended or enhanced, and new programming languages or concepts emerge. The future of programming languages is a significant issue, not only for developers who like to try out new languages, but also for those who work with their personal favorite for many years. What will be the next big programming language after Java, C/C++, JavaScript, Python and PHP, and when will be the right time to switch to the new language?

This question is also relevant for companies that have chosen specific languages for strategic reasons. When is the time to leave behind a familiar language, well-known tools and a stable ecosystem and change to a new language? And which language should you choose? The change is disruptive and involves large capital expenditure. Further, the productivity of the development team will suffer until they are familiar with the new environment.

What are the characteristics of a good programming language?

First of all, a good programming language is not necessarily a successful programming language, and vice versa. The success of a programming language often depends on the available tools or the supported runtime environments. For example, JavaScript is a language with a dubious reputation, but JavaScript is very successful because the code runs on every browser.

The ecosystem of tools and libraries around a programming language is also a critical success factor for a language. The best example of this is Java. Although the language itself is often criticized, the large, versatile and mature ecosystem has made Java one of the most widely used programming languages today.

Syntax is another success factor for a good programming language. Of course, the question of curly, square, round or angle brackets is largely a matter of taste. However, many programmers prefer languages with high expressive power that do not need a lot of embellishments, because they facilitate compact code with a small character count.

The readability of programs often suffers from compact representation. Experienced software developers know that over the long term programs not only have to be understood by computers, but also have to be readable and understandable for other developers. Code often tends to live a lot longer than people originally had in mind. A large number of developers work on a code base over the years, so a good programming language needs to strike a balance between expressiveness, compactness and readability.

Programming languages influence how we think

The semantics and underlying concepts of a programming language are much more important than its syntax. A language is not just a representation of thoughts; it also influences the way we think. This applies to all languages, but especially to programming languages. Every programming language comes with a set of concepts, and programs must be formulated based on these concepts. Learning a new language always means learning new concepts as well.

Early programming languages were strongly oriented to the hardware and binary code for computer processors. Programmers needed to have a detailed understanding of how the computer worked, and programs had to be modelled on concepts such as bit operations, registers and processor instructions.

Expressive languages at a higher level of abstraction

With high-level languages the programming language can be less closely tied to hardware. These languages enable programmers to solve problems at a higher level of abstraction and with more powerful concepts. Object-oriented languages are a classic example of this. Instead of building programs on registers and processor instructions, programmers can define objects that have attributes and communicate with each other.

However, programming languages are still influenced by technical aspects. For example, functional programming languages are now making a strong comeback. These languages have been around for decades, but the development of parallel computing with modern multiprocessor hardware has led to a renaissance. Functional programming languages are especially suited to writing programs that can be executed in parallel.

In addition to allowing programmers to write code at a higher level of abstraction, the concepts and models of modern programming languages have changed how software developers think. Good programming languages enable developers to write programs that have much greater expressive power and whose concepts are more directly linked to reality.

The future is multilingual

However, experience shows that the concepts, and with them the language, should fit the problem. There is apparently no general language that is suitable for all types of programs and problems. Every programming language has its advantages and disadvantages, and they are not equally suitable for every type of problem.

There is presently no indication that the IT industry will converge in the near future on a programming language that could be a major successor to Java, C/C++, JavaScript or other widely used languages. Instead, a variety of minor languages with strengths and weaknesses in highly diverse areas are emerging.

When your only tool is a hammer, every problem looks like a nail. However, a good software developer needs to have a toolbox with a wide variety of tools, and the tool has to match the problem.

Learning languages and learning how to learn languages

The ability to master several languages is becoming an important attribute of good software developers – especially when the different languages involve different concepts, models and ways of thinking. The ability to learn new languages, absorb new concepts and add them to the toolbox will be even more important in future than it is now.

Modern architectures such as micro services support this trend. Relatively small functional units and technology-independent interfaces enable a mix-and-match approach to programming languages and technologies, and they allow a suitable language to be selected for every task.

Of course, developers as well as companies will limit themselves to a certain number of languages, but diversity will increase compared to the present situation.

In short, there is no sign of a new blockbuster programming language. Instead, there will be several smaller programming languages. We can only recommend that developers take a look at various programming languages.

Of course, putting your money on the right horse is a matter of luck, but it's actually not all that important. The ability to learn new languages and absorb new concepts is much more important than being expert in a particular language, no matter which one.
 

About the author

Corsin Decurtins is the Chief Technology Officer with the Zurich-based software company Netcetera. He is responsible for technology strategy and development methodologies, advising clients and internal teams and he works as a software architect and engineer, and technical project manager. With over 15 years of experience, he has mainly developed in the field of Java EE-based information and transaction systems for secure and business-critical environments. Corsin Decurtins studied computer science at ETH Zurich and worked for several years as a research assistant.

Go to German article on inside-it.ch

Talk to the expert

More stories

On this topic

MORE STORIES