Choosing A Language
Depends on the type of application you are building
There will always be trade offs
First decision, and most costly if need to change due to lack of features/capabilities the further down the road
Example of changing is Twitter moving from Ruby to JVM https://www.infoq.com/articles/twitter-java-use/
Necessary to think about when starting a greenfield project.
A project already made, ie brownfield, you will not change the language but use the exisitng one. Only relunctly and if there are very good reasons to.
No language is perfect, and there are costs in learning and hiring
Criteria
technical qualities
ie support for concurrency
How the language works and does that help your situation
Dont need to have the best langugae, but should filter out the langugaes that wont help you achieve your aims
Popularityy
Good documentation, solutions easily found
lots of maintained libraries
Supported by strong community opensource/paid by volunteers or companies
Ease to hire
Community
Good developers, easy to hire
Good practices, less mistakes
Platform used
microsoft or apple or unix
Staff
knowledge/skills base
Areas
enterprise
jvm (java/kotlin/scala), c#, c/c++
academic
python, julia, R, matlab, mathematica, prolog, haskell
Concurrent/reliable
erlang, go, elixir
systems
c/c++, rust
Game development
c++, C#
Rapid And Productive Web Development
javascript, typescript, php
Apple
swift, objective c
All purpose
c#, java
Links
https://tomassetti.me/best-programming-languages/
https://softwareengineering.stackexchange.com/questions/122900/how-managers-choose-programming-languages
https://eng.uber.com/tech-stack-part-one/
For enterprise
concerns
Secruity
not vulnerable to secruity attacks
Scalability
Handle rising user demands in the future
Robust
Access to lots of data
Integration with existing systems
Operational efficiency
speed and performance of the application
money spent is worth it
Skillset
Development speed
in creating features, maintaining and fixing bugs
Reputation
built and maintained by a company
large software systems built on dynamically typed and interpreted languages have all kinds of issues from correctness to performance.
Why use java
widely used
older systems written in java
backwards compatibility, stable platform
support from owner and community
Mature libraries and frameworks, and lots of them
Easy to hire, comp sci grads learn java
Highly scalable, good support for concurrency, multithreading
Good testing libraries
Good support for integration (servlets/http, message brokers)
Good integration with databases
platform independent
No licensing costs (if on non oracle)
statically typed, compiler spots problems first
Great IDEs
Good build tools (maven)
JVM, tooling (jconsole), efficient garbage collection, memory management
Easy to learn
Better secruity
links
https://www.devteam.space/blog/why-should-you-use-java-for-your-backend-infrastructure/
Problems with Javascript/NodeJS
Problems with Python
Migrating to new versions
Low performmace
there are implementations that run on the jvm
Difficult to deploy
https://www.nylas.com/blog/packaging-deploying-python/
Scalability issues due to global interpreter log
Dynamically typed
no support from compiler, problem occurs at runtime
hard to refactor
hey’re much more costly to debug
GC tuning and memory management strategies are much more mature in JVM than Python (which only provides a basic interface)
hat most unattended 24x7 software systems require monitoring, and this is not yet part of CPython to the extent it is supported in JVM for instance. While you can build your own metrics in Python and expose them, JVM has them ready.
Another disadvantage is scalability. There is something called global interpreter log. This thing ensures that from a given process nothing can really run in parallel without spawning a complete new process which is expensive.
links
https://www.analyticsindiamag.com/why-has-python-failed-to-penetrate-the-enterprise-development-sector/
https://www.sayonetech.com/blog/can-your-enterprise-choose-python-software-development/
Ideal languages
https://www.youtube.com/watch?v=MPyUvtPFDSg The Ideal Programming Language • Richard Feldman & Erik Doernenburg • GOTO 2021
Last updated