`
netxdiy
  • 浏览: 677146 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

程序物语(十)守望内心的宁静

 
阅读更多

世界杯大战正酣,球迷们和伪球迷纷纷摇旗呐喊,玩得不亦乐乎。一些技术社区也不消停,讨论声此起彼伏。请注意,是讨论,不是对仗。因为论题实在太过 醒目,邀月也不得不看了几篇文章,当然还有一些回复。我注意到一个现象:回复的70%以上都与技术本身没有太大关联,但是回复数量还是挺可观的。

我在这里不想挺某派,贬某派,也不想摆出一副公正姿态骑墙。我只想说自己的一些感受。

一、发言的态度。

从本质上 说,我们大多数的人都与技术相关,或者说大多数是程序员。我们基本可以算是同行吧,为什么我们评论他人的态度会如此强烈呢?文人相轻是古已有之的,但有句话也这么说:本是同根生,相煎何太急!我们是否有必要像那样给谁扣个大帽子,拉去?我们社会开放了,公众的容忍度也提高了,调侃两句也合情合理, 最可怕的是众口一词,不论道理,乱棍打死!扪心自问:我们对自己的家人,对自己的同事,对自己的事业伙伴,也是这样的语气么?

可能会有人说,明明是作者不学无术,误人子弟。那我想问一下:谁的观点是完全正确的?谁对事物的认识是一成不变的?我相信,读者有这个分辨能力的,只是可能需要在评论前先思考一下。写技术文章和其他文章不同,它最基本的就是讲求严谨。以测试为例,一两个case不能证明某荐原始设计有误,或者存在性能瓶颈等等。因为测试环境要求太苛刻了。
比如操作系统,仅windows系 统就有个人版/服务器版,个人版又有win2000/winxp/vista/win7等,服务器又有win2000/win2003/win2008 等,还有linux/unix、Solaris等等

开 发UI环境又有vistal studio 2003/2005/2008/2010、Elipse 3.X/Netbeans 6.X等,运行基础运行环境CLR/JRE等。

开发者使用的机器配置,如CPU/内存/硬盘等

测试标量的其他干扰条件。如其他正在运行的程序等。

测试所使用的工具是否完全公正。

测试的重复取样及离散性要求。

完全运行环境的真实模拟。

并发测试。

………………

从这个意义上说,个人基本上无法完成真正意义上的工业测试的,结论也就不那么公允。道理很简单,个人一般不会买30个(统计中大样本容量的最小集合数,也有理论认为是24 个,邀月注。)不同频率的Intel和30个不同的AMD处理器来作某项性能测试。(当然,除非你非常富有,并有充足的时间)又比如你可能不了解某个某个 版本的Framework对某几个类型的CPU作哪些优化。

因而,我们一般得出的一个技术结论,应该是在特定条件下的不完全样本的 不充分测试中得出的一个不完全绝对的结论 。它有可能是失之偏颇,甚至完全是错误的。因此,我们讨论的目的,不是要得出一个绝对正确或者完美的结 论,而是在讨论中我们每个人的认识有所深化。有人说,演讲者最重要的不是口才,而是思考的深度。我也可以理解为不是谁的声音高,支持者众就代表正确,当然 也不是支持者寡就代表错误。俗话说,理不辩不明。只是希望我们每个人都加深自己的认识,有收获。这是一种求学的态度,与年龄、社会地位无关。

二、看问题的角度。

我想,我们大多数人应该承认:微软是一家有创新活力的业界领先的IT公司,而SUN(目前已经归属 Oralce)也是一家优秀的平台解决方案提供商。这与c#/java本身无关。那么为什么那么多人要说微软的.net技术不适合大型企业应用或者说高负载、高并发分布式应用呢?

我想这可能有几个背景:
1、市场策略。微软有些招摇了,操作系统、特别是PC,办公系统、数据库、开发语言、企 业协作、商务智能,这是多么庞大的生产线。而sun则要低凋一些,给人的印象是专业的企业级应用方案提供商,不花哨。
2、用户体验。微软的钱赚在明处,所 以招人恨,即使几千块的操作系统,也会卖得让人眼红。因为用户众多,挑刺者也众,而跟风者居多。而sun/Oracle一个项目,不动声色的几百万$收入 囊中。时间长了,慢慢约定俗成:microsoft的产品是供人娱乐,而SUN才真正提供企业应用。
3、最重要的是:微软不开源,而sun开源。因为不开源,用户就担心,万一那天什么什么了,我们不是受制于一家公司么?前一阵子的黑屏事件,更加剧了大小企业对此的恐慌态度,如同人们担心每天骑车会不会发生一样。说起来也怪,从概率学的角度讲,骑车出事故的概率并不是0,可数以亿记的人们并没有因此而不骑车。其实就是开了源,小企业和用户也没有实力来研究和优化它,最多满足一下某些好奇的心理,觉得踏实些。
4、成本费用。MS的全部是商业软件,要花钱,这是市场规律。SUN的方案也要花钱,可能花更 多的钱。要不然它也没必要将自己卖给Oracle,因为它首先要生存。再好、再领先的技术在市场面前有时不得不低下高昂的头。你买东西时,会不会觉得几百万比十几万的东西要可靠一些呢?

有点扯远了,那么我们在这些背景下看,C#究竟算不算是一种优秀的开发语言呢?它的性能对它本身的优势、劣势究竟有何影响?

这里抛开真正的测试不谈,因为我没有能力作全面的测试。原因除了测试条件,还有我对c#的认识还很片面。选c#就是选平台,.net平台。那为什么选择(或不选择).net/c#?我想从项目管理几个主要策略考虑:1、政治风险;2、旧有平台的迁移成本;3、项目的市场 运作。4、X因素。这里有几篇文章,可以参考下:
http://www.cnblogs.com/haoxiaobo/archive/2010/06/01/1748966.html

而 这其中,技术平台占的比重相对要小很多。有一些原因:

并不是最优秀的开发语言、平台就理所当然被采用。

从整体上看,也没有一个万能的无往不利的开发环境能解决所有的应用场景,即使技术方案是完美无缺的,项目工期、旧平台交接、成本等其他因素也会导致问题复杂化。

开发人员的认知,编码思路等也会对开发技术产生影响。换句话说,水平好的,差点工具也能充分发挥。水平略弱的,即使好的工具也会导致整个项目整体很差。

客户的应用场景是有差异的。比如,每天几百几千的访问量,对性能的要求就不那么苛刻了。

如果说,没有一个公认的叫得响的c#/.net平台应用程序解决方案,换句话说,没有选择C#/.net作为解决方案,那有可能是各方面的综合因素不全具备,而不一定是纯技术角度的思考。当然,也跟.net的宣传策略和市场定位有关。
即便从纯技术角度来看,只要性能的差距不太影响对客户感觉,一般会通过硬件来改善。这不是说硬件是万能的,有时候优良的数据库和架构是至关重要的,可能多人会有感觉:费尽心机作的性能优化,被一个蹩脚的select拖死了 !而项目中的技术又可以分为两大类:一类是实现所有业务功能的 开发技术。一类是保证软件能够成功开发的管理技术。 或许两三个人开发的应用程序,它的管理成本不高。但随着应用程序规模增加,三十人以上的项目开 发团队,其管理的成本就急剧增加了,特别是技术以外的成本。

所以说,项目中采用什么技术,有时候并不是看技术平台是否优秀,而是项目某个 环节卡了壳。

有人说,以技术管理技术是一种悲哀,以完全不懂技术的人管理技术是一场更大的悲剧,而认为自己很懂技术的人管理技术,大概介 于这两者之间吧。

师者,传道授业解惑也。论道无先后,三岁的女儿时常给我一些生活感悟。有时候,我们就得守望自己内心的宁静。这是我学习 的态度。谨以此文,自勉自戒。

犹豫几次,还是决定把这篇文章发出来。

所有程序物语系列文章:

http://blog.csdn.net/downmoon/category/637548.aspx

邀月注:本文版权由邀月 和CSDN共同所有,转载请注明出处。
助人等于自助! 3w@live.cn

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics