学编程选什么语言好?是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 的一些情况,让读者更好地挑选学习的语言。

语言没优劣之分,Just follow your passion.

(0)

相关推荐

  • 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 函数来做的,虽

  • Ruby对比Python的优势和劣势

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

  • python和ruby,我选谁?

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

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

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

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

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

  • 2020年编程选Java的8大理由,JAVA前景如何

    大多数人选择Java可能只是因为听说Java前景好.Java比较好找工作.Java语言在TIOBE排行榜上一直位于前三等等之类的原因,但是Java具体好在哪里,心里却是没有什么概念的. 今天娜娜米就带大家一起了解一下,学编程选Java的8大理由. 1.Java广受欢迎 Java仍然是世界上最受欢迎的编程语言之一,有无限多种方法使用Java.根据2019年月TIOBE指数和IEEE Spectrum排名,Java依然是最受欢迎的编程语言. 2.薪资可观 最新的一些报告证明,Java程序员是业内薪资

  • 通过 for 循环比较 Python 与 Ruby 的编程区别

    前言: Ruby 与 Python 之间的差异在很大程度上可通过for循环看出本质.Python 拥有for语句.对象告诉for如何进行协作,而for的循环体会处理对象返回的内容.Ruby 则相反.在 Ruby 中,for本身(通过each)是对象的一个方法.调用者将for循环体传递给这个方法.在 Python 的语言习惯中,对象模型服从于 for 循环.而在 Ruby 中,for 循环服从于对象模型. 也就是说,在 Python 中,如果你想自定义迭代的过程,可以让对象告诉解释器该如何作迭代:

  • Python编程实现双击更新所有已安装python模块的方法

    本文实例讲述了Python编程实现双击更新所有已安装python模块的方法.分享给大家供大家参考,具体如下: 首先声明我是一个升级控.几乎每天会查看一下手机.电脑是否有新的应用需要更新. 同样,我的python模块也是这样.百度了一下,发现目前还没有人将更新所有模块做成一件命令,但是查到了指引,主要就是两个命令. pip list --outdated pip install -U xxxx 当然,如果你只是安装了几个python模块,重复执行几次命令也是可以的,也不会太烦,也不会浪费时间. 有

  • 浅谈Linux环境下并发编程中C语言fork()函数的使用

    由fork创建的新进程被称为子进程(child process).fork函数被调用一次,但返回两次.子进程的返回值是0,而父进程的返回值则是新进程的进程ID.将子进程ID返回给父进程的理由是:因为一个进程的子进程可以有多个,并且没有一个函数使一个进程可以获得其所有子进程的进程ID.fork使子进程得到返回值0的理由是:一个进程只会有一个父进程,所以子进程总是可以调用getpid以获得其父进程的进程ID. 使fork失败的两个主要原因是:系统中已经有了太多的进程,或者该实际用户ID的进程总数超过

  • 《与孩子一起学编程》python自测题

    测试题一. 1. 程序可以响应的两种事件分别是键盘事件和鼠标事件. 2. 处理事件的代码称为事件处理器 3. Pygame使用KEYDOWN事件来检测按键是否按下. 4. Pos属性会指出事件发生时鼠标所在的位置 5. 要为用户事件得到下一个可用的事件编号,可以使用pygame.NUMEVENTS. 6. 要创建一个定时器,可以使用pygame.time.set_timer(). 7. 要在Pygame窗口中显示文本,可以使用font对象. 8. 使用字体对象有3个步骤: 创建一个字体对象 渲染

  • Python Socket编程入门教程

    这是用来快速学习 Python Socket 套接字编程的指南和教程.Python 的 Socket 编程跟 C 语言很像. Python 官方关于 Socket 的函数请看 http://docs.python.org/library/socket.html 基本上,Socket 是任何一种计算机网络通讯中最基础的内容.例如当你在浏览器地址栏中输入 www.jb51.net 时,你会打开一个套接字,然后连接到 www.jb51.net 并读取响应的页面然后然后显示出来.而其他一些聊天客户端如

  • Python帮你微信头像任意添加装饰别再@微信官方了

    @微信官方 昨天朋友圈刷爆了@微信官方的梗,从起初的为头像添加国旗,到最后的各种Book思议的需求-而我呢?@了辣么辣么多的奥特曼,结果还是加班到12点多-最后想想,人还是得靠自己吧,@我自己吧- 昨天最近每晚加班回家都凌晨了,昨晚因为太累没更新,今天再不更新感觉有点太对不起大家,所以想想今天就学着@微信官方,用Python给我们的微信头像添加国旗吧! 说说上篇文章 上篇文章如何把图片变得炫酷多彩,Python教你这样实现!,其实也是讲关于图片拼接的内容,只是有些朋友私下微信和我说,分块加载的方

  • JavaScript 调试器简介

    但是仅从调试的角度来说,这些调试器的功能是完全够用的.其实我更需要的不是一个 JavaScript IDE,而是一个 JavaScript 重构工具,这样可以使我快速地对 JavaScript 组件进行重构,比使用 UltraEdit 进行查找/替换的原始方法效率会提高很多,而且更加安全.其实任何一种没有重构工具的语言的开发效率都是没有办法和 Java 这样的语言(有 Eclipse.IDEA 等等强大的重构工具)相提并论的.共产主义尚未实现,这确实是现实,但是并不意味着我们就一定要等待,就没有

随机推荐