PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : athsc: Esoterische Programmersprache ("aths combiner") Wer wagt sich ran?


aths
2025-12-15, 00:31:08
https://gitlab.com/aths-public/athsc

An dem Scheiß arbeite ich seit einigen Monaten. Implementiert in Python, benötigt Version 3.10, Code auch von ChatGPT geschrieben, war eine Heidenarbeit es hinzukiegen dass meine Anforderungen genau erfüllt werden. Also ja KI kann helfen beim schnellen Protoyping, aber ganz ehrlich wenn man auf die Nacharbeit schaut, weiß ich nicht.

Grundidee: Man hat eine Operation. Den Combiner der 3dfx Voodoo: (a-b)*c+d. Also Multiply-Add mit einer zusätzlichen Subtraktion. Oder eine lineare Interpolation. Oder ein "entferne Bias, skaliere, füge Bias hinzu". Um extra nicht-hilfreich zu sein, in athsc mit komplexen Zahlen. Also wenn man den imaginären Teil weglässt, rechnet er normal, aber er kann mit komplexen Zahlen umgehen.

Ich wollte außerdem, dass konstruierbare Zahlen erreichbar sind, weshalb auch Quadratwurzel integriert ist. Wie man sieht, fehlt noch die Division. Die ist auch integriert. Aber nicht einzeln, man hat als Special Function "1/Wurzel(x)".

Lustig: Alle Mathe-Operationen kommen ohne Argumente aus, weil die immer vordefinierte Variablen verwenden, und alle Variable sind global, und es gibt nur eine Handvoll. In athsc werden Variablen Register genannt. Als Speicher gibt es noch zwei Stacks, um Turingkomplett zu sein (dazu athsc mit --stacks -1 starten für den Unbound-Mode).

Nachdem ich anfing, mit meinem Machwerk Programme zu schreiben, brauchte ich diverse Debugging-Hilfen um es hinzukriegen. Das ist natürlich jetzt alles noch drin, inklusive Line-Trace, Debug-Mode mit break-Option und mehr.

Ich habe viel Zeit investiert, um athsc einerseits als mächtige Sprache zu entwerfen und brauchbare Hilfe einzubauen, die interaktive Shell kann man fast schon als Nano-VM sehen, andererseits aber die Zahl der Befehle zu reduzieren. Meine drei Ideen waren:

- Ein Minimum oberhalb der Turing-Vollständigkeit
- Vielleicht ist es schwer die Macht der Sprache zu entfalten, aber athsc ist einfach zu programmieren/debuggen
- Dem Anwender etwas zu geben wo er er/sie sich die benötigten Features selbst programmieren kann

Man braucht Python 3.10 zum Ausführen, sowie einen Text-Editor zur eigentlichen Programmmierung, kann in der Shell aber auch erst mal viel ausprobieren.

Keine Installation notwendig, einfach "python ./athsc.py" eingeben (oder in Linux natürlich "python3 ./athsc.py")

- Läuft es bei dir?
- Ist es (irgendwie) interessant?

Sweepi
2025-12-15, 12:54:52
Was ist der (hobby-)Usecase? Code schreiben, der von einer Voodoo beschleunigt werden könnte?
Voodoo-Shader (gabs das Konzept damals schon?) bzw. Code in Python debugbar machen?

aths
2025-12-15, 16:15:20
ich fand die Idee spannend, eine ziemlich klobige Formel zu nehmen, so dass man schon überlegen muss wie man damit rein addieren kann. (Dazu "c" auf 1 setzen, Summanden in "a" und "d" packen, "combine" aufrufen.

Also ja ganz zu Beginn stand die Idee so zu tun als könnte man die Voodoo-Combiner zum freien Programmieren nehmen (was die Voodoo natürlich nicht konnte) als Grundlage für eine Art Register-Maschine. Statt adressierbarem Speicher ein Stack, also schön Low-Level.

Dann hab ich noch einen bedingten Sprung reingebracht, einen zweiten Stack, und das Ding war Turing-komplett.

Sweepi
2025-12-15, 18:03:05
https://gitlab.com/aths-public/athsc/-/blob/main/challenges.md

liest sich schon spannend. Vll wenn ich zwischen den Jahren Zeit habe...

Badesalz
2025-12-15, 18:22:40
LLM auf einer V2? :wink:

aths
2025-12-15, 22:13:48
LLM auf einer V2? :wink:
Das war ein bisschen das Design-Problem, auch wenn athsc etwas nummerisches Verständis braucht ist die Idee nicht, große Datenmengen durchzuwursten. Die Idee ist, nahe an der simulierten Hardware zu sein. Als der Prototyp fertig war und ich mein Machwerk zu nutzen begann, machte das mehr Spaß als gedacht.

Dann hatte ich meine Challenges entworfen. Die Ironie: Einen Mandelbrot-Renderer zu schreiben ist mit athsc einfacher als man erst denkt. Die innere Schleife ist mit dem Combiner trivial. Mann muss "nur" den Rest beherrschen, daraus hatte ich dann die anderen Challenges entwickelt. Ich wollte vermitteln, was ich beim Ausprobieren mit athsc gemerkt hattte

- "Ist unnötig schwierig"
- "Warte, da gibt es Wege."
- "Ha! Ich habe das Problem verstanden, und gelöst, fast wie auf Assembler-Niveau"

https://gitlab.com/aths-public/athsc/-/blob/main/challenges.md

liest sich schon spannend. Vll wenn ich zwischen den Jahren Zeit habe...Gerade Schreibfehler gesehen, OMG. Hab noch mal gepusht, die Challenges sollten jetzt korrekt sein.

Es braucht kurz bis man merkt, dass man relativ einfach Code wiederverwenden kann. Die Aufgaben sind bewusst so geschrieben, dass man Ideen, und direkt Code mit leichten Anpassungen wiederverwenden kann.