4 ms·
> implicit conversions, which you can get rid of at compile time using TypeScript or Flow. Javascript is fine if you don't use Javascript. > lack of explicit
by serge2k 10y ago
> implicit conversions, which you can get rid of at compile time using TypeScript or Flow.
Javascript is fine if you don't use Javascript.
> lack of explicit ints and ints with more than 31 bits
Javascript is fine, except where it's garbage.
I don't really have a problem with javascript. I just don't want to build anything of any real complexity with it.
- spion 10y agoWhat I'm saying is that JS actually has a small amount of quirks compared to other dynamic languages. Just think about PHP's named functions, which are always in the global scope. Except when they are in namespaces (oh hi another concept), and then its kinda weird because namespaces are relative. There are no first class named functions, but function expressions can be assigned to variables. Which must be prefixed with $. There are no real modules, or proper scope; JS in turn implements modules cleanly on top of closures with lexical scope and objects. In ruby, blocks are like lambdas except when they are not, and you can pass a block explicitly or yield to the first block implicitly. But there are also lambdas, which are different. Modules are again uselessly global, and cannot be parameterised over other modules (without resorting to meta programming). Oh yeah they are also another syntactical and semantical concept. Why not just `Module.new`? And there are classes, with private variables, which are prefixed with @. The above examples are just scratching the surface So yeah, I'm tired of people claiming that JS has the same amount of quirks as PHP. Boo hoo, its so horrible: no large ints, and implicit conversions. Compared to that, Ruby, PHP or (god forbid) Perl < 6 are total disasters. Pre-ES6, JS had the greatest power-to-number-of-concepts ratio of all current mainstream dynamic languages (1). With just prototypes, closures and objects, it manages to provide features that other languages do not with a dozen of base concepts (1) cheating a bit here, because you could argue that Lisp or Lua are mainstream enough.
- yedpodtrzitko 10y agoSo how exactly is a comparison of JS/PHP/Ruby relevant in a dicussion about a tool rewritten from JS to Python?
- spion 10y agoIt debunks the mistaken popular belief that JS is somehow a significantly worse language. Also, I can't help but wonder how this: http://docs.python-guide.org/en/latest/dev/virtualenvs/ http://docs.python-guide.org/en/latest/dev/virtualenvs/ is somehow better compared to npm...
- yedpodtrzitko 10y agook, let me rephrase that: "We rewrote this from JS to Python." "Guys but JS is better than PHP and Ruby!" Still cant see how is that relevant.
- spion 10y agoConveniently skipped the cancer part: "We rewrote this from JS to Python!" "They did this because JS is so horrible, its cancer!" "Uhh, actually, JS is not significantly worse. It does well when compared with typical mainstream dynamic languages" I think its worth debunking this supposed "cancerness" of JavaScript and the importance of the cited-to-death superficial "wat" talk on implicit conversions, by providing some perspective on where JavaScript's quirkiness actually lies on the popular dynamic languages spectrum. Maybe then we will be able to have an actual discussion on the pros and cons of the language choice (like runtime availability, and the fact that package managers don't know what the heck to do with node and npm's sandboxed-by-default modules), instead of the middlebrow "its all just JS insanity" dismissals