Why are C and C ++ procedural languages

Overview of different programming languages

If you want to learn programming, you not only have to decide on a project, but also on a suitable programming language. Although you can of course switch languages ​​at any time during your studies, you should focus on one language for the time being in order to better understand the basic concepts of programming. The more experience you have then, the easier it will be to switch between languages. The only question is: which language is best suited when?

Basics of programming languages

Programming languages ​​are basically just formal languages ​​to formulate data structures and algorithms. Accordingly, all modern programming languages ​​consist of more or less the same basic building blocks, namely input and output, variables, functions or methods, objects, commands, operators such as + and and control flow elements, i.e. modules that control how the code is executed at the end. Control flow elements includeIf-Instructions (decision blocks) andFor- orWhile-Loops (repetitive blocks). Comments are also allowed in almost all languages. At Wikipedia alone, however, there are more than 350 different programming languages ​​with different functional ranges, areas of application and language peculiarities. In turn, only a handful of these languages ​​are widely used or suitable for entry-level users.

Differences and classification of programming languages

The superficial differences between the individual languages ​​are mainly in thesyntax, i.e. the set of rules according to which the language modules are put together. Further aspects according to which programming languages ​​can be differentiated are the paradigm or the programming style that the programming language specifies, the generation to which it belongs, its main area of ​​application, its scope and its difficulty.

The programming paradigms

An important consideration in classifying programming languages ​​is the programming pattern, tooparadigmcalled, which dictates the language. A distinction is made between thatimperative anddeclarative / predicativeParadigm. In an imperative language, the programmer describes a way in which the algorithm solves a problem. Values ​​are assigned to variables and instruction blocks are defined, i.e. successive commands are formulated. This paradigm includes, for example, C, C ++, and Java.
The imperative paradigm can go further inprocedural andobject-oriented Programming can be divided. With procedural programming, a subtask is simply solved by various subroutines and functions, with object-oriented programming, on the other hand, the logic or functionality is based on objects that have a state and methods.
Declarative languages ​​in which the developer only describes the desired final state are younger than imperative languages. He says what should happen, but not how. A good example of this is SQL, even if it is not explicitly a programming language, but simply a data query language. The developer gives in oneStatement (Command) which properties the queried values ​​from the database should have. The developer does not need to know how exactly the values ​​are then selected by the program or how the algorithm works.

The generations of programming languages

There are a total of five generations of programming languages ​​that build on one another. To the first generation belong theMachine languagesthat are encoded in binary or hexadecimal and therefore almost illegible, but are essential for the code to work. The second generation areAssembly languageswhich are a little more readable by using abbreviations for the binary commands. The third generation will then be more interesting for today's development: These are imperative or problem-oriented languages. They are also known as higher programming languagesthat are more or less human-readable because they are based on the English language. C ++ and Java are among other things representatives of this generation. The languages ​​must be executed before they can be executedcompiled, i.e. translated into machine code.
The fourth generation are application-related, non-procedural languages ​​that have a higher level of abstraction. As just explained using the SQL language, the “how” no longer has to be defined in the form of the exact sequence of steps of the algorithm, but only the “what”. Fifth generation languages ​​ultimately allow entire facts to be described and are mainly used in the field of artificial intelligence.

Programming or scripting language?

The word scripting language is also used for some languages ​​such as JavaScript or Python. Basically, a script language is just a programming language. Script languages ​​are, however, designed more for small programs and therefore dispense with certain language elements that are required for large projects or complex tasks. One example of this is the type safety of variables. In scripting languages, the programmer usually does not have to specify whether the value is a string, a number or even an object. This is good for quickly implementing functionality or developing a prototype, but it can lead to problems in large projects, for example if the program is executed and the data types no longer match.

Compiler and interpreter

As already mentioned, source code has to be translated for the computer. There are two ways of doing this: Either, the code is generated by ainterpreter translates line by line during execution at runtime, or the code is translated once by aCompiler converted to an executable file. Script languages ​​such as Python often only use one interpreter, while C and C ++ are examples of pure compiler languages.
Both variants have their advantages and disadvantages: Due to the direct translation of the code by the interpreter, the program can run on different computing architectures. A compiler has to completely recreate the program for each target architecture and also for each code change, so that the initial effort is higher. On the other hand, interpreter languages ​​are significantly slower at runtime, because repetitive program parts, for example, have to be recompiled over and over again, which is not necessary with a fully compiled file.
To combine the advantages and disadvantages of both approaches, there is JIT (Just-In-Time) compilation, which is used by Java or C #, for example. Frequently repetitive program parts, which make up a large part of the speed, are compiled into hardware-independent bytecode in advance. Otherwise, however, the translation takes place at runtime. This makes it possible to maintain the portability and debugging options of an interpreter while increasing performance at the same time.

The most popular programming languages

Most of the popular languages ​​that are widely used in practice follow the imperative paradigm. This means that the developer specifies what the program should do and how. Modern languages ​​are also often designed to be object-oriented, but also support procedural programming, in which problems are solved without objects and classes.

Java

Java is one of the best known and most popular programming languages. One of the greatest advantages of Java is its wide range of uses. The language is platform-independent, which means that it runs on the Linux and MacOS operating systems just as it does on Windows. At the same time, it supports the connection to various databases and offers tools for mobile development, cloud computing and apps. Java is an imperative language and the basics are quite easy to learn - although the level of difficulty can of course be expanded as desired due to the sheer number of options. Above all, anyone who also wants to program professionally should deal with Java, because the language is used in many companies.

This book is recommended for those who want to learn Java.

C.

C is one of the oldest programming languages ​​and an imperative, hardware-related language. It is the basis for many operating systems and accordingly enables system calls to be made directly to the respective operating system. C is used for both system and application development. The language is rather difficult to learn, but it allows you to develop a deeper understanding of how operating systems and computers work.

C ++

C ++ is the further development of C, especially with regard to object-oriented programming and is used for hardware-related development. The language is used where you want to manipulate memory yourself or where performance is important - among others at Google, Facebook and Apple. However, C ++ is very difficult to learn and rather unsuitable for beginners who want to understand and apply basic concepts first.

This book is recommended for those who want to learn C ++.

C # (C-Sharp)

C # belongs to the .NET framework, a software platform for application development from Microsoft, and is therefore relevant for everything that has to do with Windows. It is now possible to develop C # platform-independently for Linux and Apple devices. The programming language is imperative and has syntactic similarities to Java and C. In addition, it is extensive and, like Java, is often used in companies. C # is also interesting for game development because the Unity Engine, a runtime and development environment for developing 3D computer games, works with C #.

This book is recommended for those who want to learn C #.

VB (Visual Basic)

The Visual Basic (VB) language is available in two variants, both imperative and object-oriented and with a similar syntax, but otherwise not related to one another: Visual Basic Classic and Visual Basic .NET. VB Classic or VB 6 and its offshoots are old programming languages, the main advantage of which was the simpler syntax compared to C and C ++. Nowadays the language has little relevance except in Alt-Code. VB.NET, on the other hand, is a Microsoft development that is also being developed in the aforementioned .NET framework. While VB.NET is more modern than VB Classic, the language has fewer features than C #. So if you want to work with the .NET framework, you should start directly with C #.

python

As already mentioned, Python is a scripting language that is basically universally applicable. The language supports procedural programming more than the two more object-oriented languages ​​Java and C #. That is why Python is often used as an entry language and to explain basic programming concepts. Python has a large number of external libraries with functions that can be integrated into a program. Therefore, the language is often used in a scientific context. It takes a bit of getting used to the fact that the language has some syntactic peculiarities: For example, the program code is not structured with brackets, as in most other languages, but with indentations.

This book is recommended for those who want to learn Python.

Programming languages ​​for web applications

In principle, it is possible to write web applications in the languages ​​just mentioned. However, if you really want to specialize in web programming, you should also choose a language that is intended for this. The most popular representatives for this are JavaScript, PHP, and Ruby. Python is also a language that is very popular among web developers.

JavaScript

JavaScript is currently THE language for web development. A great advantage of JavaScript is that you do not need your own development environment to compile the code, since JavaScript can be understood and executed by every common browser. In principle, you can just open a text editor and get started. JavaScript is particularly suitable for small projects. The setup for larger projects, however, requires a little more experience.

PHP

PHP, along with JavaScript, is one of the most important languages ​​on the Internet, although JavaScript has clearly been on the rise in recent years. One of the most important differences between PHP and JavaScript is that JavaScript is executed in the browser, on the client side (which makes the requests), while PHP is executed on the server (which processes the requests) side.

This book is recommended for those who want to learn PHP.

Ruby

The Ruby language is fundamentally object-oriented and, like Python, can be used for various applications. The language is best known, however, through the Ruby on Rails web framework. AFramework is a program framework that simplifies the creation of certain types of software, such as web applications in this case. Ruby is not quite as widespread as other languages, but it is comparatively easy to learn and, thanks to the web framework, is particularly suitable for beginners.

Declarative programming languages

The languages ​​mentioned so far all follow the imperative paradigm. Most declarative languages ​​are rather difficult to learn for beginners because they do not seem intuitive at first glance. Examples of these languages ​​are Haskell and Prolog. Both languages ​​are particularly used in science when it comes to the exact mapping of mathematical algorithms, logical facts and technical relationships.

Conclusion

There are various programming languages ​​that differ in terms of their scope, their syntax and their programming pattern or paradigm. Most languages ​​that are suitable for beginners are based on the imperative paradigm, that is, the developer specifies a sequence of instructions that is processed sequentially by the program. Java and C #, two of the most widely used programming languages ​​today, follow this paradigm. The Python scripting language, which supports both procedural and object-oriented programming and is very versatile, is also suitable for beginners. It should be noted, however, that the syntax, i.e. the set of rules for the formulation of commands, differs from other languages ​​in Python. A slightly more complicated language to get started with is C / C ++. The advantage of C / C ++ is that you can also write hardware-related programs and get a very good introduction to the structure and functionality of computers or operating systems. Lastly, the scripting language JavaScript should be mentioned. Like Python, JavaScript is comparatively easy to learn and especially interesting if you want to go in the direction of web development.