TE
TechEcho
Home24h TopNewestBestAskShowJobs
GitHubTwitter
Home

TechEcho

A tech news platform built with Next.js, providing global tech news and discussions.

GitHubTwitter

Home

HomeNewestBestAskShowJobs

Resources

HackerNews APIOriginal HackerNewsNext.js

© 2025 TechEcho. All rights reserved.

Interview with Ryan Dahl, Creator of Node.js

393 pointsby WhiteSource1over 7 years ago

20 comments

_nalplyover 7 years ago
A serious problem with Node was the callback pyramid of doom.<p>This means deeply nested callbacks such that the indentation wanders steeply to the right. When you do loops or have exceptions programming got very confusing. In effect you have to do a continuation passing transform. It&#x27;s not difficult but the results are utterly unreadable. For example a simple for loop could be transformed into recursive function because this way it is easier to keep state between callbacks. It&#x27;s a nightmare.<p>What I found surprising in the early years of Node that some people in the mailing list had a «Real programmers don&#x27;t use Pascal» attitude.<p>Bruno Jouhier&#x27;s developed streamline to simplify and automate the continuation passing transform. One could almost program in a «blocking» style. I found his work really amazing. However for that Bruno got attacked in the mailing list.<p>Then Marcel Laverdet developed fibers. A different and equivalent way to solve the callback pyramid are fibers, coroutines and generators. This way we don&#x27;t need the continuation passing transform. But the reception in the mailing list was at best only lukewarm. Anyway, the developers of Meteor saw the potential and decided to base the server side of the platform on fibers.<p>And now JavaScript has generators and async&#x2F;await. And lo and behold: with these official solutions the hard core programmers swayed and accepted «Pascal».<p>In my opinion, Ryan Dahl has missed an opportunity. Node was by large not ready and finished when he left. He should have tried to convince the community to find a solution for the callback hell.<p>I think I understand people like him. They are always on the lookout for fresh ideas.
评论 #15142070 未加载
评论 #15147204 未加载
评论 #15142918 未加载
评论 #15152925 未加载
评论 #15147223 未加载
bit_logicover 7 years ago
Many are forgetting the initial reason node.js became popular. Consider the popular server-side landscape before node.js. It was dominated by Java, Python, etc. The primary way these ecosystems handle concurrency is OS-level threading. There was nothing else in the popular languages. Each language had some niche library that did non-blocking I&#x2F;O (Twisted for Python, Netty for Java), but these all had a critical flaw, which is the rest of the ecosystem didn&#x27;t support it. Basically every library, almost all existing code used the threading model. And when you mix threaded libraries with a non-blocking I&#x2F;O server, it completely falls apart because the threaded code blocks.<p>Then came node.js. Look at the ecosystem it came into. JS itself has very little standard library, and nothing for I&#x2F;O. It has a highly optimized VM supported by the resources of Google. It&#x27;s a language known by many developers. node.js took this well developed clean slate and built a non-blocking I&#x2F;O server on top of it. It offered a concurrency model on the server side that&#x27;s completely new to many developers, an alternative to the traditional threading model everyone knew. Since server-side JS didn&#x27;t exist yet, it forced all libraries to be written in this non-blocking way. Every package in NPM is written to support the core design of node.js which is non-blocking I&#x2F;O. And it was exciting to many developers, it was a reason to rewrite everything in this new way.
评论 #15142445 未加载
评论 #15142487 未加载
评论 #15143022 未加载
评论 #15142834 未加载
评论 #15142399 未加载
评论 #15145445 未加载
评论 #15144329 未加载
评论 #15142346 未加载
评论 #15142995 未加载
评论 #15142785 未加载
评论 #15144018 未加载
评论 #15142258 未加载
评论 #15143166 未加载
评论 #15145122 未加载
评论 #15143894 未加载
评论 #15142871 未加载
评论 #15145805 未加载
评论 #15145332 未加载
s_kilkover 7 years ago
&gt; That said, I think Node is not the best system to build a massive server web. I would definitely use Go for that. And honestly, that&#x27;s basically the reason why I left Node. It was the realization that: oh, actually, this is not the best server side system ever.<p>Really interesting. I can imagine others would refuse to give up on the thing they&#x27;d worked so hard on. But Dahl has the self-awareness to just step back and say &quot;huh, guess this isn&#x27;t so great after all&quot;.<p>Huge props to the guy.
评论 #15141478 未加载
评论 #15142657 未加载
评论 #15142205 未加载
评论 #15141527 未加载
评论 #15141653 未加载
afshinmehover 7 years ago
Ryan is so smart. I like the way he thinks. This blog post [1] is still one of favorites.<p>[1]: <a href="http:&#x2F;&#x2F;tinyclouds.org&#x2F;rant.html" rel="nofollow">http:&#x2F;&#x2F;tinyclouds.org&#x2F;rant.html</a>
评论 #15141948 未加载
评论 #15142118 未加载
Abishek_Muthianover 7 years ago
&quot;And then, you know, maybe little servers to... maybe little development servers, and here and there, maybe some real servers serving live traffic. Node can be useful, or it can be the right choice for it. But if you&#x27;re building a massively distributed DNS server, I would not choose Node.&quot; -Ryan
dsaccoover 7 years ago
I find it interesting that he ended up at Google Brain working on deep learning research after writing Node. There seems to be a trend in the industry of taking people who are exceptional in one area and putting them on AI problems (e.g. Chris Lattner). I wonder how effective that cross pollination is.
评论 #15141940 未加载
评论 #15141933 未加载
评论 #15143021 未加载
amoorthyover 7 years ago
Pretty cool how he took a very unusual career&#x2F;personal route to become such an important figure in the programming world. Good reminder for a parent like me that getting your kids into a &quot;top&quot; school isn&#x27;t a must to succeed.
评论 #15142317 未加载
评论 #15141908 未加载
georgecalmover 7 years ago
I was always curious why Ryan Dahl left the community. He finally answered that question; not the way I thought he would though:<p>&quot;I think Node is not the best system to build a massive server web. I would definitely use Go for that. And honestly, that&#x27;s basically the reason why I left Node.&quot;<p>Go may be an excellent choice for massive non-web servers, I don&#x27;t have enough experience in it to say. For the product I work on, though, Node.js is the way to go. It&#x27;s the best framework that allows us to use the same exact code on the server and on the client to create a fast progressive site.
qaqover 7 years ago
Given free choice I&#x27;d use Elixir, but working with Node and Python at work have to say that for async web services to my surprise I prefer Node more and I def. like Yarn more as package manager.
rmrfrmrfover 7 years ago
I can&#x27;t help but feel like Google gently encouraged him to promote Go over Node. Or that being told by coworkers (goworkers?) for years-on-end that Go is better than Node has had an effect. Especially considering he talks about green threads like he&#x27;s not quite sure what he&#x27;s talking about. At any rate, there are many innovations where the creators weren&#x27;t fully aware of their impact and eventually come to hate their own designs, so no love lost there.
评论 #15148050 未加载
dfabulichover 7 years ago
It seems weird to me to have an interview with Ryan Dahl today, August 31st, without talking about the political struggle the Node Foundation has been going through over the past week. <a href="http:&#x2F;&#x2F;www.zdnet.com&#x2F;article&#x2F;after-governance-breakdown-node-js-leaders-fight-for-its-survival&#x2F;" rel="nofollow">http:&#x2F;&#x2F;www.zdnet.com&#x2F;article&#x2F;after-governance-breakdown-node...</a>
评论 #15144688 未加载
评论 #15144888 未加载
tambourine_manover 7 years ago
There&#x27;s an audio version for the lazy like me (it&#x27;s a podcast)<p><a href="https:&#x2F;&#x2F;api.soundcloud.com&#x2F;tracks&#x2F;340298200&#x2F;download?client_id=cUa40O3Jg3Emvp6Tv4U6ymYYO50NUGpJ" rel="nofollow">https:&#x2F;&#x2F;api.soundcloud.com&#x2F;tracks&#x2F;340298200&#x2F;download?client_...</a>
chjover 7 years ago
A lot of people talk about callback hell. For me, the biggest issue of Callbacks is that you don&#x27;t have a single point to catch thrown errors. We need finer control than a global catch-all handler.
quocbleover 7 years ago
Ryan Dahl&#x27;s advice for building high performance web server: Use Go.
评论 #15147250 未加载
killjoywashereover 7 years ago
But, but what were the colorization projects? What was the domain?
评论 #15142444 未加载
explodingcameraover 7 years ago
They need to fix their ui on mobile, there&#x27;s no way to listen to the podcast and most people listen to podcasts on the go I would imagine.
thinbeigeover 7 years ago
Even if Node is not the perfect server-server environment, you can go quite far just with knowing JS.
robinduckettover 7 years ago
In this thread: people who don&#x27;t use Node.js making wild presumptions about how it works. Callback hell? Been a few years since that&#x27;s been a problem.
评论 #15143829 未加载
gaiusover 7 years ago
<i>this new paradigm of model view controller</i><p>New... in the 1970s <a href="https:&#x2F;&#x2F;en.wikipedia.org&#x2F;wiki&#x2F;Model–view–controller#History" rel="nofollow">https:&#x2F;&#x2F;en.wikipedia.org&#x2F;wiki&#x2F;Model–view–controller#History</a><p>It boggles the mind how little &quot;web devs&quot; know about the history of the field. No wonder they keep reinventing the wheel.
评论 #15144055 未加载
jgrant27over 7 years ago
Software Engineering in 2017 : Personality cults and mostly a lack of appreciation for the history of CS.