﻿<?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-mimi_van-随笔分类-喜欢的it文章</title><link>http://www.blogjava.net/mimi-van/category/28633.html</link><description>吞下寂寞的恋人
</description><language>zh-cn</language><lastBuildDate>Tue, 22 Jan 2008 08:42:09 GMT</lastBuildDate><pubDate>Tue, 22 Jan 2008 08:42:09 GMT</pubDate><ttl>60</ttl><item><title>美国两位计算机系教授：Java对学生有害  转自CSDN</title><link>http://www.blogjava.net/mimi-van/archive/2008/01/22/177032.html</link><dc:creator>mimi_van</dc:creator><author>mimi_van</author><pubDate>Tue, 22 Jan 2008 06:24:00 GMT</pubDate><guid>http://www.blogjava.net/mimi-van/archive/2008/01/22/177032.html</guid><wfw:comment>http://www.blogjava.net/mimi-van/comments/177032.html</wfw:comment><comments>http://www.blogjava.net/mimi-van/archive/2008/01/22/177032.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/mimi-van/comments/commentRss/177032.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/mimi-van/services/trackbacks/177032.html</trackback:ping><description><![CDATA[<p><span style="color: #003366">今天闲逛CSDN ，看到了这样一个有趣的标题，赶紧进去瞧了瞧。<br />
<font face="Arial">别人我不知道，因为我是转行业到java编程的。现在正在做web开发的工作，<br />
所以对这篇文章的内容深有同感，尤其是我转载过来，注以红色字的部分。<br />
希望跟我一样境况的人看到这则新闻，也能加强一下对其他语言的学习。<br />
</font></span><font face="Arial"><br />
<br />
<br />
</font><span style="color: #003366"><strong>【CSDN 1月9日消息】</strong> 国际消息 美国纽约大学的两位计算机科学系退休教授发表一篇公开文章，标题是&#8220;计算机科学教育：明日的软件工程师在何处？&#8221;。在文中，他们强烈地批评了纽约大学和其他大学，没有向学生传授纯粹的语言如C、C++、Lisp和ADA。</span></p>
<p><span style="color: #003366">&#8220;学生从当前教育实践课程中获取的技能不足以应付今日软件行业的发展（尤其是安全和安全目的方面）。更不幸的是，与外部行业需要过于匹配了，我们训练了许多容易被取代的软件工程师。&#8221;</span></p>
<p><span style="color: #003366">尤为注意的是，文中以<span style="color: #ff0000">&#8220;Java作为第一编程语言的诸多缺陷&#8221;</span>为小标题对Java进行了批判：</span></p>
<p><span style="color: #003366">由于Java在Web应用领域的流行，以及初学者容易生成图形化编程，Java成为入门课程中使用最普遍的语言。从此后学生发现很难在一个没有图像界面的语言上编写程序，不清楚源程序和硬件如何执行之间的关系，更具有危险性的是他们一点也不了解指示器的语义，这使得使用C语言编程也成为挑战。&#8221;</span></p>
<p><font face="Arial"><span style="color: #003366">编程的真正的美妙之处在于，将复杂的过程缩减成非常小的一个简单操作。</span><span style="color: #ff0000"><font face="Arial">Java并没有体现这种美妙，它鼓励采用&#8220;问题解决（problem-solving）&#8221;的方式，<strong>使程序员就像五金店的水管工人</strong>：到处翻腾抽屉、阁子最后找出需要的零件。最终的结果使得学生知道如何将一些简单的程序组到一起，而对编程却一无所知。<strong>而且过早地使用Java库和框架有一个更大的缺陷</strong>：它使得学生很难对编写的东西形成运行时间成本（run-time cost）的概念，因为他们很难知道究竟哪种方法的调用是有效的。</font></span></font><span style="color: #003366">我们为此亦找到了一些证据。<strong>Bjarne Stroustrup（被誉为C++之父）</strong>在德州农工大学(Texas A&amp;M University )的报告中，指出了工业对于这种方式越来越多的不满，而且Bjarne这样说，&#8220;从工业那里我看到了许多许多对此（Java作为第一编程语言来使用）的抱怨，尤其是AT&amp;T, IBM, Intel, Bloomberg, NI, Microsoft, Lockheed-Martin等等。&#8221;</span></p>
<p><span style="color: #003366">另外在文中，这两位教授们认为真正的程序员能够使用任何语言（C，Java，Lisp，Ada）。【呐不喊】</span></p>
<img src ="http://www.blogjava.net/mimi-van/aggbug/177032.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/mimi-van/" target="_blank">mimi_van</a> 2008-01-22 14:24 <a href="http://www.blogjava.net/mimi-van/archive/2008/01/22/177032.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>专家看台：程序员的成长从开窍开始  ---- 转自CSDN </title><link>http://www.blogjava.net/mimi-van/archive/2008/01/03/172527.html</link><dc:creator>mimi_van</dc:creator><author>mimi_van</author><pubDate>Thu, 03 Jan 2008 09:40:00 GMT</pubDate><guid>http://www.blogjava.net/mimi-van/archive/2008/01/03/172527.html</guid><wfw:comment>http://www.blogjava.net/mimi-van/comments/172527.html</wfw:comment><comments>http://www.blogjava.net/mimi-van/archive/2008/01/03/172527.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://www.blogjava.net/mimi-van/comments/commentRss/172527.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/mimi-van/services/trackbacks/172527.html</trackback:ping><description><![CDATA[<p>最近，有两位<a href="http://www.codechina.org/doc/google/gmapapi/">Google Maps API</a>的初学者向我请教他们按照最<nobr><strong class="kgb" onmouseover='isShowAds = true;isShowAds2 = true;KeyGate_ads.Move(this,"http://rad.17luntan.com/UploadImage/45/633193132791321250.gif","%u4E3B%u8425%u7535%u4FE1%uFF0C%u7F51%u901AIP%u7535%u8BDD%u4E1A%u52A1%uFF0C%u66F4%u591A%u4F18%u60E0%u5C3D%u5728%u56FD%u9645%u8D44%u8D39","64516","简单","%u5317%u4EACIP%u7535%u8BDD%u9500%u552E%u4E2D%u5FC3","http%3A//www.iptelephone.com.cn/", event)' style="border-top-width: 0px; font-weight: normal; border-left-width: 0px; border-bottom-width: 0px; cursor: hand; color: #0000ff; border-right-width: 0px; text-decoration: underline" onclick='javascript:window.open("http://s4.17luntan.com/ClickPortal/WebClick.aspx?id=64516&amp;k=%u7B80%u5355&amp;siteid=0098295a-e262-40f7-ae50-7a6fbbdb678b&amp;url=http%3A//news.csdn.net/n/20071228/112244.html&amp;gourl=http%3A//www.iptelephone.com.cn/&amp;parm=56521B2AAC8EF626D9EF11BC85CDFCF497EFD32747656845&amp;alliedsiteid=0");' onmouseout="isShowAds = false;isShowAds2 = false">简单</strong></nobr>例子写的程序为什么不能正常的运行。<br />
<br />
其中一位用GTalk跟我交流，我仔细了看了他的代码，没看出问题，把代码保存在本地，打开Firefox的错误控制台，用Firefox打开他的页面。出错的那一行被清晰的显示出来，我再仔细端详那句话，原来有两个应该是英文逗号的地方，写上了中文逗号。<br />
<br />
另一位，<a href="http://www.codechina.org/bbs/thread-10-1-1.html">在我的论坛跟我交流他的Google Maps API中遇到的问题</a>，我看他代码的时候也没有马上发现问题。然而，同样在用Firefox打开后，问题很明显的找到了，原来是一个方法openInfoWindow被他写成OpenInfoWindow了。<br />
<br />
在我帮助别人解决的程序调试问题中，这是非常常见的。人人都可能打出中文逗号，人人都可能把大小写写错。但是在我帮助他们解决问题以后，他们总是感慨的说，谢谢我解决了这个问题，这个问题困扰了他们几个小时，甚至是几天。<br />
<br />
这其实并不是只有初学者才会遇到的问题，我还帮助过些有非常丰富经验的<nobr><strong class="kgb" onmouseover='isShowAds = false;isShowAds2 = false;isShowGg = true;InTextAds_GgLayer="_u5DE5_u7A0B_u5E08";KeyGate_ads.ShowGgAds(this,"_u5DE5_u7A0B_u5E08",event)' style="border-top-width: 0px; padding-right: 0px; padding-left: 0px; font-weight: normal; border-left-width: 0px; border-bottom-width: 0px; padding-bottom: 0px; margin: 0px; cursor: hand; color: #0000ff; padding-top: 0px; border-right-width: 0px; text-decoration: underline" onclick='javascript:window.open("http://pagead2.googlesyndication.com/pagead/iclk?sa=l&amp;ai=B64NzC6p8R6n0BI3w6APKoZnfAe22mDzxw9SyAsCNtwHQnSUQAhgCIK2F0A0oFDgAUOub5a0FYJ250IGQBaABi8ao-gOqAQoyMDAwMDM2MTI3sgENbmV3cy5jc2RuLm5ldMgBAdoBK2h0dHA6Ly9uZXdzLmNzZG4ubmV0L24vMjAwNzEyMjgvMTEyMjQ0Lmh0bWypArxXg0PSLYE-qAMB6AMF6AO4AegDrwLoAx3oAwz1AwAEAAA&amp;num=2&amp;adurl=http://avnet.imaker.com.hk/servlet/Elink%3Fid%3DAVT_CN_GG&amp;client=ca-pub-5186439242807756");GgKwClickStat("工程师","www.avnet.com.cn/em/","afc","2000036127");' onmouseout='isShowGg = false;InTextAds_GgLayer="_u5DE5_u7A0B_u5E08"'>工程师</strong></nobr>解决问题，有时候问题仅仅出自某个参数没有传递进来，或者是拼接字符串的时候少些了一个冒号，或者是拼接地址的时候漏掉了http:。我甚至帮助一些人调试一些我根本不懂的语言的程序，因为多半出现的问题，都和语言特性无关，不是程序员写错了字符，就是写错了逻辑，或者是错误理解了一个函数。<br />
<br />
出问题是正常的，写程序是一个复杂的边思考边打字的过程，笔误和一时糊涂都是难以避免的。程序员一般把这种问题叫做低级问题，因为这类问题跟你的智商完全无关，任何人都可能犯。<br />
<br />
但是，问题在于，有时候即使是很优秀的程序员，也会被一个低级错误困扰，可能会几天都解决不了。所以，关键在于，如何找到问题。
<p><font face="Arial"><strong>遇到问题的时候：</strong></font></p>
<p><font face="Arial"><strong>1，不要怨天怨地</strong>。出了问题，当然有可能是系统的bug，API的问题，但是那些几率往往比你犯低级错误的几率要低多了，先从自己身上找原因，是不是自己写错了。 </font></p>
<p><font face="Arial"><br />
<strong>2，要掌握工具。</strong>最低限度你要会写Log，最好是Log和调试器结合。好 的工具可以大大的提高效率。以前有人跟我说，Dll不能调试，我发现可以；有人说多线程不能调试，我发现可以；有人说COM不能调试，我发现可以；有人说 IE插件不能调试，我发现可以；有人说OE插件不能调试，我发现也可以。当然，你确实会遇到不能调试的时候，当年我们做东芝芯片的嵌入程序，一个组都没有 一个仿真器和调试器，但是至少可以用Log嘛，无非是麻烦点。</font></p>
<p><font face="Arial"><strong>3，分析问题要有逻辑。</strong>遇到问题可以先把所有的可能性都列出来，然后一个一个分析，肯定能找到原因的。 <br />
</font></p>
<p><font face="Arial"><strong>4，要学会隔离问题。</strong>问题涉及到的代码越多，越难以理解，问题越难以解决。遇到这样的情况，可以利用Log或者调试器，一行代码一行代码的给它们洗清嫌疑，这样很快你就可以找到出问题的地方。如果代码特别长，程序特别复杂，可以用二分法来做，效率很高。</font></p>
<p><font face="Arial"><strong>5，千万不要懒惰，不要事事求别人。</strong>一次复杂的调试过程就像一部侦探剧，如果你有非常好的逻辑性，那这部剧的主角就是福尔摩斯，剧情一定非常精彩。我说这个是有巨大风险的，说真的我帮人调东西挺上瘾的，很有意思。但是我还是要告诉大家，一次高难度的调试之后，你的满足感绝对不亚于写了一个伟大的程序。</font></p>
<p><font face="Arial">要想不遇到问题，写代码的时候：</font></p>
<p><font face="Arial"><strong>1，要对写出来的代码负责。</strong>我很佩服那些写代码写100行都不执行一次的 高手，如果他们最后不被低级错误困扰的话我就更加的佩服了。我写程序几乎是写一行两行就要执行一次，每句话我都要确保执行效果跟我的预期一致。没错这样写的时候 可能慢一些，但是调试的时候很轻松，我可以很简单的确定哪些代码绝对没有问题。所以我写代码整体速度比一般人高。很多人学习新东西的时候喜欢把例子抄一遍，运行一下，改改，再运行。我喜欢一句一句的抄例子，抄一句两句执行一次，这样可以把例子透彻的理解，而且很难会遇到出现了问题找不到原因的时候。 </font></p>
<font face="Arial">
<p><br />
<strong>2，函数体功能块不要过长。</strong>我认为我的智商并不高，我很难接受一个程序的一个函数体或者一个功能块超越3屏（当然逻辑真的有那么复杂除外，你会发现越是简单的逻辑越是容易被人写的冗长）。很多人对面向对象耳熟能详，对封装继承看起来驾轻就熟。但是动不动就写出来个函数体超长的程序。这就像写本书从头到尾不点句号一样，会累死读者的。自己看的时候，估计也会被累的喘不过来气。这是我对基础教育的微词所在，他们连教会学生写函数都没教会，虽然表面上他们连面向对象这么高深的东西都教。 </p>
<p><br />
<strong>3，缩进要对。</strong>这点很重要，虽然大部分语言不是像Python那样用缩进来决定逻辑块的位置，但是人看到缩进的时候，总是会以为这些缩进位置跟逻辑相关。尤其是在有大量的ifelse或者for循环等等的嵌套逻辑的时候，如果缩进错了，可能会直接让人把程序的逻辑读错。所以我拿到别人的代码，第一件事情就是整理缩进。我见过一些比较优秀的页面工程师，他们会在div结束的位置用注释写上这个div的id，这样层级关系就一目了然了。 </p>
<p><br />
<strong>4，不断重构。</strong>随着程序的不断修改，有些部分会不断的增长，原来看着清晰的架构可能因为问题的复杂而慢慢模糊，也可能被修正bug的权宜之计弄的面目全非。不信你找一个经过多次修改的程序看看，是不是满目疮痍，是不是都很难认出是你自己的作品了。这在多人参与的项目中更加严重，每个人有不同的代码风格，经过多次杂交后，你肯定认不出你的代码是骡子是马，还是四不像了。随着程序的慢慢成长，原来有些函数体会慢慢膨胀，需要拆分；有些原来简单的功能块四处都需要，应该被提炼成函数或者方法，等等。现在不重构，未来等到代码复杂到无法控制的时候，重构的工作就会变得更加困难。我见过最强的案例是，一个几千行的<nobr><strong class="kgb" onmouseover='isShowAds = false;isShowAds2 = false;isShowGg = true;InTextAds_GgLayer="_u7535_u5B50_u8F9E_u5178";KeyGate_ads.ShowGgAds(this,"_u7535_u5B50_u8F9E_u5178",event)' style="border-top-width: 0px; padding-right: 0px; padding-left: 0px; font-weight: normal; border-left-width: 0px; border-bottom-width: 0px; padding-bottom: 0px; margin: 0px; cursor: hand; color: #0000ff; padding-top: 0px; border-right-width: 0px; text-decoration: underline" onclick='javascript:window.open("http://pagead2.googlesyndication.com/pagead/iclk?sa=l&amp;ai=B64NzC6p8R6n0BI3w6APKoZnfAe22mDzxw9SyAsCNtwHQnSUQAhgCIK2F0A0oFDgAUOub5a0FYJ250IGQBaABi8ao-gOqAQoyMDAwMDM2MTI3sgENbmV3cy5jc2RuLm5ldMgBAdoBK2h0dHA6Ly9uZXdzLmNzZG4ubmV0L24vMjAwNzEyMjgvMTEyMjQ0Lmh0bWypArxXg0PSLYE-qAMB6AMF6AO4AegDrwLoAx3oAwz1AwAEAAA&amp;num=2&amp;adurl=http://avnet.imaker.com.hk/servlet/Elink%3Fid%3DAVT_CN_GG&amp;client=ca-pub-5186439242807756");GgKwClickStat("电子辞典","www.avnet.com.cn/em/","afc","2000036127");' onmouseout='isShowGg = false;InTextAds_GgLayer="_u7535_u5B50_u8F9E_u5178"'>电子辞典</strong></nobr>配套联机软件，经过无数次的改版，变成了一个几乎无法维护的主窗体的cpp有1万8千行的怪物。最后经过复杂的重构，才变成一个出新版本只需要新增一个驱动程序的可以维护的几千行的程序。</p>
<p><font face="Arial"><strong><font size="3">郝培强：</font></strong>银杏<nobr><strong class="kgb" onmouseover='isShowAds = true;isShowAds2 = true;KeyGate_ads.Move(this,"","","-100826","技术","Web%u6280%u672F%u5728%u4F01%u4E1A%u4E2D%u5E94%u7528","http%3A//www.sd2china.cn/track2.html", event)' style="border-top-width: 0px; font-weight: normal; border-left-width: 0px; border-bottom-width: 0px; cursor: hand; color: #0000ff; border-right-width: 0px; text-decoration: underline" onclick='javascript:window.open("http://s4.17luntan.com/ClickPortal/WebClick.aspx?id=-100826&amp;k=%u6280%u672F&amp;siteid=0098295a-e262-40f7-ae50-7a6fbbdb678b&amp;url=http%3A//news.csdn.net/n/20071228/112244.html&amp;gourl=http%3A//www.sd2china.cn/track2.html&amp;parm=56521B2AAC8EF626D9EF11BC85CDFCF497EFD32747656845&amp;alliedsiteid=0");' onmouseout="isShowAds = false;isShowAds2 = false">技术</strong></nobr>咨询创始合伙人，网名Tinyfool，技术方向是全文检索，搜索引擎优化，网站架构设计等。 银杏<nobr><strong class="kgb" onmouseover='isShowAds = false;isShowAds2 = false;isShowGg = true;InTextAds_GgLayer="_u6280_u672F_u54A8_u8BE2";KeyGate_ads.ShowGgAds(this,"_u6280_u672F_u54A8_u8BE2",event)' style="border-top-width: 0px; padding-right: 0px; padding-left: 0px; font-weight: normal; border-left-width: 0px; border-bottom-width: 0px; padding-bottom: 0px; margin: 0px; cursor: hand; color: #0000ff; padding-top: 0px; border-right-width: 0px; text-decoration: underline" onclick='javascript:window.open("http://pagead2.googlesyndication.com/pagead/iclk?sa=l&amp;ai=B2uF5C6p8R6n0BI3w6APKoZnfAaGtqjvB7bzeBLW68qQJwJyyARABGAEgrYXQDSgUOABQorXZ_gZgnbnQgZAFoAHLidT4A6oBCjIwMDAwMzYxMjeyAQ1uZXdzLmNzZG4ubmV0yAEB2gEraHR0cDovL25ld3MuY3Nkbi5uZXQvbi8yMDA3MTIyOC8xMTIyNDQuaHRtbIACAakCiAZVZ7prgj7AAgHIArGI7gOoAwHoAwXoA7gB6AOvAugDHegDDPUDAAQAAA&amp;num=1&amp;adurl=http://www.oristand.com/Main.aspx&amp;client=ca-pub-5186439242807756");GgKwClickStat("技术咨询","www.oristand.com","afc","2000036127");' onmouseout='isShowGg = false;InTextAds_GgLayer="_u6280_u672F_u54A8_u8BE2"'>技术咨询</strong></nobr>的主要业务是帮助客户的网站改进技术，提高网站性能和反应速度，解决门槛性技术问题，从而提高用户满意度。 </font></p>
<p><font size="3"><strong>关于<font face="Arial">郝培强</font></strong>：<font face="Arial"><a href="http://www.yinxingtech.com/team.htm">www.yinxingtech.com/team.htm</a></font></font></p>
<p><font size="3"><strong>关于<font face="Arial">银杏技术咨询</font></strong>：<font face="Arial"><a href="http://www.yinxingtech.com/">www.yinxingtech.com/<br />
</a><br />
我就是初学者，我觉得讲的很是有道理，转到这里，大家共同看看。</font></font></p>
</font>
<img src ="http://www.blogjava.net/mimi-van/aggbug/172527.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/mimi-van/" target="_blank">mimi_van</a> 2008-01-03 17:40 <a href="http://www.blogjava.net/mimi-van/archive/2008/01/03/172527.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>