Friday, February 16, 2007

Losing Big Is Easy

What's the connection between soda and the failure of programming languages? I would have thought "zero" had I not recently stumbled across a wikipedia article about a little-known predecessor of Coca-Cola. As it turns out, in 1879, a scrappy Norwegian immigrant named Jan Kjarti (who, incidentally, also coined the term "artificial sweetener") started a soda company. His company, Slug Cola (the motto was "you'll love to Slug it down!"), produced a soda that cost a little more than Coke but which actually tasted much better (note that it didn't actually use artificial sweetener, either). It's hard to even find out what it tasted like anymore, as none of the small but loyal customer base of Slug Cola are still alive. Fortunately, a noted Boston historian and Slug researcher has found a few scattered journal entries and newspaper clippings from the era. By all accounts drinking Slug, relative to drinking Coke, was something akin to a transcendent experience. Of course, since you've heard of Coke and haven't heard of Slug, you can probably guess what happened: Coke kicked their ass. One of Jan's protégés (one Richard Angel) later wrote a newspaper editorial entitled "Coke is Better", about the failure of their company. It was both heartfelt and poignant, and included a frank assessment of why Slug Cola failed. He pointed to the fact that, just as Slug was making a few gains in the marketplace, the US entered what became known as the "Soda Winter", a period of about 10 years where the public became irrationally convinced that carbonated water was bad for your stomach. Coke survived this period relatively unscathed, in part aided by the fact that people felt that some of Coke's ingredients actually offset the purported stomach-damaging properties of carbonation. Aside from that, and perhaps more importantly, Coke was cheaper to produce, allowing Coke to expand more rapidly into new markets. Try as they might, the proprietors of Slug Cola just couldn't convince members of the public (who had invariably tasted Coke already) of Slug's merits.

Well, that's most of the story, at least. At the very end of the wikipedia article, the author points out a fact that, once I read it, I could have kicked myself for not having figured out myself. I mean, it was a long article and went into all this detail about how the company failed. And not once did it dawn on me, and this is the part the author pointed out, that the name of the product might be the most significant factor in its downfall. Slug! Duh! Of course nobody wants to drink something called Slug! I mean, you can try to tell them that Slug refers to the concept of eagerly drinking (i.e., "SLUGging down") a transcendent carbonated beverage. But I just don't think you can overcome first impressions. And, let's face it, the first impression of Slug is of, well, a slimy, oozing insect. Of course, I'm guessing all of you reading this were way ahead of me this whole time, so I bet you think I'm pretty dumb. All I can say is, go read the article and you might get a sense for how I could have failed to notice the obvious. The story just got so poignant, convoluted, and interesting, that I experienced a momentary lapse of common sense.

Naturally I couldn't help, at this point, thinking about other poignant and convoluted stories that I've read about, and, like a flash, something that has probably been in my mind for years now hit me like a ton of proverbial bricks! The reason why my 3 favorite programming languages failed is that their names sucked ass! Just like Slug! I don't know why this didn't hit me before, but it just seems glaringly obvious now. What's more, I did a bit of research, and determined that there seems to be an almost inverse correlation between the coolness of a language's name and the coolness of the language itself. This might explain why we're still writing code using the equivalent of blunt, hollowed-out turtle bones, bits of twigs and leaves and stuff, just like our primitive Neanderthal ancestors.

If you don't believe me already, let's look at the all-time coolest programming language names:

C. Yup. C. C is cool. It's mysterious. It's cryptic. It's one syllable. It could even stand for Cool. In my mind, there is no better name for a programming language, and never will be (any attempts to replicate its coolness by picking other, single letters of the alphabet, such as D, will come off as mere me-too-ism). I remember in college, everyone wanted to know C. People would ask questions in CS211 that they already knew the answer to, just so they could mention some feature of C that they'd learned. I think the name has a lot to do with it. The language itself was my favorite programming language for many years, until I finally started learning more about real programming languages.

C++. You can't improve upon the name C, but C++ was about as good as you can get. I think C++ kicked the ass of its nearest competitor due to its name. What would you rather use (if you didn't know anything about either language's technical merits): "C++" or "Objective-C". Obj-jeck-tive-See. Talk about clunky. I write code in Ob-jeck-tive-See. By the time you get to the third syllable you've just lost people's attention completely. They'll be staring off in another direction asking questions like, "is there a breeze in here?"

FORTRAN. Yup. You may hate it, but it sure is popular, even to this day. FORTRAN always sounded cool to me, before I learned anything about it. It sounds like "fortress", but with a cool sci-fi twist to it.

Java. Gotta hand it to Sun for picking a kick-ass name. It's short, it's cryptic, it's friendly; it implies a connection with a caffeinated beverage, something near and dear to many programmers' hearts. Its success tracked the explosive growth of upscale coffee shops, such as Starbucks. Yep, Java's stratospheric success has much to do with its name.

Now let's look at the all-time loser names.

Coming in with the 3rd worst name for a computer language, of all time, is Erlang. I write code in Ur-lang. I am caveman. I grunt and say Ur a lot. After laughing at you for a while, anyone you're trying to convince of Erlang's merits next question is, "Why is it called ERlang? Does it stand for Ericsson Language?" You're pretty much sunk at this point. It would be like if you were trying to get people to use MicrosoftLanguage instead of C#. Wouldn't happen. They'd just feel too silly.

Coming in with the 2nd worst name of all time is... Smalltalk. This list just gets sadder as we get towards number one, doesn't it folks? Because the languages just keep getting better. Let me ask you this, folks: Smalltalk was designed by some of the best and brightest computer scientists of all time. Numerous of them have won Turing awards and other accolades. Why wasn't someone amongst them smart enough to point out this dead obvious fact: something called SMALLtalk is never going to be successful? I remember when I took Intro to Programming Languages and we were supposed to use SMALLtalk at one point. I just couldn't believe it. This is America, folks. Bigger is better. I wasn't about to use a puny, wimpy language that went so far as to point out its diminutive nature in its own name! I remember I just suffered through the SMALLtalk portion of the course and didn't pay the slightest attention to any of the language's merits. I mean, even if you ignore the SMALL aspect, what does "small talk" actually mean? It refers to trivial, banal conversation. Who wants to engage in banal conversation? Does that mean the messages you send between objects are trivial and banal? Sigh. It only gets worse. Smalltalk's latest incarnation is called Squeak. That's right, it's named after the sound a small rodent/pest makes. Might as well call it Slug.

Last but certainly not least, here is the worst programming language name of all time: Lisp. OMFG this is a bad name. Bad bad bad. What does "lisp" mean? Lisp means "speech impediment"!! Do you want a speech impediment!? I don't think so! Back in college I had even less patience for Lisp than I did for Smalltalk. I mean, when it came down to it, I'd rather at least be able to make small talk, at a party, without having a lisp. Hint to John McCarthy: next time you come up with something brilliant, name it after something POSITIVE. Geez. And, as with Erlang, it just doesn't get any better when you try to explain why Lisp is called Lisp. It's short for LISt Processing... Get it? Isn't that funny? I don't hear you laughing. Yeah, 'cuz it's one of the worst puns ever. And not only is it not funny, guess what, most programmers don't actually think they're going to do much "list processing", so they're like, "maybe it IS good at List Processing, but I could give a flying monkey's posterior because that's just not what I want to be working on" (these programmers would much rather be working on their ORM layer, ironically).

Phew. So there it is folks. One of the great tragedies of modern computer science turns out to have such a simple, prosaic explanation. I would be more surprised that nobody else has ever mentioned this before, except that it took me 16 years and an obscure wikipedia article to see the light, so I guess I shouldn't expect anyone else to have done so, either.


Ola said...

I'll add ruby and/or python to that list. maybe, not as successful as the others yet but they have good names. especially python, you think it's the snake but it's not. there's actually a story there, cool...

nishpeak said...

I agree with ola, Ruby is a nice name . Python constricts its prey, I wonder how many programmers may resent python for the mere thought about it. Nice article..looking fwd for more posts.

Unknown said...

What about 'Eiffel'? Yes, Eiffel - named after that thing in France.

Remember the French? Those pussies who said we shouldn't go into Iraq, on the pretext that loads of people would die, or something...

How lame is naming a programming language after an iron tower in France?

Unknown said...

As I'm sure you already know, Alan Kay et al chose the diminutive name "SmallTalk" as a reaction to big, impressive-sounding names, which goes to show that they don't give Turing Awards out for marketing acumen.

Unknown said...

Erlang is named after the mathematician (of the same name) that invented traffic engineering and queueing theory.

Sir Diddymus said...

danielwalker: dude, first of all, Eiffel was a person!

And not going to Iraq has nothing to do with being a pussy, it has to do with intelligence. But heck, if you don't even get Eiffel, why should you get that?

Drew @ Cook Like Your Grandmother said...

Sir Diddymus, please have your sarcasm detector serviced. It seems to be out of adjustment.

Michael R. Head said...

I know at least one person with such an intense fear of snakes that she can't have any ASP or Python books laying about the house.

Unknown said...

Great post. I have to throw Haskell in the mix. Horrible horrible name.

David House said...

Genius :) Great post, thanks.

Anonymous said...

OS/2 - the same case!

ivant said...

keerthi: the Russians even call it half OS :)

Unknown said...

Every single time I say that I'm learning Haskell, people always mishear me and think I'm learning Pascal, and look at me funny and say "we did that in school". I think I've got a fairly exaggerated pronunciation of it now - it's HA-sk-ELL.

Phil said...

any attempts to replicate its coolness by picking other, single letters of the alphabet, such as D, will come off as mere me-too-ism

Never mind the fact that C came after the B programming language. Wups. =)

Mike said...

Slugs would be slimy mollusks. ;)

Charles said...

Yes, as Ola points out, Python is not named after a snake. It is named after Monty Python’s Flying Circus, which I just think is damn cool. So, I think that it has the best of both worlds. The business people like it because it sounds like it’s something that can kill people, and the Geeks like it because of Monty Python.

Another bad name: BASIC. But, the irony here, is that is does describe itself.

rycamor said...

Ahh... thus is XML explained, and the reason why businesspeople who fancy themselves hip technocrats can't stay away from the word. Beginning your name with an X means instant street cred in the age of x-treme stunts, XGames, X Files, X-men, etc...

Also, this possibly explains the resurgence of Apple's desktop OS.

Loup Vaillant said...

In my blog, I have written another theory about the failure of cool programming languages : self reference is scary.

I have never thought of the names. So trivial, and yet so sensible. If it is true, I propose a remedy: actually inserting a capital X in bad names (thank rick).

Xisp. HaXhell. Xalltalk... Nevermind.

Unknown said...

@Dude whom said:
"Every single time I say that I'm learning Haskell, people always mishear me and think I'm learning Pascal, and look at me funny and say "we did that in school". I think I've got a fairly exaggerated pronunciation of it now - it's HA-sk-ELL."

That's hiarious, I put that as my away message!

Jacob Gabrielson said...

In re: Haskell. Does it really come as a surprise that a language named after a character from 1950s sit-com Leave it to Beaver isn't a wild success? :-)

In re: Mac OS X. Yup. Just think of the following conversation in the mid-90s:

Geeky technology person: We should buy Apple Macintoshes!
Pointy-haired boss: You want me to buy a fruit?
Geek: No, they're these really cool computers, technologically superior to everything else! See, the name Apple Macintosh is actually just a clever joke.
Boss [eyes already glazed over]: So you want me to buy a joke?

Similarly, Paul Graham put forth that pointy-haired bosses want to use Java because they think all programming languages are the same and thus want to hire commodity programmers. That's not why; they don't even know what a programming language is. They just don't want to use something called Lisp or Smalltalk. Interestingly, Paul Graham is in a unique position to solve this problem since he actually came up with a good name for his Lisp variant, Arc. This may be the first time in history something like this has happened. Now if he'd just release it... :-)

rycamor said...

"Arc?" Nah... Arc still has a problem. Say it out loud and most bosses would hear "Ark". Not that the word is lame, but it's an antiquated word, and bosses want to be high-tech and futuristic. For example, if you named a language "Protocol-4", that's the kind of thing that would just roll off the CTO's tongue in a conversation.

Somehow, I think there is an interesting psychological study in all this. For example, why do languages starting with "P" tend to be popular (Prolog, Pascal, Postscript, PL/SQL, Perl, PHP, Python, etc...)? Maybe that's because the "P" consonant makes us think of forceful, forward-looking things. (Push?).

Or think of free associations people might make. C as a single capital leads one ti think of the things that start with "C", one of which happens to be "Code", and others like "cool","capable", "competent", "complete", etc... lots of positive things in the English language start with C.

Of course, "Java" just sounds cool. I liked the word long before it ever bacame a computer language. In fact, the language kind of ruined the word for me.

Josh said...

Actually, I think Arc is a good name. I don't think of "Ark" I think of a curved line, seamless and mathematical. Django, (technically a framework), Joomla, Javascript & JRuby also have the strong "J" sound and remind one of Java (for various reasons). Ruby on Rails (or just Rails) is also an excellent name, so that might be part of the reason why it has become so popular lately.

This would also explain why nobody has adopted Boo as a widespread programming language, despite it being a pretty good cross between Python and C#.

What does this mean for EMCAscript? From what I have been reading lately, people are talking about it being the NBL ("Next Big Language"). Should we just rename it something like "smirk" or "jace" and hope for the best?

David Gelbart said...

According to this history of Haskell, Haskell was originally going to be named Curry, but the name Curry was rejected because they realized people would have fun (puns) with that name. I wonder if they should change the name back to Curry.

Bill C. said...

Yes, C# is a good name, but I still think that C# from the Enterprise Edition of the successor to Visual Studio 6 should have been called C#maj7. The learning edition could have been C#min7.

Tim Finin said...

The slog cola post is great - but I can't find the slog cola wikipedia article or any web pages on it or Jan Kjarti. Can you point us at the resources?

DuaneS said...

I am shocked, yes shocked I say that nobody has mentioned the LAMEST name of all. JavaScript. It co-opted the coolness of Java while having absolutely nothing to do with it. A pure marketing ploy. It reeks of Madison Avenue greed. ECMAScript sounds like a skin disease but is better than a fake wannabe ripoff name. Not a bad language though.

Daniel said...

In Deep Space Nine, the Ferengi had a drink called Sluggo-Cola: "the slimiest cola in the galaxy!"

Maybe they should have gone with that slogan.

Unknown said...

Yeah, C# is a really good name. Probably my favorite (the name not the language... that part isnt so great).

Heh, yeah recruiters I talk to are always calling it "C pound" (usually the ditsy young women type). Actually, when a dumb recruiter asks me if I have experience in "C pound", I tell them I invented it (I wrote a C# library called Cpound just for this purpose).

Unknown said...

This post and some of the comments are hilarious.

Ruby, Python and possibly Scala also have good names.

Shame about Haskell though :-)

Unknown said...

I think it is much more than just the name. I think you are not giving people enough credit. Choosing a programming language is not like choosing a softdrink. You don't get to throw it away after using it.. you get to live with it.

Many silly names have survived. The thing is that they don't sound silly because they are successful. Some examples:

UNIX (Eunichs ?? a pun on Multics? lame)
Vi (what the heck is that?)
EMACS ?? huh??
ASSEMBLER? c'mon it has ASS in its name

You forgot to mention FORTH in your list of languages who are dying horrible slow deaths as their communities preside over the wakes cand claim it is just a birthday.

The problem with ALL these languages is dysfunctional (hostile/elitist/exclusivist?) COMMUNITIES. Some would describe them as navel-gazing PRICKS who think that their shit don't stink (as it were).

Do a search for FORTH. Almost everything related to that language is about HOW FIRKING GREAT IT IS.. and the only software you see is MORE FORTHS.. Nobody ever writes useful code in Forth (yes there is openfirmware etc and that is a testament to what _can_ be done with the language) but Forth people are so fetishistic about FORTH that they don't want to write anything but their own variant of FORTH.. you see, it is because they are sooooo smart and everyone else is a dumb frikking moron.

LISP.. to say the community is elitist won't be too far off the mark. Well, no wonder they never gained critical mass.. When everyone tries to sound like Einstien himself, and think how frikking witty they are and what secrets of the universe they know.. it all comes off in the way they speak to people and treat newcomers. It is true that most of that crowd could be part of Mensa or the Prometheus society, but then again, those are not the ways to attract critical mass (masses?) who bring their base instincts to the "one pure language"

Same goes for SmallTalk and other failures. They may have created awesome languages but the languages and the communities that developed around them were just as dysfunctional and introverted as the original core of people who started them. Just imagine if a phonograph is as cantankerous as Edison himself? and we were told to just take it because Edison is such a genius.

Yeah, ignorant managers will sometimes discredit a language based on its name, but it is all about community and follwing in the end (and that is the apply/eval relationship right there -- puts on his red turkish cap)

Look at the Ruby community before Rails and after Rails. It is the same dang language, but it used to be a little "toy" and now, IBM, Infoweek, Oreilly and every other big name corporation is tripping over themselves to get in the action.

Coolness comes with acceptance and mass adherence which is generally a problem for the uber-smart who shun the plebians and their base tastes..They begin the communities with those attitudes and they survive in the DNA of the communities for decades.

No wonder PHP is so popular.. shitty name, but plebes can get the job done and the elitist attitudes are kept to a minimum. No-one in PHP community, in their heart of hearts, thinks that they are sitting on the threshold of universe changing truths, if only the rest of the idiots would understand. And they exhibit it by using it pragmatically to do mundane things and creating documentation for mundane functions and everyone just does their mundane thing and create some reall cool shit in the process anyways.

didn't mean to turn this into a rant, but language adapters are not cola drinkers and they make pragmatic decisions about what they are going to choose and it rarely has to do with what they will tell people at parties as to the name of the name of the language that they work with. (I am not a PHP developer AT all, but I do find it poignant that most high traffic sites, even those extolling the virtues of Lisp, FORTH, even Ruby on Rails have to debase themselves by using a forum written in PHP)

because you see, writing a good working forum for common people is just BENEATH a superstar LISP/FORTH/SMALLTALK genius. They have to ponder the universe's major programming problems.. and sadly, in the end have nothing to show for all that attitude, at least in the mass following area. And that may not be such a bad thing.. have you asked the uber-LISPERS if they'd like their language to be a "success" as it is being defined in the article above?

Just my 2 cents.

hobbified said...

Python's name is cool (even if the language is only mediocre) because saying anything bad about Monty Python is banned by international treaty. On the other hand, do I have to point out that Ruby's name is a case of blatant me-too-ism on Perl?

Will said...

"Nobody ever writes useful code in Forth (yes there is openfirmware etc and that is a testament to what _can_ be done with the language) but Forth people are so fetishistic about FORTH that they don't want to write anything but their own variant of FORTH.."

Forth developers write their own Forths because it's easy and because they're often working with new hardware. In many ways, the new Forths are the "useful code."

NASA uses Forth a lot. Is space exploration "useful?" I doubt you'll find many php forums creeping about the surface of Titan.

dmost said...

My next programming language will be called "Paris Hilton"

jqb said...

"I'm guessing all of you reading this were way ahead of me this whole time, so I bet you think I'm pretty dumb"

Indeed; a slug isn't an insect.

The very best programming language name is, of course, Brainfuck, which has the feature of being an accurate description (that is, the name has the feature of being an accurate description of the language; as for the features of the language, the less said the better).

Jacob Gabrielson said...

FWIW, what I wrote was (emphasis added):

the first impression of Slug is of, well, a slimy, oozing insect

I think most people who were considering drinking Slug, way back when, thought "insect", not "mollusk". But I could be wrong. :-)

Unknown said...

Isn't XML defined as Xtreme Machine Language? =D

xycodex said...

There is not slug article. google for 'worse is better'

Christopher said...

Cool, great names for future programming languages:

- Rockefeller
- Capone
- Patton
- Shark
- Fire
- Arrow
- Ring
- Eagle


Woah, my boss asked me is I could take over the project from Mike, and I said"sure", because Mike used Rockefeller extensively, along with the Capone toolkit (the one where all the class names start with GUN), and I could just bring in my Patton web services, link it with routines written in Shark by Ellie in Financial Services.

Of course, the web server is written in Fire 2.2, with Arrow modules, and uses Ring for dynamic configuration. (Ring of Fire) All this will be hosted on Linux with the Eagle virtual environment manager.

sotto said...

Weird nobody mentioned Cobol :-)

Steve said...

Did Slug cola have cocaine in it? If not it would offer another explanation as to why Slug failed. A similar effect can be found in popular programming languages. Take Java, it makes bad programmers feel great because they can write page after page of code that does nothing,(ObjectFactoryFactory anyone). Languages like Prolog, Haskell, Perl, etc.. allow good programmers to cut the guff and solve problems. Bad programmers (who outnumber the good ones by orders of magnitude) feel bad about these languages because they cant solve problems, so like to write reams of NOP code.
Perhaps the way to make a really popular language would be to offer free rocks of crack with the manual.

chunkybacon said...

C# is prononced "C hash" here in England - because we already have a pound character - the £ sign - on our keyboards.
and the # symbol is called a "hash"

coolest sounding: Prolog

uncoolest: its gotta be "Lisp"

pointy headed boss:
"what?!!! you're going to design our online shop in something named after a speech impediment"?

chunkybacon said...

christopher@11.30AM -> laughing my head off here!!! god damn , thats funny!

Brad said...

Has anyone ever heard it being called "C pound".

Yes -

Vladislav Kudelin said...

Comments on comments:

>> Or think of free associations people might make. "Code", ... "cool","capable", "competent", "complete", etc... lots of positive things in the English language start with C.

The author has explained in detail at the beginning: it's all associated with "Coke".

>> Xisp. HaXhell. Xalltalk... Nevermind.

So right, the NBL is going to be "XXX".

>> C#maj7. The learning edition could have been C#min7.

Bravo! (And Rachmaninoff's prelude in c#minor is the best application written in it).

net said...

Loved reading this post!!

Good observations :)

darcy said...

Can anyone explain to me why Brainfuck is not a more popular language?!

Jan Řrřola Kadlec said...

Some people who don't like C# call it Db :-).

Caio Tiago said...

The EMACS name come from the main quasi-modal modifier used on the program:

VIM comes from Vi IMproved, which comes from visual (in that epoch that was much visual).

PHP comes from "personal homepage", because that was a set of C and Perl CGI scripts to build homepages.
Later it becomes the most ridiculous "PHP: Hypertext Processor".

Benjamin Nolan said...

C# is prononced "C hash" here in England - because we already have a pound character - the £ sign - on our keyboards.
and the # symbol is called a "hash"

No it bloody well isn't. ;) It's "see sharp", and it always will be.

C# run ooooookay, I'm going to stop now.

Unknown said...

@Ciao Tiago: EMACS came from EDitor MACroS, as it was origianally a set of macros for TECO.

Ondra said...

Considering the ignorance which the most of the commenting people here present, I understand why the coolness of the name is so important.

Anyone, who actually bothers to think about the nature of a programming language can clearly evaluate the pros and cons of it. I think, that questions like: "How easy is to make a type-related mistake it is?" or "Will the language guide me to write semantically correct programs?" or "Is there any framework which is well suited for my project?" should be made more relevant.

And by the way: Haskell is named after mathematician Haskell Brooks Curry, who worked in the field of combinatory logic and formal systems. Without his work, today we would have programmed in assembler.

If anyone thinks, that what Java offers in terms of type systems and object orientation is good or that it does not matter, that in functional languages it is much easier to write correct programs, it's his fault.

Unknown said...

I sometimes get strange looks when I tell people I'm getting interested in Coq. It may have something to do with the name...

Unknown said...

Question: How does "Smoosh" sound as a lang name?
I'm thinking about making one called "Smoosh", after an obscure reference to a webcomic called ComicJK.

Gatsby said...

I think Scheme is an excellent name for a language used by people just beginning with programming (like me). It's dark and mysterious. "To scheme" brings up great images of a shady individual who has devised a brilliant plan to achieve some controversial plan. And it's also related to the word schematics, which is one of the all-time coolest words.

Avoiding fallback in distributed systems

As previously mentioned , I was recently able to contribute to the Amazon Builders' Library . I'd also like to share another post t...