【外刊IT评论网】每个程序员都应该学习使用Python或Ruby

标签: it 程序员 学习 | 发表时间:2011-07-27 06:46 | 作者:(author unknown) L
出处:http://www.feedzshare.com

来自: 外刊IT评论 - FeedzShare  
发布时间:2011年07月24日,  已有 3 人推荐


本文是从 Why every programmer should learn Python or Ruby 这篇文章翻译而来。

如果你是个学生,你应该会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

如何去学它们呢?很多很多的网站上都提供了学习Python和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 等其它语言显的更适合。


本文来自外刊IT评论网(www.aqee.net),原始地址:每个程序员都应该学习使用Python或Ruby

相关 [it 程序员 学习] 推荐:

每个程序员都应该学习使用Python或Ruby

- Kings - 开源中国社区最新新闻
本文是从 Why every programmer should learn Python or Ruby 这篇文章翻译而来. 如 果你是个学生,你应该会C,C++和Java. 还会一些VB,或C#/.NET. 多少你还可能开发过一些Web网页,你知道一些HTML,CSS和 JavaScript知识.

程序员初学机器学习的四种方式

- - HTML5资源教程
学习机器学习有很多方法,大多数人选择从理论开始. 如果你是个程序员,那么你已经掌握了把问题拆分成相应组成部分及设计小项目原型的能力,这些能力能帮助你学习新的技术、类库和方法. 这些对任何一个职业程序员来说都是重要的能力,现在它们也能用在初学机器学习上. 要想有效地学习机器学习你必须学习相关理论,但是你可以利用你的兴趣及对知识的渴望,来激励你从实际例子学起,然后再步入对算法的数学理解.

程序员在大学里究竟应该学习什么?

- - 博客园_首页
近来在CSDN结识了 贺利坚老师,并仔细的读了一下贺老师的博客,感觉贺老师是非常负责的一个大学老师,在他的博客中看到了很多他和大学生的交流. 这就促使我开始思考,如果大学再来一遍,我也还是想做软件,那我应该在大学里学点什么. 最终我决定把想到的东西写下来,希望能对在校的人有点帮助. 首先我们得知道这问题的答案是个变量,他依赖于你的目标和天资能力,绝不唯一.

国外程序员整理的机器学习资源大全

- - 我爱机器学习
  本列表选编了一些机器学习领域牛B的框架、库以及软件(按编程语言排序). CCV —基于C语言/提供缓存/核心的机器视觉库,新颖的机器视觉库. OpenCV—它提供C++, C, Python, Java 以及 MATLAB接口,并支持Windows, Linux, Android and Mac OS操作系统.

【外刊IT评论网】每个程序员都应该学习使用Python或Ruby

- 悟怡 - 外刊IT评论网
本文是从 Why every programmer should learn Python or Ruby 这篇文章翻译而来. 如果你是个学生,你应该会C,C++和Java. 还会一些VB,或C#/.NET. 多少你还可能开发过一些Web网页,你知道一些HTML,CSS和JavaScript知识. 总体上说,我们很难发现会有学生显露出掌握超出这几种语言范围外的语言的才能.

为什么每个程序员都应该学习代码编译器知识

- - 外刊IT评论
所有优秀的计算机科学学院都提供了编译器课程,但是相对比较少的学校把它作为本科课程的必修部分. 这篇文章回答了这个问题:为什么需要学习编译器知识. 我写这篇文章的其中一个原因是,尽管我在读本科时很喜欢编译器课程,但是我几乎看不到它的实际作用. 大多数资料看起来要么简单易懂,要么很深奥(事实上,我找到的大部分编译器资料都是很枯燥的.

【外刊IT评论】为什么说学习Prolog语言能让你成为更好的程序员

- allenpatient - 外刊IT评论
本文是从 Why Learning Prolog Can Make You a Better Programmer 这篇文章翻译而来. 本人对这种语言不太熟悉,翻译中有些地方理解的可能不正确,欢迎指正. 在计算机教学的课程中,有个传统的现象,是否学过某一两种的课程能够成为判断一个人能否深入理解一些计算机科学概念的分水岭.

[来自iPc.me] 传说中的《程序猿装B指南》,程序员童鞋们请认真学习

- han - iPc.me
最近似乎某些装B指南比较火,刚好周五的晚上闲着没事,于是我也随便写一个《程序员装B指南》,话说装B是一种能延年益寿的好习惯,大家随便看看,开心就好……. [ 请大家更新订阅地址 http://feed.ipc.me ]. iPc.me 猜你可能还会喜欢:为什么我们程序员晋升要这么难. 2011程序员薪资调查报告出炉.

普通程序员、文艺程序员、2B程序员

- 可可 - 宇宙的心弦
希望能引起广大苦逼的正在学或者已经学过c++人的共鸣和会心一笑吧. 如何辨别自己在现实还是虚拟世界.