运维工程师为什么要学习python或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和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 等其它语言显的更适合。