后端零起步:学哪一种比较好?

我后端基础为零,怎么学好Node.js呢?有很多朋友说,PHP已经是上个世界的了,真的假的哈?作为初入移动互联网界的小弟级中小弟级,求大神指导。就我所知道的后端,好似还有Python、Ruby、Scala等等。好纠结哈、好纠结,学哪个好呢?话说是不是应该把这个同时也贴到知乎上面去呢?我想我是一定会做这件事情的,同时。 求大牛+大神+码神,以前瞻性的眼光指点迷津一下下。

——我会同时自己不断回答我的问题,因为见证着自己的成长,成为牛掰程序员,改变世界,是梦想!更要是不多年数后的,那真真实实的生活状态。

——新浪微博:@夏力维

阅读 19.2k
7 个回答

对于,学过,java,php,python,nodejs 的人来简单说说怎么选择。

java 首先,你一定不要用myeclipse进行java web的学习,这样,会让你永远不明白什么java web里面的jsr 规范。作为一个有志向的程序猿,深入到规范的标准时必须的。其次,就是至少掌握一门包管理工具(maven,ivy,gradle),这样会让你学习开源项目的时候得心应手。

优点:可靠的大型解决方案多,速度快(告诉你一个事实,java作为后端语言的性能在各种评测里面都是名列前茅的,不过对于新手而言的感观的慢这点要改过了确实不容易)。 缺点:概念多,包管理工具不易上手。

php 简单,好用开源成熟的东西多,至于你朋友说php是上一个世纪的东西,我告诉你,现在流行的技术都是上一个世纪的(java,python,javascript)

优点:上手快,学习资料多。 缺点:php5和php6 不兼容,速度慢(这个问题,在你还没有精通php之前,请暂时不要考虑),一般只能用来开发web。

python 优雅,简洁,好看,前后端通杀。由于我只是两年前有个开源项目用到了python,然后,那个项目结束以后也没怎么接触python了,所以,这里的评价可能不太正确。

优点:能用的开源项目多,学习门槛不高。 缺点:py3和py2不支持。对win 不友好,缩进的编程,可能会由于文件编码导致项目崩溃。

nodejs 单线程,事件异步驱动模型,通杀网络层,传输层,还可以进行嵌入式的开发(对于跑v8 的js 而言,性能杠杠的,已经有不少人用nodejs + 树莓派开发出各种好玩的东西)

优点:活跃的国外社区,为人民服务的作者众多,强力的github支持(这里不是说nodejs本身,而是nodejs整个模块的生态,一般模块的作者都会回复你的issue,这点心有体会,没有什么东西比把问题交给别人解决最好的了。。。), 缺点:很多模块并不成熟,中文资料不多,过时。国内社区不活跃,喷子很多(主要喷node的性能比php还差我补充一下,大部分(注意是大部分,不是全部,喷的时候不要瞎喷)的评测都毫秒杀php(http://www.techempower.com/benchmarks/),还有就是js作为编程语言的不成熟,关于这点,你去好好翻一下 es5标准(v8的实现的就是es5标准)再来开喷。),所以,要学node,你的英语起码要有初中生的水平,用于方便阅读英语资料和与老外交流。还有就是,不是很人类的callback 编程风格。不过我很喜欢。。

按我的建议,学什么语言不重要,重要的是你学语言想干什么?比如做网站?开发安卓app,等等。明确一个自己感兴趣的目标之后,在选择语言,以兴趣引导语言,学习才有动力。比如做网站,那可能就是php,nodejs,做个简单的blog,在实践中慢慢了解语言,在学习中慢慢成长。

如果你学会了其中的一个,然后在去了解其它的,可以说,入门会很快,因为里边有很多相同的东西。

梦想无用论者表示,最重要的事情是,马上挑一门语言开始学,多实践,自然会找到接近best practise的路。不要期望一门语言能解决所有问题,尤其是“后端技术”这么宽泛的概念。你现在需要的只是一个能解决手头问题的语言,鉴于你现在是零基础,那么你提到的任何一个语言,必然都能解决你现在的问题。

我会在这里记录下我的学习进度,也便于后来者,同时更主要的是让前辈们看到,因为万一我走歪了,还要靠大家把我给扭转回来哩!

1)Node.js
这是我2013年里从朋友们那里听到最多的建议,虽然在GDG Shanghai的活动中,听@青山老妖_黄冠 讲过一堂(类似七周七语言那种的),但是我可是完全不懂哈,好尴尬!不过这个不重要,重要的是等到学会了,一切都会好的。
现在用书是:《Node.js开发指南》
相关介绍地址:http://book.douban.com/subject/10789820/

2)PHP
我能找到的相关书籍最多的一门语言,这里完全是因为有资料供给的优势在,虽然很多朋友说,“其实不要管那个了”,“不要强求那个”。。。至于为什么,我也不是很清楚。

不要为了学习而学习, 要为了满足需求而学。

先给自己找个小项目, 然后分析一下完成这个项目需要的技术, 找几本书看一下, 然后就动手做, 碰到问题就再回过头去看书。

这样做, 一方面保证有的放矢, 另一方面事实证明, learn by doing 才是最佳的学习方法。

具体到技术, 我推荐 Ruby on Rails. 后端零起步, 最重要的是快速地做出东西以及知道什么是好的代码和坏得代码。

立即上手,然后你就会了

找一个 IDE 支持比较好的语言

推荐问题
logo
101 新手上路
子站问答
访问
宣传栏