christopherfrancia

Wmfrancia

wmfrancia

5 minute read

Code

Okay the title is technically a lie, since there is no magic language that is good for every task. If you think there is, then you probably use Javascript, and are still wrong.

What this is really about is your base language, the language that will power the core of whatever application or system you are designing. More specifically it is dealing with languages that are good for a large swatch of application purposes and will not cover extremely niche languages.

Before choosing a language you have to understand the end goal, for our purposes we will assume this is an enterprise level application.

Java

Java is one of the more popular languages out there and when applied correctly is a great language. However one of its biggest failings is the ability to write really poor applications with it. In fact very few “Java” developers have the experience and skill to develop an enterprise application that would outperform some of the other languages on this list. However Java does have an extremely active community and if you are willing to take the time to learn how to use it right it can be a great choice.

Python

Personally I am not a huge fan of Python, its nothing in particular I just feel anything it can do another language can do better. Really what makes Python so popular is not so much the language but the community and extensive libraries for it. There is a lot of benefit to that, however its performance on average is below other languages and it can be a costly upkeep, I recommend keeping Python as task based to augment your core application. But if speed and cost are not major concerns Python is a great choice it has a large pool of developers and is easy to work with between teams.

C/C++

Only for the strong of heart, and very experienced. Few languages will let you get the power and optimizations you can from these however they are unforgiving, and even great programmers often make crucial errors using them. It has been around a long time and has a lot of contributions to it. However finding experienced developers for it is costly and difficult. Much of the performance improvements you can achieve with these can be closely matched by other languages. If you are looking to eek out every nanosecond of improvement than this is a great language, otherwise choose something else.

Rust

A newer language Rust has grown in popularity for its ability to allow low level system access to increase performance. A great alternative to C/C++ with a very engaging community. It has a slightly larger learning curve than some of the other newer languages out there, but it more than makes up for that with the power it provides. If you need the performance of C/C++ and need security that the code will be safe, then Rust is a great option.

Elixir

Another new comer Elixir is based on Erlang/OTP and as such operates differently, although Elixir has attempted to make working with Erlang/OTP more C Like it still takes some time to get used to. However you will not find a language better suited for massive concurrent connections and robust reliability. It has one of the most passionate communities out there and is widely used in enterprise scale applications by some of the top companies in the world. Highly recommended if your application will be handling high frequency connections and doesn’t require significant compute resources.

Swift

Mainly used for mobile applications, Swift has been gaining traction as a solid choice for many non mobile applications. Backed by Apple, it has a good community and allows for quick development of applications, with comfort that they will be fairly stable out of the box.

Go

My personal favorite. Go is really a marriage between the benefits of Elixir and Python. Very easy to learn, and has a fantastic community. It handles concurrency extremely well and is good a compute tasks. It is one of the few languages with support for numerous ML frameworks. It is one of the fastest growing languages out there and is backed by Google. It is a perfect balance between performance and ease of use, while it has limitations in terms of how much of the low level system you can tweak its default settings are powerful enough to handle most enterprise applications needs.

Languages not mentioned (for good reason).

PHP, Javascript, Ruby, .NET

While these languages are good languages, There are just better options for your core application that outweigh any pros these provide. These languages are great for tasks to augment your application but should not be your choice for your core in this day and age. Javascript is probably one of the most popular languages out there however, it really is not suited well for Enterprise needs. Anything it can do can be done better by any of the above languages. Die hard Javascript fans will disagree with this, but such is the developer world.

My personal recommendation for a enterprise system, is a mixture of Elixir and Go, together they provide immense power and reliability. They will allow your application to scale with ease while also being maintainable.

Recent posts

See more

Categories

About

I have spent the last 10 years in product and technology, before that I worked as a television producer. I love history, technology, and really geeky things.