The new generation equips themselves with modern tools, including Ruby on Rails, Django, and jQuery without pause. Meanwhile, the traditional rapid prototypers equip themselves with the tools of .NET, Fortran, Java, and other “interpreted languages”; to this community, anything that isn’t C or assembly is a shortcut (C++ is for the lazy).
Enter the brave new world.
In the spirit of the old DARPA research conducted as part of the “High Productivity Computing” initiative, I propose a new framework for thinking about rapid prototyping. Instead of focusing on the languages themselves, I’ll focus on the cross-talk and intersections between languages. The result is what I’ll call the “holy grail of pragmatic computing” (aka rapid prototyping) – a development environment in which the fastest possible mockup of a concept can be delivered in a language-agnostic environment. This is only feasible if the proper collection of languages and API’s are known.
I argue that the language chosen for rapid prototyping matters far less than whether that language can tap into the multiplicity of optimized toolkits written in other languages. No one in their right mind writes hacking exploits in Clojure; no one writes high level number theory proofs in C; and no one writes graphic intensive games in Excel VBA.
I therefore hold the following truths to be self-evident by practitioners:
- Excel is best environment for manipulating datasets less than a gigabyte large (aka most around today)
- Clojure is the best environment for developing high level data transmutation and system block level algorithms
- Python is terrible but has so many libraries and modules written for it, it has become unavoidably implicated in any prototype
- Mathematica is the superior applied mathematic symbolic toolkit providing most immediate delivery of high end computational functions
The “truths” above will offend most programmers. If, however, you suspend disbelief and agree, the following matrix identifies the most useful tools around to enable this rapid protoyping:
Equipped with this simple matrix of cross-talk enabling APIs and tools to permit programs written in one language to utilize modules and libraries written in other languages, the modern programmer can achieve levels of efficiency optimization unthinkable to the former generation of developers.