Sonntag, 17. Juni 2012

Hallo Welt

Jede ordentliche Programmiersprache muß mit einen Hello-World-Programm beginnen. Ich will da auch nicht nachstehen. Hier ist es:

    "Hello world" dump_print


"Macht nicht viel her", wird jetzt so manche sagen. Aber das ist eigentlich mehr oder weniger immer so. Ein Hello-World-Programm dient der grundsätzlichen Klärung von Sachen: wie ist der allgemeine Rahmen des Programmtextes, wie findet die Kommunikation mit dem Benutzer des Programmes statt. Indem man dann versucht, dieses Programm zu Laufen zu bringen, werden eine weitere Grundsätze klar: wie man den Compiler oder Laufzeitumgebung besorgt und benutzt.
Also machen wir das mal:


Reni ist momentan eine experimentelle Programmiersprache. Deshalb gibt es nur eine eingeschränkte Infrastruktur. 


Level 1: Die niederschwelligste Variante ist eine Website, wo man oben das Programm eingibt und dann auf einen Kopf drückt. Ich habe mal eine solche Website erstellt. Meine "Mittel" als Webprogrammierer sind begrenzt, so dass diese Site definitiv ziemlich poplich daherkommt. Aber:
a) Sie tut es
b) Sie ist sie eine Mitmachprovokation
Hier ist also der Link

Level 2: Für die verschwindende Randgruppe der Windowsbenutzer gibt es noch eine weitere relativ einfache Möglichkeit. Man kann sich hier die Assemblies runterladen. Einfach irgendwohin auspacken und in einer Konsole "ReniExe <meinedatei>" eingeben. Dabei steht <meinedatei> für den Namen einer Textdatei, die das zu kompilierende Programm enthält. Möglicherweise muß man noch ".NET Framework 4" installieren. Außerdem möchte ich an dieser Stelle noch darauf hinweisen, dass alles was Ihr mit dieser Software tut, Ihr auf eigene Gefahr tut. Ich übernehme keinerlei Haftung für eventuelle Schäden.

Level 3: Das alles ist unter gpl3. Die Sourcen kann man auf github finden. Es wird VisualStudio und C# benötigt. Mitmachprovokation!

Level 3+: Vielleicht findet sich ja jemand, der das ganze mal unter Mono oder so ans Laufen kriegt. Das wäre für die Menschen, die sich mit Linux oder gar MacOS rumquälen müssen, hilfreich. Ich weiß nicht genau, aber möglicherweise eröffnet sich dann auch die Möglichkeit die Entwicklung mit etwas anderem als VisualStudio zu bestreiten (Nicht das ich das VisualStudio schlecht finde, aber eine größere Wahlfreiheit ist auf jeden Fall zu begrüßen). Da ich momentan keine großartigen Spezialfeatures benutze, sollte das nicht allzu schwer sein, aber schaun wir mal...

Hier mal noch ein etwas komplexeres Beispiel:


Viersich: 4;
EinsDazu: /\ arg + 1;
Konstrukt: /\
(
    Simpel: arg; 
    Pelsim: EinsDazu(arg); 
    Fun: /\ SimpelEinsDazu(arg)
);
lorum: Konstrukt(23);
ipsum: Konstrukt(8);
ipsum Pelsim := 15;
(Viersich, ipsum Simpel, ipsum Pelsim, ipsum Fun(7), lorum Simpel, lorum Fun(18)) dump_print


Man sieht hier Elementares zum Gebrauch von Variablen und Funktionen. Der Doppelpunkt definiert eine Variable mit Initialisierung. Das Zeichen "/\" soll ein Lambda symbolisieren. Es steht immer am Anfang der Funktionsdefinition und mit "arg" wird das Argument des Aufrufs bezeichnet. Wie man Strukturen definiert und dann auf die Elemente zugreift, kann man hier auch sehen (Funktion "Konstrukt", Variablen "lorum" und "ipsum"). Das Zeichen := ist die Wertänderung.

Update 14.9.2012: Lambda-Symbol ist jetzt ein Präfix.
Update 04.11.2012: Versionsnummer bei VisualStudio entfernt
Update 04.11.2012: Ein wenig mehr Erklärung beim komplexen Beispiel
Update 21.11.2012: Link zum Tester