`

再谈PHP、Python与Ruby

 
阅读更多

一句话总结

简单地总结:

  • 假如你想帮他尽快找个活儿,赚到钱,推荐PHP。
  • 假如你想让他成为一个高效工程师,推荐 Python。 
  • 假如你想让他爱上他的工作,推荐 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 开发,这三种语言都能胜任,但是还是有不少区别:

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

入门语言还是应该选择一个比较严谨的,像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 也是不错的选择。

  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的设置吧,能有多么惊讶,这是程序么,简直就是诗。美不只是在于内容,同样在于形式。

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

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

关于 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

转自:www.nowamagic.net/librarys/veda/detail/2504

 
分享到:
评论

相关推荐

    为什么你一定要学习Python或Ruby语言.pdf

    与VB和PHP相比,Python和Ruby在语言设计上更加先进。虽然VB和PHP易于入门,但它们在处理大型项目时暴露出设计上的局限性。Python和Ruby提供了更强大、更优雅的解决方案,适合长期的、复杂的项目开发。 与Lisp、...

    PHP、Python、Ruby的(数据库、文件)比较(原创)

    本篇文章将深入探讨三种流行的脚本语言——PHP、Python和Ruby在处理数据库和文件操作方面的差异与特点,以帮助开发者更好地理解它们各自的优势。 首先,PHP(Hypertext Preprocessor)是一种广泛用于Web开发的语言...

    PHP、Python、Ruby的(数据库、文件)比较(原创).pdf

    在编程世界中,PHP、Python和Ruby都是广泛使用的脚本语言,尤其在Web开发领域。它们各自具有独特的特性和优势,特别是在处理数据库和文件操作时。以下是对这三种语言在数据库和文件操作方面的一些比较。 首先,我们...

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

    本文将探讨为何Python和Ruby对程序员如此重要,以及它们与其他编程语言相比的优势所在。 首先,Python和Ruby以其代码的简洁性著称。它们允许程序员用极少的代码行数完成相同功能的程序,相比Java、C++等语言,...

    The C based gRPC (C++, Python, Ruby, Objective-C, PHP, C#).zip

    The C based gRPC (C++, Python, Ruby, Objective-C, PHP, C#)

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

    在互联网上,关于初学者应该选择哪种编程语言的讨论非常热烈,常见的选择有PHP、Python和Ruby。以下是对这三种语言的深入分析以及它们在实际应用中的优劣比较。 首先,PHP是一种广泛使用的服务器端脚本语言,尤其在...

    基于 C 的 gRPC(C++、Python、Ruby、Objective-C、PHP、C#)

    gRPC – 一个 RPC 库和框架 gRPC 是一个现代的、开源的、高性能的远程过程调用 (RPC) 框架,可以在任何地方运行。gRPC 使客户端和服务器应用程序能够透明地通信,并简化了连接系统的构建。 为了最大限度地提高可用...

    Python安装包和安装教程.pdf

    与 Java、PHP、C# 和 Ruby 等语言相比,Python 具有许多优点,使其成为开发者的首选语言。下面是 Python 安装包和安装教程的详细信息。 Python 的优点 1. 简单易学:Python 的语法简单易学,易于初学者上手。 2. ...

    Ansible角色,以capistrano风格部署脚本应用程序,例如PHP,Python,Ruby等-Python开发

    Ansistrano ansistrano.deploy和ansistrano.rollback是Ansible角色,可轻松管理脚本编写应用程序(如PHP,Python和Ruby)的部署过程。 这是Capistrano的Ansible端口。 Ansistrano Ansistrano ansistrano.deploy和...

    生产规模的数据中心分析器CC Go Rust Python Java NodeJS PHP Ruby Perl.zip

    这个压缩包文件"生产规模的数据中心分析器CC Go Rust Python Java NodeJS PHP Ruby Perl.zip"包含了多种编程语言实现的数据中心分析器组件,这表明该工具可能支持跨平台和多语言集成。以下是对这些编程语言在数据...

    基于Python的Web技术

    LAMP 是一种流行的 Web 开发平台,由 Linux、Apache、MySQL 和 PHP、Perl、Python 或 Ruby 等脚本语言组成。LAMP 具有开放灵活、开发迅速、部署方便、高可配置、安全可靠、成本低廉等优点,是目前最流行的 Web 开发...

    Python与Oracle数据访问技术白皮书.pdf

    作者Christopher Jones,作为Oracle数据库的产品经理,介绍了多种语言API,包括OCI、ODBC、ODPI-C、C++、OCCI、Java、JDBC、.NET、ODP.NET、Node.js、Python的cx_Oracle、PHP、Perl的DBD::Oracle、Ruby的ruby-oci8、...

    完全用Python工作---Harness the power of Python

    与传统编程语言相比,Python以其简洁的语法和丰富的库资源,降低了学习和使用的门槛,使得非专业编程人员也能高效地提升工作效率。 Python的优势在于其通用性,它可以替代C、C++、Java、Ruby等语言的部分功能,并在...

    2022年最新。Python教程-100天从新手到大师

    DevOps - Python / Shell / Ruby 数据采集 - Python / C++ / Java 量化交易 - Python / C++ / R 数据科学 - Python / R / Julia / Matlab 机器学习 - Python / R / C++ / Julia 自动化测试 - Python / Shell 作为一...

    Eclipse搭建Ruby开发环境

    - Eric4 是一个基于 PyQt 的 IDE,非常适合 Python 和 Ruby 开发。 - 下载 Eric4 并解压后,通过运行 `install.py` 来安装。 - 确保 QtCore4.dll 所在的文件夹包含在环境变量 PATH 中,以便正确识别 PyQt 的组件...

    SublimePeek:ST2 插件,通过一个按键快速访问帮助文件(HTML、CSS、JavaScript、PHP、Python、Ruby、R 和 Stata)

    该插件支持HTML 、 CSS 、 JavaScript 、 PHP 、 Python 、 Ruby 、 R和Stata 。 可以轻松添加对其他语言的支持。 目前,该插件仅在 Mac OS 上运行,但它可以扩展到使用 gloobus-preview 的其他 unix 系统以及使用 ...

    apjp:APJP是用JAVA,PHP,PYTHON和RUBY编写的代理

    apjp:APJP是用JAVA,PHP,PYTHON和RUBY编写的代理

    ddd-dynamic:Python,Ruby和其他动态语言资源中的域驱动设计

    在ddd-dynamic项目中,可能包含了各种示例和最佳实践,展示了如何在Python、Ruby等动态语言中应用这些原则,帮助开发者理解和实现DDD与Clean Architecture。 总的来说,ddd-dynamic项目提供了一个学习和探索如何在...

    python学习源码和开发应用技术

    - **PHP、Python、Ruby的(数据库、文件)比较(原创)**:通过对三种语言在处理数据库和文件操作方面的对比,为读者提供了一种横向比较的视角,有助于理解不同语言的特点和适用场景。 - **python_win32api操作**:专门...

Global site tag (gtag.js) - Google Analytics