??xml version="1.0" encoding="utf-8" standalone="yes"?>
【CSDN 1?日消息?/strong> 国际消息 国U约大学的两位计机U学p退休教授发表一公开文章Q标题是“计算机科学教Ԍ(x)明日的Y件工E师在何处?”。在文中Q他们强烈地批评了纽U大学和其他大学Q没有向学生传授Ua(b)的语a如C、C++、Lisp和ADA?/span>
“学生从当前教育实践课E中获取的技能不以应付今日软g行业的发展(其是安全和安全目的斚wQ。更不幸的是Q与外部行业需要过于匹配了Q我们训l了许多Ҏ(gu)被取代的软g工程师?#8221;
ؓ(f)注意的是Q文中以“Java作ؓ(f)W一~程语言的诸多缺?#8221;为小标题对Javaq行了批判:(x)
׃Java在Web应用领域的流行,以及(qing)初学者容易生成图形化~程QJava成ؓ(f)入门评中用最普遍的语a。从此后学生发现很难在一个没有图像界面的语言上编写程序,不清楚源E序和硬件如何执行之间的关系Q更h危险性的是他们一点也不了解指C器的语义,q得用C语言~程也成为挑战?#8221;
~程的真正的妙之处在于Q将复杂的过E羃减成非常的一个简单操作?/span>Javaq没有体现这U美妙,它鼓励采?#8220;问题解决Qproblem-solvingQ?#8221;的方式,使程序员像五金店的水管工hQ到处翻腾抽屉、阁子最后找出需要的零g。最l的l果使得学生知道如何一些简单的E序l到一P而对~程却一无所知?strong>而且q早C用Java库和框架有一个更大的~陷Q它使得学生很难对编写的东西形成q行旉成本Qrun-time costQ的概念Q因Z们很隄道究竟哪U方法的调用是有效的?/font>我们为此亦找C一些证据?strong>Bjarne StroustrupQ被誉ؓ(f)C++之父Q?/strong>在d州农工大?Texas A&M University )的报告中Q指Z工业对于q种方式来多的不满,而且Bjarneq样_(d)“从工业那里我看到了许多许多对此(Java作ؓ(f)W一~程语言来用)的抱怨,其是AT&T, IBM, Intel, Bloomberg, NI, Microsoft, Lockheed-Martin{等?#8221;
另外在文中,q两位教授们认ؓ(f)真正的程序员能够使用M语言QCQJavaQLispQAdaQ。【呐不喊?/span>
遇到问题的时候:(x)
1Q不要怨天怨地。出了问题,当然有可能是pȝ的bugQAPI的问题,但是那些几率往往比你犯低U错误的几率要低多了Q先从自pn上找原因Q是不是自己写错了?
2Q要掌握工具?/strong>最低限度你要会(x)写LogQ最好是Log和调试器l合。好 的工具可以大大的提高效率。以前有我说QDll不能调试Q我发现可以Q有多线E不能调试,我发现可以;有h说COM不能调试Q我发现可以Q有 IE插g不能调试Q我发现可以Q有OE插g不能调试Q我发现也可以。当Ӟ你确实会(x)遇到不能调试的时候,当年我们做东芝芯片的嵌入E序Q一个组都没?一个仿真器和调试器Q但是至可以用Log嘛,无非是麻烦点?/font>
3Q分析问题要有逻辑?/strong>遇到问题可以先把所有的可能性都列出来,然后一个一个分析,肯定能找到原因的?
4Q要学会(x)隔离问题?/strong>问题涉及(qing)到的代码多Q越难以理解Q问题越难以解决。遇到这L(fng)情况Q可以利用Log或者调试器Q一行代码一行代码的l它们洗清嫌疑,q样很快你就可以扑ֈ出问题的地方。如果代码特别长Q程序特别复杂,可以用二分法来做Q效率很高?/font>
5Q千万不要懒惎ͼ不要事事求别人?/strong>一ơ复杂的调试q程像一部侦探剧Q如果你有非常好的逻辑性,那这部剧的主角就是福?dng)摩斯,剧情一定非常精彩。我说这个是有巨大风险的Q说真的我帮东西Z瘄Q很有意思。但是我q是要告诉大Ӟ一ơ高隑ֺ的调试之后,你的满感绝对不亚于写了一个伟大的E序?/font>
要想不遇到问题,写代码的时候:(x)
1Q要对写出来的代码负责?/strong>我很佩服那些写代码写100行都不执行一ơ的 高手Q如果他们最后不被低U错误困扰的话我更加的佩服了。我写程序几乎是写一行两行就要执行一ơ,每句话我都要保执行效果跟我的预期一致。没错这样写的时?可能慢一些,但是调试的时候很LQ我可以很简单的定哪些代码l对没有问题。所以我写代码整体速度比一般h高。很多h学习(fn)C西的时候喜Ƣ把例子抄一遍,q行一下,Ҏ(gu)Q再q行。我喜欢一句一句的抄例子,抄一句两句执行一ơ,q样可以把例子透彻的理解,而且很难?x)遇到出C问题找不到原因的时候?
2Q函C功能块不要过ѝ?/strong>我认为我的智商ƈ不高Q我很难接受一个程序的一个函C或者一个功能块越3屏(当然逻辑真的有那么复杂除外,你会(x)发现是单的逻辑是Ҏ(gu)被h写的冗长Q。很多h寚w向对象耳熟能详Q对装l承看v来驾d熟。但是动不动写出来个函C长的程序。这像写本书从头到不点句号一P?x)篏死读者的。自q的时候,估计也会(x)被篏的喘不过来气。这是我对基教育的微词所在,他们q教?x)学生写函数都没教?x)Q虽然表面上他们q面向对象这么高q东西都教?
3Q羃q要寏V?/strong>q点很重要,虽然大部分语a不是像Python那样用羃q来军_逻辑块的位置Q但是h看到~进的时候,L?x)以些羃q位|跟逻辑相关。尤其是在有大量的ifelse或者f(xi)or循环{等的嵌套逻辑的时候,如果~进错了Q可能会(x)直接让h把程序的逻辑读错。所以我拿到别h的代码,W一件事情就是整理羃q。我见过一些比较优U的页面工E师Q他们会(x)在divl束的位|用注释写上q个div的idQ这样层U关pd一目了然了?
郝培强:(x)银杏 关于郝培?/font>Q?font face="Arial">www.yinxingtech.com/team.htm
4Q不断重构?/strong>随着E序的不断修改,有些部分?x)不断的增长Q原来看着清晰的架构可能因为问题的复杂而慢慢模p,也可能被修正bug的权宜之计弄的面目全非。不信你找一个经q多ơ修改的E序看看Q是不是满目疮痍Q是不是都很难认出是你自q作品了。这在多人参与的目中更加严重,每个人有不同的代码风|l过多次杂交后,你肯定认不出你的代码是骡子是马,q是四不像了。随着E序的慢慢成长,原来有些函数体会(x)慢慢膨胀Q需要拆分;有些原来单的功能块四处都需要,应该被提炼成函数或者方法,{等。现在不重构Q未来等C码复杂到无法控制的时候,重构的工作就?x)变得更加困难。我见过最强的案例是,一个几千行?nobr>?sh)子辞?/strong>配套联机软gQ经q无数次的改版,变成了一个几乎无法维护的ȝ体的cpp??千行的怪物。最后经q复杂的重构Q才变成一个出新版本只需要新增一个驱动程序的可以l护的几千行的程序?/p>
关于银杏技术咨?/font>Q?font face="Arial">www.yinxingtech.com/
我就是初学者,我觉得讲的很是有道理Q{到这里,大家共同看看?/font>