Resources https://esolangs.org/wiki has the most and most recently updated ideas for the esoteric programming languages talk Sure most programming languages we interact with are supposed to be useful and helpful There are however those designed for other reasons or just on a lark This helps you think outside the box, though many of them are like thinking about a box in a foreign country, with instructions in latin and likely containing a wild animal that may try and bite you. English and Latin This contains a large cat, it may bite you haec continet magna felis sit mordebunt vos Have cat (lion) in flat box photo, need japanese flag LOLCODE and the other internet meme language are pretty awesome Though not very esoteric, mainly using an amusing syntax, the other one looks a bit weirder (linked from the links below) Intercal needs mentioning Come From statement, first appearance of such also I think it has the statements with some percentage chance of being executed Other spaces like the image one (and that it has inspired real uses) needs mentioning The field has changed a bit since I last looked much, like the binary lambda calculus from 2004 and the meme ones mentioned above appeared more recently again https://en.wikipedia.org/wiki/Esoteric_programming_language http://www.formauri.es/personal/pgimeno/compurec/EsotericLanguages.php listverse.com/2011/02/17/top-10-truly-bizarre-programming-languages/ www.hongkiat.com/blog/bizarre-insane-programming-languages/ tutorialzine.com/2013/12/the-10-weirdest-programming-languages/ There are a lot https://esolangs.org/wiki/Language_list Lots of reading to be done, get examples, talk about the awesomeness, need to look at each one I want to talk about a bit closely In one of the pages there is talk about a single instruction language being turing complete, should chase that up Why code in something easy like python, so boring when you can add excitement to your life this way. After all SHDNS was written by Mikal https://linux.org.au/conf/2004/abstracts.html#1 http://www.stillhq.com/shdns/ The idea that languages are sort of equivalent, all of them can have solutions expressed in some other language. The primary reason for the vairety of languages is that some are awwesome at one type of problem and not so awesome at others Example needed, prolog for a logic problem vs prolog for a web form maybe Prolog is a language used for AI and searching problems with nicely defined data structures, naturally recursive and data is declared as part of the code. So sure if you define a huge database of information and then make some qquestions it works brilliantly. The Airline industry uses it for airfare searches and it matches that problem really well. However if you want to use it for something like a syslog daemon it may not be the perfect match from 2002 a good write up on places it is used http://www.drdobbs.com/parallel/the-practical-application-of-prolog/184405220 http://www.academia.edu/16789218/If_Prolog_is_the_Answer_What_is_the_Question_or_What_it_Takes_to_Support_AI_Programming_Paradigms interesting paper talking about having a toolbox of languages with different paradigms to solve problems So talking about all that prolog stuff shows that it is used in industry and does have real world beenfit if your problems fit the language well. There are other sayings in the programming wqorld, such as any sufficiently large program evolves to contain a poorly implemented verison of lisp. Any sufficiently complicated C or Fortran program contains an ad hoc, informally-specified, bug-ridden, slow implementation of half of Common Lisp Greenspuns tenth rule https://en.wikipedia.org/wiki/Greenspun's_tenth_rule Other such rules JWZ Every program attempts to expand until it can read mail. Those programs which cannot so expand are replaced by ones which can. Also others linked from the tenth rule talk about layers of abstraction or platform in platform moves to solve problems that would be better done in other ways Also linked is https://en.wikipedia.org/wiki/Software_Peter_principle Which is the idea of how software projects can become too complex for anyone to undestand, and that ways should be found to avoid that. Such as using many problem specific bits for that problems to it is clearer and mixing and matching. However with esoteric languages, especially the stranger and weirder ones we probably can it that principle on first write of any program. Heck a way to measue how absurd a language is could be to see how quickly the program becomes to complex to understand. The language in many of the links at the top that needed hello world generated because it was originally written to make it impossible to use is a great example of the maximum level of this that could be found. (Malbolge) That is Malbolge, unlike Befunge which is going to be able to be programmed within, the designer of Malbolge tried to make it impossible to write code in. What paradigms do esoteric prgramming languages have? (messing with your head?) With any turing complete language (pretty much all of them now days) it could be argued only one language is ever needed, however the fit of a language to a problem and to the later work in dealing with the use of that language has an impact. need to talk about lex and yacc as they are part of why it is fairly easy to port languages aground and also why it would be easy to chane language tokens to something else such as the I CAN HAZ CHEEZBURGER language this language is called LOLCODE And it really is basically a nromal declarative language with a different syntax (though missing some stuff like precendence and such) However there is a LOLPython that allows you to write effectively in LOLCode but has access to the python libraries, best of all worlds? http://www.dalkescientific.com/writings/diary/archive/2007/06/01/lolpython.html The example from that page is good of the fibonacci sequence need examples A similar language of that style is ArnoldC Which as the sites talking about it suggest "Here is a programming language made entirely out of one-liners from movies featuring Arnold Schwarzenegger" Need examples NOT, N'T, or %n in intercal are the things I was thinking of for percentage chance of a line being executed PLEASE DO %50 statement means there is a 50% chance the statement will be executed From the list above of bizarre languages Omgrofl is a good one, unlike the LOLCODE language this is a different style of language to some extent and not easily used to write programs in a normal procedular style with a different syntax It has some similarities to brainfuck (IO), though definitely more verbose thie thing of most interest about brainfuck is Brainfuck was invented by Urban Müller in 1993, in an attempt to make a language for which he could write the smallest possible compiler for the Amiga OS, version 2.0. He managed to write a 240-byte compiler. The language was inspired by False, which had a 1024-byte compiler. Müller chose to name the language brainfuck So it really is an interesting tool for that specific target (small compiler), however all other aspects of it are painful However from what I can see the award for smallest language (including implementation) probably goes to binary lamda calculus, it is modeled on lambda calculu s but adds in IO so it can be used to do stuff. As anyone who read the esoteric languages wikipedia article will know it has 29 byte self interpreter. I can not find much about this language appart from on wikipedia so will leave it out of further discussion c2bf exists, so there is a compiler to output bf. As you can imagine it is just like another target for the output, probably not as optimised as cmpiling c code to machine language on a given computer. CHEF and Shakespeare are a different take on this sort of thing Rather than trying to mess with our heads (well explicitly) they are making programs that look like somethign we see in anotherdomain. Chef has recipes (that you should be able to cook) that can be compiled to run as programs. Shakespeare has programs that look like acts in plays by the bard White space gets interesting, using only tabs, spaces and returns, anything ielse is ignored (though possibly not easy to write comments due to the space character being important) uSing only 3 letters in different ways to make a program is getting to a very reduced instruction set (though not to the idea of a One Instruction Computer)