瞎扯淡 PHP、Java、Python、Ruby 到底应该学哪一个?

canonpd · 2018年03月26日 · 最后由 canonpd 回复于 2018年03月27日 · 24064 次阅读

以下观点,仅仅代表我个人观点,有一些地方可能个人感情色彩比较重。 如果你支持我,我会回复。 如果你要来骂我,我不理你。

原文地址

先看一些统计数据

1. 实际份额

每天统计的全球网站,所使用的 Web 服务端语言份额。点此链接

2. 全球 50 名网站所使用的语言

经常会听到某某论调,Java适合开发大型项目,PHPRuby等适合开发中小项目。事实真是如此吗?一个大型项目,往往都是多种语言一起开发的。以下统计的是此站点使用的主要语言。

这个统计数据并不是今年最新的,有一些变化。 虽然是几年前的统计,但不要再跟我说没有参考价值了,一个大型项目想换语言是很困难的事情,你如果知道其他变化欢迎补充。 目前我已知的一些变化是:

淘宝的前端由PHP转向了Node.js。
Java的Paypal和Linkedin转向了Node.js。

目前Java在列表中前50名的网站里,仅仅剩下3家而已。

3. Tiobe 编程语言排行榜

需要搞清楚的是,这个排行榜是怎么来的?他是根据搜索引擎的搜索量来的,跟实际项目份额一点关系都没有。那你是关心搜哪个多,还是更关心企业用哪个多呢?

PHP

PHP的特点,简单粗暴。不过就是这样的简单粗暴,却能让你快速的完成项目。

PHP过去的代码非常混乱,各种奇葩代码层出不穷,一人一个搞法。不过这种情况,在有了Laravel框架和Composer包管理器后有了非常大的进步。

现今的PHP,基本发展还是不错。使用了这些新技术后,代码的结构和规范都得到了最大的保障。我觉得它目前依然是一个很好的工作的语言,就业需求也依旧旺盛。

比较大的一个问题是,经过各种培训机构教出来的 PHP 新手比较多,这些往往是没有自己独立完整企业项目能力的。而一去了就能自己独当一面,独立完成各种企业需求的人却比较稀缺。

Java

我毫不掩饰的说,Java是我个人最讨厌的语言,没有之一。

有的语言会给你最大的自由,你就是上帝,你想怎样都可以随心所欲。而有的语言,觉得用户都是傻 X。给你一个牢房,让你用起来感觉自己是犯人,做什么都必须在限制的牢房里。Java明显就是后者,它非常善于把简单的事情变得复杂,并且加上一堆条条框框让你非常的难受。

基本上说Java好的人,就三类。

第一种,书呆子。 第二种,坐井观天,只用过Java,根本没用过其他优秀语言的人。我敢肯定说他没用过Ruby这类人性化的语言。 第三种,听别人说的,自己根本什么都不了解。

以下内容,摘要自硅谷创业之父,Paul Graham黑客与画家一书

第一段

有人写信说:“你怎么能说Java不会成功呢?它已经成功了。”我觉得这要看你的成功标准是什么。 如果标准是相关书籍的出版量,或者是相信学会Java就能找到工作的大学生数量,那么Java确实已经成功了。 当我说Java不会成功时,我的意思是它和Cobol一样,进化之路已经走到了尽头。

第二段

hello-world程序的唯一作用就是显示出“Hello, world!”这句话。使用Java语言,你需要这样写:

public class Hello {
    public static void main(String[] args) {
        System.out.println("Hello, world!");
    }
}

如果你从来没有接触过编程,看到上面的代码可能会很奇怪,让计算机显示一句话为什么要搞得这么复杂? 有意思的是,资深程序员的反应与你一样。

第三段

最不用担心的竞争对手就是那些要求应聘者具有Oracle数据库经验的公司,你永远不必担心他们。 如果是招聘C++Java程序员的公司,对你也不会构成威胁。 如果他们招聘PerlPython程序员,就稍微有点威胁了。至少这听起来像一家技术公司,并且由黑客控制。 如果我有幸见到一家招聘Lisp黑客的公司,就会真的感到如临大敌。

我个人观点,与此书作者一致。如果你只是想去找个普通的企业混口饭吃,Java是一个选择。如果你是一个富有创新精神的黑客,我相信你是绝对不会选择这门语言的。

另外非常不推荐再去搞安卓开发了,目前行情是开发者严重过剩。已经过了当年ios安卓开发非常火爆的年代了。用户不愿意在手机上安装一大堆不常用的App,另一个开发App的成本本身也比较大。很多企业开始转向微信的公众号、小程序开发。

Python

Python应该是目前炒作做厉害的语言。我想说的是,真的只是各个培训机构的炒作而已。我过去自己长期用PythonWeb.py框架开发项目。然而Web方向上Python一个比较完美的框架都没有。

Web.py,是一个好东西,然而作者仙去了。 Django,用起来和RailsLaravel比,太难用了。 Tornado,性能高,可是严重缺轮子。

国内Python两大站点,一个豆瓣、一个知乎。除此外,你基本找不到其他有一定知名度的站点了。知乎目前主程序还要开始往Golang上迁移。

另外Python大数据人工智能等等,我劝你清醒一点。一般搞开发的公司不需要做这个,需要做这个的公司不会要你。尤其是人工智能,不是名校的研、博,或者有一定业界知名度的人士,你想都不要想。

Python的爬虫,我觉得也不是什么公司都需要的。正常自己开发运营的公司,用到的点也不多。

我觉得可能你学完后,就业最大可能的方向就是去搞服务器运维了。

Ruby

毫无疑问,这是我个人最喜爱的语言,没有之一。语言本身的各种优点,人性化都让我深深喜爱。我自己公司的项目,我也选择了使用Ruby On Rails来开发,有兴趣的可以了解我在 ruby china 的另一篇帖子,展示一下自己的第一个 Rails 作品。各种完善便利我就不一一道来了。

那我主要想要谈的是Ruby的就业问题。在我所在的武汉这种城市,用Ruby做开发的公司,包括我,大概 4~5 家。满眼看下去,净是PHPJava。你能在这种城市找到合适的Ruby工作,算我佩服。 但是如果你去一线城市,那就不一样了,这种机会就要多的多。

意见就是,如果你在一线城市,学Ruby是一个很好想法。如果是二线就算了,不要到时候饭都没有吃的。

我的学习经历

PHP是我吃饭的家伙。不过我给我自己的女儿取英文名叫Ruby,儿子取英文名叫Python。家里的垃圾桶就叫Java。你就该知道我对他们的看法了。

我个人是先学了PHP,并一直以此为生。后来自学了Java,不过感觉Java的各种理念与我自由的内心实在不合,于是反而变得非常烦此语言。再后来又自学了Python,并用他做了一些项目。最后接触的是Ruby,也是我最喜欢的了。

我的推荐

如果你现在急着就业,那么PHP是一个比较好的选择。你可以和我一样,先由PHP入行,等这一门语言自己觉得能力没有任何问题了,再去学习其他的语言,开阔自己的眼界。

如果你在一线城市,Ruby也是很好的选择,二线城市请慎重。

Python我也比较喜欢,只是目前我没有怎么用它,主要做的都是PHPRuby的开发工作。你如果想从事运维工作,可以选择这个。Python的其他方向劝你慎重。

总结

最后做一个总结,前三句话来自网络,最后一句是我自己加上的。

假如你想帮他尽快找个活儿,赚到钱,推荐PHP。 假如你想让他成为一个高效工程师,推荐Python。 假如你想让他爱上他的工作,推荐Ruby。 假如你想让他自己跟自己过不去,就当一个书呆子,推荐Java

套用一句经典的广告:别看广告,看疗效。 到底好不好,别要一味听网络宣传。只有自己去分析下真实的数据,自己都体验一下,你才知道到底哪个好,哪个适合自己。

canonpd 展示一下自己的第一个 Rails 作品 - clwy.cn 提及了此话题。 03月26日 16:06

😯 😯 😯 学 php 实在

3 楼 已删除

用了十几年了,至今忍受不了 PHP 的丑陋,有一种跟凤姐交配的感觉

为了让 php 看上去不那么讨厌,我尝试过换各种字体各种配些方案,就如同给凤姐尝试各种美瞳、💄、修眉、打粉底...

后来又尝试 php 的所谓优雅框架 laravel,就如同给凤姐报淑女培训班....

都不顶用,底子太丑

gaicitadie 回复

PHP 的语法是那样。不过我不知道你是否已经用了 Laravel。如果没有可以试试,它代码风格和各种搞法,基本和 Rails 各方面都非常接近。不再是当年的那种了。

gaicitadie 回复

Laravel 5.0 和以下是不行的,版本 4 更是奇特,风格差异太大。目前的 5.5 ~ 5.6 越来越接近 Rails

有女孩的英文名叫 Ruby 的,好像还没有男孩的英文名叫 Python 的。。。怪诡异

2010 年初入编程界时进了一家生物公司,当时在用的语言是 Ruby, Perl, Lua, R,一溜的文(小)艺(众)语言…当时的大佬用的 Ruby,我也觉得 Ruby 的代码看着最顺眼,我就选了 Ruby。后来,公司扩大招不到 Ruby 便换了 php,于是我就挣扎在“非一线城市找不到 Ruby 岗位”的深渊之中。

PHP 只是了解过,不喜欢也不讨厌。因为某些原因,我这个 Ruby 程序猿要冒充 PHP 程序猿,去面试 PHP 的应聘者,还要出题考别人,简直的😂

也曾经学过 Java,但实在受不了他的语法: HTTPConnection conn = new HTTPConnection(),为什么要把类名重复写两遍呢?尽管我知道一个是声明类型一个是新建对象,但还是接受不了😑

Python 的话,我的基友在学 Python,我有时候帮他指导下(尽管我不会 Python,但依然可以做 tutor),他现在已经把 Python 基础学习完了,再学一些常见库。嗯,主要原因他是个重度豆瓣用户,再加上“如果我俩用同一种语言,那么我们会打架的”这种奇怪的理由…

Laravel 我目前用的比较多,不过和 Rails 比起来,说真的我内心当然还是更喜欢写 Rails。 风格上虽然不断接近,不过还是有差距。

pathbox 回复

哈哈,中式的英文名嘛。

hegwin 回复

我也表示,真的受不了 Java 的语法,感觉蠢到家了。 PHP、Python、Ruby、Js 我的日常语言。目前也没有想法去学更多了。如果有空,打算把 Ruby 再多精通一下。

与其看别人怎么说,不如自己都学一遍。

Rei 回复

赞同,于是我都学了一遍。不同的语言有不同的用处,不过不同人也要找自己最适合,最喜欢的。 到底好不好,只有自己亲身都尝试过才清楚。

全都来一遍 +1

A language that doesn’t affect the way you think about programming is not worth knowing. --- Alan Perlis

学 java。这几门区别不大,面向对象语言,部分函数式支持。学一种,其他的语言撸起来也不会难。 而 java 是唯一的静态语言,并且应用更广。web,科学计算,并发都没问题。 如果再学一门,学 Erlang,原因是函数式编程 + 并发。Clojure 也有函数式,也有并发,但却没有在两方面给出完善的解决方案。

需要解决的问题,决定需要使用的语言。而不是所掌握的语言,决定了能解决的问题。学一门语言,之后需要用什么语言,学什么语言。这里不考虑个人喜好问题,如果考虑喜好的话,ruby 是最舒服的。

多数的问题是和语言无关的,比如网络,数据库,哪门语言不会遇到这些问题?反而是这些问题更不好掌握,更需要学习。

楼主的观点和数据都很片面。 另外,脚本语言入门的程序员 (包括 php,python,ruby,javascript 等),编程基础都非常非常差,比例大概在 90% 以上,并且会持续的差很多年甚至终身,这种很差的基础会导致编程的思维观错误,不管是设计,还是编码大多输出的是垃圾。

入门不学 C/Java/Pascal?

不从这几个语言起手的话,应该不是科班起手吧,业余程序员随便玩玩的话当然什么都可以了。

但是你要跟我说一个 Ruby 程序员不会 C/Java/Pascal 中的一门语言,那我真的极度怀疑你的水平。

别学 Ruby.

恕我直言,这篇文章真的 low,现在都 2018 年了,数据举例还是 2013 年的 http://developer.51cto.com/art/201306/399550.htm,完全没有参考的价值

入门语言不推荐 ruby 很有可能会被惯成矫情的优雅症患者

先做一个性能崇拜者 在谈优雅

reeco 回复

我的文中已经说了,哪些项目语言发生变化了。其他几乎没变化。请问你仔细看了吗?如果你还知道其他变化,欢迎补充。

hammer 回复

大多数项目,还没碰到性能问题就已经死了。等碰到性能问题,这项目已经成功了,自然也有钱了,到时候想要啥没有?要硬件有硬件,要技术有技术。

msg7086 回复

我本身就是业余选手,电气工程专业,大学只学了 C 和汇编。写代码是我的爱好,也是我目前的工作。我对自己的定位是创业者,企业家,自己已经开一家公司 5 年了。目标是 40 岁前,能建立规模较大,运作稳定的企业,到时候我可能会不再写程序了。转而专心去研究音乐方向,那也是我的爱好之一。

darklowly 回复

对,我们写脚本语言的都是垃圾。

canonpd 回复

建议到 v2ex.com 发帖,那里用 python 人多,最喜欢语言大战,主帖不要提你那个 tv 的网站,怕被当做广告软文。

darklowly 回复

请问差在哪里呢?不知道 scope, 不知道 pass by reference/value这些概念的那种差?

javascript 表示随便你们学什么,反正必须是要用我的。

Peter 回复

好问题,我已经删掉了相关链接,感谢提醒。另外我自己觉得自己更是 Ruby 开发者,干嘛要去一个 python 开发人多的地方发。文章只是表示个人观点,也懒得和广大的某某用户骂起来。话说的好,别人打我的左脸,那我就把右脸也伸过去让他打就是了😃 到时候就看他心里憋不憋屈。骂我就不理

存在即是合理。各种语言都有自己的应用场景。有的看性能,有的看开发效率。如果因为静态语言,看不起脚本语言,只能说自己见识不够。算法才是王道,选择语言只是看场景而已。太执着于语言,影响自己的发展。

liamu1234 回复

👍同,感觉一些人就是夜郎自大的井底蛙而已。 这还是那个老话题,是更看重开发者的体验,还是机器的体验。 编程语言是给人打工的,是人的仆人。不要把自己搞成了机器的奴隶,天天想法设法的伺候它。

adamshen 回复

js 是我推荐学的。有一个重要的原因,无论你后端是啥语言,那么前端都是必然少不了,过不了 js 这一关的。

其实学什么语言不重要,全凭爱好和需要,重要是的学好,并且让它为你创造出价值就行了,我就是搞 php 的,然而并不只是搞 php,公司需求现在前台也搞 vue,感觉挺好的,眼光不要太狭隘就行了,顶楼主。

php 是世界上最好的语言

canonpd 回复

我只说了 90%。你可以客观的问问你身边的朋友。看我乱说没有。

Awlter1 回复

作用域,值传递,引用传递,不是常识么?把常识当基础,也是脚本程序员的一大特点。

darklowly 回复

对的,我们 90% 的用这些脚本语言的人,还有这些用脚本语言的公司都是垃圾,都是渣渣。

喜欢 ruby 有什么用,工作机会少的可怜。

BBooB 回复

我是自己公司的项目用,反正自己能做主,愿意用啥就用啥。

canonpd 回复

你的观点十分偏激,像一个娘们儿,别人说个什么总是添油加醋。

讲的很实在,对新手来说,php 确实是个不错的选择!到了一定程度,语言只是一个工具,用什么语言看需求或场景!选择自己喜欢的。

垃圾桶叫 Java 笑死 23333333

我觉得 0 基础入门还是选择 php 比较好,相对其他语言来说简单一点,只要学会了一门语言,再去深造其他语言要好很多。java 个人实在不推荐,代码看着头疼,难以理解!ruby 还是相当不错的,语法简洁,代码干净,看起来舒服。。

他人笑我太疯癫,我笑他人看不穿。

如果不能理性讨论我就要锁帖了。

Rei 回复

我自己结束吧。请求把 39 楼删了,都开始骂人了。

darklowly 回复

我就是想请教你能不能说的具体点,你认为的基础是什么,指针,oop? 我转行程序员,即使学 java 也一样会被说基础不好,跟语言有关吗?

Awlter1 回复

既然你提到了传值,可以把这个话题扩展一下。

问一下自己,下面代码运行结果是什么:

int main(void) {
    main();
}

你可以马上回答出来,栈溢出。

1 然后再问一下自己,为什么? 2 然后再问一下自己,多线程环境下,不同线程栈是怎么分配的? 3 然后再问一下自己,多线程和异步 IO 下,如果调度的?

回答完第二个问题以后算是入门。 这仅仅是你提出这一点概念的扩展的基础。 计算机还有很多其他基础。

90% 的互联网市场,都建造在我们这种 90% 的垃圾开发者上。

canonpd 回复

呵呵呵呵,你仔细看看我说的每个字,再看看你说的每个字,公共场合,要点脸。

darklowly 回复

90% 写脚本语言的都很垃圾?你真是会断言啊!哪里来的自信 在这里不停的扯东扯西

Hank_1990 回复

我原话是 通过脚本语言入门的 90%。我可没说 90% 写脚本的。

Hank_1990 回复

你能不能不要学楼主,断章取义,添油加醋。

不知道是谁不要脸,一点素质都没有,这样说 90% 一开始就学 Ruby 的用户也都是垃圾咯,你看 Ruby China 这么多新手朋友饶不饶你。竟然还开始骂起人来了。而且还性别歧视妇女。

canonpd 关闭了讨论。 03月27日 11:20
canonpd 想不到 DHH 与我一样如此坚定的讨厌 Java 提及了此话题。 02月13日 09:04
需要 登录 后方可回复, 如果你还没有账号请 注册新账号