=== The False Programming Language === I designed this language in '93 with two particular objectives: confusing everyone with an obfuscated syntax, and designing an as powerful language as possible with a tiny implementation: in this case a compiler executable of just 1024 bytes (!), written in pure 68000 assembler. Here's a couple of example programs to give a taste of what False looks like: * **Copy Files** { copy.f: copy file. usage: copy < infile > outfile } ß[^$1_=~][,]# * **Factorial** { factorial program in false! } [$1=~[$1-f;!*]?]f: { fac() in false } "calculate the factorial of [1..8]: " ß^ß'0-$$0>~\8>|$ "result: " ~[\f;!.]? ["illegal input!"]?" " * **Prime Numbers** { writes all prime numbers between 0 and 100 } 99 9[1-$][\$@$@$@$@\/*=[1-$$[%\1-$@]?0=[\$.' ,\]?]?]# Not just toy programs have been written in False, the list of programs in the distribution includes various useful convertion utilities, a compression program, Life, an expression evaluator, a module ripper, queens, tic-tac-toe, a html-table generator, and, probably the biggest False program ever, a complete working BreakOut clone. If you want to look at all of this yourself, get the full False 1.2b distribution [[http://strlen.com/files/lang/false/False12b.zip|zip]] or [[http://strlen.com/files/lang/false/False12b.lha|lha]] (includes all source, including the compiler and portable interpreter). Or just have a read of the [[http://strlen.com/false/false.txt|documentation]]. A dos port of the portable False interpreter can be found [[http://strlen.com/files/lang/false/dosfalse.exe|here]]. [[http://en.wikipedia.org/wiki/FALSE|wikipedia entry]]. === False Links === False has inspired other people to implement similarly perverse languages. Some of them are: * "Brainfuck" by Urban Mueller. If you enjoy compilers just because of their size, make sure you get a look at this! (an executable in less than 256 bytes!) [get it from [[http://aminet.net/dev/lang/brainfuck-2.lha|aminet]], or go [[http://en.wikipedia.org/wiki/Brainfuck|here]]]. This is helloworld: >+++++++++[<++++++++>-]<.>+++++++[<++++>-]<+.+++++++..+++.[-]>++++++++[<++++>-] <.#>+++++++++++[<+++++>-]<.>++++++++[<+++>-]<.+++.------.--------.[-]>++++++++[ <++++>-]<+.[-]++++++++++. * "Y" by Thomas Fischbacher. Very similar to False (syntax too), yet with some more powerful constructs. Comes with (portable) interpreter in C++ [get it from [[http://aminet.net/dev/lang/Y.lha|aminet]]] * "Befunge" by Chris Pressey. Comes with interpreter and debugger in C. Code is different from False, but looks equally beautiful. have a look at [[http://en.wikipedia.org/wiki/Befunge|Befunge]]. factorial looks like this: v >v"Please enter a number (1-16) : "0< ,: >$*99g1-:99p#v_.25*,@ ^_&:1-99p>:1-:!|10 < ^ < * "Bloop" by Ben Schaeffer (Yaxman). An as yet unreleased language with features from False (and another pet language of mine, "Yax"). Ben also made a true x86 version of False (by translating the 68k code), but I lost the code (silly me). * [[http://benhoyt.com/|Ben Hoyt]] has made a full implementation of False as both interpreter and compiler (for 386 DOS) written in ANSI-Forth! the source code is something to be seen. Get the [[http://strlen.com/files/lang/false/forth_false.zip|archive]] (local copy). * Willow Fung has made an implementation of a False-like language for Palm OS & mobile phones (based on MIDP 2.0). Get it [[http://strlen.com/files/lang/false/nano.zip|here]] (local copy). * Stevan Apter has implemented False in K, and it looks [[http://www.nsl.com/papers/false.htm|scary]]. He also made a new language, [[http://www.nsl.com/k/f/f.htm|F]] (Functional False) . * [[http://math.boisestate.edu/~holmes/holmes/sfdocs.pdf|Strictly False]]. * Ian Osgood's [[http://www.quirkster.com/js/false-js.html|javascript FALSE interpreter]] and his own [[http://www.quirkster.com/js/befalse.html|Befalse language]] and [[http://esolangs.org/wiki/DUP|DUP]]. * FALSE code samples at [[http://rosettacode.org/wiki/Category:FALSE|rosettacode]] * Additional FALSE related languages on the esolangs wiki: [[http://esolangs.org/wiki/True|True]], [[http://esolangs.org/wiki/BogusForth|BogusForth]], [[http://esolangs.org/wiki/Shelta|Shelta]], [[http://esolangs.org/wiki/Owl|Owl]] and [[http://esolangs.org/wiki/Betterave|Betterave]]