When trying to find the best language to start with, or which language your development department should stick to, it can be difficult. The truth is, there just is no way of having a cookie-cutter answer for each individual entity. Everyone’s needs are different.
What this article will try to do is show the parts needed when considering which language to go with.
If you have not read the first article in this series, please feel free to check it out HERE
This portion is often difficult to explain without an example
Let’s isolate a few likely examples.
Some Variable Definitions
I = individual person
# = “has a”
[Length] = an array
I # Restaurant
I # eCommerce Store
Each has a “need” to grow their online infrastructure.
These two common examples would bring a person searching for the best language with the same motivations you are having now.
I would like to add an ordering system to increase efficiency at their restaurant.
I already has an online presence, but would like to expand into an automated newsletter to reach a larger base of people.
Both of these examples arguably could be done with the exact same language. Some languages would be better than others to complete these two tasks, but a language like Php, Java, C# or even Go could tackle these two problems with unnoticeable difference in performance (again, arguably).
So then… what language?
Sorry, but there is one more step before choosing what language to go with.
This is the main point that everything before this point has lead up to. PRIORITY
What is the priority? The common theme in most scenario’s is more user engagement and more financial transactions addressed to your pocket.
Don’t be afraid. Perhaps you decided to overlook this key term, but it is exactly what you want. User engagement in it’s most primitive form, is an application (website, desktop app, mobile app, etc) directing users to the places that those application designers want users to be directed, and finally those users completing that defined task (product purchase, newsletter sign up, etc.).
So to deliver the #1:
SetPriority(time, budget, transactional speed, computational speed, …)
Time and Budget
If time and budget are the main priority, then you should skip development all together at this time, and try a content management system framework. Systems like WordPress (php) will get you going.
What is a content management system?
If speed is your concern, then you finally made it to the last section of this series
Choosing a General Purpose Language
Time and Budget
If you do not want to use a ready built framework, but you still want a language to program with, then consider the major benefits of some languages standard plugin sets.
Java is Free and provides many Free libraries like Spring for quick web deployments, all the way to Game Engines like jMonkeyEngine. This would provide for great Flexibilty in application development in the future.
Php is the easiest language to get going with and provides a vast free to view community of problems solved in Php. This would allow you to enjoy the freedom of staying away from strict rules and focus on outputting a useable product faster.
C# also has the same features as Java, and arguably better plugins and Ide’s then any other language in terms of getting started. A word of caution however, most of the extensions of C# require a bit more overhead than others.
Go would be the worst language in under time constraints, as it is new and can be hard to track down answers to specific programming questions.
Transactional speed is the time it takes for a database related query to be created, be requested, and then output by a language.
Theoretically, there is very little difference in simple statement. For example, if you see your application having a few transactions like:
SELECT id, name FROM table
INSERT INTO table (‘name’)
These two statements get called 40,000 times a day.
In the above scenario transactional speed should not be an issue. Even php that gets dogged for being so old and slow, can be built and then heavily cached, in which case, can contend with the likes of even the latest and greatest languages.
For simple transactions don’t fret, pick what is most comfortable for you, as you will not get a great amount of return on investment if you spend alot of extra time trying to build something out of a language that takes you twice as long to write and gives unnoticeable results.
On the other hand if your site for example will be running a streaming service of some sort and your service heavily depends on a more than satisfactory transactional fortitude, then it would be wise to splurge on time and adopt a language that pops up on top or transactional benchmarks like Go and Rust
The final consideration that will be discussed is by far not last, but often people find themselves walking into languages that excel in computational speed, but fall short in other areas, and thus gets thrown away as a bad language.
Java is a good and bad example of this. Of the modern high-level languages out there, Java runs circles around similar languages in computing matrix multiplication as well as many other mathematical computations. This makes sense as it is a derivative of C and thus a derivative of Fortran.
You likely would not build a 5 page website on a Spring or Maven setup in Java, unless ofcourse those 5 pages are used to cruch the numbers on massive datasets.
So naturally when a programmer decides to go with Java to build a 5 page website they become frustrated when it takes 2 minutes to build a glassfish server.
If you have the time and budget to consider speed in you design, then the best way to build applications is with alot of different microservices built in the best language for that service.
The Bottom Line
None of this, or all of this might be useful to you. The most important thing is to at minimum consider all of the points made. Time, money, and speed should be considered.