提升js水平,是不是应该学习一下C,接触一下底层
发布于 9 年前 作者 beilunyang 7098 次浏览 最后一次编辑是 8 年前 来自 问答

渣渣想提升一下js水平,是不是应该学习一下C,接触一下底层?

10 回复

有能力,但学无妨。

有能力,但学无妨。

学习下 v8

我觉得还是先把js学习地深入一些,不要以为C有多特别。当然,有能力,但学无妨!

如果只会javascript,也只能做做所谓的大前端,是没有能力做后端的(你如果碰到一些内存问题,性能问题,javascript本身给不了你解决方法),不理解javascript背后的东西,会阻碍你进一步的理解javascript本身,就我个人理解,c是必须精通,当然前提是你有余力,javascript已经到了瓶颈。

你可以通过阅读nodejs源代码来学习,你学习javascript编程可以看lib目录,nodejs库基本上就是es5版javascript编程的最佳实践了,考虑问题很周到,虽然有些设计也很搞,但都有搞的原因。学习c++可以看src目录,这里是v8和libuv绑定的,结合lib目录,你可以大致弄清楚数据的流向。学习c建议读deps/uv目录里的libuv,这是nodejs的异步核心,这个库我也在用,代码写得很清晰。要学http协议解析,看deps/http_parser目录,这也是c写的。你如果整个都看完了,而且看明白了,javascript功力自然也就提升了,javascript本身是不重要的,nodejs也不重要,重要的是你能够理解异步思想和实现。javascript现在正在进行剧烈的变化,nodejs与javascript绑定又太深,我个人认为,理解了底层,以不变应万变才是上策。如果有兴趣的话,学点其他语言也是可以的,lua和javascript非常类似,学习了两种脚本语言有了对比,自己再总结下,提高就更快了。

最后建议你千万不要试图去读v8的源代码,这个活得有一定积累后再干,不然也是白干,是不会有任何收获的,反正我的水平是看不了。

@coordcn 会javascript, 就会用node做后端了。node 的优势也就在这里,一个语言打通前后端。同意在熟练javascript/node之后再搞c/c++/v8

@leapon 恩,一门语言打通前后端,这个故事听起来很美,做个人网站,做demo搞定天使投资或许可以。

用node搭个模板,访问个数据库,生成个动态页面就是后端了?这好像被阿里定义成大前端了,nodejs在我眼里也是这么个定位,我认为这个定位还是比较准确的,也发挥了node的特长,很好的避免的node的短处。在复杂业务逻辑面前,在高性能面前,在高可用性面前,这能堪大用?听说阿里搞了个alinode,不知道阿里准备怎么用alinode,如果我猜得没错的话,他们也就用在内部交流系统上了,node写得顺手,性能尚可,内部应用要求不是太高,前端就能把后端的活干了,还有几个边缘产品估计也能用用,核心的用么?双11用了几台node机器?如果用了,阿里的人也分享下,什么样的构架,如何保证高性能,高可用,不要藏着掖着,让我们这些不开眼的都开开眼。我再进一步猜测一下,这个东西是搞出来坑外面的人的,阿里云,你来我这里用我的alinode,我给你解决各种node的坑,这个注意看起来的确很美妙,有大公司罩着,我们还担心node的坑么?

但是,我耳边飘过三个字——然并卵。

会个javascript真心不要认为自己可以做后端,往后端发展,不学底层(包括但不限于语言,也包括tcp协议,http协议,nginx开始支持http2.0了,node什么时候加入?node的cluster还是进程间共享socket实现的,什么时候支持TCP_REUSEPORT?,可以成倍提升多进程效率,worker的切换唤醒不在由应用层来做,直接内核干了,惊群什么的也自然就没有了。阿里的tengine里实现了,很简单就几行代码,但windows不支持,node我想应该是会支持的)的东西,最终都是浮云。不信,我们可以边走边看,俗称走着瞧。node本身没多少坑,正是因为有很多会挖坑的才坑的,而且坑还会越来越多。

@coordcn 我觉得前端还是入门选择php作为后端好点,毕竟作为正儿八经的web开发后端语言,联系也密切点,入门也容易,网上资料,解决方案一大堆,node的话,感觉就是在前端工具链这块用得多点,做web的话很少看到国内有商业项目敢用,况且不是哪个公司都像阿里一样有那么多大神,后端最注重稳定性了,出了事儿一时半会儿都不知道哪里有坑,好像除了阿里这样的公司以外其他公司很少有这样大面积使用node吧?

是 recommend: Advanced Programing Unix Environment

回到顶部