4 ms·
Caveat Emptor :: Disclaimers 1. This is based on my experience, so YMMV and there are many cases where more than one way can work well! 2. I appreciate pragma
by jaytaylor 9y ago
Caveat Emptor :: Disclaimers
1. This is based on my experience, so YMMV and there are many cases where more than one way can work well!
2. I appreciate pragmatism. Try to use an appropriate tool for the job.
3. I identify as a polyglot, and have used Go and node.js extensively for 8+ years (and other languages for many more years than this).
4. Of the three languages listed, Rust is my weakest. That said, I always enjoy reading about it and learning about the design philosophy and choices.
---
Rust: If/when I had the luxury of enough time to actually learn rust :) ..and one or more of the following were true:
- Cases requiring eeking out max performance and guarantees about program safety / correctness.
- Real-time or soft (near) real-time is a serious requirement.
- targeting embedded applications or other highly resource-constrained runtime environments.
Node.js: Great for frontend work and single page apps. Also a goto when I know there's already a decent library written that will do what is required.
Go: Shines for a few classes of problems:
- Command-line apps and systems work - it can be a very quick way to a working solution, and also reasonable to create reliable and robust applications compared to many other languages.
- Situations where ease of deployment is important.
Distributing a single binary can eliminate drastic amounts of complexity.
- Problems where it's useful to trivially spin up many concurrent processes.
Then, for most other things there's Python, bash, Java / Groovy / JVM, and C.
---
grin
No matter what, have fun!