Perl + Python + Parrot + C + ... + Java = Polymorph
Fake News written by on Tuesday, April 3, 2001
In what has been heralded as the greatest innovation in the computer industry since the invention of 1's and 0's, a fat guy working in his basement has created a new meta-programming language called Polymorph.
"It may not be a cure for cancer (probably), but it is a cure for holy wars," boasted Norbert Walmsley, the creator of Polymorph. "Why fight over Perl and Python, or C++ and Java, when when you can program in every one simultaneously?"
That's right, simultaneously. Taking a cue from quantum mechanics, Polymorph allows code from many languages to co-exist in a state of superposition within the same source file. Of course, when the compiler touches the source, the code settles down into a single state.
"Every programmer has encountered a situation where they've been forced to program in Language A by decree of their Pointy Haired Boss, but they'd rather be hacking in Language B but at the same time they would also like to borrow a feature or three from Language C and D. Polymorph makes that possible," says Mr. Walmsley. "Instead of restricting yourself to one language, you can program in an infinite number of languages at once, and the Polymorph compiler will take care of the details."
In addition, Polymorph also allows the programmer to create their own personal programming language on the fly. According to the four-color glossy that accompanies Polymorph, "If you think all existing languages suck, then fine. Just take a quick 12 question survey which Polymorph will use to create your own tailor-made language from scratch."
The Humorix Vast Research Labs Of Doom(tm) installed a beta copy of the software and filled out the survey, which looks like this:
- What is your opinion on Object Oriented Programming?
- It's the best thing since sliced bread.
- It's the best thing since instant coffee.
- What now?
- It's an evil conspiracy concocted by "The Man" to achieve world domination by ensuring that all software projects are impossible to maintain and eventually implode on themselves.
- It's a buzzword bandied about by PHBs and nothing more.
- What type of compiler warnings do you prefer?
- None. If it's possible to compile my program, I don't want to know about them.
- As obfuscated and terse as possible. Real men know the difference between "Warning 10,232A" and "Warning 10,232C" and like it, dammit!
- As misleading as possible. I've grown accustomed to warnings in other languages that are completely inaccurate, citing an error on line 124 for instance when it's actually on line 1, and I wouldn't have it any other way.
- What now?
- Warnings? No, I would prefer for the compiler to read my code, read my mind, and make the appropriate changes to the code to fix bugs transparently. Why should I do all the work?
- How do you feel about language syntax?
- Compilers should have strict rules for spacing, punctuation, and keywords, and then blow up spectacularly if even one ASCII character is out of alignment.
- Syntax? People who watch "Star Wars" can understand Yoda perfectly, just as a compiler should understand my code perfectly no matter how intoxicated I am when I write it.
- What now?
- Spending hours debugging code that goes awry just because of a misplaced semicolon is one of the great pleasures that a programmer can have.
- What type of source code do you find it easier to read, understand, and compose?
- Code that is virtually indistinguishable from line noise.
- Code that is so verbose that it requires 500 lines just to spit out "Hello world!"
- Code that is virtually indistinguishable from English prose because I don't want the FBI or MPAA to know what I'm up to.
- Code that other, inferior programmers would consider to be "write-only code".
- Why the heck would somebody want code that's easy to read, understand, and compose?
- If you could be an animal featured on the cover of an O'Reilly book, which one would you choose?
- What is your favorite ASCII character?
- square bracket
- curly brace
- hash mark
- pipe symbol
- Which of the following statements best fits your programming philosophy?
- GOTOs have gotten a bad rap over the years.
- If it's not object-oriented, it's crap.
- If it IS object-oriented, it's really crap.
- The fastest way to shoot yourself in the foot is to use pointers.
- Comments are for weenies.
- Automatic garbage collection should be conducted by garbagemen, not programming languages.
- Message passing is a bad idea because it can allow one process to send spam messages to other processes advertising the latest "GET CPU CYCLES QUICK" scheme.
- If something can go wrong, you're obviously using a Microsoft programming language.
- Which format do you prefer for entering numbers?
- Binary, because there's no use wasting precious CPU cycles converting numbers from decimal into binary when I can do that myself just fine.
- Octal, because Real Men use octal.
- Hexidecimal, because numbers like DEADBEEF are so cool
- Base 42, because I'm the only person on the whole planet that know how to use it.
- If it's not a power of two, I don't want to know about it.
- What type of writing do you typically use for informal e-mails and chat room conversations?
- i like to write like e e cummings no puncuation all lowercase all the time
- I LIKE TO MAKE HEAVY USE OF MY SHIFT KEY SO EVERYONE WILL LISTEN TO ME!!!!! (CAPS LOCK? WHATS THAT?)
- I just LOvE writing in MixedCase because everyThing is a so much better exPressed as a TradeMark conconted by MarkeTingDROIDS.
- (I (suffer (from (a (severe (lisp))))))
- What best describes the life cycle that your software typically goes through?
- I write it, it compiles, I'm finished with it.
- I write it. I'm the only one who understands any of it, thus maintaining job security.
- I write it, it compiles, I publish it on Sourceforge as Open Source software and let other schmucks debug it for me.
- I write it, the language sucks, it has lots of bugs, I get fired.
- I write it, it's the best piece of software ever created in its class, I get laid off when my dotcom goes boom, the code never sees the light of day.
- Let's say the program you're writing may possibly try to divide by zero. If this exception occurs, how should your program cope?
- Pretend that the error didn't happen. The program will spit out bad data, but that's a user problem, not a programmer problem.
- Redefine the laws of mathematics so that any number divided by zero is equal to 42. Problem solved.
- Spit out an ominous error message and terminate. There's nothing more satisfying than watching the faces of end-users as they stare at an "Unknown Fatal Error" message they had nothing to do with.
- Don't worry about it because such errors only occur in programs written by inferior programmers.
- What type of development and editing environment do you use?
- I use toggle switches on the front of my machine to input programs and data. For those rare instances when I want permanent storage of my programs, I use a magnet to manipulate the individual bits on a floppy diskette.
- Can you say punch cards?
- I open up 50 xterms and then run vi in each one.
- I haven't left the friendly confines of Emacs in over two years. Who needs an operating system?
Once the questionnaire is completed, Polymorph generates the specifications for your own language. The specs are coded in "Meta-Polymorph", a programming language used to define programming languages. The syntax and structure for Meta-Polymorph can itself by modified by hacking code written in Meta-Meta-Polymorph, and so on.
"This is going to revolutionize the computer industry," beamed Mr. Walmsley. "Now anybody will be able to write their own programs with little prior training or experience. Errr... wait a minute. That's a bad thing! If Joe Schmoe can write his own programs, what does that mean for the outrageously high salaries of today's programmers? Maybe I need to rethink this whole thing."