Scriptoria Botanica (Esoterische Programmiersprache)

Übersicht Sonstiges Projekte

Gehe zu Seite 1, 2  Weiter

Neue Antwort erstellen

Ratchet

Betreff: Scriptoria Botanica (Esoterische Programmiersprache)

BeitragMo, Jun 29, 2009 16:00
Antworten mit Zitat
Benutzer-Profile anzeigen
Scriptoria Botanica ist der Ansatz einer esoterische Programmiersprache. Esoterische Programmiersprachen sind Programmiersprachen, die nicht für den praktischen Einsatz entwickelt wurden, sondern ungewöhnliche Sprachkonzepte umsetzen. Am bekanntesten dürfte wohl Brainfuck sein.
Es gibt zum Beispiel Sprachen bei denen sich der Quelltext wie ein Kochrezept oder ein Shakespeare Drama lesen lassen (siehe http://de.wikipedia.org/wiki/C...ersprache) oder http://de.wikipedia.org/wiki/S...g_Language)

Scriptoria Botanica bildet den Programmablauf in einer naturellen Umgebung ab in der verschiedene Pflanzen verwendeet werden. Dabei repräsentiert jeder Pflanzentyp einen anderen Datentyp. Mit anderen Worten: würden Elfen eine Programmiersprache entwickeln würde sie wohl ungefähr so aussehen. Das ist alles rein experimentell! Bedingungen gibt es noch nicht. Folgendes ist im Moment möglich:

  • Strings, Integer/Floats anlegen
  • Strings, Integer/Floats mit Werten füllen
  • Inhalt der Strings, Integers/Floats anzeigen
  • Addition von Integers/Floats
  • Subtraktion von Integer/Floats
  • Textausgabe
  • Texteingabe
  • Alle angelegten Variablen anzeigen
  • Variableninhalt überall im Code einbetten
  • Verketten von Befehlen (mehrere Befehle in einer Zeile)
  • Schleifen
  • Bedingungen



Download Scriptoria Botanica 0.4


Es handelt sich um einen Kommandozeilen-Interpreter.
Code: [AUSKLAPPEN]
sb.exe Scriptdatei

aufrufen um ein Script zu starten oder im Exlorer die Datei auf die Exe ziehen. Beispiel-Scripte liegen bei.

Warnung! Ab hier vergesst alles war ihr je über strukturierte Programmierung gelernt habt!

Es gibt momentan nur zwei Datentypen: Blumen und Grass. Blumen sind Integers und/oder Floats, Gras sind Strings.
Eine Blume hat Blüten und Blätter. Die Anzahl der Blüten ist der Ganzzahlwert, die Anzahl der Blätter der Gleitkommewert (alles hinter dem Komma). Wenn wir also eine Blume mit 7 Blüten und 3 Blättern haben ist das im Endeffekt ein Float mit dem Wert 7,3.
Gras besteht aus vielen Halmen. Jeder Halm ist ein Buchstabe. So ergibt sich aus einer Grasfläche ein String.
Die Farbe welche die Blumen oder das Gras bekommt ist sozusagen der Name der Variable (rote Blume, grünes Gras). Man kann aber auch einfach jedes andere beliebige Adjektiv oder Wort benutzen (weiches Gras); es muss keine Farbe sein.

Im Folgendem erkläre ich die einzelnen Kommandos. Zur Erleichterung schreibe ich immer noch die passenden Basic Befehle hinzu um das Verständnis zu erleichtern.

Die grundlegenden Sprachelemente

Mutter Natur spricht (einen Text ausgeben)
Code: [AUSKLAPPEN]
mother earth says: Hallo Welt

Print("Hallo Welt")

Mutter Natur zuhören (Texteingabe)
Code: [AUSKLAPPEN]
listen to mother earth, green grass

Green_Gras = Input

Blumen anpflanzen (Integer Variablen erstellen)
Code: [AUSKLAPPEN]
plant a red flower

Red_Flower: Int

Blumen anpflanzen und/oder füllen (Integer Variablen erstellen und/oder Wert setzen)
Code: [AUSKLAPPEN]
plant a red flower with 1 bloom

Red_Flower: Int = 1

Blumen anpflanzen und/oder füllen (Float Variablen erstellen und/oder Wert setzen)
Code: [AUSKLAPPEN]
plant a red flower with 1 bloom and 2 leafs

Red_Flower: Float = 1.2

Gras anpflanzen (String Variablen erstellen)
Code: [AUSKLAPPEN]
plant some green grass

Green_Grass: String

Gras anpflanzen und/oder füllen (String Variablen erstellen und/oder Wert setzen)
Code: [AUSKLAPPEN]
plant some green grass with blades of Hallo Welt

Green_Grass: String = "Hallo Welt"

Blüten erblühen lassen (Integer Variablen addieren)
Code: [AUSKLAPPEN]
grow 2 blooms on the red flower

Red_Flower = Red_Flower + 2

Blätter erblühen lassen (Float Variablen addieren)
Code: [AUSKLAPPEN]
grow 2 blooms and 4 leafs on the red flower

Red_Flower = Red_Flower + 2.4

Blüten abreißen (Integer Variablen subtrahieren)
Code: [AUSKLAPPEN]
pick 2 blooms from the red flower

Red_Flower = Red_Flower - 2

Blätter abreißen (Float Variablen subtrahieren)
Code: [AUSKLAPPEN]
pick 2 blooms and 4 leafs from the red flower

Red_Flower = Red_Flower - 2.4

Pflanzen ansehen (Variablen ausgeben)
Code: [AUSKLAPPEN]
look at the red flower
look at the green grass

Print(Red_Flower)
Print(Green_Grass)

Was habe ich angepflanzt (Alle Varablen ausgeben)
Code: [AUSKLAPPEN]
what is blooming

Print(AllPlants)

Werte von Blumen/Grass direkt einbetten (Funktioniert nicht nur bei Textausgabe sondern überall!)
Code: [AUSKLAPPEN]
plant some green grass with blades of Charlie
mother earth says: ~green grass~
plant some other grass with blades of My name is ~green grass~


Befehle mit then verketten
Code: [AUSKLAPPEN]
plant a red flower then look at the red flower


Schleifen
Code: [AUSKLAPPEN]
mother earth says: Hello 3 times

plant a red flower with 3 blooms
mother earth says: Hello World ~red flower~ times

For i = 1 To 3
Print("Hello")
Next

Red_Flower: Int = 3
For i = 1 To Red_Flower
Print("Hello World")
Next

Bedingungen
Code: [AUSKLAPPEN]
when the red flower has less than 3 blooms then grow 1 bloom on the red flower otherwise nothing


If Red_Flower < 3 Then
Red_Flower :+ 1
Else
'nichts
End If

Ein Beispielprogramm:
Code: [AUSKLAPPEN]
plant a red flower with 1 bloom
look at the red flower
mother earth says: Look, a wonderful red flower!

plant some green grass
listen to mother earth, green grass
look at the green grass

plant a yellow flower
grow 3 blooms on the yellow flower
look at the yellow flower

pick 1 bloom and 5 leafs from the yellow flower
what is blooming

plant a orange flower with 1 bloom then grow 1 bloom on the orange flower then look at the orange flower

plant a red flower
plant a blue flower with 10 blooms
grow 1 bloom on the red flower ~blue flower~ times
look at the red flower

plant a black flower with 1 bloom
mother earth says: ~black flower~ then when the black flower has less blooms than 5 then grow 1 bloom on the black flower otherwise leave endless times


Das würde in Basic so aussehen:
Code: [AUSKLAPPEN]
Red_Flower: Int = 1
Print(Red_Flower)
Print("Look, a wonderful red flower!")

Green_Grass: String
Green_Grass = Input
Print(Green_Grass)

Yellow_Flower: Double
Yellow_Flower = Yellow_Flower + 3
Print(Yellow_Flower)

Yellow_Flower = Yellow_Flower - 1.5
Print(AllPlants)

Orange_Flower: Int = 1; Orange_Flower :+ 1; Print(Orange_Flower)

Red_Flower: Int
Blue_Flower: Int = 10
For i = 1 To Blue_Flower
Red_Flower :+ 1
Next
Print(Red_Flower)

Black_Flower: Int = 1
While Black_Flower < 5
Print(Black_Flower)
Black_Flower :+ 1
Wend
[iMac 27"] [3,4GHz Intel Core i5 ] [8GB Ram] [NVIDIA GeForce GTX 775M 2GB] [MacOS X Yosemite] [BlitzMax + MaxGui] [Monkey X Pro]
  • Zuletzt bearbeitet von Ratchet am Fr, Jul 17, 2009 10:11, insgesamt 19-mal bearbeitet

Nicdel

BeitragMo, Jun 29, 2009 16:08
Antworten mit Zitat
Benutzer-Profile anzeigen
Ziemlich nutzlos, aber interessant. Very Happy
Schönes Projekt.
Desktop: Intel Pentium 4 2650 Mhz, 2 GB RAM, ATI Radeon HD 3850 512 MB, Windows XP
Notebook: Intel Core i7 720 QM 1.6 Ghz, 4 GB DDR3 RAM, nVidia 230M GT, Windows 7
 

n-Halbleiter

BeitragMo, Jun 29, 2009 16:12
Antworten mit Zitat
Benutzer-Profile anzeigen
Sieht nett aus, ich werde auf jeden Fall mal weiterverfolgen, was daraus wird. Ich mag esoterische Programmiersprachen. Smile

Ein Problem gibt es allerdings doch: Wenn ich einen Script laufen lassen möchte, dann öffnet er kurz die DOSBox, führt aus, beendet diese allerdings direkt wieder, sodass ich nicht die Ergebnisse sehen kann...
mfg, Calvin
Maschine: Intel Core2 Duo E6750, 4GB DDR2-Ram, ATI Radeon HD4850, Win 7 x64 und Ubuntu 12.04 64-Bit
Ploing!
Blog

"Die Seele einer jeden Ordnung ist ein großer Papierkorb." - Kurt Tucholsky (09.01.1890 - 21.12.1935)

Ratchet

BeitragMo, Jun 29, 2009 16:12
Antworten mit Zitat
Benutzer-Profile anzeigen
Von nützlich war auch nie die Rede ^^
Keine der esoterische Programmiersprachen ist besonders nützlich Very Happy

@ n-Halbleiter: Ja ist doch klar. Wenn nur ein paar Prints gemacht werden beendet sich das Programm danach selber. Wie halt jedes Konsolen Programm. Starte es von der Konsole aus, dann siehst du was.
[iMac 27"] [3,4GHz Intel Core i5 ] [8GB Ram] [NVIDIA GeForce GTX 775M 2GB] [MacOS X Yosemite] [BlitzMax + MaxGui] [Monkey X Pro]
 

aletes

BeitragMo, Jun 29, 2009 19:21
Antworten mit Zitat
Benutzer-Profile anzeigen
apropos esoterische programmierprache.
googelt mal nach Piet, da besteht der "SourceCode" aus einem Bild(SoureCode absichtlich in " stehen, da es kein Code im eigentlichen sinne ist)

Xeres

Moderator

BeitragMo, Jun 29, 2009 19:57
Antworten mit Zitat
Benutzer-Profile anzeigen
Keine Bedingungen oder Schleifen? Keine Grundrechenarten?
Durch den Garten laufen und Blumen miteinander Kreuzen wäre ganz nützlich wenn man irgendetwas damit anfangen wollte.
Win10 Prof.(x64)/Ubuntu 16.04|CPU 4x3Ghz (Intel i5-4590S)|RAM 8 GB|GeForce GTX 960
Wie man Fragen richtig stellt || "Es geht nicht" || Video-Tutorial: Sinus & Cosinus
T
HERE IS NO FAIR. THERE IS NO JUSTICE. THERE IS JUST ME. (Death, Discworld)
 

n-Halbleiter

BeitragMo, Jun 29, 2009 20:16
Antworten mit Zitat
Benutzer-Profile anzeigen
Ratchet: Ich würde trotzdem gerne sehen, was deine Beispielprogramme machen. Wink

Es wäre vielleicht super, wenn am Ende immer auf einen Tastendruck gewartet wird...

Wobei, das kann Ich ja eigentlich selbst machen. Smile Wink

Xeres: Das ist 'ne Esoterische Programmiersprache, die brauchen sowas nicht (siehe SPL und Brainfuck)... Very Happy
mfg, Calvin
Maschine: Intel Core2 Duo E6750, 4GB DDR2-Ram, ATI Radeon HD4850, Win 7 x64 und Ubuntu 12.04 64-Bit
Ploing!
Blog

"Die Seele einer jeden Ordnung ist ein großer Papierkorb." - Kurt Tucholsky (09.01.1890 - 21.12.1935)

ozzi789

BeitragMo, Jun 29, 2009 20:30
Antworten mit Zitat
Benutzer-Profile anzeigen
Interessant, voll der hippie code

Mein Fav
http://lolcode.com/
0x2B || ! 0x2B
C# | C++13 | Java 7 | PHP 5

ComNik

BeitragMo, Jun 29, 2009 20:44
Antworten mit Zitat
Benutzer-Profile anzeigen
Ich "bevorzuge" Befunge. Aber das mit den Pflanzen hört sich nett an. Vielleicht lernt meine Mutter ja doch nochmal programmieren...
WIP: Vorx.Engine
 

MacReeg

BeitragDi, Jun 30, 2009 8:19
Antworten mit Zitat
Benutzer-Profile anzeigen
Esoterische Programmiersprache sind was Hübsches für den Zeitvertreib zwischendurch!

z.B. ASCIIMash

http://inc-x.blogspot.com/2007...n-100.html

n-Halbleiter hat Folgendes geschrieben:
Xeres: Das ist 'ne Esoterische Programmiersprache, die brauchen sowas nicht (siehe SPL und Brainfuck)... Very Happy


Gerade Brainfuck ist als Turing-vollständige Sprache konzepiert und kann somit natürlich Grundrechenarten und Schleifen ausführen. Andere EPs sind vielleicht in diesem Bereich ein bisschen eingeschränkter.

http://de.wikipedia.org/wiki/Brainfuck

Gruß Ernst

Ratchet

BeitragDi, Jun 30, 2009 8:34
Antworten mit Zitat
Benutzer-Profile anzeigen
@Xeres: Das ist Version 0.1 die ich an einem Vormittag geschrieben habe; was erwartest du? Very Happy
[iMac 27"] [3,4GHz Intel Core i5 ] [8GB Ram] [NVIDIA GeForce GTX 775M 2GB] [MacOS X Yosemite] [BlitzMax + MaxGui] [Monkey X Pro]

peacemaker

BeitragDi, Jun 30, 2009 9:26
Antworten mit Zitat
Benutzer-Profile anzeigen
Das sind echt mal paar geile Ideen, schöng gemacht!
~Tehadon~
www.tehadon.de
http://www.blitzforum.de/worklogs/14/

MikeDee

Betreff: Re: Scriptoria Botanica (Esoterische Programmiersprache)

BeitragDi, Jun 30, 2009 11:06
Antworten mit Zitat
Benutzer-Profile anzeigen
Ratchet hat Folgendes geschrieben:
Tulpen trocknen (Integer Variablen subtrahieren)
Code: [AUSKLAPPEN]
dry the blue tulip 5 times

Blue_Tulip = Blue_Tulip - 2

ich glaub da ist dir ein fehler passiert
Nicht wenige benutzen die Anonymität des Internets um berühmt zu werden.

Ratchet

BeitragMi, Jul 01, 2009 9:36
Antworten mit Zitat
Benutzer-Profile anzeigen
Version 0.2 ist jetzt fertig. Die komplette Syntax wurde überarbeitet und ist jetzt viel sinnvoller und systematischer. Beschreibung und Download siehe erster Post.
[iMac 27"] [3,4GHz Intel Core i5 ] [8GB Ram] [NVIDIA GeForce GTX 775M 2GB] [MacOS X Yosemite] [BlitzMax + MaxGui] [Monkey X Pro]

Thorsten

BeitragMi, Jul 01, 2009 10:41
Antworten mit Zitat
Benutzer-Profile anzeigen
wonderful

Ratchet

BeitragDo, Jul 02, 2009 14:40
Antworten mit Zitat
Benutzer-Profile anzeigen
In Version 0.3 sind jetzt Schleifen, das Verketten von Befehlen und das direkte Einbetten von Variablenwerten im gesamten Code möglich. Beispiele und Download im ersten Post.
[iMac 27"] [3,4GHz Intel Core i5 ] [8GB Ram] [NVIDIA GeForce GTX 775M 2GB] [MacOS X Yosemite] [BlitzMax + MaxGui] [Monkey X Pro]
 

aletes

BeitragDo, Jul 02, 2009 17:37
Antworten mit Zitat
Benutzer-Profile anzeigen
ich find das lustig, ich werd mal versuchen ein programm zu schreiben, ichw ar immermal ein begabter gärtner, also werd ich mal ein paar blumen pflanzen und schauen was bei rauskommt
aber das ist eine schöne idee und es ist auch gut umgesetzt, amch weiter so Very Happy

ys, aletes

Ratchet

BeitragDo, Jul 02, 2009 18:46
Antworten mit Zitat
Benutzer-Profile anzeigen
@aletes: Danke. Bin gespannt was du für ein Programm schreiben willst. Viel Funktionalität bietet die Sprache ja noch nicht ^^
[iMac 27"] [3,4GHz Intel Core i5 ] [8GB Ram] [NVIDIA GeForce GTX 775M 2GB] [MacOS X Yosemite] [BlitzMax + MaxGui] [Monkey X Pro]
 

aletes

BeitragDo, Jul 02, 2009 18:50
Antworten mit Zitat
Benutzer-Profile anzeigen
kp, mal schauen. Aber ich finde es lustig, ein programm aus Blumen/Gras pflanzen und pflegen zu schreiben Very Happy
aber ich denke, ich warte noch ein wenig, bis deine Sprache ein paar mehr funktionen aufweißt Very Happy

Eingeproggt

BeitragDo, Jul 02, 2009 18:56
Antworten mit Zitat
Benutzer-Profile anzeigen
Wie kommt man eigentlich auf die Idee so eine esoterische Sprache zu entwickeln?
Ich wollte mich nach den ersten im Internet aufgefundenen Sprachen auch mal an so einem "Schwachsinn" versuchen nur hab bis heute keine Idee, was
1.) noch nicht existiert
2.) halbwegs einfach ist, nicht dass das ein ein-Jahres-Projekt wird
3.) auch noch n bisschen Humor enthält wenn möglich

Vorschläge hör ich gern Smile

mfG, Christoph.
Gewinner des BCC 18, 33 und 65 sowie MiniBCC 9

Gehe zu Seite 1, 2  Weiter

Neue Antwort erstellen


Übersicht Sonstiges Projekte

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group