This week Apple announced their new language, Swift, and as I went through the manual, I thought, there’s too many languages.
Now don’t get me wrong – I like computer languages. Obscure is no problem – I’ve worked in low level languages like machine and assembler (including hand coded 6502/6510 and 486 code). I do GUI code in VB.net (and before that VB6) and code DLLs in C++. I’ve programmed and sold scripts in PHP, apps developed via Objective-C (with C++ code intermingled for that extra bit of coding goodness). I’m currently expanding my Java training into the obscure areas of the language for my Android work, and I have a goal this year of mastering Python for Raspberry Pi and NVDA coding. Oh, and let’s not forget chestnuts like COBOL, Fortran, and so forth (which reminds me – anyone remember Forth?)
And like any good programmer with too much time on one’s hands, I’ve worked on my own language. Fortunately, I didn’t finish it, because, as I said, there are too many languages.
Why? I have some opinions on that:
- All languages have flaws. I like C/C++ a lot – but I’ll be the first to admit that while it’s great for low level code, it’s not quite so great elsewhere (yes, I know you can use the STL or add Boost to do some pretty cool things, but libraries aren’t the language – they are support for areas of a language). Although it can be major issues like garbage collection, it frequently is the little things: The semicolon in C seems superfluous, and case sensitivity could be relaxed (program VB with an editor that autocorrects variable case and doesn’t need a ‘;’ after every statement and you’ll get what I mean).
- Some languages have BIG flaws. BASIC is fun – but global variables are a big no-no for maintainable code. Likewise in PHP (although classes do help there, if you can safely ignore PHP4 in your business). Pascal was designed to teach/enforce good programming. So was Python. And so apparently was Swift. One could argue however that if any of these did the job, why were the others created?
- Old versus young. People like fresh – and if a new languages sounds cool we want to learn it. I mean, doesn’t Ruby on Rails sound fun? Or Python (especially when you hear it was named after Monty Python)? So if you’re a kid learning a language, why not a unique one? And forget that Python is really from the 80s, it sounds new…
- Old (employees) versus young (employees). Imagine you start your first job, where there are 20 year veterans doing C++. You can’t compete with them easily, so why not suggest a new language and gain the advantage? Certainly this will be a boon time for smart programmers willing to learn/practice Swift, since the playing field is level for most everyone outside of Apple.
- Old (professors) versus young (professors). In academia, you’re not likely to make a name for yourself as the 500th researcher into C++ compiler theory. However, create a new language, tout the improvements, teach it to all your students, and gain a reputation. And as I mentioned, the students can then go into the workplace and recommend the new language to supplant the older workers, and gain traction.
- Languages have a tactical advantage as well. In talking with the Missus, she brought up a good point – a new language like Swift means people will spend a lot of time ramping up and focusing on it – time they have to buy out from other things, like programming competitor’s products, perhaps (turns out she’s not alone in wondering this, as this column suggested – although in all fairness the author works for a company selling cross-platform tools, so there might be a wee bit’o bias there). Visual BASIC .net has little resemblance to VB6, but a whole lot to Java – coincidence? Not really, as this post from 2001 opined.
Frankly, I believe creating new languages are an act of ego, pure and simple. It’s possible to learn and work with a current language, or decide you know more than everyone else and create a new one. Besides the hubris inherent in that, there begs the question: Aren’t there better things to do with one’s life?
Myself, I don’t think about creating new languages anymore – I’m busy enough getting good at the ones that are already out there…