Wednesday, July 11, 2012

During the course of every coding project, a software developer must make dozens of decisions. Sometimes this involves solving a problem unique to a particular domain space or a particular architectural issue. Other times it’s about which language is best for a job. That is actually one of the most critical pieces of getting a project right.

Too often, languages are applied to a problem space where another language would be better. Here’s a quick look at some of the major business sectors and the languages best suited for each.

Financial Sector

The financial sector benefits from a number of languages. One of the key features for calculations is functional programming characteristics. When processing math based on financial calculations, functional paradigms often provide substantive performance benefits. This is why some of the key languages used in the financial sector, like Scala, are functional.

Another key need in the financial sector is languages that benefit from object-oriented paradigms with strong architectural patterns backed by a lot of guidance from the organizations around the languages. That’s why a lot of financial institutions have the majority of their applications written in the Java and C# languages. These languages provide maintainable options that a lot of other languages can’t do as well.

Top Languages: Scala, Java, and C#

Agency, Media, Advertising, and Design

With the overall design processes needed in creative work, languages that can prototype fast are in high demand. The best languages for this are generally scripting languages that are dynamic and contain minimal lines of code for maximum amount of functionality. Patterns and underlying code design elements are less important. Languages like Ruby, PHP and JavaScript are key for this.

In recent years, with mobile technology becoming the prominent computing medium, a larger focus has been put on developing for these platforms. Especially in agencies and design companies. Because of this some languages that are not ideal for fast-paced prototyping have come into use more frequently. Think Java for Android mobile and Objective-C for iOS devices like the iPad, iPhone and iPod.

Top Languages: Ruby, PHP, JavaScript, Java, and Objective-C

Enterprise Applications and Operational Software

In enterprises the key is reusable, pattern-based, large-scale, massive systems that are often complex and require layered architectural design approaches. This is where Java and C# shine. With a large ecosystem of server and framework support this makes these two languages ideal for enterprise scale and development practices.

Top Languages: Java and C#

Lean Startup and Small Software Business

Startups and small businesses face a brutal reality. They must continuously pivot, change, and adapt at an extremely fast rate to survive. Often this is on a minimal budget. Smaller business entities must prototype and iterate on apps and designs multiple times where many other entities may only make small or no changes to a software package.

Because of this, small business and startups often seek out languages that allow for extremely fast prototyping, extensive framework support, and have a strong community and “hacker mentality” around the languages. This often leads startups and small business to languages like Ruby which is built to work against the Rails and Sinatra Frameworks. There’s also the PHP Scripting language, which also supports many frameworks to make prototyping and deployment fast and easy. And recently JavaScript has even jumped into the arena with the advent of Node.js (Node.js is a server side technology that allows developers to build entire web applications entirely in Javascript). Notably, there are significantly large communities of very committed developers around Ruby, PHP, and JavaScript.

Top Languages: Ruby, PHP and JavaScript

Research and Development, Scientific, and Academic

Scientific Research and academia require languages that support highly accurate mathematics, extremely fast execution, and a focus around the implementation of the language versus any specific organizational characteristics like object orientation. Because of these needs, the academic and scientific communities often use languages like Scala for mathematical calculations, C++ for heavy processing, and even languages like Erlang and Python to accomplish their tasks. Since most of the tasks are much more focused around single outcomes, these languages are an easy choice in most of these environments.