Need advice about which tool to choose?Ask the StackShare community!
I use Powershell for everyday scripting, text manipulation, simple REST api testing and other tasks. My choice to use Powershell was primarily based on availability. At the time (2010), every company machine I was using or going to use was Windows and guaranteed to have Powershell. Python was an option but not guaranteed to be installed on every machine. The choice was not based on ease of use, flexibility or support.
We’re a new startup so we need to be able to deliver quick changes as we find our product market fit. We’ve also got to ensure that we’re moving money safely, and keeping perfect records. The technologies we’ve chosen mix mature but well maintained frameworks like Django, with modern web-first and api-first front ends like GraphQL, NextJS, and Chakra. We use a little Golang sparingly in our backend to ensure that when we interact with financial services, we do so with statically compiled, strongly typed, and strictly limited and reviewed code.
You can read all about it in our linked blog post.
We have a lot of experience in JavaScript, writing our services in NodeJS allows developers to transition to the back end without any friction, without having to learn a new language. There is also the option to write services in TypeScript, which adds an expressive type layer. The semi-shared ecosystem between front and back end is nice as well, though specifically NodeJS libraries sometimes suffer in quality, compared to other major languages.
As for why we didn't pick the other languages, most of it comes down to "personal preference" and historically grown code bases, but let's do some post-hoc deduction:
Go is a practical choice, reasonably easy to learn, but until we find performance issues with our NodeJS stack, there is simply no reason to switch. The benefits of using NodeJS so far outweigh those of picking Go. This might change in the future.
PHP is a language we're still using in big parts of our system, and are still sometimes writing new code in. Modern PHP has fixed some of its issues, and probably has the fastest development cycle time, but it suffers around modelling complex asynchronous tasks, and (on a personal note) lack of support for writing in a functional style.
We don't use Python, Elixir or Ruby, mostly because of personal preference and for historic reasons.
Rust, though I personally love and use it in my projects, would require us to specifically hire for that, as the learning curve is quite steep. Its web ecosystem is OK by now (see https://www.arewewebyet.org/), but in my opinion, it is still no where near that of the other web languages. In other words, we are not willing to pay the price for playing this innovation card.
Haskell, as with Rust, I personally adore, but is simply too esoteric for us. There are problem domains where it shines, ours is not one of them.
Pros of JavaScript
- Can be used on frontend/backend1.6K
- It's everywhere1.5K
- Lots of great frameworks1.1K
- Fast880
- Light weight729
- Flexible407
- You can't get a device today that doesn't run js373
- Non-blocking i/o278
- Ubiquitousness227
- Expressive182
- Extended functionality to web pages44
- Relatively easy language40
- Executed on the client side37
- Relatively fast to the end user22
- Pure Javascript18
- Functional programming13
- Async6
- Because I love functions4
- Setup is easy4
- Full-stack4
- JavaScript is the New PHP4
- Like it or not, JS is part of the web standard3
- Can be used in backend, frontend and DB3
- Its everywhere3
- Expansive community3
- Future Language of The Web3
- For the good parts2
- Love-hate relationship2
- Popularized Class-Less Architecture & Lambdas2
- Everyone use it2
- Easy to hire developers2
- Supports lambdas and closures2
- Evolution of C2
- Versitile1
- No need to use PHP1
- Can be used both as frontend and backend as well1
- Agile, packages simple to use1
- Can be used on frontend/backend/Mobile/create PRO Ui1
- Powerful1
- It's fun1
- Its fun and fast1
- Most Popular Language in the World1
- Hard not to use1
- Stockholm Syndrome1
- Photoshop has 3 JS runtimes built in1
- Promise relationship1
- It let's me use Babel & Typescript1
- Function expressions are useful for callbacks1
- Scope manipulation1
- What to add1
- Clojurescript1
- Client processing1
- Everywhere1
- Only Programming language on browser1
- Nice1
- Client side JS uses the visitors CPU to save Server Res0
- Because it is so simple and lightweight0
- Easy to make something0
- Easy0
Pros of Python
- Great libraries1.1K
- Readable code918
- Beautiful code812
- Rapid development762
- Large community667
- Open source412
- Elegant374
- Great community263
- Object oriented256
- Dynamic typing205
- Great standard library67
- Very fast50
- Functional programming46
- Scientific computing32
- Easy to learn31
- Great documentation29
- Matlab alternative25
- Productivity22
- Easy to read21
- Simple is better than complex19
- It's the way I think17
- Imperative17
- Very programmer and non-programmer friendly14
- Powerful14
- Fast and simple13
- Free13
- Powerfull language13
- Scripting12
- Explicit is better than implicit9
- Machine learning support9
- Ease of development8
- Unlimited power8
- Import antigravity7
- Clear and easy and powerfull7
- It's lean and fun to code6
- Print "life is short, use python"6
- There should be one-- and preferably only one --obvious5
- Python has great libraries for data processing5
- High Documented language5
- Although practicality beats purity5
- I love snakes5
- Great for tooling5
- Flat is better than nested5
- Fast coding and good for competitions5
- Readability counts4
- Lists, tuples, dictionaries3
- Plotting3
- Socially engaged community3
- Rapid Prototyping3
- Complex is better than complicated3
- CG industry needs3
- Great for analytics3
- Beautiful is better than ugly3
- Multiple Inheritence3
- Simple and easy to learn2
- Generators2
- Special cases aren't special enough to break the rules2
- Now is better than never2
- If the implementation is hard to explain, it's a bad id2
- If the implementation is easy to explain, it may be a g2
- Import this2
- No cruft2
- Easy to learn and use2
- List comprehensions2
- Because of Netflix1
- Pip install everything1
- Easy to setup and run smooth1
- Web scraping1
- Only one way to do it1
- A-to-Z1
- Many types of collections1
- Flexible and easy1
- Better outcome1
- Batteries included1
- Powerful0
- Pro0
Pros of Rust
- Guaranteed memory safety120
- Fast106
- Open source71
- Minimal runtime64
- Pattern matching56
- Type inference52
- Algebraic data types50
- Concurrent45
- Efficient C bindings42
- Practical37
- Best advances in languages in 20 years29
- Safe, fast, easy + friendly community21
- Fix for C/C++21
- Closures17
- Stablity16
- Zero-cost abstractions15
- Extensive compiler checks13
- Great community11
- No NULL type8
- No Garbage Collection8
- Completely cross platform: Windows, Linux, Android7
- Super fast7
- Async/await7
- Safety no runtime crashes6
- Great documentations6
- High performance5
- High-performance5
- Fearless concurrency5
- Guaranteed thread data race safety5
- RLS provides great IDE support5
- Generics5
- Painless dependency management4
- Prevents data races4
- Macros4
- Compiler can generate Webassembly4
- Helpful compiler3
- Easy Deployment3
- Support on Other Languages1
Sign up to add or upvote prosMake informed product decisions
Cons of JavaScript
- A constant moving target, too much churn21
- Horribly inconsistent20
- Javascript is the New PHP13
- No ability to monitor memory utilitization8
- Shows Zero output in case of ANY error5
- Can be ugly4
- Thinks strange results are better than errors3
- No GitHub1
Cons of Python
- Still divided between python 2 and python 348
- Poor syntax for anonymous functions26
- Performance impact26
- GIL18
- Package management is a mess18
- Too imperative-oriented13
- Hard to understand12
- Dynamic typing10
- Not everything is expression8
- Indentations matter a lot7
- Explicit self parameter in methods7
- Very slow7
- Poor DSL capabilities6
- No anonymous functions6
- Requires C functions for dynamic modules6
- Hard to obfuscate5
- The "lisp style" whitespaces5
- The benevolent-dictator-for-life quit4
- Lack of Syntax Sugar leads to "the pyramid of doom"4
- Threading4
- Fake object-oriented programming4
- Incredibly slow4
- Not suitable for autocomplete3
- Official documentation is unclear.3
- Circular import2
- Training wheels (forced indentation)1
- Meta classes1
Cons of Rust
- Hard to learn21
- Ownership learning curve20
- Unfriendly, verbose syntax7
- Variable shadowing3
- Many type operations make it difficult to follow2
- High size of builded executable2
- No jobs2