Has Python concepts from C.

Programming languages ​​for beginners, those changing and returning

Knowing how to program is great! With your own hands on the keyboard you can create useful tools, impressive game worlds or let the computer solve complicated problems. But as nice as it is to be able to program, it is just as difficult for newbies to learn.

Programming languages ​​are unfortunately always a compromise - a translation layer between a language that we humans can write and understand and one that a processor can handle. Each programming language approaches this translation task a little differently.

c't focus: programming languages

Anyone who is ready to start programming as an absolute novice will be overwhelmed by strong opinions when looking for a suitable programming language: "Make sure you start with an object-oriented language," some advise. “Be sure to use strongly typed language,” many say. Still others have specific recommendations as to which is the only true language one should learn - and which is by no means.

Quasi-religious debates

The debates in offices and forums are often conducted with an almost religious zeal, and many would like to defend their language against any criticism. For beginners, however, these debates are not at all helpful: You must fear that by choosing one programming language you will make a fatal decision against another, perhaps much better, language. Let me tell you that the first language you will learn will almost certainly not be the last. Anyone who, after the initial experience, can become enthusiastic about programming in the long term, will at some point also try out another language and learn it comparatively quickly. In your first language, take the time to systematically internalize a few basic concepts such as data types, variables and classes - then the switch will be more fun later. Much will be surprisingly familiar to you in other languages.

When choosing a programming language, you shouldn't just use an index as a guide.

The articles listed above were created to provide you with a guide through the landscape of programming languages. Instead of having ideological discussions, we characterize many different programming languages ​​briefly and as objectively as possible - including a little insight into the syntax of the language and a classification for whom we would recommend the language. The writers have all spent a lot of time with the language they write about. They cursed it, are desperate about it, and at some point came to appreciate it. From their own experience they know many of the strengths and weaknesses and have often seen grammatical changes themselves.

It's worth changing

However, these articles are expressly not only aimed at beginners who have never come into contact with programming. The profiles are also intended to inspire experienced developers and those who last sat in front of a code editor years or decades ago to reconsider their previous opinion about foreign languages. Perhaps you will discover one that can solve one of your problems very differently and much more efficiently than your native programming language.

It can also be worth taking a look at articles on languages ​​that you have avoided so far - programming languages ​​are constantly changing and your beliefs from 15 years ago are mostly out of date.

Index Confusion

When looking for the “right” language, many take a look at rankings and indices. The best known and frequently cited representative is the TIOBE index, which bluntly takes into account the number of hits for the search query “ language” in common and less common search engines. However, this index cannot provide any information about how popular, efficient or useful a language is - it mainly tells you how much has already been written about it on the Internet. So it is logical that C and Java usually land in the top positions. Both have been in business for a long time and are still actively involved.

The PYPL index (Popularity of Programming Language), which is supposed to measure popularity by name, actually measures something else: It also uses data from search engines, but not the number of hits, but the number of searches for tutorials, and based on Google Trends. The more users search for " tutorial" on Google, the "more popular" the language becomes according to the logic of PYPL. So Python is currently in first place, C including C ++ only in sixth place. There are also a lot of arguments against this ranking. Is a language really good or popular because a lot of people are looking for help on Google, or is that a disadvantage?

Programming is neither a sporting competition nor religion, but a craft, and the programming language is a tool.

All of these rankings may be a nice topic of conversation for the coffee kitchen of developer offices (as an alternative to the Bundesliga results from the weekend). However, nobody should be guided by this when it comes to choosing a programming language. The most that can be seen in these rankings are noticeable changes over time - if a language suddenly appears more and more in search engines, this can indicate that the user base has grown. But even TIOBE had to admit as early as 2004 that there could be distortion effects and that a sudden decline in Java could simply be resolved by a change in the Google algorithm.

When using the indices, the following applies: Programming is neither a sporting competition nor a religion, but a craft. The programming language is the developer's tool for solving problems. And a tool doesn't have to be the most googled one, but above all it has to fit: to the problem and also to the developer.

The main thing is appropriate

When making a decision, it helps to be clear about what kind of projects you want to tackle with the language. Most of the time you have a specific goal in mind when you start. That's a good thing - beginners with the vague idea of ​​learning to program just to be able to program (for example, because this is supposedly important in the job market) usually get out of the game quickly, frustrated.

It is best to approach the topic with a specific goal. Then the motivation to stay on the ball lasts much longer. The goal should be chosen in such a way that you cannot yet achieve it with your current knowledge; this is the only way you can learn new things. At the same time, it cannot be utopian - the idea of ​​writing a replacement for the Linux kernel will fail.

A family planner can be a good project, maybe an app to monitor the inventory of the pantry at home, or a database-driven management of the coffee box in the office. The more potential users your first project has, the better it is for motivation.

Selection criteria

When you have your first project in mind, you can already narrow down the choice of the first programming language. Should the application run in the browser? Are you planning a graphical desktop or command line application? For Windows, Linux, macOS, iOS or Android? No programming language is the perfect choice for each of these ideas at the same time, and many things quickly fall through the cracks.

Computer scientists with academic training in particular tend to evaluate a language primarily based on its linguistic constructs. How good is the inheritance concept, how clean is the handling of data types and exceptions and which tricks does the compiler master? For beginners, however, such questions are rather irrelevant. For them, an understandable syntax is in the foreground - in the learning phase it is better to type three lines more code than a nifty abbreviation that you can no longer read intuitively.

A programming language is more than the sum of its linguistic refinements and remarkable compiler tricks. A language also includes a community that develops libraries for standard problems and helps with questions in forums or on Stackoverflow.com. The community must also match your problem. In the PHP community, for example, you can find help with almost every imaginable problem relating to web development, while the Python community includes many specialists in AI or data analysis.

Type question

A programming language and its community not only have to be compatible with the project, but also with the programmer (or novice). For example, not everyone approaches learning a programming language with a mathematical background and that is also not necessary.

Anyone who wants to learn programming, to write a note application for Android or who wants to do text analysis with a humanities background, may quickly break off an introduction to a programming language if matrices are multiplied in one of the first examples - the author of the introduction, on the other hand, found it like a problem simple and plausible example. After all, that is the basic material of the scientific disciplines. Sometimes it helps to simply change the introductory reading before giving up a language.

So there are no right and wrong, good and bad programming languages. That is why we didn't just use indexes as a guide, we chose languages ​​that we consider relevant, worth learning and useful - for certain tasks and certain types of developers. The range of languages ​​is quite large.

Many of the languages ​​have a large user community (C, Java, Python, PHP, JavaScript) or are popular teaching languages ​​in universities (Java and Python). Others ended up in the selection despite a small user community because they solve a sub-problem of software development in an interesting way - Haskell, Go and R.

Also included are languages ​​that are breaking new ground or are in the process of displacing languages ​​that seem to have no alternative. For example, Kotlin, which ended the omnipresence of Java in the Android environment, or Scala, which is taking over as a Java replacement for corporate applications, made it into this selection.

Question of faith

In addition to orientation, the brief characterizations also provide suggestions for getting involved in a new world. None of the languages ​​presented cost money to get started - the hurdle to trying out is often low. Usually a simple editor is enough to write the first lines of code.

With all efforts to provide an objective overview of programming languages ​​worth learning, not everyone will be satisfied with our presentation - every selection is incomplete and you may be missing a language that has served you well. Perhaps, from your point of view, a language comes off too well or too badly. Feel free to use the forum for this article for a factual discussion. But don't forget: It's about programming languages, not religion or sports. Use the time to learn a new language rather than rant about it in the forum. (jam)


This article comes from c't 13/2020.