<?xml version="1.0" encoding="utf-8"?>
<?xml-stylesheet type="text/xsl" href="../../assets/xml/rss.xsl" media="all"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Linuxkurs-Blog (Posts about andere Programmiersprachen)</title><link>https://lannert.de/debloss/</link><description></description><atom:link href="https://lannert.de/debloss/en/categories/andere-programmiersprachen.xml" rel="self" type="application/rss+xml"></atom:link><language>en</language><copyright>Contents © 2026 &lt;a href="mailto:lannert@hhu.de"&gt;Detlef Lannert&lt;/a&gt; 
&lt;a rel="license" href="https://creativecommons.org/licenses/by-nc-sa/4.0/"&gt;
&lt;img alt="Creative Commons License BY-NC-SA"
style="border-width:0; margin-bottom:12px;"
src="https://i.creativecommons.org/l/by-nc-sa/4.0/88x31.png"&gt;&lt;/a&gt;</copyright><lastBuildDate>Thu, 05 Mar 2026 12:53:42 GMT</lastBuildDate><generator>Nikola (getnikola.com)</generator><docs>http://blogs.law.harvard.edu/tech/rss</docs><item><title>Über die Schwierigkeiten des rechtsbündigen Ausrichtens</title><link>https://lannert.de/debloss/en/posts/uber-die-schwierigkeiten-des-rechtsbundigen-ausrichtens/</link><dc:creator>Detlef Lannert</dc:creator><description>&lt;p&gt;&lt;a class="reference external" href="https://lukeplant.me.uk/blog/posts/breaking-provably-correct-leftpad/"&gt;Breaking “provably correct” leftpad&lt;/a&gt;:
Luke Plant zeigt, wie scheinbar einfache Left-padding-Bibliotheksroutinen
für eine Reihe verschiedener Programmiersprachen (in Python
ist das die Stringmethode &lt;code class="docutils literal"&gt;.rjust()&lt;/code&gt;) an bestimmten Unicode-Zeichen scheitern.
Das ist spaßig zu lesen, zeigt aber, dass solche Aufgabenstellungen genau beschrieben
(und durchdacht) werden müssen.&lt;/p&gt;</description><guid>https://lannert.de/debloss/en/posts/uber-die-schwierigkeiten-des-rechtsbundigen-ausrichtens/</guid><pubDate>Sat, 04 Oct 2025 08:00:00 GMT</pubDate></item><item><title>Naht ein neues Carbon-Zeitalter?</title><link>https://lannert.de/debloss/en/posts/naht-ein-neues-carbon-zeitalter/</link><dc:creator>Detlef Lannert</dc:creator><description>&lt;p&gt;Für die Weiterentwicklung von C++-Software (und -Programmierern :wink:) wird gerade
mit &lt;a class="reference external" href="https://docs.carbon-lang.dev/"&gt;Carbon&lt;/a&gt; eine neue Programmiersprache
entwickelt, die weitgehend zu C++ kompatibel ist, aber neue Konzepte mitbringt
und sich als Nachfolger anbieten will. Carbon soll sich zu C++ ähnlich
positionieren wie TypeScript zu JavaScript oder Kotlin zu Java.&lt;/p&gt;
&lt;p&gt;Erfreulicherweise verabschiedet man sich von der C-Syntax und orientiert sich
an den Gepflogenheiten moderner Programmiersprachen. Speichersicherheit soll
durch ein inkrementelles Refactoring erreichbar sein, ebenso wie eine dynamische
Überwachung von Feldgrenzen.&lt;/p&gt;</description><guid>https://lannert.de/debloss/en/posts/naht-ein-neues-carbon-zeitalter/</guid><pubDate>Tue, 16 Sep 2025 20:47:15 GMT</pubDate></item><item><title>Mojo</title><link>https://lannert.de/debloss/en/posts/mojo/</link><dc:creator>Detlef Lannert</dc:creator><description>&lt;p&gt;&lt;a class="reference external" href="https://docs.modular.com/mojo/"&gt;Mojo🔥&lt;/a&gt; ist zugleich eine neue Programmiersprache
und eine Python-Erweiterung: Es bettet CPython quasi ein, erlaubt aber, kompilierbare
Python-ähnliche Programme zu schreiben und dabei auf Hardware-Datentypen zuzugreifen und
native Performance zu erreichen. Es bietet Speichersicherheit (wie Rust) und Metaprogramming
(wie Nim). Allerdings ist Mojo derzeit nur auf der Entwickler-Website in einer Sandbox
verfügbar; es soll aber bald völlig open-sourced werden.&lt;/p&gt;
&lt;p&gt;Die Motivation für die Entwicklung von Mojo liegt im Bereich von KI-Anwendungen.&lt;/p&gt;
&lt;p&gt;Vergleich mit Nim: &lt;a class="reference external" href="https://forum.nim-lang.org/t/10159"&gt;https://forum.nim-lang.org/t/10159&lt;/a&gt;, &lt;a class="reference external" href="https://forum.nim-lang.org/t/10270"&gt;https://forum.nim-lang.org/t/10270&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Update 2023-09-15: Jetzt kann Mojo auch lokal installiert werden. Allerdings muss man sich
auf der Webseite registrieren, und es läuft (bei mir) nicht alles reibungslos. Folgendes
habe ich gemacht (auf der Webseite wird die „manuelle Installation“ beschrieben,
die hätte ich durchführen sollen):&lt;/p&gt;
&lt;div class="code"&gt;&lt;pre class="code bash"&gt;&lt;a id="rest_code_42c094d87c224497b05e18641efce7e0-1" name="rest_code_42c094d87c224497b05e18641efce7e0-1" href="https://lannert.de/debloss/en/posts/mojo/#rest_code_42c094d87c224497b05e18641efce7e0-1"&gt;&lt;/a&gt;$&lt;span class="w"&gt; &lt;/span&gt;mkdir&lt;span class="w"&gt; &lt;/span&gt;~/projects/mojo&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;&amp;amp;&amp;amp;&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nb"&gt;cd&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;~/projects/mojo
&lt;a id="rest_code_42c094d87c224497b05e18641efce7e0-2" name="rest_code_42c094d87c224497b05e18641efce7e0-2" href="https://lannert.de/debloss/en/posts/mojo/#rest_code_42c094d87c224497b05e18641efce7e0-2"&gt;&lt;/a&gt;$&lt;span class="w"&gt; &lt;/span&gt;curl&lt;span class="w"&gt; &lt;/span&gt;https://get.modular.com&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;|&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nv"&gt;MODULAR_AUTH&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&amp;lt;TOKEN&amp;gt;&lt;span class="w"&gt; &lt;/span&gt;sh&lt;span class="w"&gt; &lt;/span&gt;-
&lt;a id="rest_code_42c094d87c224497b05e18641efce7e0-3" name="rest_code_42c094d87c224497b05e18641efce7e0-3" href="https://lannert.de/debloss/en/posts/mojo/#rest_code_42c094d87c224497b05e18641efce7e0-3"&gt;&lt;/a&gt;&lt;span class="c1"&gt;#   das TOKEN wurde auf der Webseite nach der Registrierung angezeigt&lt;/span&gt;
&lt;a id="rest_code_42c094d87c224497b05e18641efce7e0-4" name="rest_code_42c094d87c224497b05e18641efce7e0-4" href="https://lannert.de/debloss/en/posts/mojo/#rest_code_42c094d87c224497b05e18641efce7e0-4"&gt;&lt;/a&gt;&lt;span class="c1"&gt;#   das Passwort für sudo wurde abgefragt!&lt;/span&gt;
&lt;a id="rest_code_42c094d87c224497b05e18641efce7e0-5" name="rest_code_42c094d87c224497b05e18641efce7e0-5" href="https://lannert.de/debloss/en/posts/mojo/#rest_code_42c094d87c224497b05e18641efce7e0-5"&gt;&lt;/a&gt;&lt;span class="c1"&gt;#   eine interaktive Abfrage vom apt install blieb hängen, eine Eingabe war nicht möglich&lt;/span&gt;
&lt;a id="rest_code_42c094d87c224497b05e18641efce7e0-6" name="rest_code_42c094d87c224497b05e18641efce7e0-6" href="https://lannert.de/debloss/en/posts/mojo/#rest_code_42c094d87c224497b05e18641efce7e0-6"&gt;&lt;/a&gt;&lt;span class="c1"&gt;#   nach ^Z und fg brach der Prozess ab, aber ein deb „modular“ war installiert&lt;/span&gt;
&lt;a id="rest_code_42c094d87c224497b05e18641efce7e0-7" name="rest_code_42c094d87c224497b05e18641efce7e0-7" href="https://lannert.de/debloss/en/posts/mojo/#rest_code_42c094d87c224497b05e18641efce7e0-7"&gt;&lt;/a&gt;$&lt;span class="w"&gt; &lt;/span&gt;modular&lt;span class="w"&gt; &lt;/span&gt;auth&lt;span class="w"&gt; &lt;/span&gt;&amp;lt;TOKEN&amp;gt;
&lt;a id="rest_code_42c094d87c224497b05e18641efce7e0-8" name="rest_code_42c094d87c224497b05e18641efce7e0-8" href="https://lannert.de/debloss/en/posts/mojo/#rest_code_42c094d87c224497b05e18641efce7e0-8"&gt;&lt;/a&gt;$&lt;span class="w"&gt; &lt;/span&gt;modular&lt;span class="w"&gt; &lt;/span&gt;install&lt;span class="w"&gt; &lt;/span&gt;mojo
&lt;a id="rest_code_42c094d87c224497b05e18641efce7e0-9" name="rest_code_42c094d87c224497b05e18641efce7e0-9" href="https://lannert.de/debloss/en/posts/mojo/#rest_code_42c094d87c224497b05e18641efce7e0-9"&gt;&lt;/a&gt;&lt;span class="c1"&gt;# -&amp;gt; error: externally-managed-environment&lt;/span&gt;
&lt;a id="rest_code_42c094d87c224497b05e18641efce7e0-10" name="rest_code_42c094d87c224497b05e18641efce7e0-10" href="https://lannert.de/debloss/en/posts/mojo/#rest_code_42c094d87c224497b05e18641efce7e0-10"&gt;&lt;/a&gt;$&lt;span class="w"&gt; &lt;/span&gt;python3.11&lt;span class="w"&gt; &lt;/span&gt;-m&lt;span class="w"&gt; &lt;/span&gt;venv&lt;span class="w"&gt; &lt;/span&gt;--prompt&lt;span class="w"&gt; &lt;/span&gt;mojo&lt;span class="w"&gt; &lt;/span&gt;venv-311
&lt;a id="rest_code_42c094d87c224497b05e18641efce7e0-11" name="rest_code_42c094d87c224497b05e18641efce7e0-11" href="https://lannert.de/debloss/en/posts/mojo/#rest_code_42c094d87c224497b05e18641efce7e0-11"&gt;&lt;/a&gt;$&lt;span class="w"&gt; &lt;/span&gt;.&lt;span class="w"&gt; &lt;/span&gt;venv-311/bin/activate
&lt;a id="rest_code_42c094d87c224497b05e18641efce7e0-12" name="rest_code_42c094d87c224497b05e18641efce7e0-12" href="https://lannert.de/debloss/en/posts/mojo/#rest_code_42c094d87c224497b05e18641efce7e0-12"&gt;&lt;/a&gt;&lt;span class="o"&gt;(&lt;/span&gt;mojo&lt;span class="o"&gt;)&lt;/span&gt;$&lt;span class="w"&gt; &lt;/span&gt;pip&lt;span class="w"&gt; &lt;/span&gt;install&lt;span class="w"&gt; &lt;/span&gt;-U&lt;span class="w"&gt; &lt;/span&gt;pip&lt;span class="w"&gt; &lt;/span&gt;wheel
&lt;a id="rest_code_42c094d87c224497b05e18641efce7e0-13" name="rest_code_42c094d87c224497b05e18641efce7e0-13" href="https://lannert.de/debloss/en/posts/mojo/#rest_code_42c094d87c224497b05e18641efce7e0-13"&gt;&lt;/a&gt;&lt;span class="o"&gt;(&lt;/span&gt;mojo&lt;span class="o"&gt;)&lt;/span&gt;$&lt;span class="w"&gt; &lt;/span&gt;modular&lt;span class="w"&gt; &lt;/span&gt;install&lt;span class="w"&gt; &lt;/span&gt;mojo
&lt;a id="rest_code_42c094d87c224497b05e18641efce7e0-14" name="rest_code_42c094d87c224497b05e18641efce7e0-14" href="https://lannert.de/debloss/en/posts/mojo/#rest_code_42c094d87c224497b05e18641efce7e0-14"&gt;&lt;/a&gt;&lt;span class="c1"&gt;# -&amp;gt; etliche Fehlermeldungen zu Symlinks „File exists“&lt;/span&gt;
&lt;a id="rest_code_42c094d87c224497b05e18641efce7e0-15" name="rest_code_42c094d87c224497b05e18641efce7e0-15" href="https://lannert.de/debloss/en/posts/mojo/#rest_code_42c094d87c224497b05e18641efce7e0-15"&gt;&lt;/a&gt;&lt;span class="o"&gt;(&lt;/span&gt;mojo&lt;span class="o"&gt;)&lt;/span&gt;$&lt;span class="w"&gt; &lt;/span&gt;~/.modular/pkg/packages.modular.com_mojo/bin/mojo
&lt;a id="rest_code_42c094d87c224497b05e18641efce7e0-16" name="rest_code_42c094d87c224497b05e18641efce7e0-16" href="https://lannert.de/debloss/en/posts/mojo/#rest_code_42c094d87c224497b05e18641efce7e0-16"&gt;&lt;/a&gt;Welcome&lt;span class="w"&gt; &lt;/span&gt;to&lt;span class="w"&gt; &lt;/span&gt;Mojo!&lt;span class="w"&gt; &lt;/span&gt;🔥Expressions&lt;span class="w"&gt; &lt;/span&gt;are&lt;span class="w"&gt; &lt;/span&gt;delimited&lt;span class="w"&gt; &lt;/span&gt;by&lt;span class="w"&gt; &lt;/span&gt;a&lt;span class="w"&gt; &lt;/span&gt;blank&lt;span class="w"&gt; &lt;/span&gt;line.
&lt;a id="rest_code_42c094d87c224497b05e18641efce7e0-17" name="rest_code_42c094d87c224497b05e18641efce7e0-17" href="https://lannert.de/debloss/en/posts/mojo/#rest_code_42c094d87c224497b05e18641efce7e0-17"&gt;&lt;/a&gt;Type&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="sb"&gt;`&lt;/span&gt;:mojo&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nb"&gt;help&lt;/span&gt;&lt;span class="sb"&gt;`&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;for&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;further&lt;span class="w"&gt; &lt;/span&gt;assistance.
&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;Jetzt kann man tatsächlich Mojo laufenlassen:&lt;/p&gt;
&lt;pre class="literal-block"&gt;1&amp;gt; var i = 0
2. while i &amp;lt; 11:
3.     print(i, i*i)
4.     i += 1
5.
0 0
1 1
2 4
3 9
4 16
5 25
6 36
7 49
8 64
9 81
10 100
(Int) i = {
  (index) value = 11
}
5&amp;gt;&lt;/pre&gt;
&lt;p&gt;Achtung – das ist nicht Python, das ist Mojo, und da gelten andere Regeln!
(Und die Cursortasten funktionieren im REPL nicht.)
Mit &lt;code class="docutils literal"&gt;:help&lt;/code&gt; bekommt man nützliche Hinweise; z.B. kann man einen Eingabeblock mit
&lt;code class="docutils literal"&gt;%%python&lt;/code&gt; beginnen lassen und dann „echte Python-Statements“ eingeben. Allerdings
funktioniert das erst einmal nicht
(„Unable to locate a suitable libpython, please set &lt;cite&gt;MOJO_PYTHON_LIBRARY&lt;/cite&gt;“).&lt;/p&gt;
&lt;p&gt;Also:&lt;/p&gt;
&lt;pre class="literal-block"&gt;(mojo)$ export MOJO_PYTHON_LIBRARY=/usr/lib/x86_64-linux-gnu/libpython3.11.so
(mojo)$ ln -s ~/.modular/pkg/packages.modular.com_mojo/bin/mojo \
        venv-311/bin/mojo
(mojo)$ mojo
Welcome to Mojo! 🔥Expressions are delimited by a blank line.
Type `:mojo help` for further assistance.
1&amp;gt; %%python
2. import sys
3. print(sys.version)
4.
3.11.5 (main, Aug 29 2023, 15:31:31) [GCC 13.2.0]
(PythonObject) sys = {
  (PyObjectPtr) py_object = {
    (pointer&amp;lt;scalar&amp;lt;si8&amp;gt;&amp;gt;) value = 0x00007fd9b9b7aca0
  }
}
4&amp;gt; :q&lt;/pre&gt;
&lt;p&gt;Nun ein Versuch mit einem (abgespeckten) Python-Beispielprogramm:&lt;/p&gt;
&lt;pre class="literal-block"&gt;(mojo)$ mojo iq.mojo
…
(mojo)$ mojo build iq.mojo
(mojo)$ ./iq
(mojo)$ time ./iq.py  # -&amp;gt; 0.169s
(mojo)$ time ./iq     # -&amp;gt; 0.002s&lt;/pre&gt;
&lt;p&gt;(Seltsamerweise sind die Ergebnisse zunehmend verschieden, vermutlich durch unterschiedliche
Implementation der Bibliotheksroutinen (oder unterschiedliche Datenformate??).&lt;/p&gt;</description><guid>https://lannert.de/debloss/en/posts/mojo/</guid><pubDate>Wed, 20 Sep 2023 13:38:47 GMT</pubDate></item><item><title>Lobster: Eine interessante Programmiersprache für Freaks</title><link>https://lannert.de/debloss/en/posts/lobster-eine-interessante-programmiersprache-fur-freaks/</link><dc:creator>Detlef Lannert</dc:creator><description>&lt;p&gt;&lt;a class="reference external" href="http://aardappel.github.io/lobster/language_reference.html"&gt;Lobster&lt;/a&gt; ist eine interessante
Programmiersprache mit modernen Konzepten (und vielen Ähnlichkeiten mit Python, Nim, Rust).
Allerdings ist sie stark fokussiert auf Spieleentwicklung, daher sind einige Aspekte nicht
sehr weit entwickelt. Sie existiert seit 2013 und wurde von Wouter van Oortmerssen in erster
Linie für seinen eigenen Bedarf geschrieben.&lt;/p&gt;
&lt;p&gt;Lobster ist ein &lt;a class="reference external" href="https://github.com/aardappel/lobster"&gt;Open-Source-Projekt auf GitHub&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;“Code to the Moon” stellt Lobster in einem kurzen, aber informativen
&lt;a class="reference external" href="https://www.youtube.com/watch?v=uuPeBKdnBOI"&gt;Video&lt;/a&gt; vor.
&lt;a class="reference external" href="https://news.ycombinator.com/item?id=19567160"&gt;Auf HN&lt;/a&gt; gibt es eine Diskussion zur
Sprache und ihren Konzepten.&lt;/p&gt;</description><guid>https://lannert.de/debloss/en/posts/lobster-eine-interessante-programmiersprache-fur-freaks/</guid><pubDate>Sat, 22 Jul 2023 22:00:00 GMT</pubDate></item></channel></rss>