勿在沙浮筑高台, 再论社区风格

 

引用

"其實﹐在Java社區對于OO,AOP,ORM等討論如火如荼的時候﹐Net社區卻還整天在為微軟一個新Library,新Tookit的發布歡呼不已時﹐就已經明白了net與java的差距﹐思想上的差距。

很久以前﹐看過這樣一句話﹕net程序員是等著微軟開飯﹐而java是自己做飯吃。

雖然等著吃飯未必是壞事﹐可以更快﹐更方便地就完成吃飯﹐然而﹐飯是如何做出來的﹐以及是否可以做得更好吃﹐我是否也可以做出來卻沒有人去想

可以看到太多的Log4net,NHibnate,Nxxx,Nyyy,都是來源于java,為什么我們就不能讓Java做一個Jxxx,Jyyy呢﹐至少也應該能夠和它們直接對話吧?"

 

这个问题我倒不这么看. 首先Java社区要分国内和国外. 国内的Java社区实际上存在的一大好处, 就是让我们知道国外最近又出了什么新花样, 除此之外别无意义. 很多人认为国内.NET社区比Java社区差, 如果在有些兄弟说的扯蛋科目上确实如此, 漫天旗帜飞舞, 拨拉开来一看, 实在的东西不多. 看看Jdon拿出来的那些玩意儿吧..., 难道正确的讨论(假设他们真的代表正确道路)最后只能指导出这种层次的东西?  那么这种正确我宁可不要! Martin Fowler还能说是老菜鸟, 中文Java社区中的一些人...., 不是说玩高深就代表一定不灵, 但是玩高深, 总是有灵的有不灵的, 好歹得仔细分辨一下吧.

其次什么Nxxx/Nyyy那是Java社区中POO对整个开发社区的贡献, 并不是Java整个社区的独有优势, 因为这些东西一旦创造出来, 就是属于整个开发社区的, 并非是Java社区独享. 同时, 要分清楚Java社区中POO的作品与Java社区的区别. 大多数这些项目, 要论设计, 论实现, 你看有Java社区讨论版上说的那么华丽么? 这些项目, 尤其是比较成功的项目, 往往是正好相反吧. 这个我问题上次说过, Java社区那种风格, 很容易产生大量的泡沫, 但是泡沫里会有一些真的东西(这就是他们存在的道理). POO和一般人的不同, 就在于有能力分辨出哪些是有价值的可以利用, 哪些是在空谈.

只不过对于.NET阵营来说, 基本上在哪里都很少的POO中大多数合格者都被微软雇用走了, 再加上微软闭源的风格, 就觉得.NET社区没有拿出什么有力的东西. 但事实是, 那些Java项目的.NET移植, 再加上微软自己的东西, 我倒是觉得极大的扩展了.NET开发者的能力, 既然能力得到了补充, 为什么.NET社区不向其它有意义的方向进发, 而非要回头呢? 难道软件科学里没有其它空白领域等着我么去开拓了? 人家说什么咱们就得说什么, 这有一个词形容, 叫做"拾人牙慧".

再者, Java社区就不为各种框架的退出新版本"欢呼雀跃"了? 这有什么奇怪的, 比如过去我需要全文检索功能, 倒网上一看, 有Lucene, 我就欢呼雀跃了一把, 打算自己移植到.NET用, 然后发现dotLucene, 又欢呼雀跃了一把. 这省了我的劲儿, 我为什么不能高兴? 比如最近的ASP.NET AJAX, 开始我是欢呼雀跃了一把, 感觉比起prototype.js更顺手, 后来发现种种恶心的地方, 我就去改造, 这都很正常不是. 拿这个做比较, 还上升到什么什么高度, 我只能跟你说, 哪儿凉快哪儿呆着去. 至于思想的高度, 我敢下论断, Java社区和.NET社区, 无论是群体还是个人, 根本没有什么差别, 无论空谈上的工夫有多大差别, 有自己一套认知和思考方法的人都是少数.

这个事实包括, 所谓Java社区的热闹程度和产出根本不成比例, 等Hibernate升级和等Linq, 那没有区别. 一方面我们承认Java社区讨论的贡献, 但另一方面, 如果把POO们的产出, 都完全归功于Java社区的讨论而不是POO们的思考和去芜存菁(我认为POO个人能力的贡献要远远大于他们从摄取获取的, 虽然他们自己不敢这么说), 我觉得那叫"恬不知耻", 请问哪个项目贡献人员列表中有你了?  一些POO是被微软雇用的, 对应于Java写的开源项目(实际上只是经济利益的实现方式不同), 就是C#写的微软产品, 于是就成了.NET社区什么也拿不出来了, 这合乎逻辑么?

国外Java社区呢, 实干的多些, 也有不少真知灼见. 但是空谈者也不少. 比如<<重构与模式>>的作者, 看他是干吗地的, 什么纽约设计模式小组, 什么培训/演讲, 然后就是做过一些网站, 作为一个再普通不过的程序员参与过一些正经项目,  帮一些小开源项目重构. 不是说做的东西大小, 也不是说公司/团队的大小, 问题是他拿出什么体现出他自身独特性的东西了? (但不是说他没用, 毕竟还有人需要科普) 我一看见他们几个和大嘴Martin互相在书里拍马屁, 我就来气. Hibernate是他写的还是Lucene是他写的? 再回头看看社区里吧, 说的东西比这几位大嘴还复杂高深的多, 那一个云山雾罩啊...

咱们的中文Java社区, 好的没学着, 有时候人家老外实验性质的提出点什么, 咱们恨不得玩的比这些大嘴和国外社区还夸张还唬人, 然后一帮菜鸟(对不起你们了)就在一边喊, NB啊! 倒是Martin的文章比起国内Java社区的"高手"们还平实的多, 那些说.NET社区应该象Java社区学的, 我们是应该象Martin学习呢? 还是象中文Java社区的高手们学习呢? 我看还不如学学导致晋朝灭国的空谈之风呢. Java社区的存在意义, 就是在那些看似高深实则低水平的讨论上, 不断碰撞, 虽然车轱辘话和无意义的东西重复了一次又一次(或者变个形式, 来几次同义语反复), 但是即使效率低下(毕竟牛人是少数吧), 由于数量的原因(绝对够了), 总能有一些有意义的东西浮出水面. 这个贡献人家已经做了, 我们何必跟人家抢这个风头?

我就觉得, 无论国内还是国外, 谁愿意折腾谁就折腾去. 一伙人折腾不代表大家都需要折腾. 关键是人家折腾出来的结果, 你怎么分辨好坏, 怎么知道是不是适用于自己. 这个纯属认识事物/解决问题/权衡利弊的基础功, 甚至和程序关系都不是那么大. 主要是要认清主次矛盾. 就这两天观察, 实际上.NET社区对于各种说法, 无论是来自于大师/大嘴, 还是隔壁传来的声音, 不客气的说, 跟随的多, 真正思考的少, 从主干中分支出去进行独特思考的更少; 比如一些兄弟, 就像我说的, 他们的文章对我很有用: 现在概念这么多, 谁也不可能全塞脑子里, 需要经常有东西参考.

但是实际上, 如果不在乎让大家生气的话 :P, 他们说的这些我去Java社区看也一样(Java社区的作用). 我在.NET社区, 没看见大家自己的东西, 就是从这些已有概念中增值出来的那部分, 这才是我所担忧的. 至于那帮子鼓吹.NET中文社区变成第二个Java中文社区, 那叫浪费, 而且很显然, 在某一方面的讨论圈子已经足够大, 能够产出足够的东西之后, 如果这个方面的圈子继续增大, 声音只会变成噪声, 除了增加吵架的机率, 看不出有什么好处. 分为不同的群组, 关注不同的方面, 才是发挥网络优势, 最优化开发者社区的力量分布的方式.

最后就是我说的, 基础认知能力, 说的惨点, 无论有些人干过多么庞大艰深的项目, 无论谁积累了不少概念上的认知, 我觉得你的经验也好知识也好, 恐怕很难做到把这些东西能带给你自己的效益最优化, 因为最基本的认识世界的能力就不够用, 这就是为什么没有把自己的/来自于别人的经验和知识增值的原因. 古人说, 勿在沙浮筑高台, 就是如此. 我感觉无论Java社区.NET社区C++社区, 很多人在计算机领域积累的知识/认识/经验, 如果换一个数学/物理兼知道点哲学基本常识的大学毕业生, 一年之内肯定能超过. 说实话就咱们会的这点学问算个P啊, 人家的理解能力艰深的数学都玩的转, 还能被这些难倒么? 物理->程序游刃有余的例子, 我在10年前还很小的时候就见过了(别拿现在哪怕清华北大的那些废柴当例子做反证, 我说的是真正愿意学习的人).

别说你不喜欢理科, 你不能玩转数学物理是你不想学; 别说你不喜欢文科, 所以不屑于去玩哲学语言学. 我们学什么顺利, 学什么不痛快, 这与我们成长的环境有关, 与我们的性格有关, 可以说半天生的; 我们跟人家比, 由于这些原因, 对事物的认知能力就比其它人弱! 这话刺激性大点, 还是我说的愿意听的就听, 不愿意听的就把我当个屁放了, 我来这里并不是为了找骂. 我觉得正是因为我们弱, 所以我们才要更清除的看到我们的弱点, 因为毕竟从事工科不需要把数学物理哲学语言玩到多么高深, 只要我们把基础性的东西逐渐搞扎实, 逐渐的建立和培养起良好的/科学的认知事物的方法和习惯, 对于我们的工作来说, 就足够了. 无论是走上POO之路, 还是作为一个使用者, 解决和思考问题时, 都能比现在更加接近正确的道路.

说的具体点, 对于数学/哲学/物理学上比较著名的, 体现研究事物的方法的那些著名的例子, 我想每个人都应该去了解和思考. 比如"哥尼斯堡七桥问题", 不是特别高深的东西, 中学生都搞的懂, 可是我想知道, 无论是Java社区还是.NET社区, 有几个人知道它的来龙去脉呢? 过去有前辈跟我说, 学好数学就要学好数学史, 学好哲学就要学好哲学史. 为什么? 因为这反映的是人类思维的变化与进步. 咱们不用学好数学, 也不用学好哲学, 但我个人认为, 我们仍应该放下各种面向对象的著作, 首先去看看数学史, 哲学史. 因为咱们计算机科学的各种理论和方法, 正是从这些东西里变化出来的! 说的更难听点, 现在很多程序员, 对OO设计的相关知识如数家珍, 但思维方法, 和2500年前苏格拉底之前的时代的古人, 没有任何进步! 这样你就是会的再多, 也不能用的得心应手. 而数学史/哲学史, 我觉得在一定程度上会告诉你: 人类以前是怎么想事情的, 后来因为什么, 就开始这么想事情了. 尤其是那些非常经典的问题, 经常体现了大师们的思路, 值得我们学习. 当然不只是程序员, 世界上50亿人, 恐怕49亿人的认知能力和思维方式都停留在史前时代, 但是我们是程序员, 我们比其它人更需要这些基本能力!

当然我自己的基础素质也不高, 但是我觉得我有一点可以自豪的, 我深刻的知道我差的很远, 而且一直不断在改进. 一种知识, 一个能力, 你要逐渐的把它变为二阶的东西, 这样你就可以扩展出更广阔的视角和领域. 至于什么Java社区, 尤其是中文Java社区, 还是算了吧. 沙子之上的基础在稳固, 这个基础之上的建筑在华丽, 它也毕竟还是构筑在沙子之中. 也正是因为他们在沙子上建筑通天塔, 所以他们的建筑技术就要加倍高深.

可以肯定的是, 他们的建筑技术, 绝对是我们可以借鉴的. 但前提是, 我们脚下的, 是实在的泥土.

posted on 2007-09-26 20:20  怪怪  阅读(2159)  评论(29编辑  收藏  举报

导航