More Programming Languages

Picture Mark Zuckerberg sitting down to write an early version of Facebook. He knows enough PHP to make it happen, he's ready to hack all night to a Trent Reznor soundtrack, with enough Shasta to quench an elephant's thirst. At the end of the day he's tired, but chills out the best way he knows how: eating a burrito, drinking bad instant coffee, and browsing the latest news for nerds. He starts reading a discussion about how PHP is a terrible language, and questions whether PHP was the right choice for the nascent project that he's embarked upon.

He decides to rewrite Facebook in the current language favoured by the alpha geeks on the web. Do you think he'd still have built Facebook, or would the project have been derailed by an endless quest for technical perfection?

I don't care about the programming language used to build Facebook. The main point is Zuckerberg had an idea and implemented it using tools he was comfortable with. Similar stories can be found in the game development community: modders start off by hacking a game they love, then move to Unreal Engine development, and eventually they're working on big budget games.

Gearbox Software started out by developing extensions to Half-Life, and have since created Borderlands and Borderlands 2 -- there are many more examples of developers that have taken this path. Although modding might not require the technical acumen of creating a game engine from scratch, Gearbox had ideas and found the shortest path to implementing them.

Thousands of XBLA developers are making games with C# -- it's amazing what people can do with an original idea for a game mechanic and enough programmer art to get the ball rolling.

Gamasutra has a good post about the art of Braid that shows Jonathan Blow's programmer art before David Hellman stepped in. The final game is beautiful, but the game worked because the mechanics were compelling. Jonathan could have given up development in a quest for the perfect programming language and the perfect art, but instead he got something interesting working then sought help with the weaker areas.

"You're doing it wrong," said the joker to the thief. "There's too much confusion, I can't get no relief." Imagine if someone told Bob Dylan he was doing it wrong -- the world wouldn't be the same. That taciturn phrase is overused and betrays a lack of imagination: don't shoot down the enthusiastic youth with original ideas, but rather embrace and encourage.

Your programming language isn't your identity. It's pretty easy to learn more than one. You don't need to be an expert in all of them; it's fine to gravitate to areas you find aesthetically pleasing or more productive. I tinker with Lisp, I really enjoy Clojure. I make no money directly from these languages, and I'm not planning on creating a new company based around Clojure, but I find learning it enriching.

The multitude of languages enriches our wider culture as hobbyists, hackers, computer scientists, and engineers.

Can you imagine if an anthropologist decided that certain facets of human culture should be culled? The fallout would be spectacular. The obvious argument against what I'm implying here is that programming languages are tools, and don't warrant the same level of cultural importance as art, literature, and science. However, this is purely dependent on your point of view. I think anyone with a passing interest in programming or related technical fields could identify the cultural underpinnings of the major programming languages.

Prominent bloggers, including Zed Shaw on Shedding Bikes, discuss programming culture. Zed moved away from Ruby development partly due to cultural reasons. So culture is important to programming -- the flavour and style of a language is only partly derived from the language creator's design. Languages are often created to solve a particular need, but as the language becomes more generalised and capable the library authors and technical writers start to shape the culture around it.

This isn't an attack on the author of the above tweets. It's a plea to people who are about to embark on a creative project. If you have an idea, see how far you can take it with the tools you have to hand. If you've got spare time, learn some new tools. Don't feel like you're doing it wrong, you might be seeing things in a new way that proves to be fruitful.

blog comments powered by Disqus