Code Interpretation
...

An Interpreter is a program that runs a specified instruction set.
This enables the developer of such interpreters to allow programs for this interpreter,
that rely on commands not found in the hardware the program is running on.

Advantages
...

  • Porting of software to different platforms becomes as easy, as installing the interpreter on those platforms.

Disadvantages
...

  • Since the code needs to be interpreted before it is executed, interpreters will always be slower than code compiled to machine instructions.

List of programming languages that have a interpreter
...

Code interpretation

Java
...

Java is a interpreted programming language running on the JVM.

Creating Games
...

content

Porting
...

content

Tooling and Ecosystem
...

content

Example Projects
...

content


Sources
...

Java
Java Logo.png

Programming Lanuges
...

Stack Based Programming Language
...

A Stack Based Programming Language is a language that operates on a stack as its primary model of representing computation.

List of stack-based programming languages
...

Sources
...

Stack Based Programming Language

Forth
...

Forth is a stack based, compiled programming language.

Creating Games
...

content

Porting
...

content

Tooling and Ecosystem
...

content

Example Projects
...

content


Forth

Uiua
...

Uiua is a stack based, interpreted programming language.

Creating Games
...

content

Porting
...

content

Tooling and Ecosystem
...

content

Example Projects
...

content


Sources
...

Uiua

APL
...

APL is a programming language.

Creating Games
...

content

Porting
...

content

Tooling and Ecosystem
...

content

Example Projects
...

content


Sources
...

APL

Object-Oriented Programming
...

The term object-oriented was coined by Alan Kay in 1966 and describes a certain way to structure programs,
with the goal to reduce complexity.
According to him, OOP means: "messaging, local retention and protection and hiding of state-process, and extreme late binding of all things."

An object-oriented programming language, is a language that support the object-oriented ways of structuring programs.

What OOP is not
...

Confusion between object-oriented and data driven
...

Modeling your data is a necessary condition to program object-oriented, but it is not a sufficient condition.
You are doing Data Driven Design, when you are modeling your data and then work procedural on that data.

Dry
...

The articles there put heavy emphasis on "constructing reusable chuncs of code" and state that this is one of the most important aspects.
This is not at the core of OOP.
OOP is an attempt to reduce complexity of systems, but reusing code increases coupling and with that increases complexity.
This is why "extreme late binding" has the word "extreme" in front of it.
Code reuse is not antithetical to object orientation, and it should be on every programmers mind.
But it is not at the heart of OOP.

A Programming Language Feature
...

There is a reason why OOP has the rank of paradigm and is not a simple category of programming languages.
You can write object-oriented code in many programming languages that do not provide utilities to facilitate that.
Hence languages fall on a spectrum on how much they facilitate OOP,
but programming in one of those languages, doesn't make your program object-oriented.

Languages like Forth, or Uiua do not provide any way of representing objects.
Hence it is impossible to program object-oriented in them.

Procedural languages like Rust have structs and other composite data types
and hence allow for the programmer to construct the other needed pieces by them selves.
By that notion is C as much a object-oriented language as Java.
Yes, that means most of the marketing for Java or C++ has been false!

Kotlin is one step ahead in that regard providing you primitives that allow you more easily to structure programs object oriented.
It also allows you to profit from the inherent parallelization that is possible with such data models, thanks to a good thread model.

On the far end on the spectrum we have languages like Smalltalk and Erlang that fulfill all points from the definition per default
and make it very easy to write programs in that style.

List of Object-Oriented Languages
...

Alternative definitions
...

Smalltalk
...

  1. Everything is an object.
  2. Objects communicate by sending and receiving messages (in terms of objects).
  3. Objects have their own memory (in terms of objects).
  4. Every object is an instance of a class (which must be an object).
  5. The class holds the shared behavior for its instances (in the form of objects in a program list)
  6. To eval a program list, control is passed to the first object and the remainder is treated as its message.

Object Oriented Programming

Smalltalk
...

Smalltalk is object oriented, high level programming language.

Creating Games
...

content

Porting
...

content

Tooling and Ecosystem
...

content

Example Projects
...

content


Smalltalk
Python Logo.png

Python
...

Python is a high-level, compiled, interpreted language that focuses on code readability.
The language provides tools to program in a object oriented style while using a reduced set of functional tools.
The dominant paradigm in Python is data driven design.
The language-interpreter is available on Windows, MacOS and Linux.

Creating games in Python is generally discouraged, because the language is slow due to the interpreted nature.

Creating Games
...

While creating games is discouraged, that doesn't mean it is impossible.
Python has many available game libraries to choose from.
Depending on the libraries you choose, you can target some platforms but loose access to another.
There is currently not one library or engine which can ship games to all major platforms.

Due to performance implications, it is recommended to use not all features of Python, but only a subset which runs somewhat performant.
This subset depends on the interpreter you choose.

One way of increasing the performance of your Python game, is to not use Python.
Python provides multiple ways of interfacing with the language from or to other languages.
One of the most popular ways is Cython which provides Python like syntax
while directly getting access to some C capabilities.

Porting
...

Python can currently ship games to PC, Web, Embedded Devices and Mobile.
There are three ways of shipping games written in Python.

Raw Python
...

If you ship the raw Python code, then this code will run on all environments that have a Python interpreter.
This includes Windows, MacOS, and many Linux distributions.
With this approach it is impossible to ship to mobile, or the web.

Using a Bundler or Compiler
...

When using a bundler, having Python installed is not a requirement anymore.
What most bundlers do, is combining your code with a version of your Python interpreter.
This way the user has only one executable which he can run.
The most popular bundler of Python is py-to-exe.

Compilation is what allows you to run your code on Embedded Devices and Mobile
For targeting Mobile, you want to use Buildozer in combination with a UI library
that can target mobile devices like Kivy or PyQt.
For targeting Embedded, you want to use Circuit Python.

Writing for the Web
...

If you are creating a web application, you will want to use a web-framework like Django or Flask.
Both frameworks support HTML templating.
If your web page needs interactive elements, consider using HTMX or PyScript.

Tooling and Ecosystem
...

Python has multiple libraries that one can use to make games.
This includes:

Game Libraries
...

File3WindowsMacOsLinuxCategoriesFeatures
Pygletgraphics, audio, io-
PyGamegraphics, audio, io-
Vulkangraphics-

Interpreter
...

InterpreterDescription
C PythonThe standard implementation of Python written in C
PyPyDue to JIT, programs often run faster and consume less memory. But not all libraries are compatible
MicroPythonAn interpreter that runs on microcontrollers

Compiler
...

InterpreterDescription
NuitkaPython to C
ShedskinPython to C++
BuildozerPython to APK

Testing
...

Unit Testing
...

The default testing framework included in most Python distributions is unittest.
If you need more features that are not available in unittest, consider pytest.
A full list of Python testing frameworks can be found here:

System Testing
...

For testing web applications, Selenium provides bindings for Python.
Other use cases require setting up a costume testing environment.

Example Projects
...

missing


Python

Erlang
...

Erlang is a interpreted, compiled, object oriented, concurrent programming language running on the BEAM.
The language is based on the idea of creating multiple lightweight disjoint processes that communicate with each other via message passing
and that get managed by the interpreter.
The language is currently not recommended to be used to create game clients with a GUI, yet is favorable for creating game servers.

Creating Games
...

As many Programming Language Overview|programming language running on the BEAM,
Erlang is suited for long running reliable services.
This is exactly whats needed from game servers.

The adoption of Erlang in a technology stack for a game production depends hence on two other factors:
Does your team have the expertise to adopt the language and can you invest the additional time needed to port the core game logic needed onto the server?

That said, Erlang has no special libraries currently to support any kind of game development.
While the creation of HTTP clients and servers is directly supported in the language,
it is generally only recommended for people who already have experience with the web.
But if you are experienced, you can create reliable scaling servers quicker than in any other language.

"If Java is 'write once, run anywhere', then Erlang is 'write once, run forever'."
- Joe Armstrong

But I really really want a Erlang Client
...

Erlang offers a FFI for C called Nativly Implemented Functions (NIFs).
So you could implement functions that interface with the hardware by hand using them.

For graphics one should consider creating a C-node.
That way your graphics interface looks like a normal Erlang process to the language,
while you as the programmer can interface with common C libraries for creating and updating the window.

Porting
...

To run Erlang programs one needs the associated VM.
The BEAM currently supports building from scratch and a pre-build Windows, MacOS and Linux installer.
This means that it is currently not possible to ship games to Mobile or Console with Erlang.
If you want to host a game server with Erlang, consider using a Linux machine.

Tooling and Ecosystem
...

In theory any library or tool that works for languages like Elixir, Elm or other BEAM languages,
should also be available for development in Erlang since they all compile to the same Byte Code.

A community list of libraries can be found here.

Example Projects
...

coming soon


Erlang
C Logo.png

C
...

C is a compiled, low level programming language.

Creating Games
...

content

Porting
...

content

Tooling and Ecosystem
...

content

Example Projects
...

content


C Language
Rust Logo.png

Rust
...

Rust is a compiled, low level programming language.

Creating Games
...

content

Porting
...

content

Tooling and Ecosystem
...

content

Example Projects
...

content


Rust

C++
...

C++ is a compiled, low level programming language.

Creating Games
...

content

Porting
...

content

Tooling and Ecosystem
...

content

Example Projects
...

content


Sources
...

C++

COBOL
...

COBOL is a procedural, compiled programming language.

Creating Games
...

content

Porting
...

content

Tooling and Ecosystem
...

content

Example Projects
...

content


COBOL

Fortran
...

Fortran is a procedural, compiled programming language.

Creating Games
...

content

Porting
...

content

Tooling and Ecosystem
...

content

Example Projects
...

content


Fortran

Code compilation
...

Compilation is the process of transforming instructions given in a human readable format into a format
that can be executed by a different entity.
This is often the machines CPU, but can also be a different interpretor.
This differs from transpilation, which translates the code from one language to another.

The compilation process is often extendable to run other scripts before, during or after the code got compiled.

Advantages
...

content

Disadvantages
...

content

List of programming languages that compile to native code
...

Code compilation