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

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

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

原文地址

先看一些统计数据

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 作品 - ITFun.tv 中提及了此贴 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
需要 登录 后方可回复, 如果你还没有账号请点击这里 注册