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.
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.
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.
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.
What do you consider to be the best programming languages to use for enterprise software development? Let us know.