开发工具 王垠谈编辑器与 IDE

krazy · 2013年04月21日 · 最后由 uncutstone 回复于 2014年03月08日 · 24687 次阅读

搬运.. http://www.yinwang.org/blog-cn/2013/04/20/editor-ide/

还记得很久之前 @luikore 写过一篇吐槽编辑器的文很好看...

上次大家在咖啡馆那次 ruby tuesday, @luikore 说了一点编辑器的设想,不过好像和王垠角度不同,你看是否有借鉴意义? 至于“直接编辑程序的 AST 结构”,似乎 IntelliJ 系的 IDE 就是这么做的,我不知道王垠提的 MPS 系统是否和这个有关。

匿名 #2 2013年04月21日

王垠粉还挺多的哈~

#1 楼 @fsword
仿佛记得那个帖子里好像是围绕现有的一些编辑器实现总结了一下,从 vim 到 emacs 到 textmate 谈了谈一些实现间杂一些吐槽,很好玩..
不负责任的理解结构化编辑器就是把编译的中间结果暴露出来,多一个维度,显得更立体..从中间切进去来弥补一些不足..

#2 楼 @nil 哈哈 其实我是 luikore 粉

我没记错的话《编程语言实现模式》里提过,ide 的智能感知就是利用 AST 实现的

vim.很好用,就是 debug 和插件语言狠不爽。 另外不能多线程

我还是认为 IDE 速度太慢,说真的,我不希望 IDE 理解我写的代码,它理解就意味着运行速度会变慢,它理解的越是清楚运行速度就变得更慢,慢到让人难以忍受。

#7 楼 @iBachue 编辑器智能点没啥不好,不要慢到影响心情就行,其实理智的看,你看代码的时间更长,所以智能的编辑器如果能够自动标示出一些错误,总体还是节省时间的。

当然,能保证一蹴而就写出来代码就是对的,并且打字飞快的,vim 还是最佳选择吧……

匿名 #9 2013年04月21日

@iBachue 可以考虑升级下配置,这基本上都不是问题

代码应该在自己的脑子里,纯编辑器就很好,我是支持 VIM

目前 rubymine 5.4 除去启动 使用上非常流畅 用编辑器要做加法,配置各种插件 用 ide 要做减法,去掉工作中不用的功能,我看做减法比做加法要容易

#8 楼 @ericguo 心情影响非常严重啊 有时候就是想做个小实验或是写段小脚本,VIM 直接打开就能写代码了,IDE 首先要等老半天打开,然后还要创建项目什么的,等到能开始写了,我用 VIM 写的脚本早就可以开始跑了。。。

#9 楼 @nil 已经是 MacBook Pro,8GB 的那种,如果这样的配置还满足不了 IDE,那我只能说就和他没缘分了,白富美实在泡不起。。

匿名 #14 2013年04月21日

@iBachue 哈哈,你说的是 rubymine 吧?xcode 在公司配的老爷机上跑得比较欢快的,或许应该说这只是暂时的问题~

#14 楼 @nil 嗯 被猜对了 不过以前在 Linux 上用 Eclipse 写 Java 也是非常慢的

《系统批量吐槽一下各种编辑器》已经找不到了。 可不可以恢复一下? http://ruby-china.org/topics/7844

唯独这次我完全同意王垠的观点。

文件较多时编程用 IDE,服务器远程和小段程序或单文件一般用 vim 就够了。作为编程本身,IDE 中很多功能确实不是 vi/emacs 这些能比的。我喜爱 vim 但从不迷信这个东西。结构化编辑器,intellij idea 的 mps 和 eclipse 的 xtext 都在做。

我觉得,王垠真的是很牛和牛!牛的一塌糊涂...

不过,有一点,不知道出于什么原因,我似乎没看到过他提起过有关 Ruby 的只言片语...

难道他没有用过 Ruby ? 如果是事实,这应该是他最遗憾的事情了。(至少我替他遗憾...)

其实我用 xcode 的时候都用 https://github.com/JugglerShu/XVim 把它搞成 vim 模式 感觉还挺爽的 如果 xcode 能够不那么容易 crash 掉 而且自动注释能够完善点的话就更完美了

一个读了十年书什么都没搞出来的人,可能是因为缺乏实际编程经验,所以对编辑器/IDE 的看法接近我本科毕业的水平。

一句话说完:什么方便就用什么。

突然发现大一大二时候最早老师教我们用 MinGW 写 C++,后来自己转到 VS2008 和 VS2010,写 PHP 的时候也是用 IDE 的,至少那时我对 IDE 在速度上是没有任何抱怨的,但是自从进了 Linux,在 Eclipse 上写 Java 之后,对 IDE 的速度问题越来越感到不满,之后一写 Ruby 立即扔掉 IDE 只用 VIM 了。工作后接触了 RubyMine,试用了五分钟就扔掉了,跑得比 Eclipse 还慢啊。 所以说我后来接触的语言都是那种 IDE 比较慢的那种,这大概也是我现在只用 VIM 的重要原因吧。

#21 楼 @Rei 话说王垠有 github 吗?只读过他很多文章却从未见识过他的代码,求拜读。

Jetbrains 的 IDE 真是好用的没法说啊。 pycharm 开发 django,只要写好了 url 规则,按 alt+enter 自动创建 view,在 view 里面按 alt+enter 自动创建模板,虽然 django 没提供 rails 这么强大的 generate,但是 pycharm 可以弥补过来。 rubymine 开发 rails 的各种贴心功能,各种自动创建。不过 rails 本身的自动创建命令已经够强大了,rubymine 的贴心功能跟 rails 的贴心功能部分重复了。 刚刚看了个 intellij idea 开发 struts2 的视频,配置好 struts.xml 以后,package、action、model、class、method、jsp 统统自动创建,什么 mkdir、mkfile 的全省了。

IDE 不仅仅是写代码而已。她能做的事情很多,对熟手她是贴心的顾问,对新手她是循循善诱的老师

在 IDE 里面,写代码感觉已经不是在编辑文字,而是在操作一个构造精密的机械装置。

这有个他的 github 项目https://github.com/yinwang0/ydiff (基于语义的 diff),还有就是给 jython 社区贡献的那个语法分析器 https://jython.svn.sourceforge.net/svnroot/jython/trunk/jython/src/org/python/indexer/ 这里面是一个 python 的静态语法分析器。 https://yinwang0.wordpress.com/2010/09/12/pysonar/ 他从事的研究领域是 PLT,主要就是研究设计编译器和设计编程语言这些的,所以经常可以看到他挑各种语言的刺儿,呵呵。

#25 楼 @gaicitadie 盖茨他爹.... 工具的代码生成确实挺容易吸引人的,可以提高效率,有时候觉得不考虑可读性用 zencoding 写 html 和 slim 舒爽度差别也不大.. 感觉编辑器和 IDE 哪个好就像 sinatra 和 rails 之争一样,有些喜欢简洁自己搭起来,有些可以忍受 rails is omakase... 反正永远不会有统一的讨论结果...

应该是因为我孤陋寡闻,主要觉得这篇提出的解决方案挺有意思的,每一次对工具 (编辑器,编程语言) 灵活度的提升,应该都会是对创造力的一次推进...

#26 楼 @hooluupog 好吧 可以理解

#4 楼 @krazy @liukore 我也是刘核心的粉

#31 楼 @jinleileiking 是 吕 不是 刘;)

我在初学者或一些 windows 平台,常看到用 Notepad++,我是没用过,但就单 Notepad++ 作者是台独言论,就鄙视 Notepad++。

Notepad++ 也不错,至少比 Win 自带的 Notepad 好太多了,编辑小文件啥的也很方便。

#21 楼 @Rei 王垠有不少项目经验,如果我没记错,他在 Google 用 scheme 写过 python 的解释器和代码生成器。

#21 楼 @Rei 你去翻一翻他的博客文章,再重新考虑一下你的看法吧。我觉得这是你最没有水平的一次发言,no offense。

#19 楼 @zw963 人家还为你遗憾呢

#29 楼 @jasl 这篇文章说得挺有道理的哈哈 我们的代码里有太多部分就是为了解决各种属性奇怪的 nil 之类的问题 初次以外 很多 Rails 代码也就是处理它方法所可以接受的各种 options 的形式,因为这些方法所能接受的参数实在太多种多样了,王垠说的这个问题的的确确是存在的。

@iBachue 我的看法是 ruby 和 python 没有一个类似接口机制约束输入,过于灵活不一定是好事 好在 ruby 2.0 加了命名参数,options 可以去掉了

@i5ting peg 是什么?

看了一部分代码,没看懂,弱弱的问,Lisp/Scheme 会火么?

@ericguo 函数式语言一直不温不火,但是总体趋势是各种范式语言都在吸取函数式思想 我有认识一个做金融行业分析的 lisper,据他的说法,sbcl 的实现性能已经和 c++ 差不太多了

#39 楼 @jasl 命名参数是不是意味着要用一个参数还得在上面声明下,而且必须要赋一个默认值,即使那个是 nil? 我也觉得要约束下,初次以外,也有必要进行适当的方法重载,让 Ruby 帮我们解决一部分参数处理的难题。 #41 楼 @ericguo 怎么可能火。。这么学术的语言,用户体验一塌糊涂的。

#44 楼 @Rei 道不同不相为谋

@iBachue keyword arguments in Ruby 2.0

def foo(x, str: "foo", num: 424242)
  [x, str, num]
end

foo(13) #=> [13, 'foo', 424242]
foo(13, str: 'bar') #=> [13, 'bar', 424242]

就是解决 options 的问题的...方法重载 Ruby 应该实现不了了,options 本身也在解决一部分重载的问题 插一句:这玩意也是 c# 4.0的特性,c#也是门很不错而且进取的语言

#44 楼 @Rei 不能同意更多了!

#46 楼 @jasl 嗯 我说的就是如果参数有几十种,量很大,那我在这里声明的时候是不是就要把他们全部声明一遍,还必须加上个默认值呢?

还有,方法重载为啥实现不了?只要参数可以约束,就可以了嘛。 当然,二义性的问题是存在的,这个可能要通过运行时报错来解决。

#48 楼 @iBachue 那样你应该考虑的是重新抽象你的类和方法。

#49 楼 @diga2005 好吧 那以 http://apidock.com/rails/ActionController/Base/render 为例,光文档里出现的 render 方法支持的参数就不下十种了,假如你现在用 Ruby keyword arguments 来实现这个方法 (可能其中只有 template 和 layout 是有默认值的),你如何抽象呢?

@iBachue 我还没开始研究 2.0,但预感默认值不是必须的 参数几十种的情况我的感觉是函数的责任过重了,或许可以通过其他设计改善,但即使这样,也比 options 的方式把参数放到方法内部处理要强上很多

#44 楼 @Rei 我同时粉你和王垠,希望你不要介意。哈哈哈哈

#52 楼 @undoZen 别捧杀我啊 @_@

#51 楼 @jasl 其实不一定是函数责任过重啊,这个函数唯一的责任就是处理好各种 options 然后调用下一层的方法吧,这个不算重吧,Rails 源码里很多方法都是为了做这件事情而存在的,核心内容其实很少啦。 Rails 是所以好用其实也是因为 API 设计的很易用,而用户易用的代价就是很多代码要用来分析用户的参数,而且这些代码通常很丑陋很莫名其妙,但是如果没有这些代码,Rails 也就肯定没有现在这么简单易用了,那样的话可能 Rails 就不会出名了。。 好像我们严重偏题了的说。。 😄

#44 楼 @Rei (cps '(lambda (x) (if (if x (zero? a) b) c d))) 我连 a b c d 的声明都没找到。。。难道是全局??

#50 楼 @iBachue 我觉得这是 Rails 设计的最糟糕的一部分。可能会带有一些历史遗留问题。 但是如果我来设计,我会把这些 render 分开:

render_partial
render_action
render_string
render_json

less magic, more clearly.

#56 楼 @diga2005 Rails 的这个设计我倒觉得挺 UNIX 文化的 这一经典案例就是 UNIX 的 read write 系统调用了

算了 这个也不是很重要,我现在也看不出到底是 Rails 的抽象方法好还是你的抽象方法好。关键是 Ruby 作为动态语言,即使真有需要也可以用 send 解决,C 就没有这种优势了。

#55 楼 @iBachue 这种代码应该比较偏数学推导吧 变量长短应该不是关键

#58 楼 @krazy 额 可是我没找到这个变量的声明啊。。

#59 楼 @iBachue 不是很懂 scheme 但是这一句是个测试。cps 是他实现的函数,后面的加了一个'表示 quote,相当于用 cps 这个函数解析后面的字符串 应该是这样...

#44 楼 @Rei 首先我没粉他。

且不说到他这个水平做普通的 APP 已经对提高技术水平没有什么实际效果,但的确在 Google 做出了一些好项目。

其一,作为一个做学术为主的人和一个做工程为主的人,对待代码价值的认同方式是不一样的。看某些工程成果的角度也不一样。做学术的习惯就是这么吹毛求疵,要去比较和研究那些常年没有答案的争论,以他的角色不能“什么方便就用什么。”这种答案,具体到个体工程师,某个项目,可以说什么方便用什么,这没错。但是谈论到普遍的事物时,想要得出更有价值的答案,他就不能这么说。

其二,说王垠粉,或者是他的文字,看不懂的时候调侃一下“垠神”,很多时候只是在开玩笑,并没有谁真当他是神,去迷信他。如果要反驳,也是有人写过深入的博文去反对他的看法,这种方式比较高级。

中文圈成「神」门槛低,写中文的占很大便宜。

#62 楼 @whitecrow '有人写过深入的博文去反对他的看法'——批评王垠的人多了,学术上有理有据反驳的我还真没见过,求传送门

发现大神大部分都在是讲一般人接触不到的东西~

#27 楼 @krazy zencoding 写 html 和 slim 舒爽度差别也许不大,但是最舒服还是用 zencoding 写 slim……

#67 楼 @whitecrow 唉,这个还是比较形而下的,王垠的学术热情并不在这里,我以为你说的是有人 challenge 他写的代码(从学术上)呢

#65 楼 @xinkiang 如果有兴趣,可以先从刘未鹏的几篇博文入手去科普

#44 楼 @Rei 我是“粉”王垠,但是它表达的是对其能力的倾佩,如果我自己的水平也高到那样的地步,我也会“粉”自己的。:-)

每个人对失败的定义都是不一样的,你所列举的事实都是事实,它们在你眼里是失败,但在我眼里是一种理想情怀和完美主义,不是每个人都有勇气一而再,再而三地否定这些世俗所定义的成就的。(不代表别人的看法)

另外他的博客的文风也确实透着一股“我太牛了,环境配不起我”的调调,对此我都是捏着鼻子看的,但这对我来说只是情商略低的表现,虽有反感,但不至于成为讨厌其为人的根源。

最后给的代码,我看不懂。但这既然是一个解释器的代码,我想如果水平达到这种地步的话,区区几个变量也不至于把人难倒吧。 但我看得懂的其他文章,大部分都可以做到言之有物,有理有据,虽然里面洋溢着上面所提的文风,但还是有许多干货,每次阅读都可以给我很多启发和共鸣。为了自己更好更快地提高,所以我还是要继续粉他(你想拦也拦不住 :-D)

匿名 #70 2013年04月22日

ruby-china 的好处是,喷起来也比较文艺;我还是看看热闹,不发表言论了~

基本上赞同 #69 楼 @ugoa 所说的

王垠虽然语气很像国内的民科,但是人家是有真材实料的。

好比 @Rei 就算读不懂王垠的代码就喷他也是可以,因为 @Rei 是另一个方向的牛人

#44 楼 @Rei 你列出那行(cps '(lambda (x) (if (if x (zero? a) b) c d)))是测试用例,不拿这个说事,他牛的是指上面那 40 行。

@gihnius 正解。从第 7 行开始到第 49 行结束,牛的是这 40 行。好像是一个自解释的 scheme 解释器。

@iBachue 嗯。。。咱们的问题不上代码讨论不出啥结果来

#63 楼 @blacktulip 不开放评论更无耻

#69 楼 @ugoa 说的对,每个人对成功和失败的定义不一样,如果从国人普遍认为的没有拿到文凭退学就算失败~~~那。。。。。。。

王垠粉.... - -! 关于新的想法,说的人少,做的人更少,, 所以我佩服王垠, 当然更希望他能做出可以把玩的软件出来印证他博客说的东西是真的

#77 楼 @jiyinyiyong 期待他的操作系统吧。hoho~~

v2ex、python-cn、ruby-china 等等他的每一篇 blog 都不会错过....难怪 google 要抛弃 greader,人肉转播比 rss 厉害多了...

#79 楼 @xdada
关闭评论的好,立马体现出来了 我都是把他的吹牛当作“来骂我啊来骂我啊,反正你也评论不了”解读的...

#37 楼 @diga2005

真的吗?那我真是有幸了!哈哈

#55 楼 @iBachue 因为前面 quote 了,a b c d 都不会展开

keso 的博客上有,不要跟我谈客观,他的博客叫,当然我是在扯淡,所以,人家自己的地盘,爱怎么怎么着,您看了有什么判定是您老的事。

对于那四十多行代码的解释,看知乎的解释: 有没有人看懂了王垠写的那 40 行代码?真如他宣传地那么厉害吗? 更多王垠的信息 王垠

他是个潜心做研究的理想主义者,兼且输出价值观。现今社会都以成败论英雄,像他这样的不多了。@Rei 喷的内容我不敢苟同,不明觉厉自然不好,无知无畏恐怕也不见得牛逼。

Doing is better than saying !!

不要认为搞底层就很牛,因为他们更擅长那些,也不要因为一些言论就 谁,都没意义。

刚简单的翻了一下最近的博文,发现了这么一段

所以我认为脚本语言是一个祸害,它几乎永远是错误的决定。 我们应该尽一切可能避免使用脚本语言。在没有办法的情况下(比如老板要求),也应该在脚本里面尽可能的使用通常的程序设计原则。 摘自 http://www.yinwang.org/blog-cn/2013/03/29/scripting-language/

不想过多的评论什么,对这样的言论也没什么评论的必要。

我比较同意 @Rei 的观点, 调调 确实存在,问题随处都有,阮一峰的博文可以做为鲜明的对比。

还是那句老话

Doing is better than saying !!

唉,不看人家文章具体内容有没有值得借鉴的东西,老喜欢评论这个人怎么样,发现我们国家上至朝廷,下至普通百姓都喜欢诛心,这可不是好习惯哦。另外,知乎上面有人说过,王垠的人品还不错,周围的人员很好,不劳烦我们费心了,要驳就对着他文章的内容使劲的开炮吧。

搬家没网错过了 party 啊...

IDE 的做法是折中的:内存中既保存文本又有 AST, IDE 追踪文本的修改然后尝试把 AST 的变化最小化。但 parse 就是个世纪难题,增量 parse 依然有很高的复杂度也很难并行化。而且 CPU 的单核速度已经发展到极限,没法再快了。所以人们开发出二相着色和 flymake 等各种技术 (自然会被科学家鄙视,但是科学一直没发展,怪谁呢)...

结构化编辑器的载体就完全是树,保存的时候才生成文本或者干脆就不要文本了。smalltalk 时代结构化编辑器就辉煌了,smalltalk 就不谈文件,谈 image... 现在所谓的 refactor 命令都是结构化编辑器上的基本编辑动作...

另外结构化版本控制工具没跟上的话,结构化编辑器都还不够实用 -- 难道是变相给 ydiff 做广告?? (其实之前 @hlxwell 提的 xib 版本控制问题,如果 git 支持 ydiff 就直接解决了...)

其实我最喜欢经典编辑器... 就是在平面上搞文本。高亮是通过词法为主,语法辅助的方式做,着色都是 "99% works and nobody complains"... 什么都能做还可以 out-of-box 的思考:例如把 end 这个关键字编辑改成 endo 这个方法,或者把整段代码用引号包起来,或者为了对齐某个符号鼓捣一些奇怪的缩进和空格...

只是现在,IDE, 文本编辑器,结构化编辑器已经没有明显的分界线了... 多多少少什么都有掺杂...

王垠学东西学得太多了,把自己都绕进去了,还不如当初没文化时候的观点鲜明,现在都没观点了,让人不禁想到王垠在国外的大学里是不是受到了某种惊吓

#15 楼 @iBachue 现在我在 IntelliJ IDEA 里面写 Java,IDEA 号称是比 Eclipse 还慢,不过在我 8G,配备了 SSD 的 MBP 上运行起来一点障碍都没有,感觉完全和编辑器一样快啊。

#91 楼 @steveLTN 额 你神马时候写回 Java 去了。。

#91 楼 @steveLTN 那我只能表示 RubyMine 比 IntelliJ 和 Eclipse 都慢吧。。。

#89 楼 @luikore 不要叫它ydiff,叫它tree diff

最早以前喜欢使用 IDE 是因为微软,开始放弃 IDE 而选择简单的编辑器的时候是因为 Rails。 现在因为开发 iOS 又必须选择 Xcode。

所以 我们没有机会选择。

#92 楼 @iBachue 别说这么难听好不,写回 Java。其实以前没写过,现在做作业用。

#91 楼 @steveLTN 你也在用 IntelliJ 啊。。。

#96 楼 @steveLTN 哈 我们当年也做过这样的事情 不是还在 SHLUG 发帖找人培训嘛

花 100 刀買個好用的 IDE,還是花幾小時設置一個好用的 emacs 或者 vim.

我顯然花錢買時間。

#99 楼 @hardywu 然后再花几小时发现这个 IDE 干不了好多 vim 能干的事情...

#100 楼 @luikore 我很少遇到 vim 能干同时 Jetbrain 系干不了而又很重要的功能

#100 楼 @luikore 那我幹嘛買他? 買他肯定是因爲我要的功能都用了才買啊。哪有人買衣服是連標籤都不看的。

编辑器的争论为什么又开始了……

看了几篇,说实话有点失望……都是一开始给人眼前一亮的感觉,因为观点跟大众不同,行文风格自由。但每次我想继续往下看“为什么作者这样想”的时候……就没有然后了……

#102 楼 @hardywu 难道没有看广告觉得很强大,买下来觉得也就那样的时候...

@blacktulip 只要还存在编辑器这玩意,争论就不会停……

项目最开始的时候用 vim 写,代码多了以后就切换到了 JetBrains 的 IDE。虽然输入上有很多不爽的地方,但各种贴心的提示还是能够节省不少时间的。有时候还得学会忽视一些比较严格或不者不够智能提示,还有封装比较多层的代码,IDE 的语义提醒也完全失去作用了。

@darkbaby123 我第一次知道这个人,看了看他的最新一篇博文 关于 go 语言,对于“为什么作者这样想”,他在思维导图中解释得很清楚,他列出的关于 go 语言那些坏的、丑的、可怕的地方都一目了然的,还有是然后的。

可能他的思维导图随时在更新,过了就看不到他当时的想法了。

@xhj6 go 的那篇文章我看过了,思维导图我就点进去瞄了下。因为对 go 没什么了解,就不说了。

倒是原先他写的那篇关于 python 等动态语言的文章我看过 http://www.yinwang.org/blog-cn/2013/04/18/language-design-mistake2

那篇文章举了些在我看来比较怪异的比喻,其实本质上说的是语言太过灵活导致不好掌控。相比起来他更倾向 Java 那种更严格的语言。我觉得动态语言有相应的优势,比如可以省去为了不出错而做的各种接口定义,比如 ActiveRecord 那样可以做到定义一个空的 class 自动映射数据表字段,更多的就不举例了。

我很遗憾他没有看到这些语言特性在实际生活中带来的好处。照他的逻辑,Rails 就是这个世界上最大的怪物之一……但 Rails 确实曾经改变了世界。

其实表达不同的观点也没问题,这个世界毕竟是多元化的,但我不喜欢的原因不在于此。

下面我简单分析下一个不懂 Python, Ruby, JavaScript 的人看到这篇文章前后的想法:

  • 网上都说 Python 好,这篇恰恰相反,观点新颖,从反方向看也许会有些收获。
  • 虽然不懂 Python,不过这个比喻还挺好懂的,三只手的人确实太怪异了。
  • 原来 Java 这样严格定义数据结构的做法还有这个好处,以后还是用 Java 算了。

在我看来,这是一个经典的套路:先用新奇的观点吸引人,再用比喻模糊概念,最后得出“铁证如山”的结果。

你觉得这篇文章对一个想了解 Python 的初学者有帮助吗?

他并没有拿甚至一个 Python 代码片段来举例,讲下语言特性会在什么场景下造成什么样的影响。在对比下 Java 在同等场景下有什么优势。就是一个似是而非的比喻(还是特意丑化过 Python)的。新手看完后根本就不知道 Python 的语言特性是什么,灵活在哪里。就无意识的接受了作者的理念 -- Python 很危险,会造成“无穷无尽的烦恼和时间精力的浪费”。

我不反对主观。但我反对把主观的想法,经过一些似是而非的例子包装,最后生成一个看起来很客观的结果。

所以,如果我想学一些我不了解的技术,我不敢去参考他的博客。

#105 楼 @luikore 我們是在討論如何看廣告么?

#109 楼 @darkbaby123 我就是 python 初學者,我個人認爲那篇關於 Python 的很有幫助。如果學一門語言的時候只知道優點卻不知道缺點,我更不敢學。而且他的舉例我自己代碼工程中也遇到過。

所以我要學一些我不瞭解的技術的話,我更希望看了類似的介紹再決定。

@hardywu 我并不反对说一门语言不好,实际上很多黑 Ruby 的文章我也都看的津津有味。我更喜欢拿实际例子讨论语言的文章,而不是扯些虚的。也许我不大理解大神的抽象思维……

对比下老赵的这两篇,我更喜欢这种风格的干货: 为什么我不喜欢 Go 语言 Why Java sucks and C# rocks

其中第二篇还是个系列黑,但有理有据

@darkbaby123 搞学术的思维出发点不一样,我们做工程的,看看即可,不可当真,你让一个铸剑大师看一把明月弯刀他还可能勉强接受,但要他接受一对倒钩就太难了,这什么玩意儿?能刺吗?能劈吗?为什么不直?为什么没锋?…… 至于说瑞士军刀,就更是丑得不成样子了。

此人肯定不是铸剑大师,但也不是百晓生,如果你自己用倒钩用得正爽,何必在意别人嘲笑你的兵器丑呢?至于说初学者,挑选兵器时不舞那样几下,光听别人说,又有什么用呢。

@xhj6 你说的也有道理,领域不同看待事情的观点也不同。

@ darkbaby123 你觉得老赵有干货,那是因为你是码农他也是,并且他给出了代码;你觉的王没有干货是因为你觉得他没有提供具体的代码。是的,有点鸡同鸭讲的感觉。因为王是从事学术研究的,在 PLT(主要研究的就是编译器和编程语言的设计) 研究方面他很牛,说的东西还是值得一看的。我们是工程领域的攻城师,在学术领域内并非都是"shut up. just show me your code"准则,有时候很多问题用具体的代码根本说不清。 就从他批评 python 的这个问题具体来讲:他给 python 做了一些静态语法分析工具 (例如 pysonar),他觉得之所以这么难做是 python 设计时一些人为的原因造成的,仅此而已。但这些问题不会丝毫影响到我们这些搞工程的码农,因为很多学术上理论上有缺陷的东西在实际中并非是什么大问题。 但王垠为什么还要说?因为他就是搞这方面研究的。 那为什么一些码农还要看?因为工程师除了完成工作,挣钱,也应该在思想上时不时的更新一下,不断提高自身。

至于老赵的第二篇 Why Java sucks and C# rocks,看来看去都是语法上的问题,跳不出这个框框。他的这种文章之前很多老外也写过,但没有什么新意,至少带不来在思想上的新的东西。你觉得这种文章写上 10000 篇能发一个 paper 么?王在 05 年上学的时候就有很多 paper 了。算了,说这些都没意义。 总之:不要老纠着一个人不放,而忽视了真正要谈的问题的本身。

#116 楼 @hooluupog 老赵那个系列反复强调 Java != JVM,他喷的是不思进取的 Java,不说语法说什么?

王垠发的是什么样的 paper 你知道么?05 年的时候他还没搞编程语言设计。像王垠博客里这种文章写上 10000 篇能发一个 paper 么?有哪些思想上的新东西么?他的文章里充斥着观点,你找得到支撑论点的论据么?

王垠最近一篇对 Go 的评价“Go 语言里面有很多新的和好的东西。可惜新的东西都不是好的,好的东西都不是新的”这个句式简直听到烂,既可以什么都不说又好像说了很多,反正等于没说。看思维导图也没什么新东西,都是之前别人喷过的。

@hooluupog 最后说一次,我从来都没说这个人怎么样,我只是表示不喜欢他的文章。因为正 @Alex 所说,他的文章给我的感觉就是这样……所以我觉得对自己没什么帮助。不是没用,是对我而言没啥用。我们这些关注高层抽象的人尚且知道语言细节的重要,难道一个搞底层语言的专家反而要不在意?

肯定有其他人会觉得写的很好很精彩,这很正常。就像我先前回复另一位的,领域不同看待问题的观点也不同。其实这个话题的争论就像 vim 和 emacs 多年不变的宗教战争,永远不会有结果的……但我不理解的是为什么总有人抱着说服对方的想法去讨论……那讨论就变质了。

从来没有学了可包治百病的知识,只有对自己有用的知识。正确分析自己需要什么,有用则学,无用则抛,仅此而已。

他对 Go 语言吐槽的地方,其实在 Go 的官方文档和各种演讲里已经解释的很清楚了,Go 设计出来的主要目的就是为了填补语言性能和程序员生产率之间的鸿沟,自然会借鉴大量其他不同类型语言的做法,所以没有程序设计思想的创新很正常,人家本来就不是冲着这来的。可看他的口气似乎觉得语言设计者太 dumb 所以没有新点子出来,对此实在不能认同。这也只能说明搞学术研究和搞工程实践考虑问题的出发点过于殊途,不能同归也不能说明谁对谁错。做工程实践的人要牢记自己的视角,以防再遇到这样主观性极强,煽动性极强的来自学术大牛的文章时,偏听偏信乱了分寸。

参考:

  1. Go 在谷歌:以软件工程为目的的语言设计
  2. Go 语法解释

我觉得我不应该写那么一堆,应该只写这一句:不要老纠着人不放,而忽视了真正要谈的问题的本身。这楼已经歪的不像样了。

#119 楼 @ugoa 主观性极强是的,煽动性极强倒不至于,至于学术大牛什么的就有点开玩笑了

谈论这种问题就像大多数刚毕业时会讨论学习哪种语言好一样,最终都不会有答案。

123 楼 已删除
fsword ruby 和 "脚本语言" 提及了此话题。 04月03日 10:56
需要 登录 后方可回复, 如果你还没有账号请 注册新账号