Seiten

Donnerstag, 21. April 2011

Blogplan Teil 9

Esoterische Programmiersprachen Teil 3


ein paar Vertreter sind hier noch aufgelistet.

"Ook" ist wohl ein Vertreter der Vorgeschichtlichen Kommunikation? Laut Wikipedia eine Programmiersprache für Orang Uthans. Es existieren nur die drei Syntaxelemente Ook. Ook? und Ook!

Das Programm, dass damit Hello World auf dem Bildschirm ausgibt sieht dann so aus:


Ook. Ook? Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook.
Ook. Ook. Ook. Ook. Ook! Ook? Ook? Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook.
Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook? Ook! Ook! Ook? Ook! Ook? Ook.
Ook! Ook. Ook. Ook? Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook.
Ook. Ook. Ook! Ook? Ook? Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook?
Ook! Ook! Ook? Ook! Ook? Ook. Ook. Ook. Ook! Ook. Ook. Ook. Ook. Ook. Ook. Ook.
Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook! Ook. Ook! Ook. Ook. Ook. Ook. Ook.
Ook. Ook. Ook! Ook. Ook. Ook? Ook. Ook? Ook. Ook? Ook. Ook. Ook. Ook. Ook. Ook.
Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook! Ook? Ook? Ook. Ook. Ook.
Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook? Ook! Ook! Ook? Ook! Ook? Ook. Ook! Ook.
Ook. Ook? Ook. Ook? Ook. Ook? Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook.
Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook! Ook? Ook? Ook. Ook. Ook.
Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook.
Ook. Ook? Ook! Ook! Ook? Ook! Ook? Ook. Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook.
Ook? Ook. Ook? Ook. Ook? Ook. Ook? Ook. Ook! Ook. Ook. Ook. Ook. Ook. Ook. Ook.
Ook! Ook. Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook.
Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook!
Ook! Ook. Ook. Ook? Ook. Ook? Ook. Ook. Ook! Ook.

Wirklich nicht von schlechten eltern.

"Piet ist noch ein weiterer Vertreter der zweidimensionalen esoterischen Programmiersprachen. Die Programme sehen aus wie Bilder des niederländischen Males Piet Mondrian.

 
-Programm der Sprache Piet

Der Programmcode muss als .gif - Datei vorliegen und wurde wie die Sprache Chef von David Morgan-Mar (engl.) erfunden.

Absolut erwähnenswert ist auch die Sprache Shakespeare deren Code wie ein Text des berühmten Autors assieht.

Hier die Variablendeklaration:


Romeo, a young man with a remarkable patience.
Juliet, a likewise young woman of remarkable grace.
Ophelia, a remarkable woman much in dispute with Hamlet.
Hamlet, the flatterer of Andersen Insulting A/S.

Dies genügt wohl, den restlichen Codestil kann man sich wohl nun denken. Der Programmierteil greift eben auf die Interaktion zwischen den Charaktären zurück. Auch Regieanweisungen sind Teil des Codes.

Blogplan Teil 8

Weitere Esoterische Programmiersprachen

Da mir die Recherche im letzten Eintrag gefallen hat werde ich noch weitere Vertreter esoterischer Programmiersprachen vorstellen. Mal schauen ob begeisterungsfähiges dabei ist.

Hier haben wir was feines. Die von David Morgan-Mar entwickelte Programmiersprache Chef, die sich wie ein Kochrezept ließt. Hier ein Codebeispiel für ein "Hallo Welt Gericht" :

Hallo-Welt-Soufflee 

 Ingredients.
 72 g haricot beans
 101 eggs
 108 g lard
 111 cups oil
 32 zucchinis
 119 ml water
 114 g red salmon
 100 g dijon mustard
 33 potatoes
 
 Method.
 Put potatoes into the mixing bowl.
 Put dijon mustard into the mixing bowl.
 Put lard into the mixing bowl.
 Put red salmon into the mixing bowl.
 Put oil into the mixing bowl.
 Put water into the mixing bowl.
 Put zucchinis into the mixing bowl.
 Put oil into the mixing bowl.
 Put lard into the mixing bowl.
 Put lard into the mixing bowl.
 Put eggs into the mixing bowl.
 Put haricot beans into the mixing bowl.
 Liquefy contents of the mixing bowl.
 Pour contents of the mixing bowl into the baking dish.
 
 Serves 1.

Klingt doch lecker, oder?

Die Angeblich am schwersten zu benutzende Programmiersprache ist Malbolge, die gerade zu diesem Zweck entwickelt wurde. der Code ist ein einziges Desaster:


 (=<`:9876Z4321UT.-Q+*)M'&%$H"!~}|Bzy?=|{z]KwZY44Eq0/{mlk**
 hKs_dG5[m_BA{?-Y;;Vb'rR5431M}/.zHGwEDCBA@98\6543W10/.R,+O< 

Übertrumpft wird dieser Umstand nur noch von der Beschreibung:

es  verwendet den ASCII-Wert eines Zeichens und wendet den Modulo von 94 darauf an. Erst anschließend wird das ganze ein Kommando. Um die Schwierigkeit noch zu steigern, wird danach ein Zähler erhöht, welcher auf zukünftige Werte addiert wird.

Wer hat denn die Zeit um sich mit soetwas zu befassen??



Blogplan Teil 7

Programmiersprachen und Vertreter verschiedener Konzepte


Esoterische Programmiersprachen


Ich erkläre das Thema der Geschichte der Programmiersprachen hiermit als beendet. Als nächstes möchte ich mich um ein bischen Unterhaltung kümmern und gehe auf die etwas merkwürdigeren Vertreter aus der Gattung der Programmiersprachen ein.
Hierhin fallen auch alle sogenannten "Esotherischen Programmiersprachen",  welche laut Wikipedia zur Umsetzung ungewöhnlicher Sprachkonzepte da sind. Als einen Vertreter aus diesen Reihen möchte ich das nicht zu unrecht so genannte *Entschuldigung* "Brainfuck", nennen, auch Brainf*ck, Brainf*** oder BF genannt.
Laut Wikipedia dient Brainf*** unter anderem um Grundlagen der Computertechnik zu lernen.

Hier ein Codebeispiel:


++++++++++
 [
  >+++++++>++++++++++>+++>+<<<<-
 ]                       Schleife zur Vorbereitung der
                         Textausgabe
 >++.                    Ausgabe von 'H'
 >+.                     Ausgabe von 'e'
 +++++++.                'l'
 .                       'l'
 +++.                    'o'
 >++.                    Leerzeichen
 <<+++++++++++++++.      'W'
 >.                      'o'
 +++.                    'r'
 ------.                 'l'
 --------.               'd'
 >+.                     '!'
 >.                      Zeilenvorschub
 +++.                    Wagenrücklauf

Die Kommentare machen deutlich, dass es sich um eine Sprache handelt die stark an Assembler erinnert. Brainfuck besitzt lediglich acht Befehle, mit denen sich alle prozeduralen Funktionen ausführen lassen:

Zeichen C-Äquivalent Semantik
> ++ptr; inkrementiert den Zeiger
< --ptr; dekrementiert den Zeiger
+ ++*ptr; inkrementiert den aktuellen Zellenwert
- --*ptr; dekrementiert den aktuellen Zellenwert
. putchar(*ptr); Gibt den aktuellen Zellenwert als ASCII-Zeichen auf der Standardausgabe aus
, *ptr = getchar(); Liest ein Zeichen von der Standardeingabe und speichert dessen ASCII-Wert in der aktuellen Zelle
[ while (*ptr) { Springt nach vorne, hinter den passenden ]-Befehl, wenn der aktuelle Zellenwert null ist
] } Springt zurück, hinter den passenden [-Befehl, wenn der aktuelle Zellenwert verschieden von null ist

Der Entstehende Code ist aufgrund der wenigen Verwendeten Symbole und der kaum vorhandenen Struktur sehr schwer zu lesen, was der Sprache wohl zu Ihrem Namen verholfen hat.

Dienstag, 19. April 2011

Blogplan 19-04-2011

Programmiersprachen und Vertreter verschiedener Konzepte

Teil 6

Heute geht die Reise durch die Geschichte der Entwicklung der Programmierspachen, oder besser der Evolution der Programmiersprachen weiter. In der 80er Jahren wurden die ersten Objektorientieren Programmiersprachen beliebt und begannen sich allmählich durchzusetzen. Darunter das immer noch vielverwendete C++, aber auch jüngere Vertreter. Leider konnte ich keine Geschichte der Objektorientierten Programmiersprachen finden. Ich gehe aber davon aus, das Smalltalk, welches dem Objektorientierten Programmierparadigma entschieden folgt eine der Ältesten, wenn nicht die älteste Objektorientierte Programmiersprache ist.


Hierbai entstanden neue Konzepte und Begriffe, zum Besipiel Abstraktion der Klasse oder der Prototyps. Wobei ich mir nicht genau darüber im klaren bin, was der unterschied zwischen klassen und Prototypen sind. Beim Anlegen von Klassen bei der objektorientierten Programmierung werden Methoden und Parameter festgelegt. So bekommt eine bestimmte Klasse bestimmte Eigenschaften und ist somit ein bestimmtes Objekt, das durch seine Eigenschaften und seinen Namen eindeutig bestimmt ist. Beim Prototyping werden neue Prototypen aus bereits vorhandenen Prototypen erzeugt. Der einzige mir Bekannte vertreter ist Java Script, eventuell nch das von Flash verwendete Actionscript. Ein Objekt aus einer Sprache die Klassen verwendet ist immer in erster linie ein Objekt. Beim Prototyping wird dabei vermutlich durch die ganze Hierarchie der Verwendeten Prototypen heruntergebrochen?


Hiermit und mit anderem werde ich mich in Teil 6 beschäftigen.

Montag, 18. April 2011

Blogplan 18-04-2011

Programmiersprachen und Vertreter verschiedener Konzepte

Teil5 

jetzt geht es in die 80er Jahre. Hier wird die Sache schon sehr unübersichtlich. Die verschidensten Sprachen aufgebaut auf den unterschiedlichsten KOnzepten rangen miteinander um die Vorherrschaft. Da meine Kenntnisse üner diesen Zeitraum sehr begrenzt sind werde ich mich wieder an dem entsprechenden WikipediaArtikel orientieren und eigenes Wissen und ideen einfliessen lassen.

Zu beginn der 80er Jahre existierten über 450 Programmiersprachen, die in Projekten des Verteidgungsministeriums in verwendung waren. Alle nicht standardisiert und vom Anbieter abhängig. Hierbei gilt zu bedenken, dass die Zahl der Anbieter noch nicht von einem Monopolisten, der sich durchgesetzt hatte gedrückt wurde ( beispiel Microsoft ) und es auch noch  eine Fülle von Anbietern von Heimcomputuern gab: 
Commodore VC20, C64, Sinclair ZX80/81, Sinclair ZX Spectrum, Schneider/Amstrad CPC 464/664, Atari XL/XE-Reihe,(Texas Instruments TI-99/4A, Amiga, Atari ST. Jeder dieser Anbieter benutzte ein eigenes Betriebssystem und unterstütze eigene Programmiersprachen, die mehr oder weniger gut an das System angepasst waren. Diese Computer waren auch in Büros in Benutzung und es gab somit mindestens ebensoviele Bürostandarts.  Um dies zu vereinheitlichen wurde eine neue Sprache Ada benannt nach der Mathematikerin Ada Lovelace, die als eine der ersten Programme für die Analytical enging von Charles Babbage entworfen hat.

Der nächste große Entwicklungsschritt war die entwicklung objektorientierter Programmiersprachen, welche das entwickeln von Programmen stark verbessern sollten.

darau beziehe ichmich dann in

Teil 6