每个程序员都应该学习使用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 等其它语言显的更适合。

(0)

相关推荐

  • python和ruby,我选谁?

    最近在考虑学习一门后端语言,在ruby和python直接犹豫,然后自己做了一些对比,希望能帮到有同样问题的你. 一.异同对比选择 1.Python和ruby的相同点: •都强调语法简单,都具有更一般的表达方式.python是缩进,ruby是类basic的表达.都大量减少了符号. •都是动态数据类型.都是有丰富的数据结构. •都具有C语言扩展能力,都具有可移植性,比perl的可移植性更好.也都可以作为嵌入语言. •都是面向对象的语言,都可以作为大项目的开发工具. •都有丰富的库支持. •也有最宽松

  • Ruby对比Python的优势和劣势

    Ruby 和 Python 太相似了,取舍大部分都是个人喜好上的原因.比如我就觉得 Python 的 "There is only one way to do it." 比 Ruby 的 "There are many ways to do it." 要好,这不光是考虑团队协作的问题,更重要的是自己能很快明白自己三个月前写的没有任何注释的代码是在干什么.当然也有很多人觉得自由和灵活要比可读性来的重要,所以我说这个是个人喜好的原因. 客观上的 Ruby 比 Pytho

  • 学编程选什么语言好?是PHP、Python还是Ruby?

    简单地一句话总结: 1.假如你想帮他尽快找个活儿,赚到钱,推荐PHP. 2.假如你想让他成为一个高效工程师,推荐 Python. 3.假如你想让他爱上他的工作,推荐 Ruby. 语言的选择: 编程语言非常重要,不要认为他们都图灵等价,用起来都一样.实际上,好的语言,带给你的东西是超乎想像的. 下面是一些看法: 1.程序员的时间远比机器的时间宝贵:选择开发效率最高的语言吧,不要过于在乎运行性能,如果你开发不出东西,那么跑得多快也没用. 2.优雅的抽象胜于简单的堆砌: 这意味着你的代码是最简洁而又充

  • Python和Ruby中each循环引用变量问题(一个隐秘BUG?)

    虽然这个问题我是在 Python 里遇到的,但是用 Ruby 解释起来比较容易一些.在 Ruby 里,遍历一个数组可以有很多种方法,最常用的两种无非是 for 和 each: 复制代码 代码如下: arr = ['a', 'b', 'c'] arr.each { |e|  puts e} for e in arr  puts eend 通常我比较喜欢后者,似乎因为写起来比较好看,不过从效率上来说前者应该会稍微快一点,因为后者实际上是在遍历的过程中对每个元素都调用一个 lambda 函数来做的,虽

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

    如果你是个学生,你应该会C,C++和Java.还会一些VB,或C#/.NET.多少你还可能开发过一些Web网页,你知道一些HTML,CSS和JavaScript知识.总体上说,我们很难发现会有学生显露出掌握超出这几种语言范围外的语言的才能.这真让人遗憾,因为还有很多种编程语言,它们能让你成为一个更好的程序员. 在这篇文章里,我将会告诉你,为什么你一定要学习Python或Ruby语言. 跟C/C++/Java相比 - Python/Ruby能让你用少的多的多的代码写出相同的程序.有人计算过,Pyt

  • 每个程序员都需要学习 JavaScript 的7个理由小结

    最近在和招聘经理交流现在找一个好的程序员有多难的时候,我渐渐意识到了现在编程语言越来越倾重于JavaScript.Web开发人员尤其如此.所以,如果你是一个程序员,那么你应该去学习JavaScript. 需求 我之所以这样说的主要原因是,随着JavaScript的日渐成熟,以及Node.js方案变得越来越可行,我们对JavaScript程序员的需求正在持续增长. JavaScript在需求比例上已经超过了C#,仅屈居于Java之下.如果你看看GitHub上可行的项目,你会发现JavaScript

  • 程序员都不知道C语言中的这些小细节

    既然题目都说了是小细节,一来就介绍细节多没意思啊,先坑坑大家再详细介绍吧,嘿嘿.直接上7个题吧,看看你能做对几个呢? 计算型细节 ①: #include <stdio.h> int main() { char a = 3; char b = 127; char c = a + b; printf("结果是:%d",c); return 0; } 您想想这个题的答案是多少?先不要看后面的答案哦 答案是 -126, 嘿嘿,是不是答错了呢?先不要着急,继续看下面的题 ②: #in

  • 让程序员都费解的10大编程语言特性

    每种语言都有自己的独到之处,或奇特的语法,或不常见的函数,或非标准的执行方式.因此,不论新丁还是老手,看着某个特性会突然醉了.文中总结了10个经常被提及的"奇异"特性. 1. Javascript: + 是一个连接符 问题描述: 在JS中,+ 号用在数字间,可以用作常规加法:但如果遇上字符,又可作为字符连接符.例如:'1'+ 1的结果是11. 成因分析: 根本性原因是JS属于弱类型语言.比方说Python,同样地使用+ 号作为字符连接符,但由于它是强类型语言,一旦发现一个字符与一个整数

  • ASP.NET 程序员都非常有用的85个工具

    介绍 这篇文章列出了针对ASP.NET开发人员的有用工具. 工具 1.Visual Studio Visual Studio Productivity Power tool:Visual Studio专业版(及以上)的扩展,具有丰富的功能,如快速查找,导航解决方案,可搜索的附加参考对话框等 ReSharper:提高.NET开发人员生产力的工具,提高代码质量,通过提供快速修复消除错误,等等 MZ-Tools:它可以在方法.文件.项目.解决方案或项目组.选定的文本,文件组合或项目组合中找到字符串.结

  • C++ 程序员为什么看不起php程序员

    我觉得C++ 虽然速度快,但是编译起来很复杂,要写各种dependency 才不会导致因编译顺序产生的失败.namespace 的乱用和混用让人摸不着头脑.不同的Cpp可以共用一个h,你都找不到申明在哪里. PHP就好多了.类似java,文件名就是class 名,继承简单,完全面向对象.这就是面向对象编程的真正好处.看代码时很好理解,除了map, vector的操作很奇葩以外. 既然如此,C++程序员为什么看不起PHP呢? 写了4年php,写了6年c++. 不是看不起php,只是觉得一个解释型脚

  • 程序员的八种境界,你在哪一境?

    如果将程序员分为本文的8种类型,你会是哪一种呢? 在求职的时候,相信很多人都被问过这样的问题,"你对自己未来5年的职业规划是怎么样的?" 每当我被问起这个问题的时候,我的脑海里总是浮现出TwistedSister乐队1984年拍摄的一段视频里的这个场景:一位老师对着他的学生大喊,"我想要你告诉我,不,是告诉全班同学,你究竟想要过怎样的生活?" 注:TwistedSister是一支源自美国纽约的摇滚乐队,成立于1970年代早期.后来经过将近10年的奋斗,他们在80年代

  • Python程序员面试题 你必须提前准备!

    近些年随着Python语言越来越流行,越来越多的人选择Python语言作为自己的职业方向.如何在心仪公司的面试中获得好成绩,并最终成功获得offer是每一个Python开发者都要慎重对待的事情,如下是笔者整理的Python程序员在面试中经常被问到的问题,供您参考,未尽题目,欢迎留言补充. 这些面试问题大致可以分为四类:什么(what)?如何做(how)?说区别/谈优势(difference)以及实践操作(practice). What? 1. 什么是Python? 2. 什么是Python自省?

  • 程序员的七夕用30行代码让Python化身表白神器

    转眼又到了咱们中国传统的情人节七夕了,今天笔者就带大家来领略一下用Python表白的方式.让程序员的恋人们感受一下IT人的浪漫.    一.词云制作 首先咱们可以用之前介绍过的wordcould包制作词云.wordcloud包安装十分简单.pip即可完成安装 pip install wordclould 然后需要制作一个背景图片,为了应急我用艺术字做了个七夕的图片,如果大家来不及直接图片另存为使用下图即可. 具体制作的词云的代码如下: from wordcloud import WordClou

  • C++高级程序员成长之路

    C++这门语言从诞生到今天已经经历了将近30个年头.不可否认,它的学习难度都比其它语言较高.而它的学习难度,主要来自于它的复杂性.现在C++的使用范围比以前已经少了很多,java.C#.python等语言在很多方面已经可以代替C++.但是也有很多地方是其他语言完全无法替代的,主要集中在需要运行效率比较高的行业,比如游戏.高效的服务器. 现在学习java.C#等语言的人数远远高于C++,主要是C++的入门门槛太高,可能学习了一段时间后还做不了什么东西,导致信心大受打击,进而放弃. 我想把我自己的经

随机推荐