Hacker News new | past | comments | ask | show | jobs | submit login

> It's a poorly designed language that requires multiple layers of tooling just to make it acceptable for use in larger projects.

The thing is, most of this tooling isn’t even related to the language itself. In NodeJS, you need basically none of your the tooling. Here are reasons why tooling is used:

- Webpack. Files need to be minified because code is downloaded nearly every time you access a website. (Not a language problem.) This also leads to a whole other class of optimizations like dead code elimination.

- Babel. Can’t guarantee client-side runtime layer, so need to make sure new syntax is transpiled. Not a language problem.

- Eslint. Ideally you’d use a linter in any server-side project, like PHPCS for PHP.

- Typescript. This is a language problem. :p At least PHP has some types now!

On Node, you don’t need webpack or babel or any similar set of tools, because Node can resolve imports and you know which Node version you support. Other tooling, like dependency management and linting, would be normal in other languages too.

On the client, you need a huge set of tools just to deal with the fact that your software is literally downloaded over the internet as part of the startup process. That comes with a huge set of performance optimizations related to bundle size that other languages simply don’t need to care about. That’s why there’s so much extra tooling in the JS ecosystem.




It's a fair point. TypeScript + Node is mostly fine.

My main issue with using TypeScript is that you're building in the JavaScript ecosystem. For most things you'll need to use JavaScript packages which typically only have a few years of maturity to back them up.

There's also no standardised way of building things in TypeScript and this was a similar problem PHP had when I first started working with PHP. Back then it was common for developers to copy and paste bits of code from all over the internet into their projects. Every project would be structured differently. The tooling wasn't standardised. Etc..

But today PHP feels surprisingly mature. TypeScript is like trying to build something in Ruby without Rails, or Java without Spring. And now PHP has Laravel which is used almost universally in new PHP projects.


Is Babel even needed anymore? Only for the more experimental features like decorators etc.

Now IE is dead most people are using Chrome/WebKit based browsers like Edge/Google Chrome/Opera/Safari or other standards-compliant browsers like Firefox.




Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: