Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

The Dark Side of Programming Languages

3,400 views

Published on

The raw material of my Sophia Antipolis Ruby Drinkup talk on esoteric languages.
This deck isn't really suitable for plain browsing with no commentary.

  • Be the first to comment

The Dark Side of Programming Languages

  1. 1. The Dark Side of Programming Languages <ul>Jean-Baptiste Mazon @jbmazon </ul>
  2. 2. Programming Languages <ul><li>BASIC
  3. 3. Z80 asm
  4. 4. Pascal
  5. 5. C
  6. 6. x86 asm
  7. 7. C++
  8. 8. Prolog
  9. 9. AutoLISP </li></ul><ul><li>Smalltalk
  10. 10. Emacs Lisp
  11. 11. Java
  12. 12. AVR asm
  13. 13. OCaml
  14. 14. PHP
  15. 15. Shell
  16. 16. 68k asm </li></ul><ul><li>Ruby
  17. 17. Perl
  18. 18. Common Lisp
  19. 19. Python
  20. 20. Haskell
  21. 21. Scheme
  22. 22. Forth
  23. 23. Erlang </li></ul>
  24. 24. More Recently <ul><li>LOLCODE
  25. 25. J
  26. 26. Golfscript
  27. 27. Brainfuck
  28. 28. Unlambda
  29. 29. Befunge
  30. 30. ><>
  31. 31. Whitespace </li></ul>
  32. 32. All Programming Languages aren't *that* serious
  33. 33. Compiler Language With No Pronounceable Acronym <ul><li>Donald R Woods, James M Lyon
  34. 34. Princeton University 1972
  35. 35. “INTERCAL” for short </li></ul>
  36. 36. INTERCAL instruction <ul>(1337) DO ,1 ← #13 PLEASE DO ,1 ← #13 DON'T ,1 ← #13 PLEASE NOTE WHAT DO %50 ,1 ← #13 </ul>
  37. 37. INTERCAL values 16-bit 32-bit scalar spot (.) twospot (:) array tail (,) hybrid (;) 16-bit constant: mesh (#)
  38. 38. INTERCAL commands <ul><li>assignment
  39. 39. ,1 ← #13 </li></ul>
  40. 40. INTERCAL commands <ul><li>variable state
  41. 41. IGNORE .1
  42. 42. REMEMBER ,1 + :3 </li></ul>
  43. 43. INTERCAL commands <ul><li>variable stack
  44. 44. STASH :1 + .2
  45. 45. RETRIEVE .4 </li></ul>
  46. 46. INTERCAL commands <ul><li>call stack
  47. 47. (1337) NEXT
  48. 48. RESUME expr
  49. 49. FORGET expr </li></ul>
  50. 50. INTERCAL commands <ul><li>control flow
  51. 51. COME FROM
  52. 52. NEXT FROM </li></ul>
  53. 53. INTERCAL commands <ul><li>instruction state
  54. 54. ABSTAIN FROM
  55. 55. REINSTATE </li></ul>
  56. 56. INTERCAL commands <ul><li>I/O
  57. 57. WRITE IN var
  58. 58. READ OUT var </li></ul>
  59. 59. INTERCAL expressions <ul><li>select #12 ~ #5 -> 2
  60. 60. mingle #0 $ #256 -> 65536
  61. 61. unary bitwise </li><ul><li>or #v26 -> 31
  62. 62. xor #?26 -> 23
  63. 63. and #&26 -> 16 </li></ul></ul>
  64. 64. INTERCAL expressions <ul><li>sparks '
  65. 65. rabbit ears ” </li></ul>
  66. 66. INTERCAL sample DO ,1 <- #13 PLEASE DO ,1 SUB #1 <- #238 DO ,1 SUB #2 <- #108 DO ,1 SUB #3 <- #112 DO ,1 SUB #4 <- #0 DO ,1 SUB #5 <- #64 DO ,1 SUB #6 <- #194 DO ,1 SUB #7 <- #48 PLEASE DO ,1 SUB #8 <- #22 DO ,1 SUB #9 <- #248 DO ,1 SUB #10 <- #168 DO ,1 SUB #11 <- #24 DO ,1 SUB #12 <- #16 DO ,1 SUB #13 <- #162 PLEASE READ OUT ,1 PLEASE GIVE UP
  67. 67. INTERCAL extensions <ul><li>TriINTERCAL
  68. 68. multithreading
  69. 69. backtracking
  70. 70. FFI (C, Befunge-98) </li></ul>
  71. 71. FALSE <ul><li>Wouter van Oortmerssen 1993
  72. 72. stack-oriented
  73. 73. small compiler </li></ul>
  74. 74. Brainfuck <ul><li>Urban Müller, 1993
  75. 75. small compiler
  76. 76. FALSE
  77. 77. P'' </li></ul>
  78. 78. Brainfuck instructions <ul>< > </ul>
  79. 79. Brainfuck instructions <ul>+ - </ul>
  80. 80. Brainfuck instructions <ul>[ ] </ul>
  81. 81. Brainfuck instructions <ul>. , </ul>
  82. 82. Brainfuck Hello World >+++++++++[<++++++++>-]<. >+++++++[<++++>-]<+. +++++++..+++. >>>++++++++[<++++>-]<. >>>++++++++++ [<+++++++++>-] <---.<<<<.++ +.------.--------.>>+.
  83. 83. Brainfuck cat <ul><li>,[.,]
  84. 84. ,+[-.,+]
  85. 85. ,[.[-],] </li></ul>
  86. 86. Brainfuck gray area <ul><li>EOF
  87. 87. tape length
  88. 88. cell type
  89. 89. newlines </li></ul>
  90. 90. Brainfuck variants Ook, Blub > Ook. Ook? < Ook? Ook. + Ook. Ook. - Ook! Ook! . Ook! Ook. , Ook. Ook! [ Ook! Ook? ] Ook? Ook!
  91. 91. Brainfuck variant COW 0 moo ] (almost) 1 mOo < 2 moO > 3 mOO eval 4 Moo ASCII ,. 5 MOo - 6 MoO + 7 MOO [ (almost) 8 OOO [-] 9 MMM x 10 OOM integer . 11 oom integer ,
  92. 92. Brainfuck variant f*ckf*ck > f**k < s**g + b**b - t**s . c**k , k**b [ a**e ] b**t ! echo first twelve characters from stdin: Boob!!!!!!!!!!!! A R S E feck kn*b c** ksh ag t*ts butt
  93. 93. Brainfuck variants <ul><li>DoubleFuck
  94. 94. BrainHype
  95. 95. BoolFuck
  96. 96. Pi
  97. 97. many, many, many more </li></ul>
  98. 98. Brainfuck “ derivatives ” <ul><li>MISC
  99. 99. RSSB
  100. 100. Whitespace </li></ul>
  101. 101. Unlambda <ul><li>David Madore
  102. 102. untyped lambda calculus
  103. 103. without lambda </li></ul>
  104. 104. Unlambda primitives <ul><li>I = λx. x
  105. 105. K = λkλx. k
  106. 106. S = λxλyλz. xz(yz)
  107. 107. ` </li></ul>
  108. 108. Unlambda primitives <ul><li>`iX -> X
  109. 109. ``kXY -> X
  110. 110. ```sXYZ -> ``XZ` YZ </li></ul>
  111. 111. Unlambda builtins <ul><li>`vX -> v
  112. 112. `.xY -> Y (prints x)
  113. 113. ``dFX -> `FX (with delay)
  114. 114. c (call/cc) </li></ul>
  115. 115. Unlambda Hello World <ul>```````````.H.e.l.l.o. .W.o.r.l.di `.d`.l`.r`.o`.W`. `.o`.l`.l`.e`.Hi </ul>
  116. 116. Unlambda Development <ul><li>lambda elimination on ^xF </li><ul><li>no x -> `kF
  117. 117. is x -> i
  118. 118. other `GH </li><ul><li>^x`GH = ``s ^xG ^xH </li></ul></ul></ul>
  119. 119. Unlambda samples
  120. 120. LOLCODE <ul><li>Adam Lindsay 2007
  121. 121. HAI
  122. 122. CAN HAS STDIO?
  123. 123. VISIBLE ”HAI WURLD!”
  124. 124. KTHXBYE </li></ul>
  125. 125. LOLCODE <ul>HAI CAN HAS STDIO? PLZ OPEN FILE ”LOLCATS.TXT” AWSUM THX VISIBLE FILE O NOES INVISIBLE ”ERROR!” KTHXBYE </ul>
  126. 126. LOLCODE <ul>I HAS A VAR IM IN YR LOOP UP VAR!!1 VISIBLE VAR IZ VAR BIGGER THAN 10? KTHX IM OUTTA YR LOOP </ul>
  127. 127. HQ9+ <ul><li>H
  128. 128. Q
  129. 129. 9
  130. 130. +
  131. 131. not Turing-complete! </li></ul>
  132. 132. HQ9+B <ul><li>H
  133. 133. Q
  134. 134. 9
  135. 135. +
  136. 136. B
  137. 137. not object-oriented! </li></ul>
  138. 138. HQ9++ <ul><li>H
  139. 139. Q
  140. 140. 9
  141. 141. +
  142. 142. +
  143. 143. who needs that Q? </li></ul>
  144. 144. H9+ <ul><li>H
  145. 145. 9
  146. 146. +
  147. 147. Hello World! </li></ul>
  148. 148. Others <ul><li>Befunge, Piet
  149. 149. Malbolge
  150. 150. Perligata
  151. 151. Chef, Shakespeare
  152. 152. essential support portal for this presentation:
  153. 153. http://esolangs.org/wiki/Language_list </li></ul>

×