学编程选什么语言好?是PHP、Python还是Ruby?
简单地一句话总结:
1.假如你想帮他尽快找个活儿,赚到钱,推荐PHP。
2.假如你想让他成为一个高效工程师,推荐Python。
3.假如你想让他爱上他的工作,推荐Ruby。
语言的选择:
编程语言非常重要,不要认为他们都图灵等价,用起来都一样。实际上,好的语言,带给你的东西是超乎想像的。
下面是一些看法:
1.程序员的时间远比机器的时间宝贵:选择开发效率最高的语言吧,不要过于在乎运行性能,如果你开发不出东西,那么跑得多快也没用。
2.优雅的抽象胜于简单的堆砌:这意味着你的代码是最简洁而又充满设计感的,面向对象,容易的闭包,一切都是表达式等等,而最好的抽象是语言本身能够分层,既能够书写语言的语言,比如DSL能力强弱是个指标。
3.才华横溢的社区胜过有难度的招聘:这种语言一定要拥有一个活跃且才华横溢的社区,只要使用她的人,就有一种自豪感和精英意识,在社区里的每个人都自认为比别人强。即使,你不那么容易招聘到程序员,但我们不都知道,一个有才华的程序员胜过100个平庸之辈嘛?选用这种语言,能保证团队里一起编码的每一个人,都是高手。
4.也是最重要的,乐趣胜过一切:灵活,好玩,永远有新发现的魔术般的语言,只有你想不到的,没有你做不到的,对一个真正的hacker来说,这是选择语言唯一的理由,这也是Perl为什么能够长期存活的原因,因为她是hacker为hacker创作的。
如果能看完这些观点,相信你能猜出我的选择了:)是的,Ruby是主流语言中我认为最出色的,最高的开发效率,最优雅简洁的抽象能力,最有才的社区(Github为中心),和最大的乐趣。
做为一个程序员,是应该去选取不同思路的语言去学习的,而且当然要选择最有代表性的语言,在编程的世界里,主流的思路其实就两种,一是结构化编程,一是函数化编程,面向对象只是结构化编程进化的一个阶段而已,其他各种各样的思路大多数是这两个的分支。
社区的创造力
选择一门语言要看这个语言社区的气质,以及你想用他做什么东西。
Mac上可以运行那么多种语言,有很多人用git。但却只有Ruby的用户开发出了homebrew这样牛逼的包管理系统,善用了github的诸多特性,真正的把每一个用户都变成了潜在的repo贡献者。我相信这绝对不是巧合。如果同样的条件摆在面前,你做出了一个全新的东西而别人没有,说明了你的创造力比别人要高。
作为Python的使用者,我觉得Ruby语法的优劣不太重要。但是从外部看Ruby社区近些年持续的向外输出一些从技术到开发上的理念,不断的有大大小小的很酷的项目从Ruby社区中诞生的出来。使得我觉得Ruby社区是一个很有创新气质的社区。因此如果你学编程是想做出一个很酷的东西,那么我强烈建议你直接学习Ruby。
从Web开发去比较
对于Web开发,这三种语言都能胜任,但是还是有不少区别:
1.Ruby的rails框架确实是称得上是快速开发的典范,但是Ruby的语法过于灵活,有些时候对同一个处理会有很多种不同的写法。
2.PHP是老牌的网页脚本语言,相对其他两门而言比较成熟。PHP虽然快速成型,但容易失控,尤其项目稍大的时候。
3.对于Python来说,由于自身的简约设计,可能应用的方面的更多,几乎是可以涉及到IT的各个方面,Web只是它其中一个方面,而且有比较成功的杀手级应用,Youtube就是用Python开发的,服务器的各种原来用shell或者perl的脚本,科学计算,游戏的脚本,甚至在桌面客户端上也能看到Python的佳作,如UliPad,对于初学者来说Python是个不错的选择,在这三者中它的语法是最简洁和清晰的,适合初学者学习。
入门语言还是应该选择一个比较严谨的,像Java,Python那样的语言比较合适,从PHP语言不太容易学到OO的思想和设计模式之类的东西,而这些对于一个优秀的PHP程序员来说也是很必要的。这里不是黑PHP,每个语言都有自己的优点,比如PHP入门快,可以增加编程的信心,明白编程那点事后,可以触类旁通的接触其他语言。很多编程者就是从PHP入门的。
在编程学习里有这么一个现象:直接推荐Python的人,基本都没深入学习过Ruby。学过Python和Ruby的人,基本都喜欢Ruby。
具体使用什么语言,不是唯一的。根据场景是要分的。一个人至少是需要学习3种语言的:
1.一种是工作语言,比如C++,Java,PHP,这三种语言,是互联网的万能药,只要会了,工作是永远都不愁的,大型公司一般都会使用,用来开发一些大型项目。
2.一种是自己使用的语言,比如Python,Ruby,当然,我也推荐Ruby。我也用过python,后来因为工作需要,忍痛放弃了Python,最后,竟然深深喜欢上Ruby了。然后就不再回头了,对于个人使用来说,是要非常注重开发效能的,一门语言,至少能用10年,如果自己选择的语言,可以在开发效能上超越其他语言十分之一,那么在十年内这种收益是非常大的。
3.还有一门是新语言使用,不必深入,但是一定要了解,这有助于比较不同语言的不足,才不至于成为井底之蛙。比如Nodejs,Scale等。
关于Ruby
我觉得直接学Ruby也是不错的选择。
1.本来rails框架就自带了server,WEBrick。看着Log做开发效率非常高。
2.如果要部署的话,用passenger也是绝对方便。
3.Views层的模板系统,ERB应该比Python的各种要来得美,而且更加简单。之前用过Django,觉得太重了。
4.Rails可以让你不断的惊讶程序可以这样写的啊,我第一次看到有7.days.ago的时候惊掉了。
5.Rails强调一种DSL,一来符合人们的语言习惯、二来我觉得是一种编程语言的颠覆,我们并不是在用某个特定的语言(比如Ruby)来实现一个功能(就如同是用C还是用Java来写一个编译器),而是我可以在这些语言的基础上定义一种新的语言(类似于lex,yacc这样的词法语法生成器)。看看routes.rb的设置吧,能有多么惊讶,这是程序么,简直就是诗。美不只是在于内容,同样在于形式。
关于Python
python的优势很多,比如:
1.语法简洁,无需编译。Python语法简洁高效,一句话“人生苦短,我用Python”啥都说明了,高效是Python的特点。
2.强大的数据结构。默认安装的Python开发环境已经附带了很多高级数据类型,如列表、元组、字典、集合、队列等,无需进一步编程就可以使用这些数据类型的操作。使用这些数据类型使得实现抽象的数学概念非常简单。
3.强制缩进,让代码自然显得有条理。
4.插件齐全,可以完成绝大部分的程序设计任务。
当然还很多,具体还可以去看看《Python的设计哲学》这个chapter。
小结
没有最好的语言,只有最合适的语言。
没有糟糕的语言,只有糟糕的程序员。
没有一种语言是万能的,只会一种语言是万万不能的。
用什么语言不重要,最重要的是效率:开发效率和执行效率。PHP语法很傻,一点都不炫,但凡是学过C、JS、AS等等语言的,很容易上手,因为语法上有很多重合的地方。很多人看不起PHP,说PHP太简单的人,往往是因为对PHP本身不够深入了解,其实PHP里面的东西一般人用到的很少,5.3以上的特性也慢慢让这种语言生动起来,你越是深入,就越能发现它的强大和优势。
这里仅仅列出PHP,Python与Ruby的一些情况,让读者更好地挑选学习的语言。
语言没优劣之分,Justfollowyourpassion.