8 ms·
No, I think criticism is a good thing. Rants are good. They highlight issues with our current tools and over time that's what leads to progress. Using a plow is
by fauigerzigerk 10y ago
No, I think criticism is a good thing. Rants are good. They highlight issues with our current tools and over time that's what leads to progress. Using a plow isn't just different from digging in the dirt with a stick. It's better.
For instance, nulls are clearly a problem. After countless rants we're seeing languages that have better ways to deal with missing or optional values enter the mainstream (Swift, Scala, Rust).
J2EE's original idea to configure a system through separate XML files was heavily criticised for being too bureaucratic. After countless rants we got configuration by convention, better defaults and annotations as part of the source language.
Of course progress is not a straight line and quite often it's not clear what is and isn't progress because there are many trade-offs. But where would we be without a constant process of criticising our tools?
- lootsauce 10y agoTotally not against solid critique. But it becomes a culture, a signal of intellectual superiority. Which is too easy. You can be, and I have been highly productive in plain ole JavaScript. Same with Java, Same with Ruby, same with Python. Are the language debates irrelevant, absolutely not. But “Node.js is one of the worst things to happen to the software industry” Hey if it is then I fully submit that I'm just some stupid fool that should rage quit the internet and give up because.... Wait no that would be stupid.
- richmarr 10y agoCompletely agree. I'd actually like to list the worst things (IMO) to happen to the software industry. (1) Marketing of computers at boys resulting in a generation of girls being excluded. (2) Software patents suffocating innovators. (3) DMCA & international equivalents (4) Daylight savings time. (5) A generation of programmers being taught that anything other than "OOP best practice" was heresy I'm sure there are plenty I'm missing. Does one particular programming environment deserve to be listed with that stuff? Personally I think it's a pretty ludicrous suggestion.
- paublyrne 10y agoDaylight savings time? What's the connection to the software industry?
- ehnto 10y agoIt has to be accounted for in time and date calculations and that poses a new set of challenges. It is also just one of many geographical, cultural, and temporal challenges that need to be addressed by any business system relying on accurate international dates and timing.
- TeMPOraL 10y agoDST adds complexity to the already ugly mess timezones are. Timezones are literally driven by real-world politics, and they can be as messy as only humans can invent. See also: http://naggum.no/lugm-time.html http://naggum.no/lugm-time.html
- typicalbender 10y agoDealing with time-zones and daylight savings time (which countries have it and which don't) can be a very challenge and messy problem that is really easy to get wrong. Heres a pretty good video from computerphile on the subject https://www.youtube.com/watch?v=-5wpm-gesOY https://www.youtube.com/watch?v=-5wpm-gesOY
- devishard 10y agoInstead of responding to the fact that JavaScript: 1. Has no adequate threading model. 2. Has no reasonable type system. 3. Has better alternatives on the server side. ...you're making it personal, and about the people. Look at your post; you're just accusing the critics of Node of feeling "intellectually superior". That's just an ad hominem attack. And you think that critics want you to rage quit the internet and give up? No, that's not what critics of Node want. Or at least, that's not what I want. What I want is for people to either acknowledge the problems with Node and fix them (unlikely), or start using better alternatives on the server side, and start investing more in WebAssembly and langauges targeting WebAssembly, so we don't have to use JavaScript any more. I want this because as long as Node/JavaScript are around, I have to either deal with those horrible tools, or not take those jobs. This isn't about feeling superior, it's about improving my life by using tools that aren't godawful.
- jamescostian 10y ago1. There are two built-in solutions to this (as well as a slew of other solutions in modules), the cluster module and the child process module: https://nodejs.org/api/cluster.html https://nodejs.org/api/cluster.html and https://nodejs.org/api/child_process.html https://nodejs.org/api/child_process.html 2. JS's duck typing is thought to be a "feature" to some and a "bug" to others, so if you think it's a bug, use TypeScript or Flow. They'll give you "reasonable type system[s]" 3. Nice opinion
- vonmoltke 10y ago> 1. There are two built-in solutions to this (as well as a slew of other solutions in modules), the cluster module and the child process module: https://nodejs.org/api/cluster.html https://nodejs.org/api/cluster.html and https://nodejs.org/api/child_process.html https://nodejs.org/api/child_process.html Process spawning and threading are two different but related mechanisms. The former is much more expensive and hard to use with optimization techniques like pooling. It also forces message passing for IPC rather than shared memory. > 2. JS's duck typing is thought to be a "feature" to some and a "bug" to others, so if you think it's a bug, use TypeScript or Flow. They'll give you "reasonable type system[s]" Nothing that transcompiles into JavaScript can fix JavaScript's lack of a native integer.
- callumlocke 10y ago> Rants are good. Rants get me down. It really is possible to be constructively critical. This author failed.
- s_kilk 10y agoA good rant should be like political satire, a biting critique using absurdism to highlight the truth of the matter. A bad rant is usually just impotent rage without wit.
- justin66 10y agoYeah, but think about how infrequently political satire is actually good and you'll see where some of us are coming from on this.
- carlosfvp 10y agoHave you read the whole page? Just the subdomain is "HARMFUL". The page is a compilation of good and BS critics for any language.
- HeavyStorm 10y agoHave to agree (although I'm one to rant)
- m4nu 10y agoRants without proposing any alternative solutions can't redeem any use at all. Their only reason to be is to wrongly make their authors feel smart or skilled.
- humanrebar 10y agoThere is value added in identifying and clarifying a problem. It's partly how we, as a group, find solutions to bigger problems.
- EugeneOZ 10y agoHe proposed list of languages. And really, there's a lot of good languages to use on the servers. JS was never good language and we use it on the client-side just because it's the only language browsers know.
- pmelendez 10y agoHe doesn't explain why... other than ranting about the callback model (which has been in our desktops forever, most event systems rely on callbacks). The quote in the post has also misleading statements, NodeJs does scale in load and performance which is one reason why people use it instead of Python (which was one of the quote suggestions)
- zaphar 10y agoThat was not one of his suggestions, unless you count stackless python. It was an example (i.e. twisted in python) in support of his point that callback's are a bad way to structure concurrent programming. His suggestions were Erlang and Go which are arguably better approaches in a purely technical dimension to NodeJS. What his rant misses is that most technical decisions aren't made on purely technical merit for a host of different reasons.
- pmelendez 10y ago>His suggestions were Erlang and Go which are arguably better approaches in a purely technical dimension to NodeJS. I would say that it is based on a subset of the technical dimension. Maybe Erlang and Go might have nicer ways to handle concurrency flows but if it doesn't have a library X to communicate with backend component Y then there is a technical reason not to use it.
- smikhanov 10y agoNo, J2EE's original idea was to separate wheat from chaff, i.e. good programmers from mediocre ones. Good programmers would then work on containers and mediocre ones would write standardized apps to deploy into those containers, with containers being easily interchangable. In this worldview it's irrelevant whether those standardized apps are developed with lots of XML, or convention over configuration or whatever, because mediocre programmers won't complain. Now as much as this worldview is flawed, this is just one of the manifestations of an attempt to make software development easier, which is, of course, a noble goal that even Node.js aspires to.
- gravypod 10y ago> For instance, nulls are clearly a problem. After countless rants we're seeing languages that have better ways to deal with missing or optional values enter the mainstream (Swift, Scala, Rust). No they are not. They are a state of an object. What is the problem is a lack of documentation. One thing I've seen coming up, at least in some code I've looked at, is the @Nullable and I've not seen any complaining about null from those who use this tag. The idea is to always document when a variable or type can be null. This way you know, with 100% certainty (given a strict type system adherence) that you're not going to erroneously see a null object where it isn't expected. From this, you have a huge benefit: a performant error state or a better method of representing an issue without throwing an exception. Riddle me this, how would a Map be implemented if Null was stripped from Java? Should it throw an exception if a key is not found? If that is the case, then you should always need to check for this exception, otherwise you're prone to bugs. You've also increased the execution time of your code by in some a huge performance hit [0] that is more cumbersome. This is why I think rants are a big problem. They don't describe the opposition to a statement accurately. They are one person's opinions and after reading them, if it all sounds nice, you're usually willing to take it all as fact. "Hey, they're writing an article! They must be smarter then me. I'll take their word for it." As a result, our communities don't really evolve we just spew memes back and fourth dictating what someone else thought. What really matters, in every sense, is reading a discussion had between two experts in opposing camps. That way you can see both sides of the arguments, their weak points, and make an educated choice on what side to agree with. That being said, what do you think of my points? Can you address them? My oppinion is that NPEs can be easily avoided by using very simple measures AND null more closely resembles most problems while being more performant and less cumbersome then throwing exceptions willy nilly. I'd love to hear how you feel about this. Also... > J2EE's original idea to configure a system through separate XML files was heavily criticised for being too bureaucratic. After countless rants we got configuration by convention, better defaults and annotations as part of the source language. I'd say that is a good example of discussion, brain storming, and coming up with a much more accurate representation of the ideas we are trying to convey (the use of annotations to configure methods). [0] - http://stackoverflow.com/a/299315 http://stackoverflow.com/a/299315
- orangecat 10y ago