Richard Bucker

Choosing the right programming language

Posted at — Sep 1, 2014

Choosing the right programming language for your next killer application could be harder than you think as there a number of dynamics out there that represent the facts and bike shedding opinions that represent the fiction.I recently read two articles that put things into perspective. The first was TCL for network programming and the second was Boeing’s 777 is 99.9% Ada.The thesis for the TCL article comes down to this: TCL is not going to be overrun by a 100mb network. And the thesis for Ada: getting all of the developers “working together” (if I remember my Ada it has a strong producer/consumer contract) and built-in testing.There are a lot of modern and legacy programming languages to choose from. No one language (or framework) is truly better than the other. They all have their warts.package managementversion skewtabs vs spacesfunctional vs procedural vs object-orientedmindsharecross platforminterpreted vs compiledstatic vs dynamic linked libstype systemdynamic declarationtestingcompile timecompile-time vs runtime dependenciesinstallation magiclibraries (CPAN is the aging Rock Star but still rocks hard)I’m certain there are other qualities. This was not meant to be exhaustive.My current go-to language is Google’s Go¬†and there are a number of reasons:static compiledsupport for Linux, BSD, Darwin/OSX, Windows along with capable cross-compilinggood standard librarytesting frameworkfast compiler/tool chainno need for autotoolsstrong CI tools like drone and travisI really like being able to transcode messages using structure tagsconcurrency and channels are cool but not necessarily awesomeI’ve complained about Python3 and Perl6, in the past, but I still like them both; however; I think the next app/tool should be in TCL. (active state could not afford to continue it’s development if there was no market for it) I would also add that TCL was the language that we used to develop the command and control code for the SnapGear brand of firewall/routers.