php-python-ruby

*/-->

php-python-ruby

原文

一句话总结

简单地总结:

假如你想帮他尽快找个活儿,赚到钱,推荐PHP。
假如你想让他成为一个高效工程师,推荐 Python。
假如你想让他爱上他的工作,推荐 Ruby。

语言的选择

编程语言非常重要,不要认为他们都图灵等价,用起来都一样。实际上,好的语言,带给你的东西是超乎想像的。

下面是一些看法:

程序员的时间远比机器的时间宝贵:选择开发效率最高的语言吧,不要过于在乎运行性能,如果你开发不出东西,那么跑得多快也没用。
优雅的抽象胜于简单的堆砌: 这意味着你的代码是最简洁而又充满设计感的,面向对象,容易的闭包,一切都是表达式等等,而最好的抽象是语言本身能够分层,既能够书写语言的语言,比如 DSL 能力强弱是个指标。
才华横溢的社区胜过有难度的招聘:这种语言一定要拥有一个活跃且才华横溢的社区,只要使用她的人,就有一种自豪感和精英意识,在社区里的每个人都自认为比别人强。即使,你不那么容易招聘到程序员,但我们不都知道,一个有才华的程序员胜过100个平庸之辈嘛?选用这种语言,能保证团队里一起编码的每一个人,都是高手。
也是最重要的,乐趣胜过一切: 灵活,好玩,永远有新发现的魔术般的语言,只有你想不到的,没有你做不到的,对一个真正的hacker来说,这是选择语言唯一的理由,这也是 Perl 为什么能够长期存活的原因,因为她是 hacker 为 hacker 创作的。

如果能看完这些观点,相信你能猜出我的选择了 :) 是的,Ruby是主流语言中我认为最出色的,最高的开发效率,最优雅简洁的抽象能力,最有才的社区(Github为中心),和最大的乐趣。

做为一个程序员,是应该去选取不同思路的语言去学习的,而且当然要选择最有代表性的语言,在编程的世界里,主流的思路其实就两种,一是结构化编程,一是函数化编程,面向对象只是结构化编程进化的一个阶段而已,其他各种各样的思路大多数是这两个的分支。
社区的创造力

选择一门语言要看这个语言社区的气质,以及你想用他做什么东西。

Mac 上可以运行那么多种语言,有很多人用 git。但却只有 Ruby 的用户开发出了 homebrew 这样牛逼的包管理系统,善用了 github 的诸多特性,真正的把每一个用户都变成了潜在的 repo 贡献者。我相信这绝对不是巧合。如果同样的条件摆在面前,你做出了一个全新的东西而别人没有,说明了你的创造力比别人要高。

作为 Python 的使用者,我觉得 Ruby 语法的优劣不太重要。但是从外部看 Ruby 社区近些年持续的向外输出一些从技术到开发上的理念,不断的有大大小小的很酷的项目从 Ruby29 社区中诞生的出来。使得我觉得 Ruby 社区是一个很有创新气质的社区。因此如果你学编程是想做出一个很酷的东西,那么我强烈建议你直接学习 Ruby。
从 Web 开发去比较

对于 Web 开发,这三种语言都能胜任,但是还是有不少区别:

Ruby 的 rails 框架确实是称得上是快速开发的典范,但是 Ruby 的语法过于灵活,有些时候对同一个处理会有很多种不同的写法。
PHP 是老牌的网页脚本语言,相对其他两门而言比较成熟。PHP 虽然快速成型,但容易失控,尤其项目稍大的时候。
对于 Python 来说,由于自身的简约设计,可能应用的方面的更多,几乎是可以涉及到IT的各个方面,Web 只是它其中一个方面,而且有比较成功的杀手级应用,Youtube 就是用 Python 开发的,服务器的各种原来用 shell 或者 perl 的脚本,科学计算,游戏的脚本,甚至在桌面客户端上也能看到 Python 的佳作,如 UliPad,对于初学者来说 Python30 是个不错的选择,在这三者中它的语法是最简洁和清晰的,适合初学者学习。

入门语言还是应该选择一个比较严谨的,像Java,Python那样的语言比较合适,从 PHP 语言不太容易学到 OO 的思想和设计模式之类的东西,而这些对于一个优秀的 PHP 程序员来说也是很必要的。这里不是黑 PHP,每个语言都有自己的优点,比如 PHP 入门快,可以增加编程的信心,明白编程那点事后,可以触类旁通的接触其他语言。很多编程者就是从 PHP 入门的。

在编程学习里有这么一个现象:直接推荐 Python 的人,基本都没深入学习过 Ruby。学过 Python 和 Ruby 的人,基本都喜欢 Ruby。

具体使用什么语言,不是唯一的。根据场景是要分的。一个人至少是需要学习3种语言的:

一种是工作语言,比如C++,Java,PHP,这三种语言,是互联网的万能药,只要会了,工作是永远都不愁的,大型公司一般都会使用,用来开发一些大型项目。
一种是自己使用的语言,比如 Python,Ruby,当然,我也推荐 Ruby。我也用过 python ,后来因为工作需要,忍痛放弃了 Python,最后,竟然深深喜欢上 Ruby 了。然后就不再回头了,对于个人使用来说,是要非常注重开发效能的,一门语言,至少能用10年,如果自己选择的语言,可以在开发效能上超越其他语言十分之一,那么在十年内这种收益是非常大的。
还有一门是新语言使用,不必深入,但是一定要了解,这有助于比较不同语言的不足,才不至于成为井底之蛙。比如 Nodejs, Scale等。

关于 Ruby

我觉得直接学 Ruby 也是不错的选择。

本来 rails 框架就自带了 server,WEBrick。看着 Log 做开发效率非常高。
如果要部署的话,用 passenger 也是绝对方便。
Views 层的模板系统,ERB 应该比 Python 的各种要来得美,而且更加简单。之前用过 Django,觉得太重了。
Rails 可以让你不断的惊讶程序可以这样写的啊,我第一次看到有 7.days.ago 的时候惊掉了。
Rails强调一种DSL,一来符合人们的语言习惯、二来我觉得是一种编程语言的颠覆,我们并不是在用某个特定的语言(比如Ruby)来实现一个功能(就如同是用C还是用Java来写一个编译器),而是我可以在这些语言的基础上定义一种新的语言(类似于lex,yacc这样的词法语法生成器)。看看routes.rb的设置吧,能有多么惊讶,这是程序么,简直就是诗。美不只是在于内容,同样在于形式。

Ruby 或者说 Rails 的缺点或许就是学习的曲线太陡,我之前有过 MVC 的经验,上手RoR 还是花了三周的时间,或许也是自己接受能力不强吧,但更确切的问题应该在于 Rails 的惯用法太多:当然,我在用 ActiveRecord 拿数据的时候,可以写 findbysql("blablabla"),但是细查 Rails 的文档,他是提供类似于 Joins.Group.Select 等等的方法的,姑且不论效率是不是真的会快点,少写一点 sql 在 .rb 的文件里面不是会更美一些么。再到后来,偶然又发现有 metawhere 这种东西,是不是又要忍痛抛弃既往学到的那一堆 works but not elegant 的东西,义无反顾的投身到 metawhere 的学习中。

当然,如果不追求完美,上手也没有这么恐怖。
关于 Python

python的优势很多,比如:

语法简洁,无需编译。Python 语法简洁高效,一句话“人生苦短,我用 Python”啥都说明了,高效是 Python 的特点。
强大的数据结构。默认安装的Python开发环境已经附带了很多高级数据类型,如列表、元组、字典、集合、队列等,无需进一步编程就可以使用这些数据类型的操作。使用这些数据类型使得实现抽象的数学概念非常简单。
强制缩进,让代码自然显得有条理。
插件齐全,可以完成绝大部分的程序设计任务。

当然还很多,具体还可以去看看 《Python的设计哲学》31 这个 chapter。
小结

没有最好的语言,只有最合适的语言。
没有糟糕的语言,只有糟糕的程序员。
没有一种语言是万能的,只会一种语言是万万不能的。

用什么语言不重要,最重要的是效率:开发效率和执行效率。PHP32 语法很傻,一点都不炫,但凡是学过C、JS、AS等等语言的,很容易上手,因为语法上有很多重合的地方。很多人看不起 PHP,说 PHP 太简单的人,往往是因为对 PHP 本身不够深入了解,其实 PHP 里面的东西一般人用到的很少,5.3 以上的特性也慢慢让这种语言生动起来,你越是深入,就越能发现它的强大和优势。

这里仅仅列出 PHP,Python 与 Ruby 的一些情况,让读者更好地挑选学习的语言。

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


Date: 2015-01-11 13:30:01

Author: sunx

Created: 2015-01-11 Sun 13:39

Emacs 24.4.1 (Org mode 8.2.10)

Validate

时间: 2024-08-05 08:37:59

php-python-ruby的相关文章

PHP和Python Ruby的运行机制区别

PHP和Python/Ruby的运行机制有一个本质区别:PHP是每次HTTP请求过来以后,初始化全部资源(例如创建数据库链接.加载系统类库,创建缓存等等),处理完毕,释放全部资源,这不像Python/Ruby之类带有GC的脚本语言,Python/Ruby是初次启动的时候初始化资源,随后的请求就不必再次初始化资源了. 这种机制的差异带来的区别就是: 1.PHP极难出现严重的内存泄露问题,随便你代码写的多烂,反正每个请求一执行完毕,所有资源统统释放光.而Python/Ruby则需要依赖GC来回收内存

JSP,PHP,Python,Ruby,Perl概要及各自特点

JSP,PHP,Python,Ruby,Perl概要及各自特点 博客分类: JSP PHP Python Ruby Perl概要及各自特点 javascript 互联网技术日新月异,编程的语言层出不穷,原本稍微平静了几年的网络编程技术又不断出现新的东西,涤荡着整个网络世界,ruby,Python等技术使我 们原本比较老板的编程理念和概念产生了混淆和动荡.他们有什么区别和联系?怎么定义这些新生的事物?抹去额头因为生疏而津津的汗滴,从头Google一下 吧.                     

sublime搭建c++/java/lua/python/ruby的配置文件

本人电脑win7 64位 提前装一下convert to utf-8插件,编译运行出现乱码,组合键ctrl+shift+c把源文件转成gbk编码. 仍乱码的话,重启编辑器|电脑|重新编辑中文部分. c++ { "cmd": ["g++", "${file}", "-o", "${file_path}/${file_base_name}"], "file_regex": "^(.

Vim 7.4.1952 with Python/Ruby/Lua/Perl/C Syntax built for Ubuntu 16.04 x86_64

The default Vim provided by Ubuntu 16.04 even did not have Python support. That's insane. I say, what if I wanted to use Vim as a Python IDE in Linux as before? Ubuntu, you can't be so careless. Using this command to check whether it has vim --versio

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

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

比较Perl、PHP、Python、Java和Ruby

!预览 · 语言的发展趋势一定是动静结合.刚柔并济 · Perl凝练晦涩,Python优雅明晰,Ruby精巧灵动,PHP简明单纯 · 或许优雅正是来自对细节和规范的重视 · (RoR)与Ruby结合之后,便如一只猱身而上灵猫,立刻衬托出Java和.NET大象般的身影 ?提问 Perl.Python.Ruby和PHP各自有何特点? 为什么动态语言多作为轻量级的解决方案? LAMP为什么受欢迎? Ruby on Rails为什么会流行? 编程语言的发展趋势是什么? :讲解 “剩下四种动态语言,我们将

php、python、ruby——web脚本语言的比较

原文地址:http://klau.si/php-vs-python-vs-ruby 摘要 在过去几年里,在web应用程序编程中,脚本语言变得越来越受欢迎.本论文试图在如今三种最受欢迎的语言:PHP.Python和Ruby中找到其中的差异.优点.缺点.很明显,他们有他们自己的观点和支持,所以要陈述客观事实并满足一种科学的方法是一项困难的任务.这三种语言将在web应用程序环境进行有关历史.进化.流行程度.语法.语义.功能.安全性和性能方面做评估.最后,一个最终的结论将建议最有前途的一种语言. 1.介

python基础day1

1)python 由Guido开发 2)编译(compile)型:通过编译器把代码直接生成一个可执行文件. 比如把英语书一次性翻译成中文书.语言有:c,C++等 解释型:边编译边执行.语言如:java,python等 3)动态类型语言是指在运行期间才做数据类型检查的语言,比如python,Ruby 静态类型语言是在编译期间检查的.比如:C/C++. 4)强类型定义语言:一个变量被指定了某个数据类型,如果不经过强制转换,那么永远是这个类型. 弱类型定义语言:数据类型可以被忽略的语言.可以赋予不同数

Python伪开发者对于搜狐云景的测评

Python伪开发者对于搜狐云景的测评 本人是GAE和OpenShift的狂热爱好者,玩过各种国外PaaS.某次想搞个稍微复杂点的Python Web程序,需要比较好的网络传输速度,就试图找前PM(Project Manager)要个国内的VPS耍一把.前PM表示近来搞了个搜狐云景的公测激活码,让我先试试,于是就有了我在SCE的第一个奇怪的Python应用. PS: SCE是搜狐云景是搜狐公司自主研发的与语言无关.可提供弹性伸缩服务的公有云PaaS平台,现致力发展成为最开放的PaaS平台. (无

散文说python半篇——景观三元论与盖茨比的对话

今天, 天气晴朗,风和日丽: 我其实在说谎-- 爱说谎其实是我的天性 上个礼拜四我就用景观三元论说了很多谎话,然后一头大象自己上吊了, 了不起的大象啊,盖茨比也要从坟墓里爬出来了吧, 陈年旧事, 紫露凝烟, 没有了盖茨比的坟墓依然是遗址公园,景观三元论如是说. 景观三元论问:盖茨比,你为何不用C++写代码?非要用ruby或者python这种运行很慢的语言呢? 盖茨比说: 老兄,你要求快,干脆直接用汇编语言去写吧. 举个例子吧, 你用C++写一个实现某个功能的程序,这个程序的运行速度确实很快,只要