Follow Slashdot blog updates by subscribing to our blog RSS feed

 



Forgot your password?
typodupeerror
×
It's funny.  Laugh.

The Shakespeare Programming Language 148

Erik Tjernlund writes: "Oh, where art thou my lovely new programming language? Stop fiddling around with those perl magnets and use a real poetic computer language: The Shakespeare Programming Language. Not a compiler, but it converts to C. Cool 100+ line Hello World example. Amazing what CompSci-students can create when they really should do real work."
This discussion has been archived. No new comments can be posted.

The Shakespeare Programming Language

Comments Filter:
  • snort (Score:4, Funny)

    by wrinkledshirt ( 228541 ) on Friday August 31, 2001 @09:27PM (#2241837) Homepage
    combines the best features of BASIC, assembly language, and Hamlet.

    Let me guess. It takes three long, boring hours to figure out (2b | !2b)?
  • Gar... (Score:1, Funny)

    by Anonymous Coward
    I thought I went into Sciences to get AWAY from all this crap.
  • Hello world (Score:2, Offtopic)

    by jedwards ( 135260 )
    Site is dying fast - here's the only thing anyone cares about ...

    The Infamous Hello World Program.

    Romeo, a young man with a remarkable patience.
    Juliet, a likewise young woman of remarkable grace.
    Ophelia, a remarkable woman much in dispute with Hamlet.
    Hamlet, the flatterer of Andersen Insulting A/S.

    Act I: Hamlet's insults and flattery.

    Scene I: The insulting of Romeo.

    [Enter Hamlet and Romeo]

    Hamlet:
    You lying stupid fatherless big smelly half-witted coward!
    You are as stupid as the difference between a handsome rich brave
    hero and thyself! Speak your mind!

    You are as brave as the sum of your fat little stuffed misused dusty
    old rotten codpiece and a beautiful fair warm peaceful sunny summer's
    day. You are as healthy as the difference between the sum of the
    sweetest reddest rose and my father and yourself! Speak your mind!

    You are as cowardly as the sum of yourself and the difference
    between a big mighty proud kingdom and a horse. Speak your mind.

    Speak your mind!

    [Exit Romeo]

    Scene II: The praising of Juliet.

    [Enter Juliet]

    Hamlet:
    Thou art as sweet as the sum of the sum of Romeo and his horse and his
    black cat! Speak thy mind!

    [Exit Juliet]

    Scene III: The praising of Ophelia.

    [Enter Ophelia]

    Hamlet:
    Thou art as lovely as the product of a large rural town and my amazing
    bottomless embroidered purse. Speak thy mind!

    Thou art as loving as the product of the bluest clearest sweetest sky
    and the sum of a squirrel and a white horse. Thou art as beautiful as
    the difference between Juliet and thyself. Speak thy mind!

    [Exeunt Ophelia and Hamlet]

    Act II: Behind Hamlet's back.

    Scene I: Romeo and Juliet's conversation.

    [Enter Romeo and Juliet]

    Romeo:
    Speak your mind. You are as worried as the sum of yourself and the
    difference between my small smooth hamster and my nose. Speak your
    mind!

    Juliet:
    Speak YOUR mind! You are as bad as Hamlet! You are as small as the
    difference between the square of the difference between my little pony
    and your big hairy hound and the cube of your sorry little
    codpiece. Speak your mind!

    [Exit Romeo]

    Scene II: Juliet and Ophelia's conversation.

    [Enter Ophelia]

    Juliet:
    Thou art as good as the quotient between Romeo and the sum of a small
    furry animal and a leech. Speak your mind!

    Ophelia:
    Thou art as disgusting as the quotient between Romeo and twice the
    difference between a mistletoe and an oozing infected blister! Speak
    your mind!

    [Exeunt]

  • oh well (Score:5, Funny)

    by banky ( 9941 ) <greggNO@SPAMneurobashing.com> on Friday August 31, 2001 @09:33PM (#2241863) Homepage Journal
    Server, server, whereforeart thou, server?
    Deny thy slashdotting and accept mine HTTP connects!

    5 comments and I can't seem to connect. mayhap I shall bite my thumb at RoadRunner?
    • Re:oh well (Score:2, Funny)

      by SEWilco ( 27983 )
      I wouldst connect to thee, o most remote of arachnid presenters!

      When'er thine voice is delayed from reaching mine ears
      before sweet sleep approaches me,
      and I knowest that we be in the presence of yonder overlooking master of all things constructed,
      then my awareness shall be that the master hast brought his minions to overwhelm thine voice with their chanting
      and I shall be filled with woe and anticipation of what sweetness might I forsee in the morrow.

    • Out, out, slashdot!

      By the way, has the "postercomment compression filter" ever heard that brevity is the soul of wit? Calvin Coolidge would have driven himself nuts trying to post here ...
  • by aoihai ( 518418 ) on Friday August 31, 2001 @09:45PM (#2241889)
    Thus it is revealed that "Much Ado About Nothing" is actually a polynomial time solver of the "Love Triangle" subclass of NP-complete problems.
  • Shakespeare used the common language of his day. Like The Sopranos, Shakespeare's oevure is meant to be a big hit.

    His writing is not a language or a diction or a dialect unto itself, but to combine the ways of speaking of the poor and rich playgoers of the Elizabethan time. It's the original accessible style, and that is why 15 year olds can understand, and dig, Romeo and Juliet today.

    However, this "speak your mind" crap de-shakespearizes the writing anyway. The topics may be shakespearean, but the diction is a geek-ized bastardization of Elizabethan speech.

    This era's English is as complex as our own. The best way to code in such a language understandably is to write simple prose.

    For coding, you need a more modular language, something less complex. The semi-linguistic grunts and signs of a Neanderthal, or Koko the signing ape,may be more useful. You would get compilable code, due to a simpler logix, and the Neanderthal observer would still understand the meanings.

  • by Mark Gordon ( 14545 ) on Friday August 31, 2001 @09:53PM (#2241908) Homepage
    Assuming this isn't a complete joke...

    David Touretzky would probably get a kick out of this language, since it could lead to a dramatic rendition of a CSS descrambler.
    • Any CSS descrambling software in Shakespeare? Assuming this isn't a complete joke...
      Oh, what fools these moderators be. Of COURSE this is a complete joke; notice the category it's in, and read the sample program. It's easy to recognize which phrases have been designated to have language meanings, and that the way they're combined is grammatically-correct nonsense.
      • Did you even look at the website? It si NOT a joke. I just downloaded and compiled the spl2c interperter myself, and then coverted to C and compiled a sample program. it works!

        • (A) the site was slashdotted at the time just about everything here was posted. Most posters are going by the sample program, which someone got and posted, and the description.

          (B)The fact that it compiles doesn't make it any less a joke. The fact that it compiles is, by itself, humorous. The fact that it compiles *and* reads like a parody of Shakespeare is hilarious. Awhile ago, a steganographic tool was mentioned on Slashdot which would reversibly turn text messages into what looks like spam. This is a similar thing, for C code.
    • My first thought too.

      Shakespeare really is a fairly simple programming language with built-in steganographic obfuscation. But it'd be a hoot to see MPAA try to come down on a Shakespeare version of DeCSS or Adobe try to complain about a Shakespearean e-book decryptor.

      (And while the language looks at quick glance to be turing-complete it could do with some richer semantics -- floats, function calls, etc.)
    • It should be quite easy to write a Brainf**k to SPL converter, and if someone already wrote DeCSS in Brainf**k and I think this was done, just need to convert it to a *very*long* play in SPL... :)
  • by alewando ( 854 ) on Friday August 31, 2001 @09:53PM (#2241909)
    Elizabethian English is a good proof of concept, but we should build on this success with other more practical languages.

    Natural-language programming has had its ups and downs over the year. Some will recall Hypertalk, for example, as the language the original Myst game was programmed in. Only some will recall, however, inasmuch as it never got terribly far off the ground. Other natural languages haven't faired much better.

    My contention, however, is that these efforts have not failed because the idea of natural-language programming is somehow fundamentally flawed. Nay, the problem is that we're busy trying to implement the wrong language: English. English may be the language lots of us speak, but it's simultaneously too imprecise to permit of exacting programming and too verbose to allow structures to be implemented quickly and cleanly.

    Tok Pisin [adequacy.org] would make a much better natural language to implement. It has several important advantages over English:
    1. Simple grammar
    2. English-based lexicon for backwards vocabulary compatibility
    3. Full extensibility, owing to its pidgin origins.

    As yet, a language like Tok Pisin would encounter much opposition among programmers and speakers in the population at large unaccustomed to change, but it's a proposal deserving of serious examination.
    • i clicked on your sig and ended up on this on one link
      [adequacy.org]
      http://www.adequacy.org/?op=view_poll;qid=999108 47 7_sbUDMizJ

      and suddenly realized perhaps how very small this little web forum we call slashdot really is :)

      • I dunno. That site consists of a bunch of people with a REALLY good sense of humor, or complete and blithering lunatics. Articles about how you should traumatize cattle so the meat tastes good!? I don't want to take it seriously, but I got the impression that several of the posters there do. I'm a bit unsettled by that.

        But, given that their main poll had 137 votes, I guess most people have already voted with their [metaphorical] feet.
    • Um, what's the point? Why would you bother to go from a language that nobody speaks to another (theoretically "natural") language that nobody speaks?
    • by Anonymous Coward on Friday August 31, 2001 @10:17PM (#2241964)
      fuck that. ebonic would be a much better programming language.

      int foo()
      {
      word up, biatch;

      homey = sup();

      }
    • Some will recall Hypertalk, for example, as the language the original Myst game was programmed in. Only some will recall, however, inasmuch as it never got terribly far off the ground. Other natural languages haven't faired much better.


      Umm.. what about AppleScript? It was based on many of the same elements and ideas of HyperTalk, but extended to a system-wide metaphor. In fact, with Apple's OSA (Open Scripting Architecture), AppleScript has gotten to be pretty darn useful.


      Apple's probably got the best implementation of a natural language parser around right now. With the right extensions and coding, it could serve very easily as a great meta-language for programming.

  • Not Quite Right (Score:3, Informative)

    by robbyjo ( 315601 ) on Friday August 31, 2001 @09:55PM (#2241914) Homepage

    Not a compiler, but it converts to C.

    Well, technically, the tool that translates one language to another (be it to machine language, intermediate language, or just another sufficiently different high level language) is called compiler. Therefore, calling it non-compiler would be incorrect.

    • Well, technically, a tool that translates from one language to another (such as C to x86 object code) should really be called a translator. Compiling is the craft of putting those peaces together, so we should really start calling our linkers compilers, and our compilers translators.

      But if we are to accept common (albeit faulty) terminology, I will agree that something that translates language foo to C is definitely worthy of being called a compiler...

    • When I was bored in high school, my friend and I created the beginnings of a programming language and wrote a compiler for it. The compiler reads source files in our invented language, outputs x86 assembly code in the format of a script to pipe into DOS DEBUG, then pipes it into DEBUG and the result is saved as a .COM file. The compiler was written in QBASIC.

      We never got far enough to be useful, but it does actually work.
  • #include

    ==

    Oh damned damned damned villian!

    (from McBeth?)
  • Amazing... (Score:5, Funny)

    by Anonymous Coward on Friday August 31, 2001 @10:05PM (#2241936)
    "Amazing what CompSci-students can create when they really should do real work."

    Like Linux?
    • Short-sightedness on the part of our story poster here. I think natural language processing, or at least work in its direction is "real work". Especially since if computers are going to be fully (in the sense of casual use the same as a telephone) adopted by our society in the future, they'll have be more human-compatable. (For those on /. that didn't realize it already, most average people are still afraid of PC's.)

      When you can dictate instructions to your machine - whether it's 16th century English, or modern Nihongo - the world will be a better place. Steps like this will help lead us to the elimination of these primative and clunky UI's and I/O devices we're currently attached to in favor of elegant, natural communication. Age of intelligent machines, anyone?
      • Short-sightedness on the part of our story poster here. I think natural language processing, or at least work in its direction is "real work".

        Nope, this has nothing to do with natural language processing. If you had read the manual you would understand that as well. It is a fairly simple language quite similar to the original basic-dialects, with a lot of syntactic sugar. Adding syntactic sugar has very little to do with natural language processing.

        But I'm sure it was fun, and that they learned something in the process of creating it, so I wouldn't call it worthless...

      • I'm sorry that a lot of people seem to misunderstand my attempts at "so called" humor. Of course I think the two SPL creators (who are friends of mine) have done real work.

        Maybe not useful work (as in creating peace, ending world hunger etc etc) for our society at large, but interesting, funny and cool work.

        The language grew out of a lab assignment in a syntax analysis course [midgard.kth.se] at our school [www.kth.se]. If viewed as a lab assignment, SPL is probably a little more work than the course coordinator demands :-). That's all I meant.

        /Erik

  • by sparcv9 ( 253182 ) on Friday August 31, 2001 @10:06PM (#2241938)
    Another natural language language is Chef [usyd.edu.au]. Programs are written like cooking recipies. The above link has examples of a Hello World and a Fibonacci sequence generator. I wouldn't want to eat either of them, though. The ingredients are the variable names, so some of the concoctions sound downright nasty. Although, the Fibonacci generator only requires 100g flour, 250 g butter, and one egg, and it's accompanying Caramel Sauce (the recursive function) requires a cup of white sigar, a cup of brown sugar, and a single vanilla bean.
    • Another natural language language is Chef [usyd.edu.au].

      I always was slightly nervous about posting physics.usyd URL's to /.. It seems the effect hasn't hit overly hard - only 1200 accesses since the story was posted (3 hours ago?), but don't you go cutting off my data disks - all you slashdotters! :)

      TimC.
  • that is the question

  • #include <romeo.h>
    #include <juliet.h>
    #include <performance.h>

    int main(void *scene) {

    enter(_romeo + _juliet);
    printf("Behold, thou seest the world");
    exeunt(romeo);
    exeunt(juliet);

    render(theatre);
    }

    • Might I point out that the function exeunt(actor a,actor b,...,exit_direction c) doesn't accept a single argument. You'd get the compiler error: "Syntax error: Verb-noun agreement incorrect" Exit(actor a, exit_direction b) would be a better function to use for a single person.

      Latin, Shakespeare, and programming. What more could a geek want?
  • Never fear, slashdotties. I am, as always, compelled to explain the joke for those lacking your encyclopedic knowledge of computer science.

    GLAGOL 61 was the forerunner of several undeservedly obscure computer languages, such as Barfy, SNET, and %++. Inspired by an incident (recorded in a humorous note in the Journal of the ACM by Dr. Harry Buttle) in which a moth was squashed by the print head of a primitive Sperry "wrecking-ball" teletype, Buttle invented the insect-oriented programming paradigm and created a language for the representation of algebraic and algorithmic formulae whose symbols consisted exclusively of

    vowels, used as reserved key-letters, and

    bugs squashed on the page.

    GLAGOL (short for GeneraL AlGOrithmic Language) used a specially designed terminal whose printing element was a modified flyswatter. Used in a bug-filled room (the prototype was set up in a dormitory shower room at William and Mary that had a broken window), it required the use of rubber type to set vowels. Later, the rubber-type mechanism was abandoned in favor of a carriage-mounted Dymo labelmaker. GLAGOL 61 also required special processing hardware for optimized execution. Source code was represented internally by larval grubs, and executable code by pupae, nestled in a unique "honeycomb store" on a rotating surface of uniform negative Gaussian curvature, which doubled as an element in the machine's analog differential analyzer, and as an occasional dressmaker's dummy, eventually leading to a grotesque incident which I shall not offend the reader's sensibilities by recounting.

    GLAGOL 61's economy of expression may be glimpsed in the following two-line decimation algorithm for a fast Fourier transform [I have translated the insect splotches to ASCII as best I can]:

    (random stream of Glagol doesn't pass Slashdot's "lameness filter." Its painful but true

    Rarely has the essence of an algorithm shone through so clearly on the printed page; of modern languages, only APL is comparable.

  • Temporary mirror (Score:5, Informative)

    by jooon ( 518881 ) on Friday August 31, 2001 @11:07PM (#2242047) Homepage

    We didn't expect the slashdot effect (well, not so soon anyway ;-), and our WikiWiki certainly didn't, so the web server died. So, we set up some temporary, but not complete mirrors. The source, documentation and examples are here, but it lacks the lively and lovely Wiki discussion.

    http://spl.pu240.com [pu240.com]

    http://cgi.student.nada.kth.se/~d98-jas/shakespear e/ [nada.kth.se]

    --
    Jon Åslund (one of the authors)
    • >We just got slashdotted, our wiki died and this

      You killed the wiki! YOU BASTARDS!

      (Another reason /. should cache...)
      • > (Another reason /. should cache...)

        Great idea. Google caches every page it finds, slashdot doesn't even cache the few linked pages of the articles it has. I don't read slashdot very often, or at all actually, but from the reactions on this page and from some e-mail I have received, this seems the happen a lot.

        --
        Jon Åslund
  • by jejones ( 115979 )
    ...will there be a version letting one write in the original Klingon?
    • Re:Neat, but... (Score:2, Interesting)

      ...will there be a version letting one write in the original Klingon?

      Well...kinda. I demo'd the forthcoming Lingua::tlhInganHol::yIghun Perl module at YAPC::NA [yapc.org] last June. It will hit the CPAN in a few weeks time.

      With it you'll be able to implement programs like Eratosthenes' well-known "Death Challenge for Primes" in the original Klingon:


      #! /usr/bin/perl

      use Lingua::tlhInganHol::yIghun;

      ###### mI'wa'DIchvaD 'eratoSHeneS HeghqaD #####

      <mI' tIn law': > yIghItlh!
      mI'tInwIj laDDaqvo'Hal yIlaD nob!
      mI'wa'DIchmeywIj cha' mI'tIn chen nob!
      {
      mI'wa'DIchmeyvaD { 'oH gheD chuv! } mI'wa'DIchmey tIwIv yInob!
      gheD <<\n>> ghItlh!
      } gheDvaD mI'wa'DIchmeyvaD yInIH yInob teHtaHvIS!


      Damian
      • Looks like completely ordinary Perl to me.

        Sorry, couldn't resist :)

        Mart
      • Question:

        How did you get Perl to accept the apostrophe as a letter, instead of treating it as a quote mark?
        • How did you get Perl to accept the apostrophe as a letter, instead of treating it as a quote mark?

          Apart from being a string delimiter, apostrophe was also the package name separator in Perl 4 and has been kept on in that role (for backwards compatibility only) in Perl 5.

          That is, the following are synonyms in Perl 5:


          sub Phroggy's_Question { return "???" }

          sub Phroggy::s_Question { return "???" }


          So I could have used an apostrophe in any Perl identifier, so long as I didn't care which package the corresponding referent ended up belonging to.

          However, Klingon has a very different grammatical structure from Perl -- Klingon imperative verbs are RPN, whereas Perl subroutines use a prefix notation.

          So I needed to use a source filter [cpan.org] to translate the grammatical structure. Since I was translating anyway, it was quite easy to include specific handling of glottal stop apostrophes as word characters.

          Of course, that also meant I couldn't use apostrophes as string delimiters. But that was okay, since I had already decided that the pach ("talon") and pachmey ("double talons") delimiters:


          <qo' nuqneH> yIghitlh!---> print 'qo\' nuqneH';

          <<qo' nuqneH>> yIghitlh!---> print "qo' nuqneH";


          were more in keeping with the Klingon mindset anyway ;-)

          Damian

  • I wonder what the MPAA would do if 2600 published DeCSS translated into one of these languages.
  • Now if this can be done with spanglish or ebonics I will be really impressed.
  • Not a compiler? (Score:3, Insightful)

    by p3d0 ( 42270 ) on Saturday September 01, 2001 @12:13AM (#2242155)
    Just because something uses C as its output language doesn't mean it's not a compiler. If it scans and parses text to build an abstract syntax tree like a duck, then generates intermediate code which gets optimized like a duck, then outputs the result in some target language like a duck, then it's a duck, regardless of which target language is used.

    C is actually quite a popular output language for compilers, because it means they don't have to do register allocation.
  • I'd love to see some movies made of some SPL programs.

    Leo di Caprio might actually be able to act if all he had to say was "Speak thy mind!"... but the dirty codpieces and square roots of lying pigs-offal might get him down a bit.

    -Perc
  • This gives new meaning to those "Code Poet" shirts...

    -Ryan
  • This seems like the ideal language for DeCSS--even a liberal arts educated judge must see that such a "program" constitutes some form of literature.
  • i kindof liked Brainf**k [muppetlabs.com] ... this is the other extreme !!!
  • by tulare ( 244053 ) on Saturday September 01, 2001 @03:33AM (#2242405) Journal
    Lol!
    You lying stupid fatherless big smelly half-witted coward!
    You are as stupid as the difference between a handsome rich brave
    hero and thyself!
    The way the language sets up insults just kills me. I like the above. See the title to this post and think about it :)
  • I just love these funny languages. Nobody will ever use them, but after reading this, you don't feel like programming any more. The C language looks so crude, so cryptic, so non-human friendly after that...
    There's a similar project for Perl [perl.com] called Lingua::Romana::Perligata [monash.edu.au] . This is an awesome module written by Damian Conway, that let you program in Latin. Totally crazy.

  • Amazing what CompSci-students can create when they really should do real work.


    I'll assume, for your sake, that you were trying to be cute and that the above was a misdirected quip with the aim to amuse. But the truth is that when I was in university I did some of the most creative work that I ever did, granted it was mostly useless but it did prepare me for the real world.


    Life is not all work. Arbeit macht Frei. Not always.

    • Arbeit macht Frei?

      Ouch.

      Fishing usually set me free.
    • Yes. Of course I was only trying (and failing) to be funny. I'm also a CompSci-student here in Stockholm and the SPL creators are friends of mine at The Royal Institute of Technology [www.kth.se].

      Mr. Torvalds and Linux is another pretty good example of what university students can create when they probably should use their time to "real school work".

      As I said. Only trying to be amusing. Next time I'll just submit a URL.

      /Erik Tjernlund
  • Just another example of the kind of cool stuff that only comes about because of GNU and free software!! Way to go, guys!! I bet microsof~1 would never come up with something this cool! Who wants to write a linux kernel config module using this???

  • Posted by Hemos on Fri August 31, 17:01 from the speak-thy-mind dept.

    thk writes "Sistina [christusrex.org], the main developer of the Global File System, has changed its language from C to SPL [d.kth.se] (Shakespeare Programming Language). SPL is basically a language to make the source code for programs written with it, resemble a Shakespeare play. Interestingly, the change came just after beta testing, leaving some users a bit miffed. The GFS is an important component of some GPL clustering projects, such as Compaq's SSIC project. The Sistina press release is here [slashdot.org]."

  • by WWWWolf ( 2428 ) <wwwwolf@iki.fi> on Saturday September 01, 2001 @09:20AM (#2242772) Homepage
    You know, just yesterday I fixed some table generation problems in this small program of mine [sourceforge.net]. I commented the offending piece of code [sourceforge.net] better, adding silly comments like "Dramatis Personae" before the variable declarations and stuff like "I Act" before each part of the code...

    ...and next day, someone has Shakespeare Programming Language in Slashdot.

    Weird. Really weird.

  • What do you mean, real work? They're prevented from doing such by their own fluffin faculty! If it's not inane projects with no focus on real-world applications, it's teaching Java to beginners.. Our college system sucks. :P
  • Port it now! "No, you can't say those words!"
  • Just so you know, this site [catseye.mb.ca] has links to all kinds of weird programming languages.
  • I got the Rocky Horror reference (4711), so I assume that the 17 is a reference as well... either just a nice prime, or (hopefully), the number in the Dragerian series by Stephen Brust?

    Incredible language, by the way. Really really nifty, and something I will use as an example when I'm trying to define the term "hacker".

    --
    Evan

"The four building blocks of the universe are fire, water, gravel and vinyl." -- Dave Barry

Working...