It has often been said that CeePlusPlus is "an octopus made by nailing extra legs onto a dog" (coined by SteveTaylor). Of course, that analogy can be extended to other languages as well. Really, should be renamed into "An Octopus made by..." or something similar. So, here is "how other languages became ObjectOriented octopi": http://blogs.theage.com.au/entertainment/images/psikostym023.jpg '''An octopus made by...''' CeeLanguage * ...isn't really an octopus at all. Just a dog, although it's a racing greyhound with almost no brain. CeePlusPlus * ...made by nailing extra legs to a dog ** you now have an 8-legged dog, and the process was rather painful. JavaLanguage * ...made by taking an 8-legged dog, housebreaking it, and tearing out its skeleton. Then giving it a machine shop. ** a boneless 8-legged dog manages to be less useful than either an octopus or a dog - but it comes with a machine shop, so that's good. DotNetPlatform * ...made by taking an 8-legged boneless dog and drawing bones on its skin to make people think it's more like a dog. ** It also comes with a machine shop, but this one is in imperial units so it matches your existing gear a little better. ** Also comes with a hamster with 4 boneless dog's legs attached to it, and tools for attaching 4 boneless dog's legs to other animals. DeeLanguage * ...made by taking an 8-legged dog and tearing out the part of its skeleton used by the middle four legs. (This was considered a more humane alternative to nailing extra legs on to a 4-legged dog.) It can still run like an ordinary dog, but the boneless extra legs will get in the way and slow it down without special training. * In response to criticism about the missing bones, tentacles were added to the middle legs. The dog can now climb trees, but is even more awkward when trying to run like a normal dog. Scientific research is ongoing into the best way to add bones to all the limbs - including the tentacles. BasicLanguage * Just the four basic legs, of course! Each numbered: 100, 200, 300, 400. (Contrast with FortranLanguage, where the legs are numbered only when the dog jumps.) Can become an octopus only by replacing it with a completely different animal and calling the result VisualDelphiBasic [sic; that is not a typo]. ** Really more of a hamster than a dog. ObjectiveCee * ...made by taping tentacles to a dog. Slightly more octopus like, but a dog with four tentacles is even weirder then an 8-legged dog. CommonLisp * ...it's an amoeba. It can grow 8 pseudopods to look more like an octopus if it likes, though. People like to say it's a cat, and it's easy to make it cat-like SchemeLanguage * ...made by ripping the nucleus out of an amoeba, reducing it to a prokaryotic bacterium. While it is still physically capable of extending pseudopods, it rarely does. Instead, it is just generally makes people sick and throw up. People also claim this one is a cat. PythonLanguage * ...made by adding tentacles to a snake. Unfortunately, the tentacles were added one-at-a-time, so each one looks and behaves a littled different. On the one hand, it looks more like an octopus than most others, but on the other hand, it behaves somewhat strangely. Plus, they kept on adding tentacles so it's at something like 12 tentacles now. PerlLanguage * ...made by gluing random animals together until something vaguely octopus-shaped crawled away. * PerlSix: made by gluing actual octopi to the above, then cutting out some of the more unruly animals, then spending years trying to train the new glob to work together (and it still doesn't). HaskellLanguage * Genetically engineering a cat, and then taping a translator to its head so that it can talk to the dogs. AssemblyLanguage * ...bone marrow only really. But of dog legs. Contains stem cells that can grow legs and any other body parts though. ErlangLanguage * ...spent a while pretending that some of its hydra-heads were tentacles, for political reasons. DylanLanguage * ...used to be an amoeba. Grew a flagella. Lost the ability to make pseudopods. BooLanguage * ...took the 12-tentacled snake and added another 4 using DotNet's toolbox * ...but then removed the snake's tail, and its ability to slither, so now it moves more like the boneless dog. (Because Boo has static typing, meaning some really strange stuff happens with type checking that CeePlusPlus/CeeSharp programmers ''think'' is called polymorphism.) ** It still has the ability to slither, but because it has to be done by the mass of tentacles rather than an actual snake tail, it's slightly more unruly, and you won't be doing it nearly as often. (Boo lets you declare as Duck for explicit runtime type checked variables. SmalltalkLanguage * ...decided that to really grow legs, you need the ability to alter DNA. Also grew 8 pseudopods, a flagella, dragonscales, antlers, and a toolbox, but refuses to coexist with ordinary carbon-based lifeforms. SelfLanguage * ...uses same altered DNA as SmallTalk, and has the same coexistence problems, but decided that 8 pseudopods were plenty and no other appendages were necessary. Reproduces asexually, by budding. NewtonScript * ...taking a six-legged Chihuahua with DNA altered like SelfLanguage and stuffing it into an even tinier pet carrier. AppleScript * Made by putting onto a dog legs 1, 2, 3, 4 of every dog on the system... Wait. For other dogs, put legs into our... Put into dog's legs legs 1, 2, 3, 4 of legs of- Take the tablets, Dog. For i from 1 to 4, for... JavaScript * ...made by taking an 8-legged dog, housebreaking it, converting its legs into pseudopods, and then deciding they ought to be called legs for marketing purposes. PickLanguage * ..made by adding rollerblades to the dog. Before rollerblades were invented. They excommunicated the dog for witchcraft. Really doesn't have much to do with octopi. RubyLanguage * ...a new octupus, made with modifiable tentacles. Bones, knees, paws, rollerblades may be added at runtime. PascalLanguage, ModulaTwo, OberonLanguage * ...not really an octopus in any way. An otherwise well-structured, conventional dog with a surprisingly high number of colons. Has a long history of being used by medical researchers as a demonstration animal in such areas as: diseases, handicaps, disabilities, mental instability, ''et cetera''. DelphiLanguage, TurboPascal, ComponentPascal * Frankenstein octopi that escaped from the medical research labs. Although they ran fast, most didn't live long in the wild. MlLanguage * A very nice cat. OcamlLanguage * ...made by attaching 4 legs to a cat. ** ...and they're so muscular that the cat can now outrun most of the dogs. However, this also means that it is no longer nearly as easy to cuddle. SimulaLanguage * Proteroctopus, an ancient ancestor to modern octopi. Likes being tossed playfully into the air by an alpha dog with sufficient regular legs out-of-the-box. LuaLanguage * ...is just a leg and a roll of duct tape. ** But the leg is double-jointed. ToolCommandLanguage * Everything looks like a leg. You can add as many new organs as you want, as long as they look like legs too. The end result looks rather ugly. MopsLanguage * ...putting an octopus costume on a sheepdog. The costume was put on backwards, but that's OK... the dog is trained to walk backwards. PrologLanguage * ...made by taking a real live octopus and cutting it up, then unifying it again. ** For some reason it's stopped squirming. ForthLanguage * ...made by creating the mold of an octopus, grinding up the dog into mincemeat, and then pouring. ** I thought Forth was a dog, an octopus, and a Z80 chip from a washing machine arranged in a stack. *** It's actually just the dog's colon. * Forth is untyped, so: DOG @ OCTOPUS ! ColorForth * ...made by taking the mincemeat back out of the mold. CommonObjectRequestBrokerArchitecture * ...made by inserting the dog into the air filter of a mac truck EnterpriseServiceBus * ...made by surgically inserting a chihuahua into a poodle, the poodle into a great dane, and the great dane into the air filter of a mac truck. IntercalLanguage * ...is a plush toy octopus whose owners take great pride in telling you what they have named each of its limbs. AdaLanguage * Stapling six extra legs to a dog and calling it a squid. ScalaLanguage * Made by taking the far-above housebroken, boneless dog (plus machine shop), and giving it a special exoskeleton modeled after the genetically-altered thing that lets it move like a distant cousin of an octopus. Oh, and it seems to think it's a cat. Later had extensive surgery that grafted hydra-heads on to some of its tentacles, but not all of them. It can do anything that a boneless dog in a machine shop can do. Originally, it was going to be able to work with boneless dogs with bones drawn on, but it was too hard to convert metric to imperial when trying to mix the machine shops, so most people don't do that. InformLanguage * Made by attaching tentacles onto ''you''. Unfortunately, they're voice-controlled, and can't do anything practical. However, for some strange reason, they seem to work great for aiding you in performing plays, singing songs, and generally being entertaining. (Seriously, check out the Inform 99 bottles of beer-the code is really much more of a treat than the output.) PhpLanguage * Made by taking a dog, removing its legs, and adding eight limbs from eight different phyla. One of them is bound to be a tentacle. ---- See also LanguageAsFoodMetaphor and LanguagesAreLikeGames for similar silliness. This page certainly serves as evidence that some programmers have a poor sense of humor, and no idea when to stop. Most of the above are neither funny nor informative. - ''So it's true! Programmers ''are'' human beings after all!'' ''I'm not sure how I could inform someone about a language using this kind of joke. As for humor, well, that's heavily subjective. I do especially like the Scheme one.'' I got some quite heavy laughs from this. So it is funny. Probably not for everyone. ''Agreed with above. Extremely humorous. But then, I suppose there's no accounting for taste.'' The above about PhpLanguage was spot on. Grammatically correct and articulate unfunniness delivered with relentless verbosity. This article is an example of what occasionally ensues when AspergersSyndrome and humor coincide. ''Assuming it was all written at once by one person. '''Highly''' unlikely. More likely it just goes to show that even the Aspie in all of us likes a little bit of an outing now and then.'' The edit log shows that it has been edited more than 40 times over the eight years since it was first invented. More than one mind is involved. ---- Invented in FebruaryZeroSix ---- CategoryMetaphor CategoryHumor