Hello World
Spiga

您精通XXX吗?那么就来谈谈它的缺点吧

2010-05-06 15:31 by 老赵, 5630 visits

“精通”这个词已经被用滥了,当年招人时收到过无数简历,继而发现,似乎简历上面不写几个“精通”还真对不起咱这张脸。那么到底啥叫精通呢?应该是对某样东西无比了解,不能再了解的程度吧——不过地球人都知道,简历上的“精通”已经算不得数了。那么,如果我们真要考察一个人(比如自己)对某件事情是否“精通”,又有什么合适方法呢?我觉得有个方式比较靠谱,那就是谈谈这东西的缺点。

不过咱先说点废话吧,比如谈谈耍流氓——呃,不,搞对象吧。比如您看上一个妞,面容姣好,身材窈窕,气质温文尔雅,不错挺好挺心动,那就上吧。吃过几顿饭,搞过几次活动,小手牵牵小腰搂搂,成了。您那心里乐得欢呀。不过日子长了,您会发现,咦怎么好象矛盾慢慢多起来了呢?比如每个月总有几天会让您觉得无理取闹,谈一些正经话题却也话不投机,性格好象也不是那么合拍……更关键的是您忽然发现对方不化妆的时候咋就看上去有些……异样涅?废话,人姑娘和您熟了而已。您自己追求人姑娘时会带人去听音乐会,送花送礼物,现在呢?您追求人姑娘时衣衫整洁装模作样,现在不还拉里邋遢的……对了,居然还抖腿!别走,说得就是你。

其实道理也都是一样的,任何东西在初期总是显得特别美好。比如您要搞一门技术,去书店找书看,哪本书不是说它优势的?又有多少书是在谈它缺点的呢?技术推广者或拥护者基本也只会不断地宣传技术的优点,否则谁会来跟进这门技术?因此,了解技术的优点很容易,但是想要知道它的缺点就困难了。如果一个人能谈论这门技术的缺点,并进行有效的分析,我更愿意相信他对这门技术是有深入研究的。而且在很多时候,对这门技术越是了解,那么发现的缺点也会更多,因为熟悉了呗。没有什么技术毫无缺陷,有缺点不是问题,关键是怎么去解决,如何去扬长避短。事实上,一个看不到OO缺点的人,真能算是了解面向对象,真能做出良好的设计吗?

更关键的是,想要了解一门技术的缺点并不容易,这需要更广阔的眼界。而且在这方面工具只能起到“辅助”作用,起关键性作用的还是人的态度。就好比推特,应该说是个打开眼界的好去处吧?我倒觉得……未必,还要看您怎么用。推特需要您去特意“追随”一些人,才能看到那些人的消息。笑来老师昨天谈到“有时候,真相比谣言更难传播的原因,主要在于人们只传播自己认同的东西。”因此,您看到的消息,其实很可能也是您“愿意”去看到的东西——您不想看的人,不想去关注的消息,您完全可以不去订阅嘛。就比方说,我就被一些人给Block了,这样他们看不到我说的任何东西——比如F#或.NET的优势是什么。他们不愿听,因此就能听不到。

比如,要了解.NET的缺点,把视野放在.NET社区是远远不够的。此时您要去关注其他社区里的人是怎么说的(通过订阅博客或是在推特上关注相关的技术人员)。例如在Java社区中,他们就会谈到Java目前的发展状况及优势是什么,甚至会直接谈到.NET的缺点。此时就是个更进一步了解和反思.NET自身的契机。对方的优势是否就是我的缺陷?我在对方眼中的问题,是否真的是我的短处?如果真是缺陷或短处的话,那么我又可以怎么去弥补?

不过问题在于,国内技术社区的眼界总体是封闭的,即便是所谓开放社区的群众也会盲目排斥微软技术,更别说大大方方承认自己的缺陷了。不久之前Oren Eini写了一篇文章,谈到“缺少编译期检查会不容易重构”,我在推上表示赞同。但就是这么一个普通的说法,还是有同学反驳我说“除非完全不需要(反射等)动态特性,不然编译检查靠不住”,因此编译期检查毫无意义。也有人说重构用正则替换即可,或是重构不易是因为代码写的不好,有Bad Smell的缘故——是不是偏激了点?似乎在某些技术人员的眼里,自己使用的技术不会有任何缺点,否则自己会随着技术本身而掉价——其实这又何苦,为什么不能大方的接受对方的优势,再想办法去弥补自己的缺陷呢?比如,不是有人说Ruby重构不方面吗?那么,您可以为它编写一个辅助工具嘛(而且又不是没有现成的)。

我一直很乐意承认对方的优势,例如我承认Rails框架——或者说工具集的生产力很高,有很多值得ASP.NET学习的地方,我在开发项目时也从中吸取了不少优势,也对我长进很大。我深刻体会到吸取别人长处是促进自己进步的有效方式。因此,在六月份举办的.NET技术会议上,我也打算请人来讲一场关于Rails的话题。同时,以后每次技术会议上,我都会邀请其他社区的高手来讲解相关技术,希望可以以此打开.NET社区技术人员的眼界。

好像有些偏题?嗯,就是这样。

Creative Commons License

本文基于署名 2.5 中国大陆许可协议发布,欢迎转载,演绎或用于商业目的,但是必须保留本文的署名赵劼(包含链接),具体操作方式可参考此处。如您有任何疑问或者授权方面的协商,请给我留言

Add your comment

49 条回复

  1. Snake
    220.162.41.*
    链接

    Snake 2010-05-06 16:13:36

    又有沙发.先坐再看完.

  2. xiaop
    218.24.162.*
    链接

    xiaop 2010-05-06 16:14:19

    我就问过很多java开发人员这样的问题,他们认为java哪里最不好,结果是大多感觉非常的不错,不需要改进了,只有一位同学说annotation不是很舒服。

    也许是这样的,用久了一项语言的一项技术的时候,自然而然的就接受了他的优缺点,所以很多时候也就停下了思考。

    目前我对CLR本身感受最大的缺点就是为什么不能在linux下面做framework,这样提很多系统方案的时候或者说话的时候最起码能比现在声音更大点。(MONO很多时候都不太有底气,毕竟不是打着microsoft的招牌的)。

  3. Snake
    220.162.41.*
    链接

    Snake 2010-05-06 16:18:10

    的确有些偏题. 不过老赵第二自然段的描述是亮点之一,最后一段也是亮点.

  4. 为了梦想
    123.134.33.*
    链接

    为了梦想 2010-05-06 16:48:23

    老赵正在泡妞?

  5. lemon
    58.32.232.*
    链接

    lemon 2010-05-06 16:55:12

    赞一个,泡妞这里说的最贴切

  6. gaobanana
    116.213.99.*
    链接

    gaobanana 2010-05-06 16:57:13

    有思想,现在还没有到达对.net缺点的评价地步,估计也是“需要更广阔的眼界”,支持!

  7. 老赵
    admin
    链接

    老赵 2010-05-06 16:59:14

    @xiaop

    我倒对mono信心越来越足,很多事情其实是很讽刺的。

    一些打着开源或开放旗号的人,认为开源社区有多么多么强大,却认为.NET平台上这个缺那个少。但当我说,.NET这边也有开源项目XYZ,我也用过,很多人也在用,他们却会说那不是微软做的,因此不可靠。这个思维方式很流氓,而且其实和.NET平台上的许多不靠谱的人想法异曲同工,不都是觉得微软顶顶牛,离开微软就不行了么。

    mono就是最好的例子。现在有多少人说mono不好时给出合适理由了呢?理由都是同一个:“不是微软搞的”,在此之前却不做,甚至不愿做任何基本的了解,一味的FUD。这逻辑就好比说“二房生的就一定是弱智”一样。是,我承认二房生的不如大房有地位,可能不能继承家产,但是他自己过的不也好好的么,呵呵。同理,我也不可能说mono比MS实现要成熟,但这就意味着它就不成熟了么?

  8. Mark Chen
    61.141.178.*
    链接

    Mark Chen 2010-05-06 17:00:52

    Mark一下! 呵呵,期待下次的会议录音

  9. shuhen
    222.173.95.*
    链接

    shuhen 2010-05-06 17:54:02

    比如您看上一个妞,面容姣好,身材窈窕,气质温文尔雅,不错挺好挺心动,那就上吧

    这话确实有点流里流气

  10. xiaop
    218.24.162.*
    链接

    xiaop 2010-05-06 17:54:39

    @老赵

    非常同意你的观点,但是很多时候客户不买单啊。你提了一个dot net架构的系统,客户说了,windows server太贵, 我想用linux,你有解决方案吗,我拿出了mono这个救命稻草,但是客户不买账了。

    所以总结下不是MONO不够好,而是microsoft在某种层面上弄的太好,导致了MONO现在不尴不尬的局面。。。

  11. Snake
    220.162.41.*
    链接

    Snake 2010-05-06 18:02:18

    的确,MONO给人一种感觉就是很久以前同是美国人的黑人与白人的区别.

  12. VVV
    121.8.69.*
    链接

    VVV 2010-05-06 18:15:36

    好吧,我就是在推上跟您抬杠的没见过世面的小P孩,我承认中午的时候观点有些极端,我所要表达的是:用当大面积用到动态特性的时候(我举了spring的例子,您又说我极端了),有没有静态类型检查并没有太大差别,而ruby重构,如您所说有现成工具,一定要有“静态类型检查”跑一次interpreter加上类型检查(C扩展API里面有)也不是什么难事。最后请您引用小的发言的时候保留其完整性,我的原话是“的确没意义,对于不需要静态类型检查的人来说c#毫无优势,同样的,对于不需要减少代码量的人来说,ruby毫无意义” “我的观点,除非完全不需要动态特性,不然编译检查靠不住,如果完全不需要动态特性,不玩黑魔法的C++都很好用”,中文这种东西,去掉定语语义会很大不同的,当然我不否认我很极端很偏激。

    至于ruby缺点,缺少IDE代码感知,性能差距,代码风格难统一不利于协作,rail所隐藏的实现的丑陋,应用较同类的python要少很多,作为嵌入脚本远不如Lua成熟...说都说不完,但是您非要揪着“动态”作为缺点我就真不敢苟同了,重构不便是ruby的一大命门,但是我认为这个命门不完全是“动态”所带来的,因为smalltalk就有很优秀的重构。

  13. 小羊肖恩
    218.106.184.*
    链接

    小羊肖恩 2010-05-06 18:52:40

    怎么读着读着有老苏文章的味道……

  14. 老赵
    admin
    链接

    老赵 2010-05-06 19:23:12

    @VVV

    还是我早上说过的那些话,我从来不认为编译期检查能解决所有问题,它的确解决不了反射等问题。但是我也反复强调绝大部分代码是不需要反射的,所以编译期检查很重要。你举的Spring例子是什么?到最后都用“注入一个类型正确,但逻辑错误”的情况来反驳我说编译期检查不靠谱,我从那时开始就觉得这样的讨论实在没有意义,你已经在纯抬杠了。

    再者我并没有觉得哪里歪曲了你的意思,我引用几乎的就是你的原话,也没有断章取义。还有我从头到尾没有说过Ruby动态性是缺点,我一直就是围绕着编译期检查和重构不易在说,不知道你怎么会感觉到我从来没有说过的意思。

  15. 老赵
    admin
    链接

    老赵 2010-05-06 19:26:25

    @xiaop

    Windows Server真不贵,贵的是SQL Server……企业应用是花钱买放心,具体这方面不太了解他们的想法。不过对于Web 2.0应用来说,尤其是自己可以控制的项目,即便不用mono跑,也完全可以在*nix上跑存储。

  16. lovelovelt
    121.33.190.*
    链接

    lovelovelt 2010-05-06 19:32:43

    狂顶啊,我觉得这种气氛也已蔓延到校园里了,我有一些同学就觉得开源势不可挡,学会了写makefile就觉得VS很低级,最近Ubuntu也发布了新版本,什么Ubuntu Studio用的一知半解也捧到天上. 有时候我在想,开源社区人群有一种强烈的归属感,就好像很多东西是他们自己开发出来的(已经把自己归为开源开发一份子),说开源不好就是在攻击他,当面讲的话面子上可能更过不去.一句话,这种人失去了开源文化或哲学所应有的开放思想与眼光.

  17. vvv
    113.107.88.*
    链接

    vvv 2010-05-06 19:43:30

    难道用到spring的项目重构时就没这种情?接口没变但是服务类的某些函数名变了,这种情况下跟动态语言重构有什么区别?再者,我也从来没说过静态类型检查不重要,不重要的前提是大面积用到动态特性的场合,您大多数时候不需要反射,正如我大多数时候不需要静态检查一样,个人喜好而已没什么优劣。我所理解的您的观点是动态语言缺少类型检查是致命缺陷,然后影响到重构等很多方面,理解不当请指正。

  18. vvv
    113.107.88.*
    链接

    vvv 2010-05-06 19:58:44

    sorry我自己二了,修改接口定义的函数名可以找出所有注入错误的对象。调用函数不必要反射可以从接口调。

  19. JimLiu
    221.223.44.*
    链接

    JimLiu 2010-05-06 21:21:15

    嗷嗷,老赵遇到流氓了吗?

    在某些技术人员的眼里,自己使用的技术不会有任何缺点,好像自己会随着技术本身而掉价——这又是何苦,为什么不能大方的接受对方的优势,再想办法去弥补自己的缺陷呢?

    这种风气在有些圈子里的确是发展最大的限制。放开点心胸,多接受下别人的优点,世界很美好。

  20. 链接

    Vision 2010-05-06 21:46:15

    老赵还是加个验证码吧

  21. 老赵
    admin
    链接

    老赵 2010-05-06 22:47:12

    @YYY

    使用依赖注入容器也需要合适的编译期检查,如果每个注入都是object,那么可以认为框架的API写的不太妥当,没有做好约束,例如泛型约束。事实上每个优秀的静态语言的API,都会充分利编译期检查,辅助开发人员写出正确的代码。静态语言的表现能力其实完全不差的,如C#,包括F#和Haskell等等。许多人认为静态语言表现能力差的主要原因,其实是Java的表现能力不够,但使用又太过广泛。

    不重要的前提是大面积用到动态特性的场合,您大多数时候不需要反射,正如我大多数时候不需要静态检查一样,个人喜好而已没什么优劣。

    大部分场合是否需要编译期检查,我相信这不是个人喜好,而是每个程序的必然结果。不过你要我证明……我倒也一时证明不出,但是这我想这点是没问题的,因为Ruby代码也不是处处非duck typing不可,一个变量的类型也基本不会随意变来变去,相当部分代码其实和C#并没有太大区别,其实编译期检查最多的往往还是typo等令人厌烦的琐碎问题。这样的问题在编写代码时的体现还算是少的,一旦重构,问题就麻烦了。

    我所理解的您的观点是动态语言缺少类型检查是致命缺陷,然后影响到重构等很多方面,理解不当请指正。

    我不是单指类型检查,我说的编译期检查,最传统的包括字段名,方法名,类型名等等。最常见的重构方式(没有之一)便是rename,例如修改一个属性的名称。试想在一个项目中到处用到一个article类型的对象,访问它的content属性,你突然有需求把它改为text,你可能要改几十个地方(10个view,每个view零散访问了3到5次这再正常不过了,还没算上普通代码里的逻辑),还没法用正则替换。这时候你应该可以体会到静态检查的重要性了。虽然我写的ruby远不如C#多,但也已经体会到过这样的问题了。我不知道你说的intepreter方法能否检查这种情况,如果可以的话,我猜那也就不是ruby了。

    其实我这里倒不太关心是不是动态特性造成,我只关心结果。如果真是动态特性造成的,那么在我看来这也便是动态特性的缺点之一。但我不会说动态特性是Ruby的缺点,不知道你是不是能理解两个说法的区别。

  22. 链接

    xiaotie 2010-05-06 23:10:05

    打开这篇花了三分钟

  23. 老赵
    admin
    链接

    老赵 2010-05-07 00:42:05

    @xiaotie

    网速太慢了啊,我只花了30秒,活活。

  24. 链接

    xiaotie 2010-05-07 08:49:38

    @老赵

    和网速无关,ie死了。杀进程,再打,继续死。这次不管了,出去溜达了一圈,回来一看,打开了。

  25. 链接

    xiaotie 2010-05-07 08:51:07

    .net 好东东还是欠缺。找了一圈cms,没找到好用的。不得不用php(另一个是考虑到今后会集成ucenter)。

  26. 链接

    景良 2010-05-07 09:02:21

    呵呵,.net確實好東西很少,想找個好用的crm,cms,oa,erp都沒有好的開源的.不過以後會有的

  27. vvv
    113.107.88.*
    链接

    vvv 2010-05-07 09:12:25

    我已经说了是我自己二了您至于这么大篇幅反驳吗。。。举那个极端的例子也是因为我脑子一时进浆糊,现在我收回之前静态检查没用的发言并道歉,从一开始我就说我是初学者您却把我当砸场的,希望给予初学者适当的引导难道就是这样。。。不是所有初学者都应该大大这个我不懂请教我 大大好牛逼 吧

  28. 老赵
    admin
    链接

    老赵 2010-05-07 09:22:03

    @vvv

    我其实就是在文章里举例,根本没有想要说谁,也没想过把谁当作怎么样或是砸场子的云云。不过后来我想你来讨论了,就讨论到位吧。虽然你当自己是初学者,但我对所有人都是一样的啊(而且我不觉得你是初学者,你已经比我上大学时强多了……),不针对人,只针对内容,我也只是把内容说清楚。说到对初学者的引导,我觉得就该什么都说清楚,而不是说初学者就可以无所谓走极端可以放松什么了。

    如果我的回复让你感觉不舒服,那么我这里先打声招呼了……

  29. 老赵
    admin
    链接

    老赵 2010-05-07 09:24:18

    @景良

    其实cms基本也就php一枝独秀了,毕竟发展多年了,而其他再写,一像是重造轮子激情不在,二也是发展时间少了。而其他一些东西,有哪些好的开源的吗?我觉得那些都是小众市场的东西了吧。

  30. vvv
    113.107.88.*
    链接

    vvv 2010-05-07 09:33:50

    我只是想到什么说什么,不太考虑后果而且我认为网上都瑾言慎行那也太累了,

    相信您也年轻过,不过我自认为并不是个喜欢走极端的人,举那个极端的例子就是一时没考虑到接口的约束于是犯二了,您要是当时就指出错误也就不会有后面这么些浪费人参的讨论了

  31. 老赵
    admin
    链接

    老赵 2010-05-07 09:53:34

    @vvv

    呵呵,你说的可能有些道理吧,不好意思了。

    不过我觉得讨论技术时不管什么场合,还是谨慎点好……虽然我也不知道什么地方可以不用谨慎,你在推上也可以看到最近北风相关的内容很夸张吧,其实就算在网上,乱说话或是说些乱七八糟的,问题还是很大的……

  32. 链接

    xiaotie 2010-05-07 10:32:30

    UCenter.Net 一年多没动静了

  33. 链接

    麒麟.NET 2010-05-07 11:27:19

    好像爱抖腿的程序员还真是挺多的

  34. 链接

    麒麟.NET 2010-05-07 12:22:48

  35. 老赵
    admin
    链接

    老赵 2010-05-07 13:10:42

    @麒麟.NET

    的确如C#就提供了更多的编译期检查的能力,越来越多的类库也会充分利用这些特性提供更好的API。

  36. 链接

    Kira 2010-05-08 21:47:54

    我大学里所学的是偏向Java的,但是我的第一个工作却是.net的。。。

    我也觉得有的时候.net上面有些东西框架什么的比较少,比如说就那个Comet方面的东西。.net几乎没有,但是Java上有很多。

    但是我另外方面.net开发工具感觉比Java好,而且有个强大的MSDN。 Visual Studio都有好几千人的Team在搞的。。。微软再低效率总比他们免费的强吧。。。

    希望有更多的.net方面的框架之类的出现,不管他是开源的还是微软自己出的。

  37. 链接

    liulf123 2010-05-09 16:54:26

    支持老赵呀。时刻观注你的博文。自己工作也有近三年了,不过对.net 的理解还末到家呀。时刻学习一下。

  38. 链接

    liulf123 2010-05-09 16:55:24

    不知道这里登录的那个是什么个东东,神奇,一个单点的整合??Blog.me 域名不错。

  39. 链接

    alifellod@163.com 2010-05-10 19:16:02

    老赵的外观越来越有研究气质了,哈哈!!!!!

  40. 链接

    老菜 2010-05-11 17:20:45

    说得很好,“精通”XX,知道它的缺点吗? 我更加发现我什么都不会啊。老菜。

  41. 半残程序员
    116.26.29.*
    链接

    半残程序员 2010-05-11 18:58:54

    老赵,我想试试momo,是不是用opensusu较好? 还是随便哪个linux都可以?

  42. 老赵
    admin
    链接

    老赵 2010-05-11 20:30:20

    @半残程序员

    是mono,随便哪个linux都可以,事实上mac和windows也可以。

  43. baihmpgy
    117.22.228.*
    链接

    baihmpgy 2010-05-12 18:30:04

    我一直都是C#的Fans,从2004年到现在已经用了6年。我现在基于.NET开发了一个云计算方面的产品。每次和客户交流,他们总会问到一句话:为什么要用微软的呢?原因是微软的东西贵,此外不太稳定。我也只能回答:选择在.NET开发,只是因为.NET开发平台很少,我在这开发这样的产品就相当于占领了一个高地了,等在.NET上开发完成后将移植到Java。这样回答比较牵强,好在这个产品目前还有一些技术优势。老赵一直谈C#的好处,当然C#语言特性和微软技术确实不错,这点我承认。但是C#不如Java的地方,一方面是开放规范,另一方面就是虚拟机和SDK。C# SDK是由微软研发的,没有一个开放规范,Java SDK一般都是先有一个规范,再有实现。因此在Java方面,有很多开发的框架规范以及实现。.NET VM不如Java VM的一个方面,我认为是类加载机制,C#类加载机制非常简单,但缺乏灵活,从而产生了很多限制,最大限制就是动态性。

  44. 老赵
    admin
    链接

    老赵 2010-05-12 19:28:36

    @baihmpgy

    说微软东西贵和不稳定都是可以细谈的,我现在很多方面觉得微软的东西并不贵,且稳定性等表现都很好。

    C#是有ECMA标准的,而且没有C# SDK一说,你说的应该是.NET SDK……我谈的只是C#,我把语言和平台分的很清楚,你说的都不是C#的问题,呵呵。其实越来越多的类库也出现在ECMA标准里了。你说的Java平台上先有一个规范,再有个实现,这具体是指什么呢?还有什么叫做“动态性”,能再具体说说吗?

    我不觉得CLR不如JVM啊,呵呵,虚拟机最重要的还是JIT和GC等方面吧。MS CLR的JIT可能不如JVM,不过GC还是很强大的。而且我觉得GC比JIT更影响长其执行的程序性能,呵呵。

  45. baihmpgy
    124.114.10.*
    链接

    baihmpgy 2010-05-12 20:54:08

    @老赵

    只不过我见的几个企业都是使用MySQL,对这方面我现在体会不深。

    谢谢纠正,你说的没错,确实是.NET SDK,C#语言确实不错的。Java平台由一个规范,比如说JMS、JDBC、JMX、JNDI等规范,在Java里面有一个对应的JSR规范,然后定义了标准的接口,这样就有这个标准的各种提供商,包括Sun本身提供的。这种规范的好处在于开放且标准,所以Java平台也就变得非常强大了。微软.NET平台目前还没有这样做,但已经慢慢完善了。我现在在做一个开放服务平台,这个动态性是指CLR类一旦加载了,如果要卸载的话,必须使用AppDomain,而一旦使用AppDomain,复杂性和性能便不可接受了,.NET要实现这种动态性代价较高。而Java的ClassLoader则非常的灵活,这可能是和JDK与VM相关的。当然,JVM和.NET VM都具备了JIT和GC功能了。

  46. 老赵
    admin
    链接

    老赵 2010-05-12 22:23:17

    @baihmpgy

    嗯嗯,我觉得这个应该是CLR设计上的选择,这方面我需要再去了解一下,谢谢提醒。

    我说微软系统不贵,主要是指操作系统啦,SQL Server是挺贵的,一些如SPS等App Server似乎也有点贵。当然这些都是针对Web 2.0企业说的,所以我一直建议这些企业把数据存储放在Linux上面,例如使用MySQL或PostgreSQL而不是用SQL Server。

    至于企业项目……Oracle的价格是SQL Server的数倍,企业主要是花钱买放心,不过这方面我接触的也比较少,没有仔细算过很多东西,呵呵。

  47. baihmpgy
    124.114.10.*
    链接

    baihmpgy 2010-05-13 11:16:23

    @老赵

    我看过Microsoft关于CLR设计的声明了,他们已经说了目前CLR不会支持类型更新和卸载的。确实是设计上的考虑,也有可能是Microsoft策略考虑或者眼界还没有到。在大型应用上,Java阵营确实已经占据绝对优势。

    同意你观点,我也一定会把MySQL部署到Linux的。

  48. jack
    116.228.220.*
    链接

    jack 2010-05-25 12:40:02

    mono 没用过不熟悉,最近公司准备把一个小项目部署到Linux下边,折腾很很长时间,AJax用了有问题,数据检验控件用了有问题,直接在grid上绑定布尔类型的数据有问题. 感觉都是很低级的问题,MONO名声在外,不可能连这样的问题都没解决. 个人感觉还是跟个人技术及语言有关系.不到技术论坛,官方查找别人的经验.即使去看了,也知道怎么下手,都是英文的. 可在中文论坛,到处是转来转去的文章,而且都是些说得不明不白的.电脑这东西,不同的环境,报的相同的错误但可能原因是不一样的.

  49. 链接

    uowzd01 2010-06-11 12:30:41

    还请老赵赐教OO的缺点是什么

发表回复

登录 / 登录并记住我 ,登陆后便可删除或修改已发表的评论 (请注意保留评论内容)

昵称:(必填)

邮箱:(必填,仅用于Gavatar

主页:(可选)

评论内容(大于5个字符):

  1. Your Name yyyy-MM-dd HH:mm:ss

使用Live Messenger联系我