如果你是个学生,你应该会C,C++和Java。还会一些VB,或C#/.NET。多少你还可能开发过一些Web网页,你知道一些HTML,CSS和JavaScript知识。总体上说,我们很难发现会有学生显露出掌握超出这几种语言范围外的语言的才能。这真让人遗憾,因为还有很多种编程语言,它们能让你成为一个更好的程序员。
在这篇文章里,我将会告诉你,为什么你一定要学习Python或Ruby语言。
- 跟C/C++/Java相比 — Python/Ruby能让你用少的多的多的代码写出相同的程序。有人计算过,Python或Ruby写出的程序的代码行数只相当于相对应的Java代码的行数的五分之一。如果没有绝对的必要,为什么要花这么多时间写出这么多的代码呢?而且,有人说,一个优秀的程序员能维护的代码量最多是2万行。这不区分用的语言究竟是汇编,C还是Python/Ruby/PHP/Lisp。所以,如果你用Python/Ruby写,你一个人干的,不管是干什么,如果换用Java/C/C++,那都需要一个5人的小团队来干。
- 跟VB/PHP比较 — 跟PHP/VB相比,Python/Ruby的是一种从设计上讲比它们好的不知多少倍的语言。PHP和VB分别是在开发网站和桌面应用程序上非常流行的语言。它们流行的原因是非常的易学。不懂计算机的人也很容易的上手。如果你用这些语言开发过大型的项目,你就会发现这些语言的设计是如此的糟糕。是朋友,他就不会劝你使用PHP/VB。
- 跟Lisp/Scala/Haskell/Closure/Erlang相比 — Python/Ruby跟它们比起来显得相当的“主流”。确实,这些语言每种都有其很酷的特征,对于高级编程人员,了解这些语言能给他们对编程的思考带来实际的提升。但这些应该在你以后的职业生涯中才去决定学哪一两种。对于现在,Python/Ruby是在语言功能和实际运用之间平衡后的更好的选择。
- 跟Perl相比 — Python和Ruby都受恩于Perl,在这两种语言异军突起前,Perl是最好、最大的一种动态语言。但现在,Perl已是明日黄花,越来越多的人转向Ruby/Python。我感觉Perl的面向对象机制有点做作,很不好用。通常认为,Perl一种比较难学的语言,因为它提供你了太多不同的方法去完成同一个任务,它的语法有点像密码,非常不直观 — 除非你对它掌握的非常好。总之,我感觉Perl是一种对于学生来说不是很合适的语言—除非你有特殊的理由去学它(例如,你有很多正则表达式要处理,这是Perl的闪光点)。
- 跟sh/sed/awk/bash相比 — 如果你使用Linux/Unix,你可能需要做一些shell编程,甚至会编写一些不小的程序。但是,对于这些语言,一旦程序达到一定的行数,事情就会开始变得让你痛苦不堪,你最好是用Python去做这些事情。当然,做这种事情,Perl是最好的选择,Python排第二。(Ruby对于系统shell脚本不是很合适)。
你可以在Google上搜一下“为什么X比Y好” — 其中把X换成Python或Ruby,把Y换成另外一种语言 — 你就会发现,有无数的文章来说明它们为什么这么好。
如果你有选择你的毕业设计使用的编程语言的自由,你应该选择Python或Ruby,它们能让你在开发项目的过程中节省一半的时间(除非你要开发的是移动应用,这样你必须要使用Java或Objective-C)。
下面是xkcd上的一幅漫画,告诉你掌握Python后你会变得多么的强大:
如何去学它们呢?很多很多的网站上都提供了学习Python和Ruby的教材和课程。下面的是我从中选出的一些:
- 谷歌的Python课程,学习Python的好资源。
- RubyLearning,学习Ruby的一个好网站。
有疑问吗?请在评论了写出来,我会尽量回答你们。
尾注:
1:我的这篇文章可能会让很多Perl爱好者很郁闷,现在回味一下,我认识到对这种语言的要求过于苛刻了。因此,我把关于Perl的一节改写了一下。
Python和Ruby都受恩于Perl,在这两种语言出现之前,Perl是最大、最好的动态语言。但Perl现在太老了。它的面向对象性不完整。它很久没有升级更新了,它的市场份额正在丢失。对于一些新的、很火的事物(例如Web编程框架,Web API),它不如Python & Ruby 那样能跟上时代的步伐。基本上,Python/Ruby在兴起,Perl在衰退。
2:本文中的所有语言的比较都是用来给印度计算机科学专业的学生选编程语言时做参考的。像“X比Y好”这样的句子准确的讲是毫无意义的,因为所有的语言都是经过时间的考验而存活下来的,有些语言会在某些领域比另外一种要强,这也是它们存活下来的原因。换句话说,总有一些情况下,PHP/Java/C/C++/Perl 看起来会比 Ruby/Python 等其它语言显的更适合。
是很强大,但是用了一下,还是对这种风格的编程语言提不起兴趣,为啥不弄成C Style?
为了更好的可读性以及更少的标点符号。
为什么要弄成C Style?不能因为你学了C就觉得所有的编程语言都应该是C Style的
为了解决代码风格一致性问题,C-Style这个问题太严重了
闻道有先后,术业有专攻,如是而已
先进是先进 可是boss只让用PHP
而且如一楼所言 看他的风格很不顺眼
这说明你见过的语言太少了。你去看看 VB/Perl/Erlang/Lisp 之类的就会觉得 Python/Ruby/Lua 的语法也不是那么另类了。
就是不喜欢 VB/Perl/Erlang/Lisp 这样的风格。况且我觉得C Style 的可读性很高啊。所以,我一般开发用的是C/C++/C#/AS 等,脚本语言就用Javascript,都不会去用Lua。
“就是不喜欢英语的时态和倒装。况且我觉得汉语的可读性很高啊”,你觉得这样的话有意义吗?每种语言都有它的长处,这些长处中相当一部分是由它的代码风格带来的,C的风格有它的长处,Python/Ruby的风格也是。
@Sweet,C style 是还行,除了这种小错太难发现之外:
if(xxx);
{
yyy;
}
我从来没有写出这样的错误来
自从使用delphi后,唯一还让我眼前一亮的就是python了
但是,它的代码块没有{、}或begin、end这样明确边界,仅仅靠缩进,作为一个程序员,无法接受这种不严谨
为什么你觉得靠缩进是不严谨的体现?“一行代码前面有几个tab”和“一行代码前面有几个{”有什么差别?
use emacs, auto indent
當把這個嚴謹的定義放到我的腦袋去解釋, 我當機了
我也是确得不太严谨,特别是你用几个不同的编辑工具来维护代码时就经常出现缩进出错的问题
缩进恰恰是Python最严谨的地方。 人生苦短,我用Python
仅仅靠缩进,代码交流困难(有人使用空格,有人使用tab),或不小心多插了一个空行,代码的含义就完全不一样了
感觉非常不靠谱,虽然代码简略了,但是有这样的不可见的隐患,只好敬而远之
如果有某个版本支持{、}或begin、end这样明确边界,哪怕是预编译,也许就不会放下了
空行无所谓啊。用空格和用Tab也无所谓啊,只要别混着用。另外,如果使用 {} 或者 end 这种界定,难道你就认为可以不好好缩进了么???
有{} 或者 end的界定,是可以不怕缩进不对或交流的对方使用空格、tab与自己不一致了
而不是就可以不好好缩进了。
程序员应该有分清这2种情况的逻辑能力吧
“缩进不对”和“没好好缩进”有本质区别吗?
如果使用{}这种界定的话,即使不缩进,也可以很容易使用工具(例如IDE)format,感觉还是很方便的。
我用java 我经常爱干的事是 调整别人的缩进和把空格替换成tab
不改就难受。。。
有了{}后,缩进只是为了代码的易读,不缩进不至于出错,但python就不同了
缩进恰恰是python最严谨的部分了~
又一个浅尝则止的所谓程序员。你不知道Python有个PEP8?比你C style严格一万倍,所有代码过一遍PEP8不报错才是正确格式。你哪有机会多插一个空行,还tab、空格混用?PEP8直接把你骂个狗血淋头
对的,全世界语言都学了又怎样,精通了c/c++ java再学还行,如果基本的都不精通,学了又怎样,没什么前途
“昨日黄花”有误,应为“明日黄花”
明日黄花,成语,比喻过时或无意义的事物。后多比喻已失去新闻价值的报道或已失去应时作用的事物。出自宋·苏轼《九日次韵王巩》诗:“相逢不用忙归去,明日黄花蝶也愁。”
明日:指重阳节后;黄花:菊花。原指重阳节过后逐渐萎谢的菊花。比喻过时或无意义的事物。后多比喻已失去新闻价值的报道或已失去应时作用的事物。
谢谢提醒,已改正
“明日黄花”有误
应为
明日黄花蝶
出自宋·苏轼《九日次韵王巩》诗:“相逢不用忙归去,《明日黄花蝶》也愁。”
@haitao 如果缩进混乱(而不管是什么原因造成的),我宁愿编译器/解释器报错,而不是导致之后很可能出现的阅读困难甚至是误解。
既然总是要好好缩进,那么又何必使用 {} 或 end 这种既纵容不缩进的代码又浪费纵向空间和击键的写法呢?在一个 Perl 教程中有人说过,代码中的 bug 数和代码行数是正相关的;当代码超过一屏时,bug 数会暴增。
同意楼上观点
从个人来说。还是喜欢c风格的,不过自从用过Delphi后。对代码格式就没啥独特要求了。:)
python 的缩进什么的, 在 console 下有没有合适的编辑器时, 是不是还得目测对齐方式? 我认为这个缩进即便不能称作缺点, 也很难把它当作优点来看.
更喜欢Css的style,标点不能太少,也不能搞得像Js那样
对于一个几乎是零基础的人,能不能把Python搞懂。
现在国内都是培训java,php的居多!
那时我看编程语言排名,在挑哪个来学!
初期看中python/ruby… 竟然发现我们这里要这种的比较少!
综合意见,直接学php了! 反正以后当程序,当站长的都要用到!
python我也喜欢! 学习linux时在顺便拿它来实践,编写程序!嘿嘿!
看一下原文的评论,感觉PHP弱爆了.
就一般的网站编程上来说,php是不可替代的,推荐看看“全球排名前50网站都用什么语言开发的?”篇文章,地址为:http://www.wumii.com/topbar/K4dMzBpm
这里是排名前十的,我贴过来:
序号 网站 程序 OS DB
1 FACEBOOK PHP Linux+Apache MySql
2 GOOGLE Python 集群(自主研发) 集群
3 YouTube Python 集群 集群
4 Yahoo! PHP FreeBSD+Apache MySql
5 百度 PHP Linux+Apache 集群
6 维基百科 PHP Linux+Apache MySql
7 亚马逊 CGI Linux Oracle
8 Windows Live ASP.NET Windows+IIS MsSql
9 腾讯QQ PHP 集群 集群
10 淘宝 PHP Linux Oracle
排名并不准确,不要纠结这点。
是的,Ruby的那种纯粹面向对象的语法,确实应该学习下,至少要体验下,你才会知道,原来这个世界还可以有这样的编程语言。
ruby?python? 学过Ruby 会写 Helloworld而已。
……
Ruby’s HelloWorld is just:
puts “Hello world!”
or even
p “Hello world!”
学会C和Haskell,别的就都容易了。学会了这两门,要学Lua/Python/Ruby, 顶多玩一周就足够用好。C是九阳神功,Haskell是乾坤大挪移,学了这两样,别人玩个龙爪手,你现学现用都比他玩得好。因为在编程方面,你站在更高的层次上了。
以上全是Joel大牛的观点,对了,他还说,他招的人中,没有一位会了C和Haskell,不能在一周之内学会Java。而且他们写的Java程序比一个五年的Java程序员写得还好。所谓Ruby/Python/Lua,这些都是高手的玩具,如果你不会C和Haskell,你就只掌握了一门玩具,却永远不能成为高手。
不瞒你们说,缩进界定,正是我当时看了一样python示例代码就马上放弃深入了解的主要原因。深深喜欢C style啊,哪怕Delphi的begin…end我觉得也比缩进好。虽然我写代码一直很严谨地缩进,追求干净优美的代码风格。
好吧,我还是听从这位作者的建议吧~~
对haskell表示兴趣。
“但Perl现在太老了。它的面向对象性不完整。它很久没有升级更新了,……”
本文对Perl的理解还停留在10年前。Perl的面向对象用Moose,非常优雅的设计。版本一直在更新,Perl6的最新语法逐渐融合到现有的Perl5中;Perl社区非常活跃,CPAN中的Module数量稳定增长。所有这些新东西,都被称之为Modern Perl。
希望搞不定缩进的人都别用Python。一个连编辑器都搞不定的弱人能写出什么好代码。少掉这些人的话,平时就可以少看很多垃圾Python代码了。
+1,连编辑器都搞不定的人还写什么代码.不知道对于python缩进风格这么在意的人是不是能正确理解tab键和四个空格的区别.
python的代码风格这么优美简洁,还有人觉得难看?
你让lisp情何以堪!
我猜此文作者就是rubylearning网站的那位印度老板。
因为此文唯一推荐的两个网站,一个是google的免费教材,另一个就是这个rubylearning。但rubylearning不仅收费,不仅界面简陋,不仅用开源learning managemeng system搭建且一点点美工都懒的做,而且连个试用课程都没有。仅有的几个课程都是直接上来就收费,你根本都不知道这些课程大概是什么样子的。
这样的网站,除了网站所有者自己,还会有谁推荐呢?
根本就是rubylearning的推广软文嘛。
逻辑很清晰:python和ruby太好了,你必须学python和ruby,要学去google和rubylearning学吧….
我不介意软文推广,但好歹推广的产品稍微有点样子吧。既然是卖课程的,好歹展示一下课程是什么样子的,至少提供一两个sample吧。阿三太不靠谱了
看着办
正准备尝试学习这门语言…
+1,较早前看的这篇文章吧,今天在收藏夹中发现于是回味一下。。。
大四快毕业了,很喜欢python(尽管周围都没有人用),学信管的,主要就用python+django,很棒的东西,从此不屑于C#,Java了(感觉冗余太多)。
比较符合作者心意的是:我毕设就用的python哇,还拿了优,胜是幸福。
终于看到一个把“明日黄花”用对的人了,楼主不错^_^
最近在学python,因为我的博客用octopress做的,有用到ruby,来看看到底有啥区别。
Ruby和Python主要优势是 1)灵活性 2)代码少, 我想不适用{} 和 begin end应该也是为了使代码少,因为,一般{}和begin-end都会增加两行空行,不要太苛刻啦,每个语言都有自己的风格,就像每个人都有自己的性格;;;
另外,为啥 程序员 群里,有那么一大堆文人墨客,甚是搞笑,讨论起名字黄花的诗句,给我们增添了不好 smile,看来程序员也要学学诗句啊,致敬
Python的文档烂得不成样子,跟PHP比起来太差了,排版差,索引差,竟然还版本不兼容……很多PHP黑都想不通为啥PHP这么烂的语言这么流行,其实PHP官方站几乎可以找到任何关于语言的答案就是原因,但是Python的文档,想找到一个函数都困难无比……
同意,python的chm文档感觉很混乱,文档的函数说明又说的不明不白。
从一个很现实的角度来说,PHP的市场需求量是PYTHON的3倍,是RUBY的5倍..我就这么一说- –
PHP属于大路货,已经是严重下坡路。市场需求从美国来说,新的IT startup搞web开发的绝对是Python/Django或者Ruby/Rails,PHP早就成烂货了
空口无凭,自己看数据吧
http://www.google.com/trends/explore#q=php,%20python,%20ruby,%20django,%20rails
PHP市场基数是大,因为大部分人是不思进取的,注定被淘汰
不要扯什么Facebook还在用PHP。2004年他们开始搞的时候,Django还没影呢
技术总是会进步的,今天的PHP就如同昨天的ASP、Delphi一样
我才刚刚接触C语言,请问各位程序界的大哥们,有中文的学习资源吗??我想学习一些,谢谢各位了。
google搜一下啥都有了
代码量少并不意味着项目开发进度快,软件工程方面的因素很重要。现在越是大的项目价值越高,利润也越高。这些脚本语言,做大项目的时候就比较痛苦了吧。
不会啊,openstack30万行代码都是Python写得。
关于aqee网站本身的问题。这篇文章是什么时候发表的?我在网站上没有找到日志发布日期,只能从底下的评论日期推测。
评论永远比文章本身更有意思 也更能让人学到东西
无知者无畏啊。编程语言有优劣之分么
简单地说,不管c、java、php,还是其他什么的。玩熟了一门,其他语言看看官方文档就可以干活了,干2个项目就是高手了。
从来不主动的去学什么语言,一般情况下是,需要了就学,项目做完了,语言也学会了,python得却很好用,而且python的tab缩进看起来挺性感的啊,你不觉得吗?很顺眼!
没有最优秀的语言,只有最合适的语言。
还是用Python的缩进更符合我的审美,规规整整
再也不用怕别人一会儿用tab,一会儿又就空格
实在是让人心理不爽,即使有eclpse也难受
语言只是种工具而已,说的太神乎了,呵呵
到此一游,正准备学ruby!本人8年的c++开发经历java,C#都精通了。ruby on rails效率是高!不光是开发上的,还是代码运行效率上的。不过看下来ruby只能开发web。。。还有文章中说的移动开发就要学java和objective-c,就是胡扯么,本人就是受害者,否则我就不学java了,现在C++,C#都能开发android和ios!
页面标题没有加word-wrap属性
又是语言大战,选择最适合自己的语言就可以了
一直在用PHP,感觉也都还满足使用啊,精通一门就好啦,不要学那么多
你好,感谢你的分享;
打算进入完全这个行业,问一下你感觉未来python的就业前景如何?
我只能说,你这个大傻逼!每种语言有自己的擅长之处,你把别的贬得一无是处,那是不是Python就是万能?可以取消其他语言了!白痴!