esolang: Esoterische Programmiersprachen

Thomas Zimmermann
Thomas ZimmermannResearcher at Microsoft Research
esolang Esoterische Programmiersprachen Thomas Zimmermann [email_address] http://www.2000i.de/
Esoterik Eine Definition Exklusiver Kreis Eingeweihter Heiliges Wissen und Kultpraktiken Begriffsgrundlage für wissenschaftliche Studien Spirituelle Aufbrüche in der Gegenwart Urwissen der Menschheit Okkulte Praktiken Spiritualität und Mystik Esoterik als Religiösität
Esoterische  Programm Formen ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
Einschub Quines ,[object Object],[object Object],[object Object],[object Object]
Quines Eine Analogie Quines Compiler Ausführung foo.xx foo foo.xx Interpreter/ Ausführung foo.xx foo.xx Analogie Ausführung Compiler Ausführung foo.xx Box mit Knopf Quines als Kopierer bzw. Replikator
[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],Quines Ein Beispiel $ touch foo.pl $ ll foo.pl -rw-------  1 zimmerth general  0 Nov 10 16:01 foo.pl $ perl foo.pl > foo.out $ diff foo.pl foo.out $ ll foo.out -rw-------  1 zimmerth general  0 Nov 10 16:01 foo.out
Noch ein Einschub Foo ,[object Object],[object Object],[object Object],The word `foo' had an immediate prewar history in comic strips and cartoons. The earliest documented uses were in the surrealist "Smokey Stover“ comic strip by Bill Holman about a fireman.
Esoterische Programmiermethoden ,[object Object],[object Object],[object Object],[object Object],[object Object]
Esoterische Programmiersprachen Brainfuck Shakespeare Piet Chef ?
brainfuck Brain: an apparatus with which we think we think. -- Ambrose Bierce
Brainfuck Urban Müller Brainfuck >+++++++++[<++++++++>-]<.>+++++++ [<++++>-]<+.+++++++..+++.[-]>++++++++ [<++++>-]<.#>+++++++++++[<+++++>-] <.>++++++++[<+++>-]<.+++.------.--------.[-]> ++++++++[<++++>-]<+.[-]++++++++++.
Brainfuck Language Concepts ,[object Object],[object Object],[object Object],[object Object],[object Object],p a: ...
Brainfuck  Anweisungen ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
Brainfuck Hello World ,[object Object],a[0] a[1] 0 0 72 0  p ... a: 0 0 9  72  0 H 101  0 e 108  0 ll 111  0 o 0  0 111  0 87  0 114  0 108  0 100  0 33  0 10  0 32  0 W o r l d  !
Brainfuck Ein Quine ,[object Object],[object Object]
[object Object],[object Object],[object Object],[object Object],[object Object],Portable Brainfuck Interpreter in C ,[object Object],[object Object]
Compressed Brainfuck www.catseye.mb.ca/esoteric/bf/compressed.html ,[object Object],Compressed Brainfuck Format 00xxxyyy: single: only instruction  xxx  (xxx==yyy) 00xxxyyy: pair: instruction  xxx  then  yyy  (xxx!=yyy) 01xxxyyy: repeat: instruction  yyy ,  xxx  (2-9) times  10xxyyzz: triplet: instruction  xx  then  yy  then  zz  11xxxxyy: repeat: instruction  yy ,  xxxx  (2-17) times
Brainfuck Audio www.2000i.de/brainfuck-audio/ (2bf) Parallelität -3 -4 +2 +2 +1 -1 -2 +2 1 Viertel =  2 Brainfuck-Anweisungen Schleifen
chef I don‘t even butter my bread.  I consider that cooking. -- Katherine Cebrian
Chef Anwendungsgebiet
Chef Language Concepts ,[object Object],[object Object],[object Object],[object Object]
Chef Syntax Elements ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
Chef Hello World Souffle (1) ,[object Object]
Chef Hello World Souffle (2) ,[object Object],33 potatoes 100 dijon mustard 72 haricot beans 108 lard 108 lard 101 eggs 111 oil 111 oil 119 water 32 zucchinis 114 red salmon 108 lard ! d H l l e o o w r l
piet The Art of Computer Programming. -- Donald E. Knuth
Einschub Piet Mondrian
Google und Piet Mondrian
Einschub Googol und Googolplex ,[object Object],[object Object]
Piet Language Concepts ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
Piet Colours white black Cycles Other Colors light red yellow green cyan blue magenta dark
Piet Colour Cycles red yellow green cyan blue magenta Hue Cycle Lightness Cycle light normal dark
Piet Kontrollfluss 1 2 0 0: CC 3 CC CC 1: CC 2: CC 3: CC CC CC CC
Piet Syntax Elements ,[object Object],[object Object],[object Object],[object Object]
Piet  Hello World Originalgröße (30x29) Commands Cycles Vergrößerung (1400%) 72 101 108 111 119 32 114 33 (90)
Piet  Fibonacci-Zahlen Vergrößerung (4400%) Commands Cycles Originalgröße (10x11)
shakespeare Trying to pop when the stack is empty is a sure sign that the author has not yet perfected her storytelling skills, and will severly disappoint the runtime system.
Shakespeare Hello World ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
Shakespeare Hello World (2) ,[object Object],[object Object],[object Object],[object Object]
Shakespeare Zuweisungen ,[object Object],[object Object],[object Object],Romeo = 2 6  ·(–1) = –64 Romeo = 2 3  ·(1) – Romeo = 8 – (–64) = 72 Romeo gibt dich aus!
[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],Shakespeare Hello World (3) H [Enter Hamlet and Romeo]   Hamlet: You lying stupid fatherless big smelly half-witted coward! You are as stupid as the difference between a handsome rich brave hero and thyself! Speak your mind! You are as brave as the sum of your fat little stuffed misused dusty old rotten codpiece and a beautiful fair warm peaceful sunny summer's day. You are as healthy as the difference between the sum of the sweetest reddest rose and my father and yourself! Speak your mind! [Enter Hamlet and Romeo]   Hamlet: You lying stupid fatherless big smelly half-witted coward! You are as stupid as the difference between a handsome rich brave hero and thyself! Speak your mind! – 128+32= –96 (4+1)–   (–96)=101 e 101+(8   –1)=108 l ... l
Shakespeare Reverse ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
Shakespeare Reverse (2) ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],Scene II: Pushing to the very end. Lady Macbeth: Open your mind! Remember yourself. Othello: You are as hard as the sum of yourself and a stone wall. Am I as horrid as a flirt-gill? Lady Macbeth: If not, let us return to scene II. Recall your imminent death! Scene II: Pushing to the very end. Lady Macbeth: Open your mind! Remember yourself. Othello: You are as hard as the sum of yourself and a stone wall. Am I as horrid as a flirt-gill? Scene II: Pushing to the very end. Lady Macbeth: Open your mind! Remember yourself. push Lady Macbeth++ Lady Macbeth-- pop If not EOI goto scene 2
Shakespeare Reverse (3) ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],Scene III: Once you pop, you can't stop! Lady Macbeth: Recall your unhappy childhood. Speak your mind! Othello: You are as vile as the sum of yourself and a toad! Are you better than nothing? Scene III: Once you pop, you can't stop! Lady Macbeth: Recall your unhappy childhood. Speak your mind! Lady Macbeth-- if Lady Macbeth>0 goto scene 3 pop print
conclusion A conclusion is the place where you got tired of thinking -- Martin H. Fischer
That‘s All? No, Don´t Miss... Befunge 4-dimensional control flow Intercal   Be part of the madness Unlambda Extreme functional programming Java2K Unleashing the power of rand() Malbolge Programming from hell
the end www.2000i.de/esolang2002/ user: pinky password: brain Vielen Dank für die Aufmerksamkeit!
1 of 46

More Related Content

More from Thomas Zimmermann(20)

Software Analytics = Sharing InformationSoftware Analytics = Sharing Information
Software Analytics = Sharing Information
Thomas Zimmermann3.3K views
MSR 2013 PreviewMSR 2013 Preview
MSR 2013 Preview
Thomas Zimmermann21.8K views
Analytics for smarter software development Analytics for smarter software development
Analytics for smarter software development
Thomas Zimmermann2.6K views
Klingon Countdown TimerKlingon Countdown Timer
Klingon Countdown Timer
Thomas Zimmermann1.3K views
Data driven games user researchData driven games user research
Data driven games user research
Thomas Zimmermann1.5K views
Security trend analysis with CVE topic modelsSecurity trend analysis with CVE topic models
Security trend analysis with CVE topic models
Thomas Zimmermann1.5K views
Analytics for software developmentAnalytics for software development
Analytics for software development
Thomas Zimmermann4.6K views
Cross-project defect predictionCross-project defect prediction
Cross-project defect prediction
Thomas Zimmermann1.9K views
Quality of Bug Reports in Open SourceQuality of Bug Reports in Open Source
Quality of Bug Reports in Open Source
Thomas Zimmermann1.6K views
Meet Tom and his FishMeet Tom and his Fish
Meet Tom and his Fish
Thomas Zimmermann1.5K views
Got Myth? Myths in Software EngineeringGot Myth? Myths in Software Engineering
Got Myth? Myths in Software Engineering
Thomas Zimmermann5.9K views

Recently uploaded(20)

CXL at OCPCXL at OCP
CXL at OCP
CXL Forum158 views
ISWC2023-McGuinnessTWC16x9FinalShort.pdfISWC2023-McGuinnessTWC16x9FinalShort.pdf
ISWC2023-McGuinnessTWC16x9FinalShort.pdf
Deborah McGuinness80 views
Web Dev - 1 PPT.pdfWeb Dev - 1 PPT.pdf
Web Dev - 1 PPT.pdf
gdsczhcet44 views
[2023] Putting the R! in R&D.pdf[2023] Putting the R! in R&D.pdf
[2023] Putting the R! in R&D.pdf
Eleanor McHugh31 views

esolang: Esoterische Programmiersprachen

  • 1. esolang Esoterische Programmiersprachen Thomas Zimmermann [email_address] http://www.2000i.de/
  • 2. Esoterik Eine Definition Exklusiver Kreis Eingeweihter Heiliges Wissen und Kultpraktiken Begriffsgrundlage für wissenschaftliche Studien Spirituelle Aufbrüche in der Gegenwart Urwissen der Menschheit Okkulte Praktiken Spiritualität und Mystik Esoterik als Religiösität
  • 3.
  • 4.
  • 5. Quines Eine Analogie Quines Compiler Ausführung foo.xx foo foo.xx Interpreter/ Ausführung foo.xx foo.xx Analogie Ausführung Compiler Ausführung foo.xx Box mit Knopf Quines als Kopierer bzw. Replikator
  • 6.
  • 7.
  • 8.
  • 10. brainfuck Brain: an apparatus with which we think we think. -- Ambrose Bierce
  • 11. Brainfuck Urban Müller Brainfuck >+++++++++[<++++++++>-]<.>+++++++ [<++++>-]<+.+++++++..+++.[-]>++++++++ [<++++>-]<.#>+++++++++++[<+++++>-] <.>++++++++[<+++>-]<.+++.------.--------.[-]> ++++++++[<++++>-]<+.[-]++++++++++.
  • 12.
  • 13.
  • 14.
  • 15.
  • 16.
  • 17.
  • 18. Brainfuck Audio www.2000i.de/brainfuck-audio/ (2bf) Parallelität -3 -4 +2 +2 +1 -1 -2 +2 1 Viertel = 2 Brainfuck-Anweisungen Schleifen
  • 19. chef I don‘t even butter my bread. I consider that cooking. -- Katherine Cebrian
  • 21.
  • 22.
  • 23.
  • 24.
  • 25. piet The Art of Computer Programming. -- Donald E. Knuth
  • 27. Google und Piet Mondrian
  • 28.
  • 29.
  • 30. Piet Colours white black Cycles Other Colors light red yellow green cyan blue magenta dark
  • 31. Piet Colour Cycles red yellow green cyan blue magenta Hue Cycle Lightness Cycle light normal dark
  • 32. Piet Kontrollfluss 1 2 0 0: CC 3 CC CC 1: CC 2: CC 3: CC CC CC CC
  • 33.
  • 34. Piet Hello World Originalgröße (30x29) Commands Cycles Vergrößerung (1400%) 72 101 108 111 119 32 114 33 (90)
  • 35. Piet Fibonacci-Zahlen Vergrößerung (4400%) Commands Cycles Originalgröße (10x11)
  • 36. shakespeare Trying to pop when the stack is empty is a sure sign that the author has not yet perfected her storytelling skills, and will severly disappoint the runtime system.
  • 37.
  • 38.
  • 39.
  • 40.
  • 41.
  • 42.
  • 43.
  • 44. conclusion A conclusion is the place where you got tired of thinking -- Martin H. Fischer
  • 45. That‘s All? No, Don´t Miss... Befunge 4-dimensional control flow Intercal Be part of the madness Unlambda Extreme functional programming Java2K Unleashing the power of rand() Malbolge Programming from hell
  • 46. the end www.2000i.de/esolang2002/ user: pinky password: brain Vielen Dank für die Aufmerksamkeit!