In the world of enterprise programming, the mainstream is broad and deep. Code is written predominantly in one of a few major languages. For some shops, this means Java, for others, it's C# or PHP. Sometimes, enterprise coders will dabble in C++ or another common language used for high performance tasks such as game programming, all of which turn around and speak SQL to the database.
Programmers looking for work in enterprise shops would be foolish not to learn the languages that underlie this paradigm, yet a surprising number of niche languages are fast beginning to thrive in the enterprise. Look beyond the mainstays, and you'll find several languages that are beginning to provide solutions to increasingly common problems, as well as old-guard niche languages that continue to occupy redoubts. All offer capabilities compelling enough to justify learning a new way to juggle brackets, braces and other punctuation marks.
While the following seven niche languages offer features that can't be found in the dominant languages, many rely on the dominant languages to exist. Some run on top of the Java Virtual Machine, essentially taking advantage of the Java team's engineering. And when Microsoft built C#, it explicitly aimed to make the virtual machine open to other languages. That detail may help make deployment easier, but it doesn't matter much to the programmer at creation time.
Either way, these seven languages are quickly gaining converts in the enterprise. Perhaps it's time to start investigating their merits.
There seems to be two sorts of people who love Python: those who hate brackets, and scientists. The former helped create the language by building a version of Perl that is easier to read and not as chock-full of opening and closing brackets as a C descendant. Fast-forward several years, and the solution was good enough to be the first language available on Google's AppEngine, a clear indication Python has the kind of structure that makes it easy to scale in the cloud, one of the biggest challenges for enterprise grade computing.
Python's popularity in scientific labs is a bit hard to explain, given that, unlike Stephen Wolfram's Mathematica for mathematicians, the language never offered any data structures or elements explicitly tuned to meet the needs of scientists. Python creator Guido von Rossum believes Python caught on in the labs because "scientists often need to improvise when trying to interpret results, so they are drawn to dynamic languages which allow them to work very quickly and see results almost immediately."
Of course, a number of libraries that offer much of what a scientist could want are available for Python. NumPy and SciPy are just two of the most notable libraries nurtured as open source projects and tuned for scientific computation.
Scientific and engineering enterprises such as pharmaceutical companies aren't the only ones tapping Python for research. Many Wall Street firms now rely heavily on mathematical analysis and often hire university scientists who bring along their habit of coding in Python. Python is becoming so popular on Wall Street that there are even proposals to require the prospectus for a bond to include a Python algorithm for specifying who gets what return on the investment.
Some may argue that Ruby and Python are hardly "niche" languages, but the truth is, from an enterprise perspective, they remain promising tools all too often pushed to the margin. That said, Ruby, or more precisely the combination of Ruby with the Rails framework known as Ruby on Rails, is becoming increasingly popular for prototyping. Its entrance into the enterprise came on the heels of the web 2.0 explosion, wherein many websites began as experiments in Ruby. 37signals, one of Ruby's many proponents, actually uses Ruby to deploy code.
The secret to Ruby's success is its use of "convention over configuration," wherein naming a variable foo causes the corresponding column in the database to automatically be named foo as well. As such, Ruby on Rails is an excellent tool for prototyping, giving you only one reason to type foo. Ruby on Rails takes care of the rest of the CRUD scaffolding for you.
Ruby on Rails sites are devoted to cataloguing data that can be stored in tables. Well known examples include web applications like Basecamp, Backcamp and Campfire from 37Signals, a collection of websites that knits together group discussions, debates and schedules. Ruby on Rails handles the formatting of these database tables, as well as decisions about what information to display. Using Ruby on Rails' naming convention, production quality code can be sketched up easily without much duplicate effort.
Many of the production grade Ruby websites run on JRuby, a version written in Java that sits squarely on the JVM. JRuby users get all of the JVM's prowess in juggling threads, a very valuable asset in production level deployments with many concurrent users.
Built for mathematicians to solve systems of linear equations, Matlab has found rising interest in the enterprise, thanks to the large volumes of data today's organisations need to analyse. Many of the more sophisticated statistical techniques that match people with advertisements, songs or web pages depend upon the power of algorithms like those solved by Matlab.
Expect Matlab use to grow as log files grow fatter. It's one thing for a human to look at the list of top pages viewed, but it takes a statistical powerhouse to squeeze ideas from a complex set of paths. Are people more likely to shop for clothes on Monday or Friday? Is there any correlation between product failures and the line that produced them?
MathWorks, the company behind Matlab, offers a diverse set of whitepapers showing how engineers are searching for statistical answers. Toyota Racing, for instance, plans its NASCAR entries by analysing tests in wind tunnels and other labs. Canada's Institute for Biodiagnostics is searching for the best treatment for burns.
There are also a number of open source alternatives, including Octave, Scilab, Sage and PySci, one of the aforementioned Python libraries. All of these tools help with the complicated statistical analysis that is now becoming common for firms trying to understand what the customer did and what the customer may want to do in the future.
Statistical analysis is being increasingly done in R these days, although some purists call the language S, its original name. Tibco sells a commercial version called S-Plus.
There probably won't be an S++ because the language is more a version of LISP or Scheme with additional features for computing statistical functions and then displaying the results in pretty pictures. If the boss wants the computer to churn through billions of lines of log files looking for patterns, clusters and predictive variables, R or S is a well-loved solution.
R is another Swiss Army Knife of numerical and statistical routines for hacking through the big data sets, collections big enough that it might be better called a Swiss Army Machete. Lou Bajuk-Yorgan, senior director of product management for Tibco's Spotfire S-Plus, says its software is used by a number of clients who are studying how business or engineering projects might work or why they fail to work. Analysing weather patterns to find the best places to build wind-powered generators is one example.
Does your server need to respond to many different independent messages concurrently? Do you need to parcel these requests out to different cores or servers in various parts of the world? That's practically the definition of the hardest part of enterprise computing. Erlang, an open source language first created by scientists at Ericsson Computing Laboratory, excels at these tasks.
CouchDB is just the beginning. A number of project managers dealing with "big data" are building systems for storing large volumes of data in a scalable way. Hibari, an open source project from Gemini Mobile, offers consistent, scalable clusters to store key-value pairs that repair themselves after failure. The functional structure makes it easier to create big applications that juggle multiple connections efficiently.
It may not be fair to call Cobol a niche language as it was once the dominant language in the enterprise. Grace Murray Hopper, famous for finding the first bug in the early mainframes, helped create the language in 1959 and it's been enhanced hundreds of times since. Cobol jockeys today get to play with object-oriented extensions, self-modifying code and practically every other gimmick.
That never earned it much respect in some circles. Or as famous academic Edsger Dijkstra put it: "The use of Cobol cripples the mind. Its teaching should, therefore, be regarded as a criminal offence." The folks in mainframe shops everywhere ignored this note and soldiered on. IBM calls one of the latest releases "Enterprise Cobol 4.2," but it could as easily be numbered 147.2 or maybe even 588.3. Cobol programmers like the syntax that's more like a natural language with actual nouns and verbs that form clauses and sentences, a technique that might call Ruby to mind.
While fewer schools are teaching new programmers Cobol, the language is far from dying, with many corporations continuing to invest in their Cobol stacks. A recent search of Dice.com showed 580 jobs mentioning Cobol and 1,070 mentioning Ruby. The bulk of the jobs seemed to involve counting money ("asset management") and counting doctor's visits ("Health IT"). While these are some of the same areas that first adopted computers for back office processing, the work still needs to be done.
Versions of the languages run on JVMs and .Net virtual machines making it possible to migrate code stacks away from mainframes to Linux boxes. Programmers who want to use a more modern IDE can search for plug-ins to Eclipse, a project that is gaining new support.
As libraries for programming video cards to do massively parallel jobs, CUDA extensions are not technically a language, they're just extensions to C. Still, some enterprise programmers are beginning to unlock the massively parallel architectures normally devoted to rendering realistic blood splattering in alternative game worlds. Moreover, recoding loops for massive parallelism means rethinking many of the idioms from basic C or C++ programming, making CUDA extensions all the more valuable.
Opportunities to tape CUDA extensions include machine vision, massive simulations and huge statistical computations. Many problems of data analysis are naturally massively parallel, making GPU processors worth a look. One of Nvidia's recent conferences devoted to CUDA applications included separate tracks devoted to computational fluid dynamics, computer vision, databases and data mining, finance and molecular dynamics. That list alone is long enough to explain why big enterprise coders are curious.
"It's clear that the GPU reached escape velocity," Dan Vivoli, senior vice president at Nvidia, said at the Nvidia conference after scientists had presented papers on how the GPU's parallelism can work in these domains. "The processor is now reaching all different disciplines of science and industry."