Slashdot Mirror


Esoteric Programming Languages

led_belly writes: "I came across this interesting page from the #alt.linux IRC chat room topic (irc.keystreams.com). It is an interesting read for all those who have ever been baffled by why/how some people do things. The Yahoo! Webring listing of similar topics is here."

151 of 259 comments (clear)

  1. My head hurts by Alien54 · · Score: 3, Interesting
    One hallmark of Befunge programming is that all strings are reversed with respect to the IP; the following is the smallest 'Hello, World' program:
    55+".dlrow ,olleH">:#,_@
    Some folks just do not know when to quit
    --
    "It is a greater offense to steal men's labor, than their clothes"
    1. Re:My head hurts by Farq+Fenderson · · Score: 5, Informative

      Well, you do have to put stuff on the stack in reverse... since it's FI/LO. Breakdown of the program:

      55+
      put 5 on the stack twice, add the numbers on the stack together, leaving 10, or a newline in ascii.

      ".dlrow ,olleH"
      put "Hello, world." on the stack in reverse, this is so we can pop it off in the proper order.

      >:#,_@
      very nice code to print out everything on the stack. '>' sets the IP velocity to "east", ':' duplicates the last item on the stack. '_' pops an item off the stack and tests it, if true, set IP to west, if false set it to east. The # skips the next instruction, and the comma prints the character off. So you're testing and printing until there's nothing left on the stack. The '@', finally, exits, which is executed when there's nothing left on the stack.

      Makes sense?

    2. Re:My head hurts by Farq+Fenderson · · Score: 2, Informative

      Heh, I've been hanging out on mailing lists with the creator of said language. He's a really neat guy, and the other denizens of the list are sharp, too.

      If you're really interested, you might look at www.catseye.mb.ca, which is Chris Pressey's (creator of befunge) website.

    3. Re:My head hurts by Black+Parrot · · Score: 2, Funny


      > the following is the smallest 'Hello, World' program:

      > 55+".dlrow ,olleH">:#,_@

      Ah! So the notorious seineewerasreenigneepacsteN gig was just some source accidentally shipped with the executable, rather than an attempt at obfuscation.

      --
      Sheesh, evil *and* a jerk. -- Jade
    4. Re:My head hurts by Alien54 · · Score: 2
      Makes sense?

      Of course string order can be arbitrary as long as the pattern is parsable by the language.

      --
      "It is a greater offense to steal men's labor, than their clothes"
    5. Re:My head hurts by Farq+Fenderson · · Score: 1

      Yeah, of course that would be horribly inefficient. I mean, you could do this instead:

      "H","e","l","l","o",","," ","w","o","r","l","d",".",55+,@

      but that would be nasty. I'd sooner approach from the east, and read it backwards, but read right-to-left instead... that's a lot simpler.

    6. Re:My head hurts by Marcus+Brody · · Score: 2
      That hurt your head? Try "Hello, World" in BrainF***: I was going to put the code here.... But the Mother F**** lameness filter got the better of me:

      "Your comment looks too much like ascii art."

      Not a bad description of BrainF*** really.... Anyway check it out on this nice little page: http://www.roesler-ac.de/wolfram/hello.htm

    7. Re:My head hurts by xmath · · Score: 2, Informative

      Here's a short one that has Hello World the right way:

      r:#,_q#:"Hello world!"+55

      (wrote it myself :-)

      -xmath

  2. Slashcode :) by jrockway · · Score: 2, Funny
    From the page:
    It does have some redeeming features, but it is not, on the whole, ... sterling.
    So that's what they wrote Windows with. Explains a lot, doesn't it?
    --
    My other car is first.
  3. INTERCAL by jeffy124 · · Score: 2, Interesting

    I'd like to see how Intercal is actually used for anything or if it keeps up with other emerging languages. When new (and useful) languages hit the scene, it probably has to drop some features because they're used in that language. I guess maybe it's the first language with the ability to shrink from it's original set of features, unlike other languages out there today (like Java or even Perl)

    Of course, it appears very inefficint - A search for prime numbers less than 65535 took 17 hours while C can handle that in a about half a second.

    --
    The One Rule Of Chess You'll Ever Need: Don't play someone who carries a kit in their bookbag.
    1. Re:INTERCAL by stripes · · Score: 5, Informative
      I'd like to see how Intercal is actually used for anything or if it keeps up with other emerging languages. When new (and useful) languages hit the scene, it probably has to drop some features because they're used in that language.

      They don't bother, but the language isn't static. There is a multi-threading extension for example. Typical of Intercal it is unlike all other threading packages I know of. It doesn't share data, only the code, all messages must be passed by altering the code (disabling and enabling blocks). Trintercal is base-3, there is also a base-N variant (the base-3 one shares some ops with the Klingon programming language...)

    2. Re:INTERCAL by Voidhobo · · Score: 1

      Well, as a matter of fact there is an Unlambda interpreter written in INTERCAL. Just what the world needed...

  4. I thought *I* had it bad enough... by ekrout · · Score: 2

    writing Haskell in the HUGS implementation for my programming language design class. Some of these obscure languages look, possibly, even worse!

    --

    If you celebrate Xmas, befriend me (538
    1. Re:I thought *I* had it bad enough... by vague · · Score: 2, Interesting

      You obviously haven't gotten 'it' yet. Haskell is really, really neat. You've just got to learn to think it, just like you learned to 'think' Java or whatever.

      It's more abstract, so it often requires more thought from your side. But once you've gone there and explored and learned you are rewarded with a new way of viewing the world of computation and what goes on in it. Even if you never use it again, you'll at least know it's there and have a chance to understand why you do the things you do.

      But sure, it costs a few hour of pure thought before you see that light. And you don't seem to be interested in bending your mind around something different in this manner.

      Ah well. Your loss. Or mine =)

      --

      -
      Listen. Strange women lying in ponds distributing swords is no basis for a system of government.

    2. Re:I thought *I* had it bad enough... by Anders+H�ckersten · · Score: 1
      Mmmm Haskell... We actually use it as our first programming course here at Chalmers Institute of Technology.

      I happen to think it's the cleanest programming language I've ever worked with. Functions are small, readable and when they work, they work. No strange cases where things don't work.

      I've yet to encounter a bug in the program which I couldn't fix or understand what was wrong with after a few minutes of thinking. When functions are 1-5 lines long, bugs are not a problem any more...

    3. Re:I thought *I* had it bad enough... by DrSkwid · · Score: 2

      i think one of the big hurdles for people is not seeing the flow with a lack of if..else constructs

      even at it's lowest application functional programming techniques are worth knowing. ptyhon has function programming features map, filter, reduce and it's lambda notation.

      Since studying haskell I've been applying functional techniques in my python code. It leads to some very elegant solutions that don't lost in their symatics. The code can become elegant to read as well as execute.

      i find python's mix and match approach very useful.

      i'm not much into perl but it has a map function too and no doubt other function features

      --
      There are places where the networks are not touching,and there are places where they are-Boeing's Lori Gunter
    4. Re:I thought *I* had it bad enough... by shappir · · Score: 1

      You may want to check out the extension library we (Sjoerd Visscher and I) have created. You can find it over at http://w3future.com/weblog/

      This library, called Beyond JS, provides functional programming features for JavaScript language. Since JavaScript is based on Self, you get the benefit of both these "obscure" languages

      We have yet to document this library, or QAed it sufficiently, but we are giving the source for free. You can get both the lib and some sample code from here.

      An example of what can be done with beyond.js. First an example of some Haskell code, which is a used to explain some of the benefits of Haskell:

      qsort [] = []
      qsort (x:xs) = qsort elts_lt_x ++ [x] ++ qsort elts_greq_x
      where
      elts_lt_x = [y | y <- xs, y < x]
      elts_greq_x = [y | y <- xs, y >= x]

      With beyond.js, this type of code can be done in javascript too. This is the code to add a qsort method to arrays:

      _AP.qsort = Array.recurse(function(head, tail) {
      var elts_greq = [];
      var elts_lt = tail.filter(function(v) { return v return elts_lt.qsort().concat(head, elts_greq.qsort());
      });

      // this is how to use qsort:
      alert([ 5, 3, 4, 2, 1 ].qsort());

      Here is another sample:

      function fac(n) {
      return n.to(1).fold("*");
      }
      alert(fac(6));

      Although both these samples use a version of the lib that is slightly newer than the one currently online, they do demonstrate its design and features.

      We invite everyone to try it out. At the very least it should give new perspectives on what can be done with JavaScript.

  5. Re:If you read this before it gets Moderated. by Maul · · Score: 1

    Don't come wining to me when you get 20 to Life in ass-pounding federal prison for forgetting your National ID Card on your coffee table.

    --

    "You spoony bard!" -Tellah

  6. Programming challenge by hackerhue · · Score: 4, Interesting

    As an intellectual challenge, rewrite DeCSS in any of these languages. Feel free to share your results with us.

    --

    To get something done, a committee should consist of no more than three persons, two of them absent.

    1. Re:Programming challenge by Farq+Fenderson · · Score: 1

      This has been discussed from time to time on the Cat's Eye Tech. mailing list (now defunct) and on lang@ and misc@esoteric.sange.fi (successor to the dead list.)... but nothing was ever done about it. There was always more interest in dreaming up new paradigms than actually writing software with them.

      Well, an exception is the OS written in Brainfuck... but I'll leave it as an excercise for you guys to find it...

    2. Re:Programming challenge by dido · · Score: 5, Funny

      Actually, deCSS HAS been written in Brainfuck. See this link on David Touretzky's home page.

      --
      Qu'on me donne six lignes écrites de la main du plus honnête homme, j'y trouverai de quoi le faire pendre.
    3. Re:Programming challenge by freakonaleash881 · · Score: 1

      Man, I never thought someone would write a programming language that would be harder to read than straight opcodes...I understand why they call it Brainfuck =P. That code is just painful to look at.

      --

      Elen sila lumenn' omentielvo...a star shines on the hour of our meeting
    4. Re:Programming challenge by LilGuy · · Score: 1

      It's already been done.

      http://www-2.cs.cmu.edu/~dst/DeCSS/Gallery/index .h tml

      --

      You're nothing; like me.
  7. thoughts.... by jeffy124 · · Score: 1

    I wonder... if someone were to write an OSS product using one of these more obfuscated languages, I think we should ban from bearing the title OSS. People wouldnt be able to understand the code at all for their own uses or improvements. Hence it'll be Open source, but instead only the original developer would know anything about how it works, make changes, etc.

    Unless of course someone is REALLY skilled at hacking these languages :)

    --
    The One Rule Of Chess You'll Ever Need: Don't play someone who carries a kit in their bookbag.
    1. Re:thoughts.... by skullY · · Score: 5, Funny
      I wonder... if someone were to write an OSS product using one of these more obfuscated languages, I think we should ban from bearing the title OSS. People wouldnt be able to understand the code at all for their own uses or improvements. Hence it'll be Open source, but instead only the original developer would know anything about how it works, make changes, etc.
      And that's different from perl how?
      --
      When I was able to do my own spam-armoring, you got a chance to email me. Now you can only hope I see your reply.
    2. Re:thoughts.... by John+Barnette · · Score: 1

      In that case, OSS == Obfuscated Source Software.

    3. Re:thoughts.... by zangdesign · · Score: 1

      I don't think the Open Source license has any requirement that the end-user be required to understand the language that the program is written in. Otherwise, you'd have to recode every so that any potential "dumbass" who used it would understand it.

      You've pretty much spelled out the death of programming under the OSS license.

      --
      To celebrate the occasion of my 1000th post, I will post no more forever on Slashdot. Goodbye.
    4. Re:thoughts.... by reverius · · Score: 2

      Because apparently, you're the only person on the face of the planet who doesn't know perl.

      I know perl. My boss even knows perl.

      The lame "I-know-Visual-Basic!" interns where I work even know perl. :)

      (Yes, I know I'm an intern, but... I'm not lame)

      My point is that tons of people know perl. It's not exactly an obscure language... it's easily in the top 10 most used languages.

  8. Brainfuck! by Anonymous Coward · · Score: 4, Funny

    Post Comment
    Lameness filter encountered. Post aborted!
    Reason: Please use fewer 'junk' characters.

    Goddamnit, I just want to post brainfuck source.

    1. Re:Brainfuck! by BierGuzzl · · Score: 2

      Befunge's mailing list has [brainfuck] as a popular topic.. This feels like link osmosis. I got so engrossed in this stuff that I actually forgot where I found the link to it. Haven't felt like that since I first invented the internet.

    2. Re:Brainfuck! by BlowCat · · Score: 1
      Correct. By the way, there used to be a question "Have you metamoderated today?" on the homepage, but it's gone since the slashcode upgrade. I'm guilty of not metamoderating after that happened.

      Your post prompted me to go to http://slashdot.org/metamod.pl directly. I had to metamod half (!!!) of moderations as unfair, some of them "offtopic" and "troll" moderations for germane comments.

      I believe that the link should be restored, or better yet, added to the chain of links that starts with "faq" and ends with "hof". If it's not time to metamoderate, the system could tell how much time I should wait.

  9. My Favorite Quote by istartedi · · Score: 4, Insightful

    It has to be a toss up between:

    (from INTERCAL)The Sieve of Erosthenes test for prime numbers up to 65535 took over seventeen hours on a SPARC--it requires only a half second using C.

    and

    (from SMETANA) The language has two instructions: "Swap step n with step m", and "Go to step p".

    --
    For all intensive purposes, "whom" is no longer a word. That begs the question, "who cares"?
    1. Re:My Favorite Quote by hackerhue · · Score: 2, Funny
      From the Malbolge web page:
      Users are encouraged to make their own, unique homebrew versions of Malbolge and Dis, in order to achieve the kind of portability problems normally associated with major languages; therefore, I renounce copyright on everything on this page, all the archives, the languages, and related materials. They are all officially public domain--do whatever you want with them.

      --

      To get something done, a committee should consist of no more than three persons, two of them absent.

    2. Re:My Favorite Quote by Waffle+Iron · · Score: 2
      After looking at the Malbolge spec, I don't think that you could legally program in it without violating the DMCA.

      With the operation translation tables, it looks like trying to write a program in it is similar to brute-force encryption cracking.

      It is impressive that the one guy managed to write a "hello world" implementation.

    3. Re:My Favorite Quote by afree87 · · Score: 1

      I've written a variation on "Hello World" that does EXACTLY THE SAME THING.

      (Note: Slashdot puts spaces in these; there aren't supposed to be any, take them out.)

      Here is the original:

      (=<`$9]7<5YXz7wT.3,+O/o'K%$H"'~D|#z@b=`{^Lx8 %$Xmrkpohm-kNi;gsedcba`_^]\[ZYXWVUTSRQPONMLKJIHGFE DCBA@?>=<;:9876543s+O<oLm

      Here is my variation (ringworld.mb):

      (=<`$9]7<5YXz7wT.3,+O/o'K%$H"'~D|#z@b=`{^Lx8 %$Xmrkpohz-kNi;gsedcba`_^]\[ZYXWVUTSRQPONMLKJIHGFE DCBA@?>=<;:9876543s+O<oLm

      Quick, spot the difference!

    4. Re:My Favorite Quote by PurpleBob · · Score: 2

      I seem to recall that originally, the creator of Malbolge attempted to make a Hello World program, and got as far as "Hell" and gave up.

      Why'd they have to take the fun out of it by making one that works? :)

      --
      Win dain a lotica, en vai tu ri silota
    5. Re:My Favorite Quote by jcast · · Score: 1

      It wasn't ``quick'', but here's the difference: the second `m' on the second line of the first program was changed to `z'.

      Bye, bye, karma.

      --
      There are reasons why democracy does not work nearly as well as capitalism.
      -- David D. Friedman
  10. Last time I posted a link to this by PD · · Score: 3, Informative

    A clueless moderator marked it down as flamebait. A language has to be pretty awful for that to happen.

    Anyway, here's Brainfuck Also here

    It's Turing complete, 8 instructions, and programs look something like this

    1. Re:Last time I posted a link to this by SpryGuy · · Score: 1

      It's Turing complete, 8 instructions, and programs look something like this [catseye.mb.ca]

      Yes, but what does that lengthy program DO?

      Boy some of these languages look utterly pointless and useless...

      --

      - Spryguy
      There are three kinds of people in this world: those that can count and those that can't
    2. Re:Last time I posted a link to this by jallen02 · · Score: 1

      That program a quine (a brainfuck quine *shudder* quite a feat in any language actually)

      That means the program when executed will print the entire source to the program.

      Quines are pretty time consuming to construct. There are a couple of famous quines floating around in C as well.

      So you can compile a quine run it, and pipe the output of the quine into a source file compile that, run it ad infinitum because the program generates itself :)

      Jeremy

    3. Re:Last time I posted a link to this by hereticmessiah · · Score: 1

      Most of the programs written in Brainfuck happen to be quines as it happens. Just think about that and think about people like us who do this for fun...

      --
      I don't like trolls and mod against me if you like, but I'd prefer if you'd reply.
    4. Re:Last time I posted a link to this by Subcarrier · · Score: 1

      Just think about that and think about people like us who do this for fun...

      Me, I'm just glad you didn't go for genetics or molecular biology. *shudder*

      --
      "I have opinions of my own, strong opinions, but I don't always agree with them." -- George H. W. Bush
    5. Re:Last time I posted a link to this by hereticmessiah · · Score: 1

      But I like my monkey with three butts!

      --
      I don't like trolls and mod against me if you like, but I'd prefer if you'd reply.
    6. Re:Last time I posted a link to this by sg_oneill · · Score: 2
      Most of the programs written in Brainfuck happen to be quines as it happens. Just think about that and think about people like us who do this for fun...

      The terms 'depraved' or even 'vicious' come to mind. What a horrible horrible thing to do to ones brain :) :)

      But then on the other hand....
      --
      Excuse the Unicode crap in my posts. That's an apostrophe, and slashdot is busted.
    7. Re:Last time I posted a link to this by hereticmessiah · · Score: 1

      ...maybe that's why we're not depraved or vicious. The joys of academic catharsis!

      --
      I don't like trolls and mod against me if you like, but I'd prefer if you'd reply.
  11. What about var'aq? by The+Ape+With+No+Name · · Score: 4, Informative

    That's right a Klingon programming language. Waaaaaaa! As far from Perl as one can get....

    --
    Comparing it to Windows will be a moot point, since El Dorado is going to have a 40% larger code base than XP.
    1. Re:What about var'aq? by mir · · Score: 1

      Not that far actually... Damian Conway, author, amongst many other wonders, of Lingua-Romana-Perligata which lets you program in Latin, uses a module that does computation in Klingon in his OO classes and has written a module that let's you program entirely in Klingon!

      The most interesting point in both Latin and Klingon is that the order of words in a sentence is not significant. Instead declensions are used to determine the role of the various tokens in an instruction: 9 declensions are used to mark whether the variable is a scalar (nextum), an array (nexta), a scalar being assigned to (nexto) etc...

      BTW Damian also wrote Acme::Bleach, which turns your code into a file that apparently contains the single instruction use ACME::Bleach... but that still runs!

      --
      Look, that's why there's rules, understand? So that you think before you break 'em. (Terry Pratchett)
  12. On a more serious note by stuccoguy · · Score: 2, Interesting

    Reminds me of all those fun hours wasted drawing cool pictures with LOGO.

  13. The Beer Page. by Christopher+Thomas · · Score: 5, Informative

    No list of esoteric programming languages would be complete without a link to the Beer Page:

    http://core.federated.com/~jim/99/ (mirror)

    This is a collection of programs written in over 200 languages designed to print the canonical "99 bottles of beer on the wall" song.

  14. Re:programming languages? by Farq+Fenderson · · Score: 1

    You're right. We should stop experimenting with code altogether.

    Screw that.

    I've talked with these people on mailing lists and otherwise... they know a lot about computation, and for good reason. They have a powerful command of code in general, I find, and can answer just about any conceptual programming related questions. They're smart, and their work on these languages only hones their abilities... it's like they've created their own education system for themselves, just because you can't appreciate or understand it doesn't mean it's pointless.

  15. Those who will not learn from history... by DumbSwede · · Score: 1
    This article is extremely amusing, interesting, and informative, especially if you also follow the link retro computing that exists in the article.

    I had forgotten how many failed experimental languages there were, and was amused to see these odd academic and intellectual experiments still sprouting up.

    One can only hope that one of these odd languages might spark the imagination, and actually provide a paradigm shift. Especially note worthy were "Befunge" and "Orthogonal" which are two-dimensional languages. More experimentation along these lines could only be good. Could a multi-dimensional language more efficiently encode parallel-processing software for instance?

  16. Universal Machine in 371 Bits by Baldrson · · Score: 5, Interesting
    John Tromp has managed to out do the lot of them with his "Kolmogorov Complexity in Combinatory Logic" wherein he concludes:

    A mere 371 bits suffice to encode a universal combinator equivalent to ...(a) universal Turing machine:

    11100110010100110010110011000010001110010101110010 110
    01100101001100101100101001100101100101011100110010 100
    01101110011001100110001011010110100101011100101011 100
    10110011001010011000010001110011001010010010100101 100
    01110001011100110000100011011100110010100110010110 010
    10011001011001010111001100101000110111001100010110 110
    00110111001100101001100110010100110000100011000110 001

    Dan Brumleve has a written a combinator interpreter in Perl that may be capable of evaluating Tromp's strange machine.

  17. where's Refine??? by shibut · · Score: 2, Interesting

    The oddest language from my point of view was Refine. It was a lisp based object oriented language with relatively few parentheses. Yes, you heard right, lisp and "few parentheses" mentioned in the same breath. We used it to create a prototype and it was interesting. I believe it grew out of Teitelbaum's group at Cornell (creators of the Synthesizer, which 1st year CS majors at Cornell were forced to code on way back when). Anyone else ever use it? I found it to have many of lisp's disadvantages (garbage collection, anyone?) without all the advantages. It did have a good plugin for emacs though (and forced this vi veteran to learn emacs).

    1. Re:where's Refine??? by vsync64 · · Score: 1
      I found it to have many of lisp's disadvantages (garbage collection, anyone?)

      Excuse me?!

      --
      TO BUY A NEW CAR WOULD MAKE YOU SEXUALLY ATTRACTIVE.
  18. Re:Stephen King, author, dead at 55 by DumbSwede · · Score: 1
    How often is the Net going to kill Stephen King off? Didn't he die in the WTC attacks also?

    No menton on any of the major news services.

    But then again, an anonymous caller to a radio talk show would know.

  19. Re:Baffled in New York by alienmole · · Score: 1

    Since "helping create a better world" would probably involve coming up with technologies to exterminate small-minded people like yourself, you should be thankful they're spending their time on harmless intellectual pursuits instead...

  20. Unlambda by Pseudonym · · Score: 2

    Users of unlambda should note that the "i" combinator is strictly speaking unnecessary. For further obfuscation, replace "i" with "skk".

    --
    sub f{($f)=@_;print"$f(q{$f});";}f(q{sub f{($f)=@_;print"$f(q{$f});";}f});
    1. Re:Unlambda by jareds · · Score: 1

      Users of unlambda should note that the "i" combinator is strictly speaking unnecessary. For further obfuscation, replace "i" with "skk".

      Surely you mean "``skk".

    2. Re:Unlambda by jareds · · Score: 1

      Incidentally, here's "cat" in Unlambda:

      ```sii ``s``s``s``s``s``s`ks``s`kk`kc``s``s`ks``s`kk``s`k s``s`kk ``s`kk``s`kk`ki``s``s`ks`ks``s`kk``s`kk`kk``s`k@`k i``s``s`k|`kii`kei

      That's kind of long. How about:

      ```s``sii`ki``s``s`k@`ki``s``s``s`k|`kiii

    3. Re:Unlambda by Pseudonym · · Score: 2

      Yeah, that's right. Sorry, misunderstood the bracketing rules.

      Incidentally, s and k can be constructed from another combinator (can't remember what it's called right now). Unfortunately it's not a supercombinator, so the graph reduction rules aren't simple to implement.

      --
      sub f{($f)=@_;print"$f(q{$f});";}f(q{sub f{($f)=@_;print"$f(q{$f});";}f});
  21. The Essies by epsalon · · Score: 1

    There is also an IOCCC-like contest for esoteric languages. It's homepage is here.
    Take a look especially at Sorted!, which is a real cute language... :)

    Another list of esoteric languages is also available.

  22. What's wrong with Haskell? by tmoertel · · Score: 2
    Haskell is the cleanest language I've ever seen. Elegant whitespace handling, pattern matching, and concise yet clear notation.

    Care to elaborate on what you think is wrong with it?

    1. Re:What's wrong with Haskell? by nellardo · · Score: 5, Interesting
      I happen to think that Haskell is one of the semantically cleanest languages out there (I put Self in the same category).

      I mean really, in Haskell, "factorial" looks like this:
      fact 0 = 1
      fact n = n * fact (n - 1)

      Write that, and "fact 20" works just fine:
      Examples> fact 20
      2432902008176640000
      Examples>

      However, implementing Haskell (or Self) on a von Neumann architecture is non-trivial. Implementing an efficient compiler or interpreter is tres difficil. People get Ph. D. dissertations for that sort of thing. For someone deeply used to C, Haskell and Self are perverse.

      To wit:

      • In Haskell, nothing changes. Ever. State change is handled by creating a new state from the old one. Semantically clean, but about as far from C as you can get.
      • In Self, anything can change at any time. Yes, Virginia, you can redefine "if-then" whenever you feel like it. Change the inheritance hierarchy? No problem! Whoops! I made a cycle in the inheritance hierarchy! No problem! (yes, A can inherit from B and B can inherit from A). Think of C without the reliability that any particular operation (function call, operator, whatever) maps to the same place more than once. This kind of thing gives most C-family compilers hives. It used to be that C++ was perceived as significantly slower than C - I don't see anyone complaining about it anymore, but Haskell and Self are more extreme examples. C++ made it easy to use jump tables. Haskell makes it easy to use recursion, lazy evaluation, and a bunch of other things. Self makes it easy to use dynamic inheritance, multiple inheritance, even cyclical inheritance.
      What is most impressive about these kinds of languages is that you can build efficient implementations, without the compromises to the semantics that C (or its derivatives) entails. The fastest FFT library out there is in C, but the C code itself was generated by Haskell code (code that came up with some original optimizations along the way). The Self compiler is the root technology for Java JIT compilers (when Sun killed the Self project, all the compiler people went to work on "virtual machine" compilers). Self was able to hit 50% of the speed of optimized C while maintaining:
      • Full source-level debugging
      • Garbage collection
      • Checks for stack and integer overflow
      • and the ability to change the "class" of any object at any time (I put class in quotes because Self is an object-oriented language without classes - part of the super-simple semantics)..
      In short, there isn't anything wrong with clean linguistic semantics. But essentially every computer sold today is built around the von Neumann architecture, and non-von-Neumann semantics (like that used by Self and Haskell) are non-trivial to implement.

      --
      -----
      Klactovedestene!
    2. Re:What's wrong with Haskell? by lythari · · Score: 2

      Heh, they teach Haskell in computing 1A here at the University of New South Wales, supposedly to teach us good programming style. And having moved on to C, I can say that some things are definitely nicer in Haskell than in C. However, in other's it's a real bitch.

      Being an (almost) purely functional programming language, I imagine that writing mathematical programs in it would be a piece of cake, but for anything else that requires states it's a royal pain in the but.

    3. Re:What's wrong with Haskell? by Elwood+P+Dowd · · Score: 1

      So, then, what do you think of ML? I thought that was pretty clean.

      --

      There are no trails. There are no trees out here.
    4. Re:What's wrong with Haskell? by tmoertel · · Score: 3, Interesting
      I happen to think that Haskell [haskell.org] is one of the semantically cleanest languages out there
      I was going to say in my earlier post that Haskell had the cleanest syntax and semantics, but I figured that regarding the latter some smart-aleck (which I suppose is now going to be me) would respond with a comment like this: Oh, really? Care to provide the clean semantics for Haskell's run-time space-consumption characteristics? At present the semantics are often best described by, "run it, and see what happens," although after a while one does develop a feel for it (which is incorrect more than one would like).

      For example, consider the expression,

      foldl1 (*) [1 .. 1000]
      which literally means
      (...((((1 * 2) * 3) * 4) * 5) ... 1000)
      and, by the way, is equivalent to your (fact 1000). Now, how much space is going to be consumed by its evaluation?

      Humans can easily see that the expression can be evaluated left to right, treating the operator (*) as strict, and, with the list defined by [1..1000] being built lazily, it is possible to evaluate the expression in constant space:

      = foldl1 (*) [1 .. 1000]
      = foldl (*) 1 [2 .. 1000]
      = foldl (*) 2 [3 .. 1000]
      = foldl (*) 6 [4 .. 1000]
      = foldl (*) 24 [4 .. 1000]
      = ...
      But is this what Haskell guarantees? Nope. An implementation might also do it like this:
      = foldl1 (*) [1 .. 1000]
      = foldl (*) 1 [2 .. 1000]
      = foldl (*) (1*2) [3 .. 1000]
      = foldl (*) ((1*2)*3) [4 .. 1000]
      = foldl (*) (((1*2)*3)*4) [5 .. 1000]
      = ...
      In this case the accumulator in foldl builds up a linear chain of thunks, which is evaluated only after the entire list is consumed.

      You and I can see that the second method is wasteful, but the language definition provides no guidance as to whether a Haskell implementation will choose the second or the more-efficient first. (In fact, GHC would until recently choose the second for this expression.)

      Don't get me wrong. Haskell is, without a doubt, my favorite language. It's what I used for my entry in this year's ICFP Programming Contest, and I consider it the best hope for a truly great mainstream functional programming language. I love Haskell. But its lack of intuitive space-consumption semantics is a serious weakness.

      And, regarding your fact example, it doesn't really show off Haskell's semantics as much as its syntax. Why not show the classic Fibonacci Series implementation, which highlights Haskell's non-strict evaluation semantics?

      fibs@(_:fibs') = 1 : 1 : zipWith (+) fibs fibs'
      Now, if that isn't a beautiful line of code, I've never seen one.
      The fastest FFT library out there is in C, but the C code itself was generated by Haskell code
      Actually, the FFTW code was generated by code written in O'Caml not Haskell.

      Cheers,
      Tom

    5. Re:What's wrong with Haskell? by cpeterso · · Score: 2, Informative

      The The Evolution of a Haskell Programmer (found on the great Lambda the Ultimate blog on functional programming) features a dozen funny Haskell functions to implement factorial. The most elegant implemenation, though, is by the "Tenured Professor":

      fac n = product [1..n]

  23. Re:But is it, Really? by DumbSwede · · Score: 1
    Wow, took some time getting to your point didn't you? But then again it isn't really about holding computer programmers in disdain.
    That said, I will reply as though it were.

    Inventing odd computer languages is a much better use of time than doing crossword puzzles for instance. If people get enjoyment from writing new, odd, programming languages, good for them. The proliferation of failed languages can help by exploring new ideas, and even provide a sort of Darwinian backdrop for evolving languages in general by show not only what works well, but what works poorly.

  24. Re:wow by DumbSwede · · Score: 2, Insightful

    And how many computer languages have you written that are better than any of these? The point isn't that these languages are useful in a commercial sense or even an academic one, only that someone was challenged enough in an intellectual way to try something different. As I posted in another thread here, "Befunge" and "Orthogonal" have some interesting properties that are worthy of consideration in and of them selves. God forbid our next round of languages should only evolve out of C, C++, and Java!

  25. Unlambda by Ben+Wolfson · · Score: 2, Informative

    The page says that Unlambda's interpreter is written in Scheme, which isn't strictly true. The CUAN contains interpreters written in Java and Scheme, and more than one in C. I think there's a buggy Perl interpreter, as well.

    I've written an Unlambda interpreter/stepper in Python, available here. It's correct, as far as I know, but extremely slow for lengthy programs.

    Incidentally, here's "cat" in Unlambda:

    ```sii ``s``s``s``s``s``s`ks``s`kk`kc``s``s`ks``s`kk``s`k s``s`kk ``s`kk``s`kk`ki``s``s`ks`ks``s`kk``s`kk`kk``s`k@`k i``s``s`k|`kii`kei

    Loads of fun!

  26. APL by maxpublic · · Score: 5, Funny

    If you want a strange programming language that garnered virtually no support and was a real pain in the ass, look up APL (primarily used at Pomona College in Claremont, CA, because the guy who invented it was a professor there).

    APL was defined by coding which wasn't particularly inventive but which required a complete keyboard overlay - it didn't use ASCII characters (except in text, as I recall), but rather a mixture of greek symbols and shit the author just plain made up. So in effect you had to match 'objects' to keys on the keyboard, a completely non-intuitive way of typing. Talk about watching your hands while you work....

    Unfortunately the college was incredibly gung-ho on APL and thought it would revolutionize coding, so if we wanted to do any serious work we had to do it in APL. This meant that about a dozen of us sat around learning APL so that we could program what might have been (don't really know, but I don't know of any other examples in 1983) the most massively multiplayer Star Trek ship battle game to date (up to 127 players, although the mainframe usually came to a grinding halt when we passed the 70 or 80 player mark). We then passed this program off as a science project, which it was accepted as since no one else could read the damned thing.

    Well, I guess it had a use after all....

    Max

    --
    My god carries a hammer. Your god died nailed to a tree. Any questions?
    1. Re:APL by DumbSwede · · Score: 4, Interesting
      The object of your uhmmmm... affection can be found here at retrocomputing which is listed in the article.

      I find it odd how every syntax I have ever seen in a computer language looks ugly and stupid to me, until I become fluent in it, then I won't abide any change after.

    2. Re:APL by edhall · · Score: 5, Interesting

      APL was a lot more common than you might think. It was the first language to treat matrices as first-class entities, and so was popular for a time among the mathematics set. It was amazingly fast, in part due to its innovative use of lazy evaluation (e.g. if you only wanted a single column of a large matrix, it wouldn't bother computing the rest of it).

      A bit of APL lore: Back in the late 1970's, Ken Thompson (one of Unix's creators) spent a summer at UC Berkeley (an event that was rather influential in BSD's development). Just for fun, he wrote an entire APL interpreter -- in one weekend. It was a real pain to work with since it used two-letter codes instead of the APL character set, but other than some of the quad functions (various OS primitives and so on) it was complete.

      It's one of the more spectacular feats of programming I've ever heard of.

      -Ed
    3. Re:APL by jonathan_ingram · · Score: 2
      APL is still very much around.

      For example, take a look at APLus, a GPLed language created at Morgan Stanley and derived from APL.

      For more information about J (another offshoot of ALP) and APL, take a look at J\APL - the journal of APL.

    4. Re:APL by Aldreis · · Score: 1

      Well, I guess it had a use after all....

      Well, use enough to let me buy my first house...:-)

      I was an APL consultant for four years, mainly for international IBM shops. It was indeed a wonderful, symbolic, naturally cryptic ( warning: big gif of the non-ASCII charset ) language, delightful to use ( once you really grokked it ) just because of the amazing power of its one-liners...:-)

      See this for a commented one-liner that calculates and prints all prime numbers between 1 and a given N, in 17 characters...

    5. Re:APL by lee1 · · Score: 1

      APL is the first (computer) language I learned. It is wonderfully expressive; think of it as perl specialized for n-dimensional numerical arrays, rather than for text manipulation. And it's even more unreadable! APL began as a notation for describing algorithms, and only later were actual interpreters written for it.

    6. Re:APL by LineGrunt · · Score: 1

      I played that Star Trek while I was at Harvey Mudd College ("There's a school, way up north, that's made for you and me...") from 83-86.

      At least one freshman failed out of college altogether due to too much playing time.

      -D

    7. Re:APL by darkonc · · Score: 2
      I know of similar. Back in the early 80's when Myrias was starting up, Dan Wilson -- one of the founders of Myrias -- is said to have written an implementation of SNOBOL for the 68000 in one weekend (the original MYRIAS machines were multi-CPU 68000 boxes).

      Dan was one of the computing gods at the University of Alberta. He did a good deal of work with SNOBOL/SPITBOL (SPeedy ImplemenTation of snoBOL). People who knew the group were impressed, but nobody was really surprised
      . I have to say that spitbol was was an incredible language if you were doing string and list manipulation. Imagine, if you will, PERL on a combination of crack and LSD... It supposedly influenced the regex code in UNIX, but was (In my mind) far superior if you were doing interesting stuff.

      YOu could do stuff like:
      whitechar=any(" \t\n")
      sp = whitechar arbno(whitechar)
      # equivalent to perl regex whitechar+
      salut="hello" | "hi" | "greetings"
      friend="mike"|"john"|"sarah"
      enemy="louis"|"ian"|"jim"
      message salut sp (friend="my friend"|enemy="you slimy creep")

      Even better yet, you could say
      message salut sp ((friend|enemy)$name = f(name))

      In this case f is a user defined function that takes the variable name (which contains whatever matched 'friend|enemy') and returns a string that replaces it. Rather than have f() return a string, it could also return a pattern that continued the match....

      message (salut sp (friend|enemy)$name f(name))$sentence = g(sentence)

      shadows of this ability are existant in the $1 and \1 constructs of perl, but snobol is far more capable than that, because you can match on (and replace with) the return value of functions called with intermediate match results.

      (in all of these cases, we're matching the string in message)

      One weakness of SNOBOL is that it was almost entirely unstructured. The if/then/else structure was implemented as tags on the end of a pattern (like above) that implicitly did a GOTO depending on the success or failure of the match. (does anybody remember the calculated GOTOs of fortran IV?). Pretty much everything was global, and you could (if I remember corectly) jump into (and out of) the middle of what would otherwise be considered a function definition.

      There attempts to do a structured front end to SPITBOL (I think that it was called RATBOL (RATional spitBOL). Although it worked fine, it seemed to, somehow, lose some of it's magic. (perhaps it was just the hacker's yearnin for the obsefecuted(sp)).

      --
      Sometimes boldness is in fashion. Sometimes only the brave will be bold.
    8. Re:APL by darkonc · · Score: 2
      APL was heavily used at the University of Alberta in the late 70's and the early 80s (when I was there).It's integrated matrix functions made it really useful for many statistical and applied math activities. Many things that occured as loops in other languages were done as an operation on an array. I figured out how to do APL one-liners from the command line for MTS (Michigan Terminal System -- a now defunct OS for IBM/370 type processors) and would often use it as a quick calculator (think bc(1) with matrix functions)

      The use of greek letters for all builtin functions meant that the phrase "it's all greek to me", took on a special meaning for second year computer science and statistics students.

      One year, we got in a new chinese professor who's mastery of English was only slightly better than my understanding of Chinese (nil). I suggested to one of his frustrated students that she should try asking him questions in APL. At least then, they'd be on even ground.

      --
      Sometimes boldness is in fashion. Sometimes only the brave will be bold.
    9. Re:APL by signal914 · · Score: 1

      Chirp!

      Steve '98

    10. Re:APL by maxpublic · · Score: 1

      Then you were there when I was there. Undoubtedly you played the version I worked on. You might even have been subject to the 'invincible ship' hack I secretly put into the code (not hard to do, in APL) and sometimes used to blow people out of the water with when I got bored.

      If ever a destroyer came along and wasted your dreadnought, you have me to blame. ;-)

      Max

      --
      My god carries a hammer. Your god died nailed to a tree. Any questions?
    11. Re:APL by zytheran · · Score: 1

      Keyboard?? Try APL in 1977 using marked up cards! Only sysops got keyboards and VDU's. I still have some cards, maybe I'll scan them and preverse their perverse symbols for ever now.You must have had shear luxury!!
      (Going back to my hole in the road and warm gravel)

  27. Welcome to SpodNet! by direpath · · Score: 2, Informative

    Aha! The first mention of our glorious and unheralded IRC network. Anyone looking to hook up to a newer, reliable network... You may want to try connecting to irc.geeksanon.ca, the round robin DNS name. Of course, you can also use irc.keystreams.com, irc.gravitysucks.org (hosted by www.gravitysucks.org) and irc.duped.net. I am done.

    --
    "It's amazing what velocity can do when human beings are in season" -Matthew Good
  28. lighten up, some of it's damn interesting, even if by Anonymous+Koward · · Score: 1

    it does seem to have an "arbitrarily" ruled feel, just relax and take heart in the fact that some people seem to still want to create and think on their own. I don't get >1/2 of what they are talking about, but it's easy to see how cool it is (if not a little obfuscated by definition alone :)

  29. Re:Stephen King, author, dead at 55 by DumbSwede · · Score: 1

    Rush Limbaugh is a Great American...
    no wait, I mean a grating American.

  30. My bad by whovian · · Score: 2, Funny

    What's all this about erotic programming languages? Oh...nevermind.

    --
    To-do List: Receive telemarketing call during a tornado warning. Check.
  31. Yes I have by Starship+Trooper · · Score: 1, Interesting

    #!/usr/bin/perl
    ($_=HWX)and s|[IQ-Z!*B]X|EMLP VPS|and(tr@L-U@K-Z@),
    s&(V|K)&++($A=$1)&ge&&print"${_}LD\n";

    --
    Loneliness is a power that we possess to give or take away forever
  32. Re:Stephen King, author, dead at 55 by Jeremiah+Cornelius · · Score: 1
    Rush....
    He went on for years, pouring poison and hate into people's ears.

    Now he's going deaf.

    God acts in mysterious ways.

    --
    "Flyin' in just a sweet place,
    Never been known to fail..."
  33. OS? that outta be ..uhh..quite interesting by Anonymous+Koward · · Score: 2, Funny

    Seems that 'round here EVERYTHING should be opensource...but in the case of Brainfuck OS...all I can say is OUCH, we should be careful what we wish for ;)

  34. argh... so many languages so little time by Spootnik · · Score: 5, Insightful

    Learn them all !!!

    Of course, you could also approach the task a little more systematically. A possible approach, and this is based purely on learning a language in order to improve one's thinking processes, rather than learning a language based on the marketability improvements possession of such knowledge brings, is to broadly catergorise them along the lines of 'problem solving styles', or 'programming mindsets' that they directly support or encourage.

    Assuming no prior knowledge, you could start by learning procedural programming; a very good starting point is C. It is a small, compact language that will help you learn the basics of procedural programming; it's not a difficult language if you stay away, initially, from its more esoteric features like pointers and bitwise operators. Having learnt C, you will have a very solid grounding for learning languages such as JavaScript, C++, and Java because the 'syntactic core' of these languages is very similar.

    Another procedural language is COBOL. It is quite a big language in terms of the number of reserved words ('verbs' in COBOL-speak) it offers. However, it is really quite a simple language and provides, as core facilities, tremendous file processing capabilities. In addition, it forces the programmer to be systematic, that is, you need to spell out exactly, and in painstaking detail, what it is you wish to do. In a way, its wordiness is its strength, and it is difficult to produce 'sloppy' code the way it is possible to do in, for example, C.

    Next, you could tackle object oriented programming. You could start with either one of the very popular object-oriented languages, C++ and Java. Personally I would start with C++ as it is, I believe, more complex, and thus, more difficult to learn; if you master it, Java will come easy, and the hardest part will be simply to learn its rich set of packages (collections of objects).

    Smalltalk is probably one of the purer object-oriented languages, is widely respected in the programming community, and, I should admit that the main reason I included it here is that its the next language on *my* list to learn. I've looked at a couple of Smalltalk code listings and have found it difficult, at first glance, to understand it; that being the case, I look forward to the challenge of learning it !

    Now, for a couple of oldies, but goodies: LISP and Prolog. Neither of these has, as far as I'm aware, very significant commercial application, but if you are looking to try some truly 'different' programming approaches, in a bid to extend your thinking processes, then these are it !

    LISP, for me, is a truly enjoyable programming experience. I won't pretend to be an expert in it, but by simply spending time with this language I have learnt so much about data structures, programming techniques, and, generally, problem solving techniques. It's a really good tool for 'doodling', that is, quickly whipping up little algorithms and immediately testing them. A definite 'must-learn' language !

    Prolog is one I find fascinating. I'm still struggling with it, and although I've developed nothing more than simple database query applications with it, every time I work with it I find myself approaching a 'simple' problem in non-conventional ways, always forced to rethink how something should be done. I would recommend you look at this language to learn how to program in a truly non-procedural way, that is, to work 'with' the help of the language itself, rather than simply writing down commands for the compiler / interpreter to follow.

    Finally, on top of these you could add interpretive 'scripting' languages, tools which are aimed more at 'gluing' applications together than being fully-fledged development languages in their own right (I know perl purists will probably scream, claiming this is heresy, but basically it is not so much a development language as a 'super-shell', an all-encompassing environment, almost an 'operating system within an operating system').

    Finally, I should stress that, as a programmer, it is not just languages that you should be striving to learn, but to expand your knowledge in general. For example, acquiring general business, management, communication and 'people' skills will make you more aware of the 'real world' in which you must apply your skills.

    While the idea of learning other programming languages is to extend your ability to identify and abstract problems, as well as adding to your 'armory' of programming tools, there is no substitute for a good grasp of your problem environment, that is, understanding the nature and type of 'problems' you will be asked to solve. Not every problem necessarily translates into a computer-based solution, hence the importance of also acquiring non-programming skills.

    1. Re:argh... so many languages so little time by foxcub · · Score: 1

      Out of curiosity, what books/sources (sites?) you would recommend to learn these languages? I'm particularaly interested in those that are good for SmallTalk, LISP and Prolog.

      Thanks.

    2. Re:argh... so many languages so little time by ajm · · Score: 1

      You left off functional languages. I recommend haskell. Things like writing parsers by putting together other parsers using function combination is amazing. It really is, being non imperitive, different.

      factor = digit +++ do {symb "("; n -expr; symb ")"; return n}

      will parse a factor that is either a digit or a bracked expression.

    3. Re:argh... so many languages so little time by sg_oneill · · Score: 1

      Dunno 'bout Lisp & Prolog, but check out the Squeak Small talk compiler. (Go to yahoo languages catagory root around for small talk, and squeak comes off there). Someware around that site is a super nifty smalltalk tutorial. Small talk is so simple to understand it almost doesnt need a manual. Like forth sorta.

      --
      Excuse the Unicode crap in my posts. That's an apostrophe, and slashdot is busted.
    4. Re:argh... so many languages so little time by foxcub · · Score: 1

      Found it. Squeak has a documentation page which has a bunch of resources (tutorials, papers, etc.) on it.

      Thanks for the tip.

    5. Re:argh... so many languages so little time by tonyisyourpal · · Score: 1
      Argh !

      There are two big points I can't *believe* about this post !

      1 - recommending people to learn C early - no ! If you must learn imperative programming (and most of us sadly do), learn Pascal first - that's what it was meant for, after all. Do C later when you can get your head around dealing with pointers, the way C makes you do stupidly early on the learning curve.

      2 - and I quote, ". In a way, its wordiness is its strength, and it is difficult to produce 'sloppy' code the way it is possible to do in, for example, C." WHAAAAAT !?!?! You've obviously never tried to untangle 1971-era COBOL code written to the then existing IBM coding standards (ha !) 25 years after it was written and mangled in various ways !! Paragraphs with useful names like "P3J2" - a coordinate in a flowchart diagram (Page 3, J-2), bejaysus !

      I have to admit that the last programming language that really made me go "yow !" was Prolog, and that was about 14 years ago. Everything else pretty much splits into a couple of camps - the imperative and the applicative. Apart from some playing around the edges, that's about it. And yes, I am including the object oriented languages in there. (As far as I'm concerned, object orientation is just good old fashioned Abstract Data Types plus some dynamic behaviour on creation/destruction - the actual code you write is still good old imperative.)

      My list to learn would be :

      1. Pascal (imperative)
      2. Haskell (lazy applicative)
      3. Standard ML (strict applicative)
      4. Prolog (logic/declarative)
      5. Java (I'll have to name something commercially useful !)

      The "Life is Too Short For This Pointless Pain" List:

      1. BASIC
      2. FORTRAN
      3. COBOL
      4. C
      5. C++ (by extension from 4)
      and that's before we get to the "scripting" languages....

    6. Re:argh... so many languages so little time by darkonc · · Score: 2

      .... While the idea of learning other programming languages is to extend your ability to identify and abstract problems, as well as adding to your 'armory' of programming tools, there is no substitute for a good grasp of your problem environment, .... The language that you think about somnething in will shape the way that you think about it. This is as true for human languages as it is for computer languages. Ask anybody you know who is fluent in multiple languages (fluent, in this case, meaning able to "think" in that language).

      --
      Sometimes boldness is in fashion. Sometimes only the brave will be bold.
    7. Re:argh... so many languages so little time by majcher · · Score: 2

      LISP and Prolog. Neither of these has, as far as I'm aware, very significant commercial application,

      Actually, if I recall correctly, the backend for the Yahoo Stores site was (and still is) written entirely in LISP. This may have been mentioned on /. before, but you'll have to look it up yourself.

      As for learning:
      - Some flavor of asm
      - Modula-2
      - LISP
      - Smalltalk
      - C

      Then, once you've got your foundations down, use Perl or Ruby to get real work done...

    8. Re:argh... so many languages so little time by InferiorFloater · · Score: 1

      Attempting to develop anything other than database query applications on Prolog is akin to trying to change your tire using only your tounge. Sure, you might think it's a neat challenge, but realize that trying to do anything other than databases results in nasty-looking spaghetti code as you just start making predicates for every state your system could be in...

      --

      ---------
      Get back to me when my brain starts working.
  35. its your fault by Splork · · Score: 1

    my brain hurts because you allowed me to follow the Unlambda link. can i sue?

  36. After "Bert is Evil", do we now have "Tux is Evil" by Michael+The+Nifty · · Score: 1
    Heard it on the radio this morning: After The Sun, NBC, and the NYT, now Microsoft have received a "letter with a suspicious white powder" too. Apparently, some people think that Sircam, Code Red and Nimda are no longer enough to fight against the monopolist, and have decided to take this to the biological arena. As usual, the authorities' advice is "don't open any suspicious mail", except this time they mean snail mail.

    More here on CNN (Scroll down to "Reno case has Malaysia link"), BBC (Scroll down to Cheney's photo), and Msnbc.

    Experts are poring over posters shown at pro-Bin-Laden protests, but so far no hidden tux has been spotted in any of them...

  37. 99 bottles of beer ? by Teratogen · · Score: 1

    Speaking of which, does anyone know what happened to the "99 bottles of beer on the wall" page that shows source code written in umpteen different computer languages to print out the lyrics to that song?

    --
    --- even the safest course is fraught with peril
  38. BrainF***? by Dr.+Awktagon · · Score: 1, Redundant

    That must be the triple-improved version of some language called BrainF, you know like C++ is to C.

    Or maybe those stars are there to mask some letters? I wonder what they could be?

    1. Re:BrainF***? by hereticmessiah · · Score: 1

      Brainfuck is variously called `BF', `BrainF', `BrainF*ck', `BrainF***', `BrunFaick', etc.

      --
      I don't like trolls and mod against me if you like, but I'd prefer if you'd reply.
  39. call your recruiter, eh? by Anonymous+Koward · · Score: 1
    me: former USMC infantry, now with college degree and 10 years in the industry


    them: (looking at me with long hair but previous experience, then eyeballing the LINE OUT THE FUCKING DOOR of 18 year olds who want to be Special Forces ....we'll..uh...be in touch


    They don't want coders or anyone like that now unless you have a degree and want to be an officer..sorry, but offices are now swamped with people of ALL kinds wanting to help or take advantage of the situation or kill or whatever...just wait until the dust settles. Course..I wasn't taking you seriously..but the advice is for others.

  40. Comment removed by account_deleted · · Score: 1

    Comment removed based on user account deletion

  41. DD/SH -- The lost language by delta0 · · Score: 1

    Where have the dd/sh pages gone?

    Is DD/SH now a lost language that only exists as a faint memory in the minds of the few surviving followers of yester-year and the dd/sh monks now awaiting their untimely death? Does anyone have a copy of the sacred parchament?

    --
    --- Delta0.. makes no difference.
    1. Re:DD/SH -- The lost language by hereticmessiah · · Score: 1

      I've tried to dig that out of the Google Cache to save it like I did with Q-BAL but without success. If anybody does have a copy, would they send it to me?

      --
      I don't like trolls and mod against me if you like, but I'd prefer if you'd reply.
    2. Re:DD/SH -- The lost language by delta0 · · Score: 1

      I submitted this as an article/ask slashdot -- hopefully someone will have a copy! Cam't resist these super-cool languages... =)

      And I don't even like minimalist techno.

      --
      --- Delta0.. makes no difference.
    3. Re:DD/SH -- The lost language by hereticmessiah · · Score: 1

      With that, I've already got a copy of CLC-INTERCAL somewhere and I'll through that up on my site soon if I can.

      The Assurdo Technologies site sure had some great stuff on it.

      --
      I don't like trolls and mod against me if you like, but I'd prefer if you'd reply.
  42. Re:Baffled in New York by fizban · · Score: 1

    small-minded? wow, that's brilliant. Thanks. You don't even know me and yet you have the gall to call me names, when all I'm saying is that there's a lot of shit to take care of in this world, and I figured there's a bunch of smart people here who have skills and talents that can help make this world better and I though that maybe it's more worth their time to put their talents to use in a productive manner, but instead, I get jumped on by a bunch of crackpots who think it's funny to trounce on another fellow human being to make themselves look better.

    Well, listen here bitch, my city just got completely blasted a month ago. I walk around every day now wondering if I'm gonna blow up in a nuclear fireball by some crazy idiot human being who doesn't value the meaning of life and all I'm asking is for talented and smart people to help out a little bit. And I don't mean by building bombs to blast away each other. I mean by thinking and creating in a productive manner that's will help enlighten our race and make this a better world to live in.

    So, if you want to call me small-minded, go right ahead, but I wonder if you wouldn't mind taking back that comment and showing a little decency to a fellow traveller in this crazy thing called life. You know, some things are just too important to take for granted, and one of those is respect for others. Thanks a lot for making my fucking day.

    --

    +1 Insightful, -1 Troll. What can I say, I'm an Insightful Troll.

  43. My favorite esoteric language... by malfunct · · Score: 2, Interesting

    ...was called abuse. I don't know if my friend came up with the idea himself or got it somewhere else and implemented it himself. The interested thing about the language is that anything could be redefined including the keywords of the language. It allowed you to really obfuscate things. I wish I had that interpreter, it was quite fun.

    --

    "You can now flame me, I am full of love,"

    1. Re:My favorite esoteric language... by drnomad · · Score: 1

      's funny. A "serious" programming language lets also redefine everything including keywords. This language is called Rebol and I'm so enthousiastic about it, that I'm busy implementing a GPL'ed version of it. (not on the net yet, still got a lot of work to do).

  44. The Language List by robbyjo · · Score: 2, Informative

    It won't be complete if I don't include The Language List. Not only this page contains resources for those esoteric ones, but also other "saner" languages too.

    For those of you who want to create programming languages, make sure you read the underlying principles. If you know all these stuffs, your programming language will not be just a toy!

    --

    --
    Error 500: Internal sig error
  45. I just spent an hour by howman · · Score: 1

    It would be interesting to see how these
    languages could be used as pieces to a puzzle.

    --
    flinging poop since 1969
  46. reMorse (new site) by thehossman · · Score: 1
    The section on "reMorse" (looks like morse code, used by characters in Cryptonomicon) has an outdated link.

    The new site is: http://members.tripod.com/rkusnery/remorse.html

    --
    -- The Hoss Man
  47. Here's a similar page by dido · · Score: 2

    Another page on weird languages is here.

    --
    Qu'on me donne six lignes écrites de la main du plus honnête homme, j'y trouverai de quoi le faire pendre.
  48. Don't stop at languages! by gmarceau · · Score: 1

    Esotheric programming forms and programming paradims: http://www.catseye.mb.ca/esoteric

    --
    This post was compiled with `% gec -O`. email me if you need the sources
  49. Eubonicode by GrEp · · Score: 5, Funny

    Back when I took compiler construction at Drake University three of us got together and made our own programming language called Eubonicode to help those who like to engage in ghetto algorithmic expression. I threw it up on the website. Here is the fibbonacci code:

    sup
    {
    gimme fibo bitch
    a be 1 bitch
    b be 1 bitch
    putou a bitch
    putou b bitch
    fibo be fibo widout 2 bitch
    slongas (fibo bepimpin 0)
    c be a an b bitch
    a be b bitch
    b be c bitch
    putou b bitch
    dissin fibo bitch
    nomo
    }

    --

    bash-2.04$
    bash-2.04$yes "Don't you hate dialup connections?"| write USERNAME
    1. Re:Eubonicode by cxvx · · Score: 1

      That must be the funniest language I've ever seen. Not very friendly towards women tough.

      --
      If only I could come up with a good sig ...
  50. I think perl is shorter by Ted+V · · Score: 3, Funny

    I think this is shorter in perl. Compare:

    55+".dlrow ,olleH">:#,_@
    print"Hello, world.\n"

    Note that the space after print and final semicolon are optional in perl.

    -Ted

    1. Re:I think perl is shorter by hereticmessiah · · Score: 1

      Yeah, but where's the fun in that?

      Anyhow, Befunge (93) programs are executed on a torus, so are 2D.

      --
      I don't like trolls and mod against me if you like, but I'd prefer if you'd reply.
    2. Re:I think perl is shorter by binner1 · · Score: 1

      Ah, but a technicality:
      You'd need either the 'hash bang' line, or to call the interpreter from the command line ie) perl -e 'print "Hellow, world.\n"'

      Both of these make the program longer than the above mentioned 'wacky-code'.

      -Ben

    3. Re:I think perl is shorter by sg_oneill · · Score: 1
      Anyhow, Befunge (93) programs are executed on a torus, so are 2D

      Damn. I'm speechless. A f*king tourus! I've seen those brainf*k programs that just look like crazy noodles in an ascii art editor. But a tourus. Oh Man. That is truly wacky

      --
      Excuse the Unicode crap in my posts. That's an apostrophe, and slashdot is busted.
    4. Re:I think perl is shorter by hereticmessiah · · Score: 1

      No, not BrainFuck - Befunge. Ah feck it, you probably meant that anyway... mod this as redundant...

      --
      I don't like trolls and mod against me if you like, but I'd prefer if you'd reply.
    5. Re:I think perl is shorter by Korth · · Score: 2, Funny

      In QBASIC it's even shorter.
      ?"Hello World."

  51. Re:Baffled in New York by alienmole · · Score: 1, Offtopic
    I'm sorry you're having such a bad reaction to the attack. However, you'll learn soon enough that life goes on. I live in the New York metro area - my girlfriend's sister was caught in the street during the collapse, had to be treated for smoke/dust inhalation, and still can't get back into her apartment near the WFC. Friends of friends of mine died. It was awful.

    But that really has nothing to do with the comment you made. The way your comment was written, frankly, annoyed me. You assume that because someone develops something like a toy language that they're not also doing something worthwhile. You also presumably don't see the benefit in doing things as an intellectual exercise. I imagine you're not familiar with the enjoyment that can come from creating an interesting piece of computer software. Perhaps you're not familiar with the joy of creation in general. If you are, and you've ever painted a painting or written a poem or essay, or composed a tune, try to imagine that other people may get similar pleasure from writing software, even if the software doesn't seem to do anything "useful".

    Some people do crossword puzzles, or grow gardenias, but that doesn't mean they're not also doing something productive. I doubt there are many people out there designing useless computer languages for a living. In fact, I suspect the people who have invented useless computer languages are probably also doing something quite productive with their lives. As such, your comment was inappropriate. I responded in annoyance, and for that I am sorry - it would probably have been better to try and explain to you what you're missing.

    Now, let me tell you something about the terrorist attack. You're not dead. If you "walk around every day now wondering if I'm gonna blow up in a nuclear fireball by some crazy idiot human being who doesn't value the meaning of life", it just means you weren't paying attention before. Nothing much has changed in the world in terms of what's possible - it's just that you've suddenly become aware of more possibilities. Some terrorists took advantage of overconfidence, and lax security and policies. The US thought it was immune to this stuff, and you probably were one of those who thought that. You're now having to deal with having your imagined security taken away.

    I've got good news for you: unless you lost close friends or family members (in which case I'm very sorry), not much has really changed in the long run. In fact, the end result of all this may be that things get safer, not more dangerous. But even if it doesn't - the world is still full of risks, whether natural or human. You have more chance of being mowed down by a cab in the city than you do of being hurt by the next terrorist attack. More people than were killed in NYC get killed in earthquakes on a fairly regular basis. That particular attack was likely to be a freak event - terrorists aren't going to be as successful every time (think about the previous WTC attack, for example). The world is not coming to an end, although many people's illusions may be.

    Try to put your situation in perspective and think about it more broadly. You're not the only person on the planet, the terrorists aren't after you personally, and nor are they likely to get you. Take your own advice and do something useful with your life. I'm sure you'll live a long time, and have a fruitful life. But your life is happening now, attack or no attack. Walking around worrying about it is not going to help. Criticizing other people who aren't obssessing over it isn't going to help.

    In fact, doing something creative, that expresses the joy of living and your human capabilities, is probably one of the best things you can do for your own psychology, which needs a little help right now. Express your humanity in a positive way - it's the best answer to what the terrorists have done. "Living well is the best revenge", is the saying, and the current situation is a variation on that. The terrorist problem is not going to be solved overnight, and if you try to suspend all other activity until it is solved, you'll simply burn out and end up in the loony bin.

  52. I wasn't expecting this! by hereticmessiah · · Score: 1

    I never thought that I'd see it up on slashdot, but my webring's up on Slashdot! How cool is that!

    In case you're wondering, I'm the bloke who administers ESOLANG.

    --
    I don't like trolls and mod against me if you like, but I'd prefer if you'd reply.
  53. erotic programming! by kanishka · · Score: 1

    oops...I thot erotic.

  54. Re:But is it, Really? by hereticmessiah · · Score: 1

    But none of these languages are failures. They're toys and thought experiments. At worst, designing programming languages like this could be described as a form of mental masturbastion. Is the IOCCC useless or anything like that?

    --
    I don't like trolls and mod against me if you like, but I'd prefer if you'd reply.
  55. double backwards for loops by brer_rabbit · · Score: 2, Interesting

    while taking a programming languages & compilers class, the prof, after talking about parse trees, mentioned that we could implement double backwords for loops. A buddy and I looked at each and said, "huh? double backwards for loops?" The prof went on to describe a loop where:

    for (condition) {
    statement1
    statement2
    statement3
    }

    the condition is checked, and statement1-3 get executed. Then statement3, 2, 1 get executed followed by the condition being examined. Essentially flow runs down and then *up* the block.

    I always thought this was a kinda cool, half baked idea. Useful? No, not really, but cool nonetheless.

  56. Re:After "Bert is Evil": tux quoque, fili mi? by Lars+T. · · Score: 1

    A "letter with a suspicious white powder" sounds more like mail-order cocain to me.

    --

    Lars T.

    To the guy who modded me down from perfect to terrible Karma - Apple haters still suck

  57. Re:If you read this before it gets Moderated. by WalterSobchak · · Score: 1

    Even if it is going to hurt my Karma...

    What were you trying to say, young AC? "Hail to the goat!!!"? "My goat is doing fine!!!"?
    Probably you are the follower of some strange Goat cult.

    Alex

    --
    Absinthe makes the heart grow fonder
  58. Another article. by TheMidget · · Score: 1

    The Las Vegas Sun has another article about the incident. It is much more detailed, except for the fact that it doesn't name the company... We can only wonder why, after all, with the abundance of other sources, the cat's out of the bag!

  59. Radio free nation contract by Alien54 · · Score: 1
    radio free nation might be cool if they didn't ask you to sign away your soul before trying it.

    knowing the guys there I can offer this:

    Basically the contract says

    If you post stuff, you promise that you have the right to post it.
    You also promise that it is not somebody else's
    If you want to use your stuff on your own site (like a weblog), or in another venue (like in print), go ahead. It's yours anyhow.
    When you post stuff to the site, you give the site owners permission to use it.
    If you are not the original author, and want to use stuff from the site, you got to ask nicely first.
    There are big penalties so that big companies don't rip folks off or quote out of context.

    Other small legal details include the idea that the admins can change stuff around, stuff to stop slap suits, stuff to stop litigation from other jurisdictions, etc. Some things like liability for viruses, etc are there because of legal requirements from advertisers that will be coming down the road.

    Very detailed stuff, but that's the idea.

    --
    "It is a greater offense to steal men's labor, than their clothes"
  60. WRONG!! APL was boss by UncleBoy · · Score: 1

    APL was widely used by actuaries before PCs and spreadsheet software were available. The environment I coded APL in from 1979 to 1984 was IBM's VSPC (virtual storage personal computing). Math geeks found it very intuitive to think about manipulating matrices as objects. The basic matrix algorithmic techniques involved flipping matrices upside down or sideways, operating on them and flipping them back again, generating matrices of 0's and 1's representing a condition on the matrix and selecting out the winners, and transposing (reordering the dimensions) of a multidimensional matrix (I believe you could have up to 16 dimensions), and reshaping it into another matrix. These types of operations were primitives. It was also easy to write generalized code because there were primitives for the shape of an object, the last or first element, etc. Good code was quite readable. By the way, we had special APL keyboards.

  61. embarrassing Grace Hopper story by darkonc · · Score: 2
    One of the things that Grace Hopper was proud of was her part in the creation of COBOL.

    Around 1983 (+-2 years), Hopper visited the University of Alberta which was, at the time, ripe with computer language types. FLACC (Full Level Algol/68 Checkout Compiler) and, (I think) MAPLE were (partly) developed there. C, APL, SNOBOL, FORTRAN, ALGOL/W, PASCAL, PL/1, PL/C, PL/360 and LISP were just some of the languages taught in undergraduate classes there.

    In any case, A friend of mine was talking to Grace, and she commented that "Some of the people here were instrumental in the development of COBOL. I wonder why they don't mention it more?", to which Dan replied:

    "Perhaps they're ashamed of it".

    Another friend quickly pulled him aside and explained the history of Grace an COBOL. Apparently, you could see him blush through his (infamous) grizzly-adams style beard.

    --
    Sometimes boldness is in fashion. Sometimes only the brave will be bold.
  62. Re:After "Bert is Evil": tux quoque, fili mi? by darkonc · · Score: 2
    ..., now Microsoft have received a "letter with a suspicious white powder" too. ....

    Oh, great! Now just watch them try to blame it on the "open sores" movement.

    --
    Sometimes boldness is in fashion. Sometimes only the brave will be bold.
  63. Re:Baffled in New York by fizban · · Score: 1

    Wow, it's amazing the amount of egotism that you find in the online messageboard world, as if everyone thinks that they know all the answers to life. And of course, it's amazing that assholes like me spend time trying to goad people into showing it with fabricated feelings and thoughts...

    I will have to do this more often. I love seeing the /. show-offs strut their "stuff" for the rest of the readers to see. Quite entertaining! The second best thing to shouting "Microsoft is Awesome!"

    Thanks for the apology. You actually surprised me there, as your original comment didn't show that much humanity, but it appears you have a better sense of how to tell other people the best way to live their lives. I guess the weapon making to destroy my small mind was only a facade.

    By the way, I don't walk around every day fearing for my life. Neither do I think the "kooky" programming languages are a complete waste of time. I understand creativity and personal solace more than you can even imagine, but thanks for your assumption-based advice anyway. The only fear I have in the world is that human beings have become increasingly more interested in their own personal accomplishments and ideas over the accomplishments of our race and society. Your post helped reinforce that fear. Thanks.

    --

    +1 Insightful, -1 Troll. What can I say, I'm an Insightful Troll.

  64. Oh, grow up. by fm6 · · Score: 2
    Dunno your time frame, but when I studied it back in 71, it was at another college. I rather liked it, despite the pain of memorizing all those little symbols. Anyway, the symbols can be replaced by text tags. The important feature of the language is its elegant support for mathematical concepts, as this paper demonstrates. As with many languages, APL does make it too easy to write over-terse code that's hard to read. But that doesn't stop Perl from being popular.

    Incidentally, APL was invented by Kenneth Iverson, who never taught at Pomona. Perhaps you're thinking of somebody involved in APL's descendent, J. But neither language was the pet project of one prof.

    1. Re:Oh, grow up. by maxpublic · · Score: 1

      My memory of things could be wildly distorted after all this time, but I do know that one of the colleges (I thought it was mine - Pomona - but it could've been Scripps, next door on the same campus) claimed that the professor was 'on staff', although he never taught classes and didn't have an office, and that he 'created' APL.

      This doesn't mean that any of it was true - the college was a west coast ivy-league setup and we had a number of 'professors' whose primary purpose was to increase the college's prestige. One was a semi-famous poet who taught one class each year - and that's it. I never met the APL guy, nor did anyone I know ever meet him. Insofar as I'm aware, he was never once on campus during the two years that I was there.

      But the claim was made regardless. Given your information it was most likely a PR deal of some kind, as was done with some of the other 'staff'. Or perhaps complete BS. I certainly don't know the truth of it, other than what I was told.

      Max

      --
      My god carries a hammer. Your god died nailed to a tree. Any questions?
  65. Intercal! by fm6 · · Score: 2

    The best language on the list is Intercal. Unfortunately, it's very hard to learn. It's not that the language is particularly complex. It's just that all the constructs are so absurd, you can't stop laughing long enough to focus on what you're doing!

  66. Re:Baffled in New York by alienmole · · Score: 1
    I guess the weapon making to destroy my small mind was only a facade.

    Not a facade at all - as I said, a reaction to your original comment, which I still think was small-minded. You talk about fears - I have a fear that's already been realized, which is that people who denigrate the accomplishments of others oppress the people around them, reduce diversity, and make life less enjoyable. That's what you were doing, and that's why I reacted badly. Oppress me, I'll do the same back - not very enlightened, perhaps, but as I said, I reacted out of annoyance.

    As for my advice on how to live your life, you were the one who brought up the totally unrelated subject of the attacks in response to my comment. That made it seem as though you weren't handling things too well, and perhaps could use some perspective. Seems like you've recovered your spine a bit now - glad to be of service.

    The only fear I have in the world is that human beings have become increasingly more interested in their own personal accomplishments and ideas over the accomplishments of our race and society.

    That's not a very well-founded fear. Very few real accomplishments are strictly personal. People inspire each other, and even one of those crazy languages might spark an idea in someone else. The only thing to fear, as I've already said, are the knee-jerk reactions like "this is different and unfamiliar, and therefore I am against it". Your sig talks about "the fundamentalist mind" - but isn't that exactly the sort of reaction you were exhibiting?

  67. Re:Shakespeare Programming Language by mindstrm · · Score: 2

    Very cool.. but doesn't it just translate to C?

  68. New esoteric programming language idea by Voidhobo · · Score: 1
    I am starting a new esoteric programming lanugage called sansChoice. It'll be a powerful, intuitive, interpreted, simple, no-point-oriented (NPO) helloworlding-language. An interpreter is already available in perl:


    print "sansChoice interpreter\n> ";chop($code = );print "\nHello world!\n";exit;

    Maybe I'll start a SourceForge project; afterall, Hello World programs are the most popular by far, and this language finally makes it possible for anybody to write one.

  69. Re:Sublimation by connorbd · · Score: 2

    ObShamelessPlug: that would certainly explain

    http://www.geocities.com/connorbd/varaq

  70. Re:Shakespeare Programming Language by hereticmessiah · · Score: 1

    Yeah, but whatever way you look at it, all it's doing is using C as an intermediate language for compilation.

    --
    I don't like trolls and mod against me if you like, but I'd prefer if you'd reply.
  71. GCC front-end for brainf*ck by devphil · · Score: 3, Informative


    I'm right in the middle of writing one. Hopefully I'll get free time to go back and work some more on it, after GCC 3.0.2 gets released (in a week).

    Why? Because I can, and it's fun.

    --
    You cannot apply a technological solution to a sociological problem. (Edwards' Law)
  72. APL is alive and well! by tnmc · · Score: 1
    Actually, APL is still thriving! I know because I've made a living out of supporting it the last 13 years. :-)



    Admittedly, it takes a bit of a brain shift to get around it at first, but once you get past the initial culture shock, the power of the language is simply stunning in it's simplicity and intuitiveness. And as for the keyboard, you do end up memorising the locations of the more frequently used primitives, at least, over the years.



    When I first started working the in the APL world, I decided I'd better learn the language to get me through those long, boring night shifts (I was just an ops tape jockey back then) and wrote an AP124 tank battle game for 327x terminals, double-blind, real-time...man that was fun for a time.



    But the point is we still sell SHARP APL for OS/390, un*x and even do a Linux version (www.soliton.com/Linux/) with cool stuff like a Java interfaces and stuff.



    And we're not alone. Vector, the quarterly journal of the British APL Association takes 14 pages to list all the vendors, UG's and associated APL-related organisations.



    APL is very much alive and well!

  73. Why the focus on syntax? by Jayson · · Score: 1

    It might be better to categorize languages by what approach it they use to solve problems. There are many poor Java programmers because they learned C first, when Smalltalk would have been a better initiation.

    An example seperation might be:

    Array: APL, J, K
    Concatenative: Forth, Postscript, Joy
    Declarative Constraint: Prolog, Oz
    Declarative Functional: Erlang
    Functional: Haskel, ML, Icon, Unlambda
    Imperative: Algol, C, Assembly
    Object: Java, Smalltalk, Self
    Pattern: Z

    I am not sure where you put Lisp and Scheme, as these two languages rely heavily on their syntax to blur the line between code and data. Because of this, they seem to really fall into every category. These languages really allow the programmer to define a mini-language that is very close to the problem field. Yes, I am a Scheme fanatic, so I am biased.

    -j

  74. APL was the 2nd computer language by Jayson · · Score: 1

    It was created by Dr. Kenneth Iverson who thought that programming should just be a strict formalized mathematical notation. He then when on to create the successor, J (http://www.jsoftware.com).

    Dr. Iversion originally wanted Arthur Whitney to write the J interpreter and over an afternoon, he created the first J interpreter. I've appended this amazing piece of code (proof you can write APL in any langauage). Arthur decided to attempt his next version of APL, called imaginitively, K (http://kx.com).

    K is one of the fastest, most reflective, powerful languages that I have ever used and I almost do not use anything else anymore. More people should be touting the praises of K.

    Here is the J interpreter (taken from http://www.kx.com/listbox/k/msg03690.html):

    typedef char C;typedef long I;
    typedef struct a{I t,r,d[3],p[2];}*A;
    #define P printf
    #define R return
    #define V1(f) A f(w)A w;
    #define V2(f) A f(a,w)A a,w;
    #define DO(n,x) {I i=3D0,_n=3D(n);for(;i<_n;++i){x;}}
    I *ma(n){R(I*)malloc(n*4);}mv(d,s,n)I *d,*s;{DO(n,d[i]=3Ds[i]);}
    tr(r,d)I *d;{I z=3D1;DO(r,z=3Dz*d[i]);R z;}
    A ga(t,r,d)I *d;{A z=3D(A)ma(5+tr(r,d));z->t=3Dt,z->r=3Dr,mv(z->d,d,r );
    R z;}
    V1(iota){I n=3D*w->p;A z=3Dga(0,1,&n);DO(n,z->p[i]=3Di);R z;}
    V2(plus){I r=3Dw->r,*d=3Dw->d,n=3Dtr(r,d);A z=3Dga(0,r,d);
    DO(n,z->p[i]=3Da->p[i]+w->p[i]);R z;}
    V2(from){I r=3Dw->r-1,*d=3Dw->d+1,n=3Dtr(r,d);
    A z=3Dga(w->t,r,d);mv(z->p,w->p+(n**a->p),n);R z;}
    V1(box){A z=3Dga(1,0,0);*z->p=3D(I)w;R z;}
    V2(cat){I an=3Dtr(a->r,a->d),wn=3Dtr(w->r,w->d),n=3Dan+wn;
    A z=3Dga(w->t,1,&n);mv(z->p,a->p,an);mv(z->p+an,w->p ,wn); R z;}
    V2(find){}
    V2(rsh){I r=3Da->r?*a->d:1,n=3Dtr(r,a->p),wn=3Dtr(w->r,w->d) ;
    A z=3Dga(w->t,r,a->p);mv(z->p,w->p,wn=3Dn>wn?wn:n);
    if(n-=3Dwn)mv(z->p+wn,z->p,n);R z;}
    V1(sha){A z=3Dga(0,1,&w->r);mv(z->p,w->d,w->r);R z;}
    V1(id){R w;}V1(size){A z=3Dga(0,0,0);*z->p=3Dw->r?*w->d:1;R z;}
    pi(i){P("%d ",i);}nl(){P("\n");}
    pr(w)A w;{I r=3Dw->r,*d=3Dw->d,n=3Dtr(r,d);DO(r,pi(d[i]));nl() ;
    if(w->t)DO(n,P("< ");pr(w->p[i]))else DO(n,pi(w->p[i]));nl();}

    C vt[]=3D"+{~<#,";
    A(*vd[])()=3D{0,plus,from,find,0,rsh,cat},
    (*vm[])()=3D{0,id,size,iota,box,sha,0};
    I st[26]; qp(a){R a>=3D'a'&&a<=3D'z';}qv(a){R a<'a';}
    A ex(e)I *e;{I a=3D*e;
    if(qp(a)){if(e[1]=3D=3D'=3D')R st[a-'a']=3Dex(e+2);a=3D st[ a-'a'];}
    R qv(a)?(*vm[a])(ex(e+1)):e[1]?(*vd[e[1]])(a,ex(e+2) ):(A)a;}
    noun(c){A z;if(c<'0'||c>'9')R 0;z=3Dga(0,0,0);*z->p=3Dc-'0';R z;}
    verb(c){I i=3D0;for(;vt[i];)if(vt[i++]=3D=3Dc)R i;R 0;}
    I *wd(s)C *s;{I a,n=3Dstrlen(s),*e=3Dma(n+1);C c;
    DO(n,e[i]=3D(a=3Dnoun(c=3Ds[i]))?a:(a=3Dverb(c))?a :c);e[n]=3D0;R e;}

    main(){C s[99];while(gets(s))pr(ex(wd(s)));}

  75. Re:But is it, Really? by DumbSwede · · Score: 1

    I only meant failure, in the sense that they were never adopted as mainstream languages. Many contain worthy concepts, and of course many are just whimsical.