May 2, 2013
I used to know two programming languages at any one time; what I called a serious language and a what I called a scripting language. My initial serious language was C, my scripting language was Perl. The serious language was for client work, it paid the bills. The scripting language was for tools and toys (which is why many early web-apps were Perl CGI scripts).
We’ve been replacing C as our serious language since the 70s. C++ mostly succeeded, and became the official language of Microsoft Windows. Objective-C got a solid niche when Apple chose it for OSX, and later iOS. Java, became the serious language of web apps, and is now the language of Android. The two recent exciting developments here are Go and Rust.
In scripting-language world, Perl was largely replaced by Python and Ruby, and for web-app work by PHP.
So by now my serious language was Java, and my scripting language Python. But then three interesting things happened.
Two, Rails and Django came along and blew my precious artificial distinction all to hell.
The two recent serious-language choices I mentioned earlier, Go and Rust, both make good scripting languages too. The distinction is completely gone.
There’s always more to learn than I have time for. It makes my brain hurt sometimes. But in the words of Ward Cunningham, I am excited to go down the stairs because there is a lot more to it than I even knew and I learned it last night and I am going to go apply it and in another week I will be an expert. And you can do it too.