These advanced programming languages have the unique ability to change the future of software development.
The second edition of Beginning C++ Game Programming is updated and improved to include the latest features of Visual Studio 2019, SFML, and modern C++ programming techniques. With this book, you’ll get a fun introduction to game programming by building five fully playable games of increasing complexity. You’ll learn to build clones of popular games such as Timberman, Pong, a Zombie survival shooter, a coop puzzle platformer and Space Invaders.
Do we really need new programming languages? Of course, at the moment they are quite enough. Among the variety of imperative, functional, object-oriented, dynamic, compiled, interpreted, and scripting languages, no developer will be able to grasp all the possibilities available today.
And yet, the emergence of new languages is a fairly frequent phenomenon. Some of them are created by students or hobbyists as individual projects, others are products of major software manufacturers. Even small and medium-sized companies are participating in this process, creating languages for the needs of their industries. So why do people keep reinventing the wheel over and over again?
The fact is that, despite the power and versatility of currently popular languages, no syntax is ideally universal. Moreover, programming itself is constantly evolving. The proliferation of multi-core processors, cloud programming, portability, and distributed architectures have created new challenges for developers. Adding support for the latest features, paradigms, and patterns to existing languages, especially the most popular, can be overwhelming. Sometimes the best solution is to start from scratch.
Thus, 10 advanced programming languages are presented here, each of which looks at the art of software development from a new perspective, solving a specific problem or a specific lack of languages that are most popular today. Some of them are already completed projects, while others are only in the early stages of their development. It is likely that some of them will never gain popularity, but any of them could be a revolutionary achievement that will completely change programming – at least until new languages are created.
The studied programming language # 1: Dart
The studied programming language # 2: Ceylon
Gavin King has denied that Ceylon, the language he is developing at Red Hat, should become a “Java killer.” King is well known as the creator of the Hibernate object-relational mapping framework for Java. He likes Java, but thinks there is still a lot to be improved.
Some of the things King does not like about Java are the verbose syntax of the language, the lack of first-class and higher-order functions, and the lack of metaprogramming support. He is particularly saddened by the lack of a declarative syntax for defining structured data, which King says “equates Java to XML.” Ceylon aims to solve all of these problems.
King and his team have no plans to reinvent the wheel. There will be no Ceylon virtual machine, the Ceylon compiler will produce java bytecode that can be run on the JVM. But Ceylon will be more than just a compiler. The strategic goal of this project is to create a new development kit for Ceylon that will replace Java, which King says is “bloated”, awkward and still not thoroughly modernized.
This is a difficult task, and so far Red Hat has not released any utilities for Ceylon. King says the compiler is due out this year. But don’t expect any software written in “100% pure Ceylon” anytime soon.
Studied programming language # 3: Go
Interpreters, virtual machines, and managed codes are very popular today. Do we really need another old-fashioned language that compiles to “native” binaries? Google’s engineering team – led by Robert Griesemer and Bell Labs legends Ken Thompson and Rob Pike – says yes.
Go is a general-purpose programming language that is suitable for everything from application development to system programming. In this sense, it looks more like C or C ++ than Java or C #. However, like recent languages, Go includes modern features such as clearing memory of unnecessary data, mirroring current execution processes, and support for concurrency.
It’s also important that Go was built for easy programming. Its basic syntax is similar to C, but Go removes unnecessary syntax and repetition when optimizing programs such as defining objects. The goal of the Go team was to create a language in which it would be convenient to write code, like a dynamic scripting language, but which at the same time had the power of a compiled language.
Go is still being worked on, and the language specification is still subject to change. Nevertheless, you can work with it now. Google has created utilities and compilers that come with detailed documentation. For example, the Effective Go tutorial clearly demonstrates how Go differs from previous languages.
The studied programming language # 4: F#
Functional programming has long been popular with programmers and academics, but purely functional languages like Lisp and Haskell are often considered unsuitable for real software development. One of the most common reasons is that functional code is very difficult to combine with code and libraries written in imperative languages such as C ++ or Java.
Meet F # (pronounced “Ef-Sharp”) is a language developed by Microsoft with the aim of combining functionality and usability. Because F # is a first class language in the .Net CLR virtual machine, it can support the same libraries and functions as other CLR languages such as C # and Visual Basic.
F # code is somewhat similar to OCaml code, but contains its own interesting syntax. For example, to facilitate scientific calculations, numeric data types in F # can be units. F # also provides constructs to facilitate asynchronous I / O, parallelize the CPU, and output processes to the GPU.
After a long period of maturation at Microsoft Research, F # is now shipped with Visual Studio 2010. Better yet, but not typical of a corporation, Microsoft has made an F # compiler and root library available under the Apache open source license. You can get started with it for free and even use it on Mac and Linux systems (using the Mono runtime).
The studied programming language # 5: Opa
Opa does not replace any of these languages individually. Moreover, it tries to replace them all at once, representing a completely new paradigm in web programming. In an Opa application, the client user interface, server logic, and I / O database are all written in the same language, Opa.
Naturally, with this kind of integrated system, there should be something magical in the end. The Opa runtime integrates its own web server and database management system, which cannot be replaced by standalone alternatives. However, this might not be that important given the ability to develop modern data-driven web applications with just a few dozen lines of code. Opa is free and is currently available for 64-bit Linux and Mac OS X platforms, while other ports are under development.
The studied programming language # 6: Fantom
Want to create Java or .Net applications? If you write on Fantom, you can make a choice and then even change platforms. This is because Fantom was built for cross-platform mobility from the very beginning. The Fantom project consists not only of a compiler that can output bytecode for both the JVM or .Net CLI, but also a set of APIs that decouple Java and .Net APIs and create an additional layer of portability.
However, portability is not the whole point of Fantom. While remaining similar in nature to C, it should also improve the languages that inspired the developers to create it. It tries to take an intermediate position on some of the more contentious issues of syntax, such as strong versus dynamic typing, or when choosing between interfaces and classes. It has additional lightweight syntax for declaring data structures and serializing objects. It also supports inline functional programming and concurrency.
Fantom is free under the Academic Free License 3.0 and is available for Windows and Unix-like platforms (including Mac OS X).
The studied programming language # 7: Zimbu
Most programming languages borrow functions and syntax from pre-existing languages. Zimbu took a bite from almost each. The brainchild of Bram Moolenaar, creator of the text editor Vim, Zimbu aims to be a fast, accurate, portable, and easy to read language that can be used to develop anything from GUI applications to OS kernels.
Due to its mixed nature, Zimbu’s syntax is unique and specific, but at the same time it has a lot of features. It uses expressions and operators similar to those used in C, but with their own keywords, data types, and block structures. It supports memory management, threads and pipelines.
The only issue is portability. Although Zimbu is a compiled language, its compiler produces ANSI C code, and binaries can only be created on platforms with a built-in C compiler.
Unfortunately, the Zimbu project is still under development. The compiler and some sample programs can be created by yourself, but not all valid Zimbu code will compile and execute as expected. Not all declared functions have been developed yet, and some of the ones already presented do not work correctly. The language specification is also likely to change over time, adding keywords, types and syntax as needed. Consequently, the documentation is also incomplete. However, if you want to give it a try, the pre-release utilities are already available under the Apache license.
The studied programming language # 8: X10
Parallel data processing was once a specialized niche of software development, but with the proliferation of multi-core processors and distributed computing, parallelism has gained popularity. Unfortunately, current programming languages are not keeping up with this trend. That is why IBM Research is creating X10, a language designed specifically for modern parallel architectures that aims to “tenfold” developer productivity.
Parallelism in X10 is possible thanks to the PGAS programming model (shared global address space model). Code and data are allocated in blocks and distributed in different “spaces”, thereby facilitating the scaling of a program from a single-threaded prototype (one space) to a multi-threaded one running on one or more multi-core processors (multiple spaces) in a high-performance cluster.
X10 code is most similar to Java. Basically, the X10 runtime is available both as embedded executables and class files for the JVM. The X10 compiler can output either C ++ or Java source code. There are plans to develop forward compatibility with Java in the future.
In the meantime, the language is developing, although it is already quite developed. The compiler and runtime are available for a variety of platforms, including Linux, Mac OS X, and Windows. Additional utilities are an Eclipse-based interactive development environment (IDE) and a debugger, which are licensed under the Eclipse Public License.
The studied programming language # 9: haXe
Many languages can be used to write portable code. C compilers are available for almost all CPU architectures, and Java bytecode will run wherever the JVM is. But haXe (pronounced “hex”) is more than just portable. It is a multi-platform language that can be used in a variety of operating environments ranging from embedded binaries to interpreters and virtual machines.
Although haXe is still in development, it is already being used commercially by its creator, Motion Twin, so this is serious. It is available for Linux, Mac OS X and Windows through a combination of free licenses.
The studied programming language # 10: Chapel
In the world of high performance computing, rare names sound louder than Cray. It shouldn’t surprise anyone that Chapel, the first programming language created by Cray, was designed with supercomputing and clustering in mind.
Chapel is part of the Cray Cascade Program, a large-scale high performance computing project funded in part by the US Defense Advanced Research Projects Agency (DARPA). Among the goals of this project are the separation of parallel processing algorithms from the equipment used, improving their performance on architectures and increasing the portability of parallel programs.
The Chapel syntax is composed of syntaxes from several languages. In addition to the most commonly used (C, C ++, Java), it borrows concepts from scientific programming languages such as Fortran and Matlab. Its parallel processing features were influenced by the ZPL and High-Performance Fortran, as well as previous Cray projects.
One of the most compelling features of Chapel is its support for “variable resolution programming”, which allows developers to create applications with highly abstract code and make additions as the implementation becomes more specific.
Work on the Chapel continues. At the moment it can run on Cray supercomputers and various high-performance clusters, but it can be ported to most Unix-like systems (including Mac OS X and Windows using Cygwin). The source code is available under a free BSD license.
Learn the C++ programming language in a structured, straightforward, and friendly manner. This book teaches the basics of the modern C++ programming language, C++ Standard Library, and modern C++ standards. No previous programming experience is required.