Best programming languages for enterprise development

There's no shortage of choice when selecting the best programming languages for back-end apps. Learn what the ultimate decision depends on.

Programming languages are like standards; the nice thing about them is that there are so many to choose from. Selecting the best programming languages for back-end, server-side applications often has more to do with personal preference and expertise, an organization's or project's established code base, or readily available libraries than the language's technical purity or efficiency. Indeed, language popularity is undoubtedly strongly influenced by network effects: The more people that use a particular language, contribute code to a growing, open source corpus, and evangelize it to their friends, the more it gets used.

Unlike client application programming, where the choice of language is often dictated by the native SDK and integrated development environment (IDE), back-end systems offer more flexibility. Still, due to the learning curve and aforementioned network effects, language popularity tends to be persistent, changing slowly over time. According to the latest Developer Economics survey of about 22,000 mobile, desktop, Internet of Things and cloud developers, the languages most used for cloud development, which we'll take as a good proxy for back-end enterprise services, increased their level of both total mindshare and actual use as a primary language. In order, respondents listed the following as the best programming languages: Java; PHP; Javascript and offshoots like CoffeeScript, Node.js and TypeScript; C#; Python; and C/C++. As the authors of the report note:

In cloud programming, what we see is a consolidation in language choices, with all the popular languages gaining mindshare at the cost of the minority options. Languages such as F# and Lua have all declined from the already-niche position they had a year ago. ...

From our previous studies, we know that the choice of language is heavily influenced by the choice of cloud provider, with some providers pushing developers in a specific (linguistic) direction with supporting APIs and tool sets. We can see this with Microsoft Azure, which boasts the highest proportion of C# programmers, and Heroku, which attracts Ruby developers.

Despite their growing importance, cloud services aren't the only target for back-end applications, particularly in large enterprises with plenty of legacy systems, so we would add SQL to the list. Also, given its popularity as an easy-to-learn Web programming environment, Ruby on Rails -- a popular scripting language and application framework -- is also worthy of attention. Let's take a closer look at each.

The big eight back-end languages

Java: Now over 20 years old, Java promised the efficiency, performance and flexibility of C, with write-once, run-anywhere convenience through the use of platform-specific runtime environments. While early implementations didn't quite deliver on the performance goals, any deficiencies were long ago solved by Moore's Law. Java's original design goals explain its lasting popularity: It's simple, object-oriented, robust and secure, architecturally-neutral, portable, interpreted, threaded, dynamic, and high performance. The Developer Economics survey offers another clue to Java's increasing use: It's very popular with cloud providers and universally supported by cloud APIs. As their report puts it, "Cloud developers using Java therefore have great flexibility in selecting a cloud host, and the increase in the use of Java may reflect a desire to maintain that flexibility in the face of a changing market."

SQL: SQL is universally used to extract and update records from databases and, since virtually every back-end service includes a data store, has been a staple of back-end development for generations. Originally designed for relational databases like IBM DB2 and Oracle, SQL can also be used with NoSQL databases and key-value stores like Hadoop, MongoDB and OrientDB. SQL is supported by both relational and nonrelational cloud database services like AWS RDS and Redshift; Azure SQL and DocumentDB; or Google Cloud SQL and Datastore, which supports a subset of SQL functions.

PHP: PHP is a simple scripting language that is extremely useful on Web servers for dynamically generating content. It's included with every Web server, which calls the PHP module, interprets and executes the code -- which may call external databases -- and returns the resulting HTML. PHP is handy since it can be embedded in an HTML page itself, and some of the world's most popular sites and content management systems, including Facebook, Wikipedia and Wordpress use PHP for their client-facing interfaces. PHP often serves as the scripting language, along with Python or Perl, in Apache in the legendary LAMP stack. While convenient to use, PHP is slower than more modern scripting alternatives and is prone to security vulnerabilities such as SQL injection attacks, XSS (cross-site scripting) and session hijacking.

JavaScript: Although originally known as a Web client scripting language used to deliver native app functionality in browser apps like Google Docs and Sheets, JavaScript has also become popular as a back-end language. Node.js, the most popular server-side runtime environment, is available on both Linux and Windows server and supported by many popular IDEs including Visual Studio. A particular benefit of using JavaScript for Web apps is code compatibility across client and server modules, so-called isomorphic applications. According to the Developer Economics report, "Isomorphic JavaScript applications can run both client-side and server-side, with the back end and front end sharing the same code and utilizing the same rendering framework."

C# vs C/C++: C is the programming language that gave us Unix, Linux and most of the early Internet services, and after 40 years, the language's enduring popularity is a testament to its efficiency, flexibility and extensibility. C++ is --, slightly -- more modern extension that adds object orientation, operator and function overloading (polymorphism) and templates. Developed by Microsoft for the .NET framework, C# is the latest object-oriented evolution in the C family that trades off C++'s versatility for convenience by eliminating mistake-prone tasks like memory management -- C# has built-in garbage collection -- and access system-level APIs. Indeed, C# is more like Java in that it compiles to an intermediate form that uses the .NET runtime interpreter and sandbox, not a native executable.

Python: Like JavaScript and PHP, Python is an interpreted language; however, like Java, it is object-oriented and much more readable than C++. Indeed, Python syntax is so clear and understandable that it is now the most commonly used language in introductory Computer Science classes, supplanting Java -- and Pascal before that.

Ruby: Ruby is another interpreted, object-oriented language that shares many syntactical elements with Python or Java and like Python or PHP is often used as a Web back end. Ruby is commonly paired with the Rails framework to build database-backed applications that follow the model-view-controller design pattern originally popularized by Smalltalk. Ruby on Rails powers some of the largest online properties including Airbnb, Basecamp, Github and Hulu.

Enterprise back-end developers face an abundance of riches when choosing the best programming languages for their needs. While seasoned programmers will probably want to stick with the languages they know best like C++, Java or SQL, others, particularly if working on cloud-based Web applications, should start with alternatives like Python, JavaScript or Ruby that are both safer and easier to learn and use.

What do you consider to be the best programming languages to use for enterprise software development? Let us know.

Next Steps:
Knowing SDN languages
Is GO a good programming language?
PHP and secure programming languages

Dig Deeper on Core Java APIs and programming techniques

App Architecture
Software Quality
Cloud Computing