﻿<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/"><channel><title>BlogJava-软件工程实践者-随笔分类-软件工程</title><link>http://www.blogjava.net/robin/category/43138.html</link><description /><language>zh-cn</language><lastBuildDate>Mon, 06 Dec 2010 11:56:15 GMT</lastBuildDate><pubDate>Mon, 06 Dec 2010 11:56:15 GMT</pubDate><ttl>60</ttl><item><title>如何应对对项目进度产生负影响的人</title><link>http://www.blogjava.net/robin/archive/2010/12/05/339845.html</link><dc:creator>软件工程实践者</dc:creator><author>软件工程实践者</author><pubDate>Sun, 05 Dec 2010 08:12:00 GMT</pubDate><guid>http://www.blogjava.net/robin/archive/2010/12/05/339845.html</guid><wfw:comment>http://www.blogjava.net/robin/comments/339845.html</wfw:comment><comments>http://www.blogjava.net/robin/archive/2010/12/05/339845.html#Feedback</comments><slash:comments>2</slash:comments><wfw:commentRss>http://www.blogjava.net/robin/comments/commentRss/339845.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/robin/services/trackbacks/339845.html</trackback:ping><description><![CDATA[<p>Robert L. Glass在《Negative Productivity and What to Do about It》（详见IEEE Software, September/October 2008, p. 96）阐述了自己对那些影响项目进度的人的亲身感受和对此应采取的解决方案。<br />
<br />
作者以个体差异开头（作者指出，在软件工程文献中提到过非常大的个体差异：28:1 (for error identification) to 25:1 (for coding ability) to 11:1 (for timing efficiency) to 6:1 (for sizing efficiency)。但不幸的是，这些差异并没有得到我们足够的认识，作为实践者，我们不知道如何鉴别出那些是别人28倍生产力的人，他们对于按时交付高质量的软件非常重要；作为研究者，在案例研究中也没有对个人进行足够的区分，这将导致对结果的误读。），然后引出对项目进展带来负作用（影响项目进度）的人''(someone who has negative productivity—that is, someone whose inclusion on a project actually makes the project less efficient.)''，接着以自己的亲身经历的三个例子做了阐述：<br />
<br />
1. Disfunctional labor relations. 项目（与软件无关）组被抽走一人，却发现生产力提高了；这个案例让作者意识到项目中存在让人不易觉察的对项目生产力产生负影响的人；<br />
2. Moral rebellion. 作者所带领的项目组中存在一个对公司存在性不认同的人，导致项目进度滞后，使作者受到了软件职业中最差的评价；<br />
3. Overly high standards. 作者所在的项目组由于一个对质量要求非常严的QA，总是对提交的产品不满意，结果导致产品迟迟不能交付。<br />
<br />
对待这些人，作者给出了自己的解决方案：<strong>解雇他们</strong>。''(If someone on your project is deliberately delaying its progress, there&#8217;s <strong>probably only one reasonable solution. Fire them! </strong>If you don&#8217;t, your team will be sorry, your company will be sorry, and, quite likely, you&#8217;ll be sorry as well!)''<br />
<br />
</p>
<img src ="http://www.blogjava.net/robin/aggbug/339845.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/robin/" target="_blank">软件工程实践者</a> 2010-12-05 16:12 <a href="http://www.blogjava.net/robin/archive/2010/12/05/339845.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>NASAC 2010</title><link>http://www.blogjava.net/robin/archive/2010/11/07/337463.html</link><dc:creator>软件工程实践者</dc:creator><author>软件工程实践者</author><pubDate>Sun, 07 Nov 2010 09:52:00 GMT</pubDate><guid>http://www.blogjava.net/robin/archive/2010/11/07/337463.html</guid><wfw:comment>http://www.blogjava.net/robin/comments/337463.html</wfw:comment><comments>http://www.blogjava.net/robin/archive/2010/11/07/337463.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/robin/comments/commentRss/337463.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/robin/services/trackbacks/337463.html</trackback:ping><description><![CDATA[<p>第九届全国软件与应用学术会议（<a title="NASAC 2010" href="http://www.suda.edu.cn/NASAC2010/index.html">NASAC 2010</a>）如期（11.4～11.7）在苏州大学举行，对于本次会议，有以下几点感受：<br />
1. 学术水平有待提高（投稿主体还是以硕士生为主，尚不能吸引国内高水平文章）；<br />
2. 学术交流有待提高（本次会议的很多短文都未准备Poster，演示和茶歇的环境很有限）；<br />
3. 会议招待有待提高（除了欢迎宴以外，就都是自助了，很单一，应该多样化一些）；欢迎晚宴很一般，由于专委没有参加，所以缺少了很多交互，没有节目，没有致辞，就是一味的吃<br />
<br />
本次会议的收获是认识了一些同行，并与北大和复旦的相关研究人员就软件复用和产品线相关实践以及企业应用实践的相关问题进行了讨论。还有就是吃到了正宗的阳澄湖大闸蟹（一公一母）。<br />
<br />
苏州风光很好，游览了一些古街，小桥流水，无限柔美，但环境保护还有待加强，经常可以看到吸烟的把烟头从湖水中扔，还有吐痰的......，要是苏州在国外，一定会更美。<br />
</p>
<img src ="http://www.blogjava.net/robin/aggbug/337463.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/robin/" target="_blank">软件工程实践者</a> 2010-11-07 17:52 <a href="http://www.blogjava.net/robin/archive/2010/11/07/337463.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>第十四届国际软件产品线会议</title><link>http://www.blogjava.net/robin/archive/2010/10/30/336564.html</link><dc:creator>软件工程实践者</dc:creator><author>软件工程实践者</author><pubDate>Sat, 30 Oct 2010 09:22:00 GMT</pubDate><guid>http://www.blogjava.net/robin/archive/2010/10/30/336564.html</guid><wfw:comment>http://www.blogjava.net/robin/comments/336564.html</wfw:comment><comments>http://www.blogjava.net/robin/archive/2010/10/30/336564.html#Feedback</comments><slash:comments>3</slash:comments><wfw:commentRss>http://www.blogjava.net/robin/comments/commentRss/336564.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/robin/services/trackbacks/336564.html</trackback:ping><description><![CDATA[9.13至9.17日，第十四届国际软件产品线会议<a title="（SPLC 2010）" href="http://splc2010.postech.ac.kr/index.html" target="_blank">（SPLC 2010）</a>在韩国济州岛的<a title="华美达酒店" href="http://www.ramadajeju.co.kr" target="_blank">华美达酒店</a>举行。这是SPLC第二次来到亚洲（上次是2007年在日本。作为软件工程知名会议，SPLC轮流在美洲、亚洲和欧洲举行，是系统化软件复用的专业会议）。<br />
<br />
作为与工业界联系比较紧密、体现软件工业化的主流会议，SPLC 2010并未得到国内的关注，这在一定程度上体现了国内工业界的相对落后的局面（既没有产品线的实践，又缺乏对先进软件生产方式的跟踪与研究）。<br />
<br />
本次的参会者来自国内的只有 5 人（包括我和导师，分别来自北京大学、上海交通大学、东北大学和公安部第一研究所）当然也有一些海外华人（老师和在读的博士（后））。会议论文集收录了来自国内的一篇短文、一篇Poster（我们的），以及一篇工业化论文。对我来讲，最大的收获在于开阔了视野、了解了一些当前最新进展和认识结交了一些新朋友，当然，这也是我第一次出国，虽然离家很近。<br />
<br />
值得一提的是，来自公安部第一研究所的李东老师参加了<a title="Software Product Line Fame of Hall" href="http://www.sei.cmu.edu/productlines/plp_hof.html">Software Product Line Fame of Hall</a>竞评演讲（本次会议唯一的一个），至于能否加入Fame of Hall要等下次会议（SPLC 2011，慕尼黑）才能知晓，不过李老师所展示的航空安检系统产品线已经得到了与会绝大多数人员（好像没有发现几个不赞成的，呵呵）的认可，很可能成为国内第一家啊，祝福。 
<img src ="http://www.blogjava.net/robin/aggbug/336564.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/robin/" target="_blank">软件工程实践者</a> 2010-10-30 17:22 <a href="http://www.blogjava.net/robin/archive/2010/10/30/336564.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>《计算机工程》文章投稿发表有感</title><link>http://www.blogjava.net/robin/archive/2010/10/25/336087.html</link><dc:creator>软件工程实践者</dc:creator><author>软件工程实践者</author><pubDate>Mon, 25 Oct 2010 06:58:00 GMT</pubDate><guid>http://www.blogjava.net/robin/archive/2010/10/25/336087.html</guid><wfw:comment>http://www.blogjava.net/robin/comments/336087.html</wfw:comment><comments>http://www.blogjava.net/robin/archive/2010/10/25/336087.html#Feedback</comments><slash:comments>3</slash:comments><wfw:commentRss>http://www.blogjava.net/robin/comments/commentRss/336087.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/robin/services/trackbacks/336087.html</trackback:ping><description><![CDATA[<p>去年10月份向《计算机工程》投了一篇稿件，审稿加修改共耗时2个月，然后被录用，说安排在今年11月左右发表，结果今年10月份就发表了，本来是件好事，但我注意到的一个重要问题是文章中刊出的&#8220;收稿时间&#8221;竟然是今年的5月份，我很惊讶，于是给编辑部留言问是怎么回事，但始终没有人答复。</p>
<p>如此大的时间差别（去年10月份到今年5月份那可是7个月之久啊），难道是编辑&#8220;手误&#8221;，手误也应该做个解释啊，怎么就是不回留言呢。之前我也注意到一些发表的论文（10月份之前发表的）中刊出的&#8220;收稿时间&#8221;大概也在今年的2，3月份，当时我还想怎么这么多在我之后收稿的却在我之前发表呢，看来这也许是一种故意行为，&#8220;潜规则&#8221;！！！</p>
<p>难道出版社就为了显示自己发表周期短欺骗广大科研工作者吗？先不说这本身就是学术不端，重要的是它直接给投稿者带来了巨大的风险——剽窃。试想一篇思想类似的文章如果是在去年10分之后投稿如果发表了（当然前提是其它期刊刊出的收稿时间是真实的），那会是什么情况？？不用说别人肯定认为是我剽窃，所以收稿时间应该是绝对真实的，我想这也是这个信息在文章中出现的主要价值！！！！。另外的小问题就是给投稿者的工作量/绩效统计带来不便，明明是去年的工作量怎么体现的是今年的时间，万一领导复查，怎么说清楚呢。</p>
<p>结论，再也不向此刊投稿了。</p>
<img src ="http://www.blogjava.net/robin/aggbug/336087.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/robin/" target="_blank">软件工程实践者</a> 2010-10-25 14:58 <a href="http://www.blogjava.net/robin/archive/2010/10/25/336087.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>斯坦福大学研究显示：重度采取多任务工作方式的人，其绩效会受到负面影响</title><link>http://www.blogjava.net/robin/archive/2010/01/03/308114.html</link><dc:creator>软件工程实践者</dc:creator><author>软件工程实践者</author><pubDate>Sun, 03 Jan 2010 14:54:00 GMT</pubDate><guid>http://www.blogjava.net/robin/archive/2010/01/03/308114.html</guid><wfw:comment>http://www.blogjava.net/robin/comments/308114.html</wfw:comment><comments>http://www.blogjava.net/robin/archive/2010/01/03/308114.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/robin/comments/commentRss/308114.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/robin/services/trackbacks/308114.html</trackback:ping><description><![CDATA[<p>转自InfoQ：http://www.infoq.com/cn/news/2009/09/study-multitasking-performance<br />
<br />
----------------------------------------------------------------------------------------------------------</p>
<p>斯坦福大学上个月在Proceedings of the National Academy of Sciences学报上发布了一个研究结果：<a href="http://www.pnas.org/content/early/2009/08/21/0903620106.abstract" target="_blank">&#8220;媒体行业中多工人员（multitasker）的认知控制&#8221;</a>，强调指出一个显而易见的事实：从效率的角度考虑同时从事多任务，绝对会影响工作效率。该研究审视了IT领域中一个广为人知、却常常为人忽略的现象：不断出现、正在发生的多任务工作方式。敏捷实施者们这样写：这下可算有理由让团队只开发一个产品了，而且只能有一个产品负责人——将时间花在多个任务之上绝对是效率低下的工作方式。</p>
<p>Wired杂志<a href="http://www.wired.com/wiredscience/2009/08/multitasking/" target="_blank">指出</a>：虽然其他研究重点关注多任务工作方式的眼前效果（比如：办公室里的工作人员经常检查邮件，这种情况下的工作效率），该研究提出了一个不同寻常的问题：&#8220;要是人们总在使用多任务工作方式会怎么样？&#8221;Stanford的研究者Clifford Nass、Anthony Wagner和Eyal Ophir调查了262名学生的媒体消费习惯。19名使用多任务方式最多的学生和22名多任务方式最少的学生此后参加了两个电脑测试，集中精力完成手上的测试。</p>
<p>他们使用了一些标准的心理测试指标，研究结果显示出：经常在多个信息流之间转换的学生，他们会在e-mail、网页、视频、聊天和电话之间来回切换，他们取得的进展远低于不怎么采取多任务方式的学生。更令研究人员惊讶的是：在任务切换能力的测试上，&#8220;重度媒体多任务人士&#8221;表现更差，&#8220;似乎他们过滤不相干任务的干扰的能力更差。&#8221;</p>
<p>该研究再次强调了认知科学家反复提到的事情：同时处理多个信息流的输入被认为是人类认知能力的问题。</p>
<blockquote>对于造成差异的原因——被定位使用多任务方式的人是不是先存在心智上的不健全，还是说多任务方式造成了这种情况——&#8220;这是一个需要投入上百万美金才能回答的问题，可是我们没有一百万美金去取得答案。&#8221;Ness这么说。</blockquote>
<p>Wagner接下来打算用脑部造影方法来研究多任务方式的神经学解释，而Ness将会研究儿童人群在多任务习惯上的发展。</p>
<img src ="http://www.blogjava.net/robin/aggbug/308114.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/robin/" target="_blank">软件工程实践者</a> 2010-01-03 22:54 <a href="http://www.blogjava.net/robin/archive/2010/01/03/308114.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>IT Productivity = ??</title><link>http://www.blogjava.net/robin/archive/2009/12/19/306696.html</link><dc:creator>软件工程实践者</dc:creator><author>软件工程实践者</author><pubDate>Sat, 19 Dec 2009 14:59:00 GMT</pubDate><guid>http://www.blogjava.net/robin/archive/2009/12/19/306696.html</guid><wfw:comment>http://www.blogjava.net/robin/comments/306696.html</wfw:comment><comments>http://www.blogjava.net/robin/archive/2009/12/19/306696.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/robin/comments/commentRss/306696.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/robin/services/trackbacks/306696.html</trackback:ping><description><![CDATA[<p>本文是对：<br />
Linda Wilbanks. IT Productivity = ??. IT Pro, November/December 2009, pp. 64, 63 <br />
的总结。<br />
<hr />
<strong>文章探讨了什么事生产效率（或工作效率，但并没有深入，只是个引子），以及如何提高（员工）的工作效率。</strong>
<p>&nbsp;</p>
<p>文章开头指出，&#8220;productivity&#8221;（生产力，此处译为工作效率）通常被定义为生产效能(efficiency)、度量(metrics)，以及在生产过程中单位输入得到的产出的衡量。但对IT人员来说，什么是生产效能呢？作者给出了一个非正式的定义&#8220;一个有效率的人是指那些能够在指定的时间内以高质量的方式完成指定工作的人。&#8221;这引出下一个问题：我们如何做可以使员工更有效率？ </p>
<p>作者援引Mr. Elgan在2009年4月5号的Computerworld那期中的一篇文章&#8220;Why Goofing Off at Work Boots Productivity"中的话说， </p>
<pre>
<div style="border-right: #cccccc 1px solid; padding-right: 5px; border-top: #cccccc 1px solid; padding-left: 4px; font-size: 13px; padding-bottom: 4px; border-left: #cccccc 1px solid; width: 98%; word-break: break-all; padding-top: 4px; border-bottom: #cccccc 1px solid; background-color: #eeeeee"><img alt="" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /><span style="color: #000000">那些偷偷在Fackbook和Twitter上花少量时间的办公室&#8220;懒鬼&#8221;(slacker)比那些全部时间都用来做工作的人能做更多的工作。墨尔本大学的研究人员在一项新的研究中证实了这种真实性。他们的研究发现，一般来说，那些为了个人原因在工作时间内使用Internet的人比不用的人效率高9</span><span style="color: #000000">%</span><span style="color: #000000">。<br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /></span></div>
</pre>
<p>作者指出，尽管Mr. Elgan没有指出这些研究者是如何衡量生产率的，但他给出了为什么那些在Internet上花费时间的人更具有效率的一些原因： </p>
<ul>
    <li>潜意识仍然关注于工作中的问题，解决方案通常会在随后出现；
    <li>&#8220;游手好闲&#8221;(Goof off)的时间是一段清理个人思想、消除个人顾虑的时间。在这一小段时间后，你会回来全身心的投入到工作中；
    <li>从项目或任务中的短暂休息也可能是在受教育（或学习），例如读一些与工作无关的东西。这些信息有可能在以后帮你解决另外的问题。 </li>
</ul>
<p>作者接着列举了一些管理者们在不鼓励计算机游戏或网络冲浪的情况下建议所采用的提高员工效率的方式： </p>
<ol>
    <li><strong>给员工有意义的工作。</strong>
    <li><strong>承认/赏识员工所完成的工作。</strong>
    <li><strong>给员工为了最好完成工作所需要的工具。</strong>
    <li><strong>批准员工休息。</strong>
    <li><strong>给予员工尊重。</strong> </li>
</ol>
<p>作者还举了一个例子，说有个复有创造力的同事把键盘上的F1~F12都附加了新功能：<br />
</p>
<p>F1 Accurately reflect what&#8217;s in the building&#8217;s vending machines. </p>
<ul>
    <li>F2 Display the current traffic report for the area.
    <li>F3 Make every piece of software on your machine work exactly as advertised.
    <li>F4 Play your favorite music to lower your blood pressure.
    <li>F5 Bring up your favorite picture of the beach or of the place you plan to retire.
    <li>F6 Show a running clock on how many hours you have left until you retire.
    <li>F7 Show you where your kids or pets are (but be careful, this might not relieve stress!).
    <li>F8 Automatically delete all emails that were sent &#8220;Reply All.&#8221;
    <li>F9 Delete all meetings for the day, sending emails of regret to all attendees.
    <li>F10 Show what your 401K balance was two years ago instead of today&#8217;s value.
    <li>F11 Automatically start dinner/ESPN/CNN/soap opera (programmable to suit individual preferences).
    <li>F12 Advance time to five minutes before quitting time on Friday of the current week. </li>
</ul>
<p>作者最后指出，作为管理者，需要关注如何现实的鼓励员工发挥他们最大的效率，还需要决定如何来优化工作环境。只要求生产效而没有适当的管理支持和资源将适得其反。作者认为，不时地准备一块蛋糕（不管什么原因）可以鼓励团队和沟通。 </p>
<p>By the way：作者是美国能源部国家核安全管理局的CIO。</p>
<img src ="http://www.blogjava.net/robin/aggbug/306696.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/robin/" target="_blank">软件工程实践者</a> 2009-12-19 22:59 <a href="http://www.blogjava.net/robin/archive/2009/12/19/306696.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>多语言编程</title><link>http://www.blogjava.net/robin/archive/2009/12/16/306137.html</link><dc:creator>软件工程实践者</dc:creator><author>软件工程实践者</author><pubDate>Wed, 16 Dec 2009 04:51:00 GMT</pubDate><guid>http://www.blogjava.net/robin/archive/2009/12/16/306137.html</guid><wfw:comment>http://www.blogjava.net/robin/comments/306137.html</wfw:comment><comments>http://www.blogjava.net/robin/archive/2009/12/16/306137.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://www.blogjava.net/robin/comments/commentRss/306137.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/robin/services/trackbacks/306137.html</trackback:ping><description><![CDATA[本文是对Steve Vinoski. Multilanguage Programming. <a class="wikipage" href="http://localhost:8080/JSPWiki/Wiki.jsp?page=IEEEInternetComputing">IEEE Internet Computing</a>, Vol. 12, No. 3, MAY/JUNE 2008, pp. 83-85 的总结。<br />
<br />
<strong>本文的主要观点是：在软件开发中，要为特定的任务选择最合适的开发语言。</strong>
<p>作者首先介绍了在软件集成和软件开发中涉及的术语/技术浩如烟海，但是开发者却只坚持某种技术，而必须使用其它技术来解决问题。这种现象在开发语言领域也是一样。开发者总是使用自己喜欢的语言，而非解决问题最优的语言，会造成设计方案的不优。 </p>
<p>作者指出在日常开发中了解和使用多种编程语言可以带来显著的好处，因为没有任何一门语言适用于解决所有问题。而语言的存在也主要是由于它适于解决某些特定方面的问题（在解决某些问题方面比其它语言好），因此，不断有语言出现和消亡。在编程语言设计和开发中涉及许多需要权衡的因素，因此，这为许多不同的方案和变体预留了空间。 </p>
<p>作者指出，大部分单一语言开发者倾向选择用于通用目的的语言（像Java、C++等），而不是特定的编程语言。通用的编程语言可用于解决更广范围的问题，但它们通常都是提供的折中的解决方案，不是太好，也不是太坏。当然，一些单一语言开发者尽力去挖掘语言的高级特性，来将语言的能力发挥到极致，但这些程序员仍然受制于这门语言实际的限度。 </p>
<p>作者指出语言的选择对开发效率是一个重要因素，选择正确的语言所带来的开发效率的提升是巨大和值得这么去做的。作者以对<a class="editpage" title="Create 'XML'" href="http://localhost:8080/JSPWiki/Edit.jsp?page=XML">XML</a>的处理为例阐述了此观点。通用语言，例如Java在处理<a class="editpage" title="Create 'XML'" href="http://localhost:8080/JSPWiki/Edit.jsp?page=XML">XML</a>方面没有专门设计上的支持，这使得开发人员在使用通用语言处理<a class="editpage" title="Create 'XML'" href="http://localhost:8080/JSPWiki/Edit.jsp?page=XML">XML</a>方面忍受这种不匹配，来进行拙笨的开发，造成非优的解决方案。在这种情况下，为了提高效率，他们通常采用一些代码生成技术，把<a class="editpage" title="Create 'XML'" href="http://localhost:8080/JSPWiki/Edit.jsp?page=XML">XML</a>构造块影射为静态编程语言的构造块（通常是类）来尽量缓解这种阻抗，即便如此，这种方式仍然是十分脆弱的。因为把高度灵活的<a class="editpage" title="Create 'XML'" href="http://localhost:8080/JSPWiki/Edit.jsp?page=XML">XML</a>构造块转化为严格的静态的数据类型很容易造成彼此版本的不匹配。<a class="editpage" title="Create 'XML'" href="http://localhost:8080/JSPWiki/Edit.jsp?page=XML">XML</a>文档的任何改变都需要新的代码生成、重新构建、....这使得通过代码生成获得的一点点好处又被不断维护带来的成本所抵消。相比之下，Python、Perl、Erlang等语言都提供了<a class="editpage" title="Create 'XML'" href="http://localhost:8080/JSPWiki/Edit.jsp?page=XML">XML</a>处理模块，甚至还带版本化功能。更好的像ECMAscript for XML (E4X)和Scala，提供了对XML字面量的支持支持，开发人员可以直接在语言语法中写<a class="editpage" title="Create 'XML'" href="http://localhost:8080/JSPWiki/Edit.jsp?page=XML">XML</a>。消除了阻抗，带来了更简化的代码和更清晰的功能。 </p>
<p>作者指出，选择适当的语言所带来的效率的提升还体现在对代码的维护上。作者援引Fred Brooks在《人月神话》中引用的的研究发现说，所需开发和维护的工作量与指令的数目（可以理解为代码行）是指数关系，而且这与所采用的语言无关。假设这个指数值是1.5的话，那么如果代码行是原来的3倍的话，那么就需要5倍的开发和维护成本，如果代码行变为原来的5倍，就需要11倍的开发和维护成本，如果代码行变为原来的10倍，那么就需要32倍的开发和维护成本。选择正确的语言，不仅可以减少代码行，更快的提供解决方案和对需要的响应，这个过程可以变为积极的循环，更少的代码带来更好的缺陷和更容易的增强（维护），这又使得用户更高兴，提供免费的广告宣传和反馈，进一步促进软件的发展。 </p>
<p>作者指出，多语言编程的一个问题就是如何使它们协同工作。这可以分为两类。如果是用于分布式应用集成（即不同的应用用不同的语言），那么网络本身就通过协议提供了一个中立的方案，可以通过网络消息等。如果不是分布式应用，当前的主流开发语言，比如微软的CLT（公共语言运行时）所支持的语言越来越多，命令式的、动态的、函数式的，或脚本的。类似的，JVM也从一个单语言平台演化为一个可以支持许多语言的平台，包括JRuby、Scala、Groovy、JavaScript、E4X、Jython和其它的。而且，在JVM上，这些语言都容易学，因为都是基于字节码，这些语言可以与Java进行互调。因此，JVM提供了一个非常好的方式来为应用的不同部分选择最适合的语言。 </p>
<p>作者还指出目前阻碍多语言编程的因素主要有两个：一个管理因素；另一个开发者认为学习新语言难度很大。对于第一个因素，管理者通常认为只采用一种语言易于管理，因为大家都用同样的语言，可以容易的替换开发人员，而且某个开发人员写的代码，大家也都能看懂，避免陷入只有少数人才能看懂和维护的局面。作者认为这种管理者对软件开发和维护所涉及的成本没有充分考虑。在一个JVM或CLR基础之上，选择合适的语言可以减少代码规模和开发维护的工作量，从而降低系统的总成本，而且，较小的系统需要更少的开发者，这又是一个巨大的成本减少。对于第二个因素，相比通用语言来说，那个特定的语言，像Lisp、Python等都很简练，核心概念并不多，初学者可以很快发现它们更具有生产力，而且，以往语言的经验可以帮助你学习新语言。如果你掌握的语言越多，你就能更容易的学习一门新语言，也能发现解决问题的最好方式。 </p>
<p>最后，作者以&#8220;<strong>毕竟，难道我们真的认为我们已经学到我们所需要的最后一门（终极）语言了码？</strong>&#8221;结尾。<br />
<br />
---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------<br />
<br />
欢迎您对自己所在的开发组织对于多语言编程、融合的实践和经验发表看法，谢谢！</p>
<img src ="http://www.blogjava.net/robin/aggbug/306137.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/robin/" target="_blank">软件工程实践者</a> 2009-12-16 12:51 <a href="http://www.blogjava.net/robin/archive/2009/12/16/306137.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>