Ruby China

瞎扯淡 看过 yinwang 写的这篇文章, 很想了解大家怎么看的

boyishwei · 2016年01月29日 · 最后由 twocucao 回复于 2016年02月04日 · 7300 次阅读

看过 Linux 中国微信公众号转发的 wangyin 的文章,给 Java 说句公道话 本来写了很多我自己的评论,然后都删了。归结为一句最能表达我的看法: wangyin 也不过是一个从国内移居到国外的喷子!

看 Java 代码好累。不太了解他

这种文章不值得讨论吧,还需要有啥看法么,看后一笑也就过了

当然他说我大 JS 很烂这个没得洗 :D

建议到锤子科技上班。

Python 凑合可以用在不重要的地方,Ruby 是垃圾,JavaScript 是垃圾中的垃圾。

如果真的信的话,建议大家遵照作者的建议,在项目中逐步淘汰这些语言,先从垃圾中的垃圾开始淘汰。 😄

4 楼 @lgn21st lol 我感觉要是浏览器随便支持个什么别的语言,JS 恐怕真的难逃被淘汰。奈何人家处于垄断地位

世界真奇妙,总是有各种各样的人

这种文章,茶余饭后消遣即可,没有绝对的好坏,所以不喜欢争论哪门语言好,哪门语言坏,语言只是工具,为需求生,为需求死,哪怕同一个项目,不同的发展阶段,适合的语言都是不一样的。哎,项目还没壮大,我得去写垃圾中的垃圾和垃圾代码了。

其实我也觉得 Java 没有那么糟糕,不过去黑其他语言就不好了🙈

我来说句实在话,各位 rubyist 其实没必要和王垠较劲,他并不是在骂你们。 王垠所说的软件和 ruby china 里各位朋友所说的软件不是一回事。 如果做 ERP、BBS、一些中型 APP 的后台,ruby、python 都可以胜任,这些软件出了问题,可以通过维护。通过 ruby 来提升开发的效率、乐趣是一件非常好的事情。 但工业化生产等要求严格的软件中,一些东西是不能容忍错误的,一旦出错,可能不是下岗可以解决的。 另一方面,从软件质量的角度来说,公司无法控制程序员的水平,因此,java 相对于 ruby 更有利于软件质量的保证,一些与巨款挂钩十分紧密的项目,让各位 rubyist 来当项目经理,你的手下非要用 ruby,你不会心虚么。 看过王垠以前文章的人应该知道,王垠在批判软件质量时,其实往往是按照工业软件标准来的,所以他骂 ruby,和 ruby china 里各位朋友并没有什么关系。

#9 楼 @rubyfan1 得了吧,别洗了,看到 JavaScript 就知道他说的不是什么工业化生产软件

#10 楼 @blacktulip 他是按照工业化生产的标准去评价 js 这类语言,你理解错我的意思了。我个人认为,js 虽然有许多优势,适合 Geek,但是从软件质量保证来说,js 的确设计的很烂。你不妨看看真正从事计算机技术行业(不包括互联网),有多少重要产品是用 js 写的。

#11 楼 @rubyfan1

你理解错我的意思了,js 在工业化生产中根本没有应用,既然文中提到 js,说明语境并非你硬套上去的「工业化生产标准」

#12 楼 @blacktulip 我说他按照工业化标准,只是不想惹到太多人,你非要较真我就直接说吧。js 完全就是一门垃圾语言,但这与 js 程序员无关。js 的普及,完全就是商业化推广的问题。我说 js 是垃圾,但是我平时也需要写,不仅要写,还要去大量学习深入了解 js 的底层,将 js 培养成兴趣爱好。用 js 和其他语言去实现同样的东西去对比语言的好坏,js 无论从质量、效率还是维护上,相比其他语言没有任何优势。仅仅是因为没办法,才用 js。

#13 楼 @rubyfan1 你还是没有理解我的意思... 你在 11 楼,13 楼说的我都同意。我不同意的是「王垠所说的软件和 ruby china 里各位朋友所说的软件不是一回事」以及「他是按照工业化生产的标准去评价 js 这类语言」这种洗地。

js 确实是垃圾,我们来发明 java 2 javascript 编译器吧

#14 楼 @blacktulip 他原来写过一篇文章,将建筑这种严格的生产和软件生产对比。你多看他的文章就知道了,王垠总是希望一门语言能够尽量通过语法分析等方式来保证复杂软件的质量,而 js、python 等他经常喷的脚本语言并不能胜任。这里复杂软件有可能是复杂的商业软件,也可能是工业软件。我这里说工业化软件只是想区分质量普遍较低的互联网软件。

#16 楼 @rubyfan1 唉,你还是没看明白,好吧我放弃了

#17 楼 @blacktulip 好吧他其实也是在喷,你非要说明白,哎!

王垠的这篇文章比较偏激,我就指出几个错误:

  • Matz 不是民科,

    他在高中毕业前自学了程序设计 [2]。他毕业于筑波大学,在那里获得了信息科学学位,并参加了研究程序设计语言和编译器的部门。

  • clojure 并没有大量抄袭 racket, racket 也有一些库借鉴了 clojure,比如 Generic Collections,我觉得这种互相的借鉴对 clojure 和 scheme 都有好处,至于说 typed clojure 抄袭 typed racket,现在应该叫 core.typed. 它的作者和 typed/racket 的作者 sam 一同在 IU 做 type system 方面的研究 (应该是 sam 的学生),最近还一同出了一篇论文 Practical Optional Types for Clojure. 王垠也出自 IU,我不信他不知道这些......

  • 以及在不给例子的情况下批评 scala 的设计有问题。

  • 视野太狭隘。

@rubyfan1 @blacktulip 是的,其文中并未说明在工业化的场景中 java 才胜过其他语言,他表明的是所有场景。 Java 我也使用了好多年,但对比 Ruby,Node.js 而言,Java 真的算老,而且臃肿。单从性能上对比,那我 C,C++ 也能甩出 Java 几条街,但是好几年前为什么 Java 的普及率比 C,C++更广。因为其相对 C 更友好,程序员不用在费心内存管理,还有其可以跨平台。这些是 Java 刚出来时的卖点。时至今日,更多的创业企业,更多高迭代的需求,更多 Agile 团队管理,你再用 Java 试试,随便改点东西调试,你就等着不停的重启 tomcat 吧。而 Ruby,Node,Python 等新的与时俱进的语言,同样也各具卖点,所以我们也有理由选择新的,漂亮的。就如当初越过 C,C++一样的道理。

我不完全赞同 @rubyfan1 的观点,传统 IT 产品公司还是会选择 Java 比较多,互联网行业后端再用 java 的没几个。但是传统 IT 公司选择 Java 未必就是因为 Java 多好,可能有一下几个原因:

  • 公司长期的 Java 技术积累
  • 之前的老系统,或者其他系统已经使用 Java,不得以选择继续保留使用 Java。
  • 对新的技术,架构未做深入了解,保守选择。

但到这里,我已经忍不住要对 Java 吐槽了。

  • 越更新,越他吗的繁重
  • 设计模式,很多设计模式也只有在 Java 里才会有,像什么装饰模式,读个文件要套一堆 buffer,一堆类。放到其他语言环境里,完全不是个事。而且很多项目滥用设计模式,代码难于阅读,项目难以维护,特别是对新人,简直就是折磨。然后这却是 Java 生态里所经经乐道的事。
  • 代码冗长。
  • 坑爹的 switch,到现在为止都只能是 switch 数字跟字符。
  • Java 8 出来以后才支持闭包,而且是个大坑。
  • 整个生态里面,配置基本靠 xml(因为很多知名框架都使用 xml),传送个 message,大部分的流量消耗都在 xml 的节点上。
  • 用 Java 来做 web,简直就是虐心。
  • EJB, Struts 等,学习成本大,笨重难用。
  • 国内现在连 Java 的社区都没了。

但是反观基于 JVM 的几款动态语言,在这些这几上狂甩 Java N 条街。我们做的项目也是运行在 JVM 上的,我们的 Server 起来至少需要 9 个 G 的内存,算比较工业化的产品了吧,但我们未必仅停留在 Java 的使用上,我们所有的组件都是以 Cartrdge 的方式可以在核心服务器上热插拔的方式提供的,但同时我们也大量使用了 Scala,Groovy,Node.js 等新的技术,我们整个 Portal Project 全部使用的是 Grails,基于 Groovy 语言的 web 框架(Rails 的 Groovy 版本),另外我知道的,基于 Scala 的 Play 框架也很不错。所以即使传统 IT 公司的工业化产品,Java 也并不是缺其不可。像一些传统的 SOA 架构,发展到现在逐渐演变成 Micro Services, 对于 Mricro Services,我就认为使用 Sinatra,Express, Koa 等一些基于 Ruby 或者 Node 的框架更胜一筹!

所以我认为,无论是互联网还是所谓的工业化标准行业,新的技术都能取代 Java 去开展业务,除非是一些现实环境、条件的的约束,否则并不是非 Java 不可!!!!

#19 楼 @izuo Matz 民科挺好的,你没看后面说 Golang 也是民科搞出来的嘛,大家都民科

#20 楼 @boyishwei 这里我注明一点,不要把设计模式和 JAVA 扯在一起,JAVA 高级程序员没几个看得起设计模式,甚至很讨厌设计模式。JAVA 覆盖面广,低端程序员很多又不知从何入手,被忽悠着学设计模式。

另外你知道么,国内翻译设计模式类书籍,吹捧设计模式的,反而是推崇 ruby 的 thoughtworks 公司。

如果你非要说软件复杂度,J2EE 产品并不算复杂的软件,ERP 之类的产品,本来就是设计给外行写的,因此并不复杂。Micro Service 这些更是为了简化业务,让外行可以写软件。

真正复杂的软件,比如编译器、office、ps 这种,才算得上。

这里我也想吐槽JAVA,和C#相比,JAVA这么多年真是毫无进展,被C#甩了几条街了,这也使得那帮搞设计模式的水货有机可乘。

最后我补充,JAVA 并不繁琐,多写两行代码能浪费你多久时间,这里有篇文章http://www.teamten.com/lawrence/writings/java-for-everything.html我蛮赞同的,我就不详细说了。

另外我告诉你我开发 Web 应用时从来不重启 tomcat,这些只是一些毫无技术含量的技巧而已,拿出来喷 JAVA 不好。

敏捷开发不是靠少些两行代码,而是需要有大量稳定的东西支撑,scala 在大团队中使用的问题已经暴露了很多次。另外,它的可读性实在是太差了。

当你心中有个标准的时候,当然就有了高下之分。可惜大多数人谁关心 python, java 谁好谁坏,用得爽才是最高要求。

所以身边有个朋友在最开始的时候给你介绍一个你能用的爽的语言是多么的重要。

#4 楼 @lgn21st 抛开应用场景谈语言也是耍流氓~~

Web 开发就用 Rails 了。Android 开发就用 Java 吧。我喜欢写 Ruby,我喜欢 Java。

我也来凑下热闹,王的话虽然夸张,不过多少有些道理。动态语言有两个弱点就是可变数据,重构弱。大项目是需要工具支持重构的。 我最近打算转向 clojure。clojure 和 scala 的重构支持不知如何,java 的重构支持比较好的。

我觉得这些语言都不错,JS 坑是不少,躲掉就好了。

不知道三巨头一起搞的 Web assembly 怎么样了,成熟以后前端也会百花齐放吧,用 ruby 写前端不是梦。

王的文章看多了就觉得没多大意思了。说的话基本都是观点,缺少论证跟推导。估计很多人也会跟他争论讨论细节之类的,但他的回复基本就是我很牛 B,你还太嫩。

#3 楼 @rei 哈哈,此话何解?

30 楼 已删除
31 楼 已删除

#15 楼 @mizuhashi 不是有 type script 么...没必要 java2js 了...

看完评论呵呵一笑继续玩用 java 写的著名项目——Minecraft 去了

#31 楼 @z_ach 我都说了这些东西都是用一些小技巧可以解决的,用这个来讨论会被人笑话。

所谓 java 写的玩意就够'工业', 就少错误,本身就是伪前提。没什么现实来支撑这个论点。国内 java 写的那些比 facebook 还是 twitter 稳定?我看未必。国外大牛写的 java 比其他语言写的更稳定更容错?也未必。 所谓稳定是建立在老东西往往可靠的错觉上吧。

过气网红如何维持自身关注度?建议楼主先想想这个问题再来看 yin 最近的文章。

没啥讨论价值,王垠的关注角度和一般人不一样的,而且也不是"工业级",他是"研究级",如果他的文章是讨论具体问题,不妨看看(前提是能看懂),泛泛之论就算了,普通人不必关心科研人员吐槽

再看看《程序猿的呐喊》呢,是否这本书更具有参考价值一点

39 楼 已删除

#20 楼 @boyishwei 其实,tomcat 加上 jrebel 或者开发阶段弃用 tomcat 使用 jetty 也是可以在绝大部分场景下热更新的。

需要 登录 后方可回复, 如果你还没有账号请 注册新账号

AltStyle によって変換されたページ (->オリジナル) /