There are no good and bad languages. Each programming language is designed for specific tasks. Choosing the wrong language can be a waste of your time. And the programmer’s time is very expensive.
- The first chapter is a tutorial on the basic concepts of Go, introduced through programs for file I/O and text processing, simple graphics, and web clients and servers.
- Early chapters cover the structural elements of Go programs: syntax, control flow, data types, and the organization of a program into packages, files, and functions. The examples illustrate many packages from the standard library and show how to create new ones of your own. Later chapters explain the package mechanism in more detail, and how to build, test, and maintain projects using the go tool.
- The chapters on methods and interfaces introduce Go’s unconventional approach to object-oriented programming, in which methods can be declared on any type and interfaces are implicitly satisfied. They explain the key principles of encapsulation, composition, and substitutability using realistic examples.
- Two chapters on concurrency present in-depth approaches to this increasingly important topic. The first, which covers the basic mechanisms of goroutines and channels, illustrates the style known as communicating sequential processes for which Go is renowned. The second covers more traditional aspects of concurrency with shared variables. These chapters provide a solid foundation for programmers encountering concurrency for the first time.
- The final two chapters explore lower-level features of Go. One covers the art of metaprogramming using reflection. The other shows how to use the unsafe package to step outside the type system for special situations, and how to use the cgo tool to create Go bindings for C libraries.
The book features hundreds of interesting and practical examples of well-written Go code that cover the whole language, its most important packages, and a wide range of applications. Each chapter has exercises to test your understanding and explore extensions and alternatives.
Let’s take a quick look at the most popular languages a modern programmer needs to know. And in this article we will look at brief characteristics of languages.
But first, you need to understand a key characteristic of a programming language. Languages are divided into:
Is a language in which the source code of a program is compiled into machine code. The main advantages of a compiled language are speed and reliability. Speed is ensured by the fact that the processor executes direct machine code, and reliability is ensured by the fact that, in addition to what the programmer wrote, no additional code is executed.
Is a language in which each line of the program is executed by the interpreter. This makes it easy to write for different platforms. A programmer writes one code, and a different interpreter executes it on different platforms. But the speed of the program execution drops sharply. Sometimes at times. Therefore, an interpreted language is worth choosing, unless speed is of particular importance.
Is an attempt to improve the interpreted language. In this case, the source code is compiled, but not into machine code, into bytecode, which is an implementation of some virtual machine. And then the language designers make a lot of effort to make the virtual machine as close to the real one as possible. If this happens, then the speed increases, but more often, of course, it does not work, since it is impossible to predict what exactly the programmer will write. But this is some kind of working compromise.
1. Pure C
The C programming language or plain C is a compiled language and the most popular system programming language. All large and serious projects are written in the C language: operating systems, graphic libraries, databases, etc. There are C compilers for all kinds of processors.
The operating systems Windows and Unix are written in C. As well as most other programming languages. All popular languages are based on the C language, so if you know C it will be much easier for you to master other languages.
2. C ++
The C ++ language is a clone of the C language, which differs in that classes are added to the language. This led to the creation of a special style – object-oriented programming (OOP). This language is also compiled. At the time of its creation, C ++ was positioned as a replacement for C and in some books they write that you need to forget about C and write in C ++, because it is better. But in practice, C has been and remains the basis of large systems, and C ++ has taken its own niche. For the fact that the language is very peculiar, it received the name “language for writing dissertations.”
The Java language is a bytecode language. It is sometimes called the “language of disappointment.” It is actively advertised by Oracle. Once he had the slogan “written once – performed everywhere”. Due to the colossal advertising of this language, it is in great demand, but advertising clearly exaggerates its capabilities. In practice, programs in this language run 5-7 times slower than programs in C and consume 10-30 times more memory. In addition, due to the constant tweaking and refinement of the Java virtual machine (JVM), Java programs often crash. For large companies this is not so important, but for small companies it can be a disaster, so you can choose the Java language only if it is required for work.
Also Java is the official language of the Android platform, which also contributes to its relevance.
Since the Java language is actively promoted by a large IT company, there are no problems with learning it. Books, reference books, courses, seminars, conferences are all available. Just take it and teach it.
4. C #
C # is a bytecode language. This is Microsoft’s answer to the Java language. Again, due to the support of a large company, it is very advertised and popular. But in fact, it is only supported on Windows. The big problem with C # was that Microsoft was constantly changing its coding priorities. As a result, different versions of the .NET virtual machine were incompatible with each other. From the user’s point of view, it looked like this: the program worked – they switched to a new version of Windows – the program stopped working. At this point, programmers abruptly lost interest in C # and were looking for something more reliable. It is interesting to compare these two competing languages on Google Trends.
PHP is an interpreted language. It is designed for web programming. Executed on the server side. It is now the de facto standard for developing web services sites. Such well-known sites as Wikipedia, Facebook, Youtube, WordPress are written in PHP. Therefore, PHP is definitely a must-learn language. But you need to understand that PHP has a limited niche. PHP is not suitable for desktop development.
The Python language is an interpreted language. It is also called modern BASIC. It really is. Because Microsoft stopped supporting the best beginner language Visual Basic, a replacement was required. This is Python’s replacement. Now, most American universities have adopted Python as their main language of instruction. The key advantage of the Python language is that it allows you to develop both desktop programs and web services. Now this language is developing rapidly, therefore it is also a must for learning.
Evaluating the Fundamentals of Computer Programming Languages
Concepts of Computer Programming Languages introduces students to the fundamental concepts of computer programming languages and provides them with the tools necessary to evaluate contemporary and future languages. An in-depth discussion of programming language structures, such as syntax and lexical and syntactic analysis, also prepares readers to study compiler design.
The Eleventh Edition maintains an up-to-date discussion on the topic with the removal of outdated languages such as Ada and Fortran. The addition of relevant new topics and examples such as reflection and exception handling in Python and Ruby add to the currency of the text. Through a critical analysis of design issues of various program languages, Concepts of Computer Programming Languages teaches programmers the essential differences between computing with specific languages.