6 ms·
Personally I feel most comfortable in Python / Go / Java - while I have no problem kicking off a project in another language, those three just happen to hit the
by fallenhitokiri 10y ago
Personally I feel most comfortable in Python / Go / Java - while I have no problem kicking off a project in another language, those three just happen to hit the sweet spot for me for different use cases while not getting too much in my way.
I assume we are talking about some side / hobby project, not starting new projects for a client?
One thing I usually take into consideration is if there are libraries or frameworks that will drastically reduce the amount of boilerplate I have to write.
Starting a web application in golang for example is surely possible, but while deciding on a router, template engine and datastore I can already start writing code in Django / Play / RoR.
If it is not an experiment to get to know a language or language specific features I usually prefer to go with some battle proven libs I can rely on and try to not reinvent the wheel.
Another thing to take into account is what kind of app you are actually going to build. Small CMS for a non profit? Crunching lots of numbers? CLI tool? Will you have to maintain it? Does it have to scale? How much time can you put into maintaining and scaling?
Those questions alone should already reduce the number of choices. For a simple CLI tool you could package a VM or require the user to rely on package manager and language which is installed on the system or you simply use a language that compiles to an executable.
So I guess my checklist in order I ask myself the questions:
1. Does one of my goto languages fit the project?
2. Are there libraries that would help me build it?
3. Which language of the remaining ones annoys me the least?
- yarper 10y agoI also maintain a three pronged approach like this, where I keep one dynamically typed scripting language, one compile-to-native speedy one and one general purpose on a VM style language like Java. Currently my picks are: Rust -> to native + speedy Ruby -> nice relaxed scripting language Scala -> on a VM general purpose language Though the difference is more blurred from original intent these days - it used to look like: C Perl (5) Java / C# which is considerably more pronounced. The only addition I can make to this is I'd pick based on how I'm going to deploy too - Java is fairly difficult to deploy to desktops compared to Golang for example (for reasons like ensuring the correct JVM version is installed etc). Ruby is even higher on the difficulty to deploy scale, to the point where I probably wouldn't ship it to a customer non-dockerized (but if hosted internally, that's fine).