authors:
- ["Raphael Diener", "https://twitter.com/diener_raphael"]
last-edit: 2023-10-19
tags:
- programming
- meta
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.
authors:
- ["Raphael Diener", "https://twitter.com/diener_raphael"]
last-edit: 2023-10-24
tags:
- programming
- language
- MacOS
- Windows
- Linux
- Mobile
- interpreted
- high-level
- missing
- jvm
Java is a interpreted programming language running on the JVM.
content
content
content
content
authors:
- ["Raphael Diener", "https://twitter.com/diener_raphael"]
last-edit: 2023-10-26
tags:
- programming
- stack-based
- meta
- missing
A Stack Based Programming Language is a language that operates on a stack as its primary model of representing computation.
authors:
- ["Raphael Diener", "https://twitter.com/diener_raphael"]
last-edit: 2023-10-23
tags:
- programming
- language
- compiled
- high-level
- stack-based
- missing
Forth is a stack based, compiled programming language.
content
content
content
content
authors:
- ["Raphael Diener", "https://twitter.com/diener_raphael"]
last-edit: 2023-10-23
tags:
- programming
- language
- interpreted
- high-level
- stack-based
- missing
Uiua is a stack based, interpreted programming language.
content
content
content
content
authors:
- ["Raphael Diener", "https://twitter.com/diener_raphael"]
last-edit: 2023-10-26
tags:
- programming
- language
- missing
APL is a programming language.
content
content
content
content
authors:
- ["Raphael Diener", "https://twitter.com/diener_raphael"]
last-edit: 2023-10-25
tags:
- programming
- design
- paradigm
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.
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.
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.
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.
authors:
- ["Raphael Diener", "https://twitter.com/diener_raphael"]
last-edit: 2023-10-25
tags:
- programming
- language
- Linux
- interpreted
- high-level
- object-oriented
- missing
Smalltalk is object oriented, high level programming language.
content
content
content
content
authors:
- ["Raphael Diener", "https://twitter.com/diener_raphael"]
last-edit: 2023-10-25
tags:
- programming
- language
- MacOS
- Windows
- Linux
- interpreted
- high-level
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.
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.
Python can currently ship games to PC, Web, Embedded Devices and Mobile.
There are three ways of shipping games written in 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.
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.
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.
Python has multiple libraries that one can use to make games.
This includes:
Interpreter | Description |
---|---|
C Python | The standard implementation of Python written in C |
PyPy | Due to JIT, programs often run faster and consume less memory. But not all libraries are compatible |
MicroPython | An interpreter that runs on microcontrollers |
For testing web applications, Selenium provides bindings for Python.
Other use cases require setting up a costume testing environment.
missing
authors:
- ["Raphael Diener", "https://twitter.com/diener_raphael"]
last-edit: 2023-11-16
tags:
- programming
- language
- BEAM
- MacOS
- Windows
- Linux
- interpreted
- high-level
- object-oriented
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.
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
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.
coming soon
authors:
- ["Raphael Diener", "https://twitter.com/diener_raphael"]
last-edit: 2023-10-25
tags:
- programming
- language
- MacOS
- Windows
- Linux
- Mobile
- Playstation
- Xbox
- compiled
- low-level
- missing
content
content
content
content
authors:
- ["Raphael Diener", "https://twitter.com/diener_raphael"]
last-edit: 2023-10-23
tags:
- programming
- language
- MacOS
- Windows
- Linux
- Web
- compiled
- low-level
- missing
content
content
content
content
authors:
- ["Raphael Diener", "https://twitter.com/diener_raphael"]
last-edit: 2023-10-27
tags:
- programming
- language
- MacOS
- Windows
- Linux
- compiled
- low-level
- missing
authors:
- ["Raphael Diener", "https://twitter.com/diener_raphael"]
last-edit: 2023-10-26
tags:
- programming
- language
- compiled
- missing
content
content
content
content
authors:
- ["Raphael Diener", "https://twitter.com/diener_raphael"]
last-edit: 2023-10-26
tags:
- programming
- language
- missing
content
content
content
content
authors:
- ["Raphael Diener", "https://twitter.com/diener_raphael"]
last-edit: 2023-10-20
tags:
- programming
- meta
- missing
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.
content
content