programming in the
twenty-first century

It's not about technology for its own sake. It's about being able to implement your ideas.

What's Your Secondary Language?

Most of the "Which programming language is best?" discussion is irrelevant. If you work at a company which uses C++ or Python or Java, then you use that; there's no argument to be had. In other cases your options are limited by what's available and well-supported. If you want to write an iPhone game, Common Lisp is not on the menu of reasonable options. You could figure out a way to make it work, but you're fighting the system and C or Swift would almost certainly be less stressful in the end.

At some point in the development of your mandated-to-use-Java project, you'll need to do some quick calculations on the side, ones that won't involve Java. I never use a faux plastic-button GUI calculator for that; I bring up an interpreter with an interactive command prompt. Going beyond math, algorithms are easier to prototype in a language that isn't batch-compiled and architecture-oriented. When I was working on a PlayStation 2 launch title, I had never implemented a texture cache before, so I experimented with some possibilities in Erlang.

When there's debate in a project meeting about some topic and everything being said is an unproven opinion, the person in the back who immediately starts in a small prototype to provide concrete data is the only person I trust.

The important question is not "Which programming language is best?" but "What's your secondary language?" The language you reach for to solve problems, prove that ideas work before implementing them for real, and to do interesting things with files and data.

The criteria for judging a development language and secondary language are completely different. The latter is all about expressiveness, breadth of readily available capabilities, and absence of roadblocks. Languages without interactive command lines are non-starters. Ditto for languages that are geared toward building infrastructure. You want floating point vectors now, and not ways to build overloaded floating point vector classes with private methods.

My secondary language has jumped around quite a bit and at the moment I have two. It was J for a while, because J is an amazing calculator with hooks to a variety of visualizations. At some point J shifted to being more cross-platform and lost much of its usefulness (this may or may not still be true). Erlang is my go-to for algorithms and math and small tools, but it's not something I'd use to build a GUI. Recently I've used JavaScript for anything interactive or visual. I know, I know, those scope rules! But I can sit down and make stuff to show people fairly quickly, and that outweighs quibbles I have with the language itself.

permalink January 22, 2016



twitter / mail

I'm James Hague, a recovering programmer who has been designing video games since the 1980s. Programming Without Being Obsessed With Programming and Organizational Skills Beat Algorithmic Wizardry are good starting points. For the older stuff, try the 2012 Retrospective.

Where are the comments?