博文
十年学会编程 著者: Peter Norvig(2006-12-01 19:45:00)
摘要:十年学会编程
著者: Peter Norvig
翻译: Dai Yuwen
为何人人都这么着急?信步走进任何一家书店,你会看到名为《如何在7天内学会Java》的书,还有各种各样类似的书:在几天内或几小时内学会Visual Basic, Windows, Internet等等,一眼望不到尽头。我在Amazon 上做了如下的 强力检索 : pubdate: after 1992 and title: days and
(title: learn or title: teach yourself)得到了248个结果。前78个都是计算机类书籍(第79个是 Learn Bengali in 30 days)。我用"hours"替换"days",得到了类似的结果:更多的253书。前77本是计算机类书籍,第78本是 Teach Yourself Grammar and Style in 24 Hours。在前200本书中,有96% 是计算机类书籍。
结论是:要么人们都在急急忙忙地学习计算机,要么计算机比其它任何东西都容易学。没有书籍教你在几天内学会古典音乐、量子物理,或者是养狗。
让我们分析一下,象一本名为《三天内学会Pascal》的书意味着什么:
学习: 在三天里,你没有时间写一些重大的程序,并从成功或失败中得益。你没有时间与有经验的程序员合作,并理解在那样的环境下工作是怎么回事。一句话,你不会有时间学到太多东西。因此他们只能谈论一些肤浅的东西,而不是深入的理解。正如亚力山大教皇所说,浅尝辄止是危险的事情。
Pascal: 在三天时间里,你可能学会Pascal的语法(如果你已经学过类似的语言),但你学不到更多的如何使用这些语法的知识。也就是说,假如你曾是个BASIC程序员,你可以学着用Pascal语法写出BASIC风格的程序,但你不可能了解Pascal真正的好处(和坏处)。那么关键是什么? Alan Perlis 说过:“一种不改变你编程的思维方式的语言,不值得去学。” 一种可能的情况是:你必须学一点儿Pascal(或可能性更大的象Visual Basic 或 JavaScript之类),因为你为了完成某种特定的任务,需要与一个现存的工具建立接口。不过那不是学习如何编程,而是在学习如何完成那个任务。
三天内:......
谁不是“过渡技术”? -孟岩著(2006-12-01 19:26:00)
摘要:谁不是“过渡技术”? -孟岩著
来自csdn,http://blog.csdn.net/myan/archive/2006/11/20/1398915.aspx
CSDN首页刊登头条,说Ajax是过渡技术。这个我是绝对赞同的。Ajax,无论给它戴上多高的帽子,在用户看来,就是个界面技术。请注意,只要在用户看来属于界面技术(展现层?随你怎么叫)的东西,在很多很多年之内,还将换很多很多代,其中每一个,无论它当红的时候多么风光无限,归根结底都只不过是昙花一现的“过渡技术”。
你不信吗?我上大学的时候,教我们数据库(FoxBase)的一位女老师回忆说,她毕业的那会儿,能够在DOS上做出菜单效果,就是合格的毕业项目了,她感叹道,这FoxBase+ 2.1,画界面太轻松了,连做菜单阴影都那么容易,实在不像话,不让人活!可笑吗?历史事实啊!往回想15年,1990年代初期,软件基本还是以命令行界面为主,那个时候,只要你能给软件画一个16色的字符界面,你就是高手。到了1992、93年,高手高手高高手们开始琢磨着怎么在DOS下自制类Windows界面。那可不是简单的事情啊,你要模拟多任务,要把VGA图形模式编程琢磨透,高竿一点的,还得研究突破DOS限制,进入386保护模式的黑客技术。你说这个难吧?技术水平高吧?97年之后变得一文不值。等我开始接触Windows编程的时候,VB3已经是流行选择。我亲眼见到一个人见到VB以后表情复杂,因为他已经搞了好几年的Win32 SDK编程,乍见VB,不知所措。之后进入长达好几年的VB/Delphi/VC三强争霸的时期,其间间或还夹杂有Java Swing出来搅局。正当中国开发者Windows界面技术能力进逼世界最高水平的时候,Web冒出来了,一大堆对编程一无所知的小年轻用HTML + Flash把那些熟通Win32的老家伙们搞得找不着北。一开始他们不相信变天了,很多人犹豫了几年,等落花流水春去也,再看Web展现层技术体系,已经是个庞然大物了XHTML、CSS、JavaScript,XML、XSLT,各个都不简单。这不Ajax方开唱,JSF、WPF和Apollo已经在后台准备着了。说这就完了?别幼稚了!后面还有多少次改朝换代,反正我是没心情掰手指头数了。
&......
Java学习之路:不走弯路,就是捷径 转(2006-11-22 12:51:00)
摘要: Java学习之路:不走弯路,就是捷径 转
0.引言
在ChinaITLAB导师制辅导中,笔者发现问得最多的问题莫过于"如何学习编程?Java该如何学习?"。类似的问题回答多了,难免会感觉厌烦,就萌生了写下本文的想法。到时候再有人问起类似的问题,我可以告诉他(她),请你去看看《Java学习之路》。拜读过台湾蔡学镛先生的《Java夜未眠》,有些文章如《Java学习之道》等让我们确实有共鸣,本文题目也由此而来。
软件开发之路是充满荆棘与挑战之路,也是充满希望之路。Java学习也是如此,没有捷径可走。梦想像《天龙八部》中虚竹一样被无崖子醍醐灌顶而轻松获得一甲子功力,是很不现实的。每天仰天大叫"天神啊,请赐给我一本葵花宝典吧",殊不知即使你获得了葵花宝典,除了受自宫其身之苦外,你也不一定成得了"东方不败",倒是成"西方失败"的几率高一点。
"不走弯路,就是捷径",佛经说的不无道理。
1.如何学习程序设计?
Java是一种平台,也是一种程序设计语言,如何学好程序设计不仅仅适用于Java,对C++等其他程序设计语言也一样管用。有编程高手认为,Java也好C也好没什么分别,拿来就用。为什么他们能达到如此境界?我想是因为编程语言之间有共通之处,领会了编程的精髓,自然能够做到一通百通。如何学习程序设计理所当然也有许多共通的地方。
1.1 培养兴趣
兴趣是能够让你坚持下去的动力。如果只是把写程序作为谋生的手段的话,你会活的很累,也太对不起自己了。多关心一些行业趣事,多想想盖茨。不是提倡天天做白日梦,但人要是没有了梦想,你觉得有味道吗?可能像许多深圳本地农民一样,打打麻将,喝喝功夫茶,拜拜财神爷;每个月就有几万十几万甚至更多的进帐,凭空多出个"食利阶层"。你认为,这样有味道吗?有空多到一些程序员论坛转转,你会发现,他们其实很乐观幽默,时不时会冒出智慧的火花。
1.2 慎选程序设计语言
男怕入错行,女怕嫁错郎。初学者选择程序设计语言需要谨慎对待。软件开发不仅仅是掌握一门编程语言了事,它还需要其他很多方面的背景知识。软件开发也不仅仅局限于某几个领域,而是已经渗透到了各行各业几乎每一个角落。
如果你对硬件比较感兴趣,你可以学习C语言/汇编语言,进入硬件开发领域。如果你对电信的行业知识及网络比较熟悉,你可以在C/C++等之上多花时间,以期进入电......
五年技术之路- 章立民著(2006-11-15 22:10:00)
摘要: 五年技术之路
章立民 / 文
本月,《程序员》邀我写篇文章,回顾5年来的技术变化给我带来的感悟。5年前我是如何预料的,什么判断对了,什么没有预料到。如果回到五年前,如何选择路线。对于未来的技术发展怎样看,打算怎样走。看到这样的主题,觉得非常有意思,当下立刻答应。
首先我要来谈谈面对技术的心态,再来说说我选择技术的原则,最后就是回首过去、验证现在、展望未来。
我不愿意在这里自命清单,高谈阔论地讲一些大道理。但是大家必须了解,台面上的这些技术没有什么好与坏,我们顶多只能说某些是过时的,某些是符合现今流行架构。遗憾的是,不少人在技术的选择上总是有门户之见,就拿.NET 与J2EE来说吧,你是因为讨厌微软才选择J2EE,或者说因为您是Bill Gates的忠实fans才非微软技术不用呢。我要说的是,检视诸项技术时,最忌讳的就是“成见”以及那股莫名的“情绪”,或是说“情节”。当您有了这样的心态,如何以客观的心情去评量各种技术呢?
我从来不否认我与微软有紧密的关系,也不否......
我10年来的学习和生活――应聘华为成功后的总结(转)(2006-11-14 13:00:00)
摘要:我10年来的学习和生活――应聘华为成功后的总结(转)
我10年来的学习和生活
――应聘华为成功后的总结
第0篇 学习计算机的人永远从0开始
我提前给我的大学生活画了一个圆满的句号,我一张白纸进来,没有一脑糨糊出去。我将收藏起这张记录了我青春足迹的白纸,远离安逸的大学生活。步入社会,走进未来,未来是一片荆棘之地,我是一个内心狂热的人,自己的天空需要自己的双手去打造,只要我努力过,我不后悔。我从1997年进入初中,知道计算机这东西,到我2007年大学毕业,中间整整十年,在这十年里,我从一个小男孩成长为一个小伙子,我经历了高考的失败打击,大学郁闷的生活,我的人生观,世界观都发生了巨大变化,但唯一没有变化的是我对计算机的的热爱,将来也不会。我相信,从我大学毕业到我工作十年的那天,我还会写一篇类似的文章,也记录下我最真实的生活,然后再给自己一张白纸去记录接下来十年的生活……
第1篇 上大学前对计算机的认识
我既不是专家,也不是天才,但仅凭我对计算机的执着和热爱,我有权利说一些我的想法。第一次接触计算机是在1997年,进入初中,开了计算机专业课程,我到现在还清楚记得当时计算机的醒置:PII233 CPU,14寸显示器,Novell网络,我还记得一个叫seesion的命令,可以发消息给所有人,还有deltree ,可以一次删除很多文件和文件夹……正是这些东西,让我对计算机产生了莫大的兴趣,我不知道我为什么对它痴迷,也许用一见钟情也不过份。那时的计算机还很贵,一台下来怎么也得一万多,对我来说想拥有一台计算机无疑是白日做梦。我的书包里总是藏了一个大的软盘盒,里面塞了各种各样的程序,一有机会,我就去找机会上机,我初中就自学了BASIC语言,还用BASIC写过一个求一张纸折多少次高度可以超过珠穆琅玛峰的程序,我可以保证,现在还很多同学,要他用C编这样的程序也是编不出来的。当然,人家也许不靠这个吃饭。我从中体会到了那种解决问题的乐趣。我记了满满两大本的DOS命令,到现在我还清楚的请得dir /s /a 等参数的意义。我用WPS自学了五笔字型。初中连学带玩顺利考上省重点高中,报着进重点大学的美梦,开始在高中拼死拼活的学习,我这时迷上了网......
给管理技术系新生们的一点建议 陈~(2006-11-11 20:05:00)
摘要:给管理技术系新生们的一点建议
陈~ 管理技术系05级
小狼注:
管理技术系是北大软件与微电子学院一个很有特色的系,每一年主要接收考取北大光华落榜或者报送北大光华落榜的本科是经济管理的学生,当然也有一些本科是学技术的转向学习管理的,他们的教学特色是管理和IT基本技术以及IT企业的动态发展相结合,学生在IT企业竞争销售市场部,以及像IBM这种技术咨询等工作很有竞争力。
从大兴校区搬去万柳的前一天晚上,正是夏末,在校园里面来来回回的走了许多趟。教学楼和研发楼已经没了人,黑漆漆的,草坪上的喷水头来来回回的洒着水。突然觉得伤感的紧,一年的光阴就这样一忽儿不见了,在这里度过的每一个充实的日子,此时都变成了深深的留恋。
也许对于咱们的学院,每个人都有不同的评价和看法,正面的也好,负面的也罢,而此时,我想对所有来到软微学院的同学们说的是:踏踏实实的度过自己在这里的每一天,珍惜每一个可以安安静静学习的日子,让自己厚积而博发。
因为我是管理技术系的学生,我的这篇文章主要也是针对管理技术系的同学来写的。在这样一个以技术为主流的学院,很多学习管理的同学刚来时都觉得很迷茫,不知道自己未来的路该怎样走,是继续学习管理还是转向技术?是出国还是就业?职业到路该如何选择?下面我根据自己的经历给大家一点建议,但是真正该怎样走还要自己来选择,人生中有很多叉路口,也许一个选择就会使自己的一生变的不同了。
第一篇:关于课程和学习
因为我本科是在北大学习的化学和经济学,对于管理和技术接触的都不是很多,所以我在这里选的每一门课程对我来说都是全新的,我觉得自己都收获良多。
先来说一下我的选课情况吧,除了全校必修课外,技术类的课程我选了:JAVA和数据库。管理类的课程我选了:营销管理与策略执行;项目管理;营销模型与数据分析;会计学;高......
软件考试的一点小建议(2006-11-08 19:13:00)
摘要: 又一次软件考试结束了,自从2003年通过高程以后一直都没怎么关注,前天看到 黑皮的自学路程 的“软考”感想,写下了简单评论:
基础是重要的,不能为了考试而考试。计算机的很多题目的答案基本上都是明确的,不像英语或者语文(有时凭感觉)。所以你做模拟的时候得到的分数并不重要,关键是你要知道你哪些题目肯定对,哪些题目肯定不对。
如果把软件考试当成英语考试那样,每天做模拟,对答案,也有点知道好像答案是这样,却又不是很确定,那就不对了,一定要先读懂课本,弄懂原理。数据结构和算法是重中之重。......
写C++程序要清楚自己的角色-孟岩(2006-11-03 12:43:00)
摘要:写C++程序要清楚自己的角色
http://blog.csdn.net/myan/archive/2006/05/25/754239.aspx
你写C++的时候,一定要想清楚,你是在做基础设施还是在应用。如果是基础设施,比如类库、框架、底层功能的class wrapper,那么可以允许你大胆地使用C++中的各种技巧,关键的要求是你得暴露出来一个clean的interface,让别人好用。这一点并不容易,特别是有的时候你觉得很好用的接口人家就觉得很别扭。所以比较省心的做法就是把接口设计成流行的风格。比如模仿STL的风格,模仿Java的风格,模仿COM的风格,甚至模仿MFC的风格,可能都比你自己发明一种新风格要“好用”。
可是做应用开发的时候,手就要把紧点,别自鸣得意地滥用高级技巧。应用开发很大程度上受基础设施的制约,总的来说,使用函数、POD对象、concrete class,从framework中派生出来的class,再加上一点点用来节省打字的template,足以满足应用开发的需要。特别是当你的下面没有很完备的class library或者framework的时候,千万不要一边写应用,一边又想着怎么让自己的这些东西“为万世开太平”,那样的话很容易就会把程序结构作的过于复杂。最后往往是应用没写好,也没有可复用性。以前我没有经验的时候,最容易犯的错误就是这个。
做基础设施的开发,那叫“设计”,是要为以后考虑的,为了长远利益可以牺牲眼前的进度、简单性。可是做应用,那眼前利益是第一位的,你先把手头的东西又快又稳地run起来,才谈得上以后有复用的可能。眼前的东西作的一塌糊涂,说里面有的模块设计得超级棒,绝对能复用,你自己都不相信。代码要一丝不苟,该写注释写注释,该写assert写assert,该怎么样怎么样,不能因为想着“反正也就是一锤子买卖”就马马虎虎。至于能不能复用,那是以后的事情。所谓Design for today, code for tomorrow,就是这个意思。
......
如何系统地学习linux(转)(2006-07-15 16:07:00)
摘要:
如何系统地学习linux
2006-05-09 18:44 pm
作者:linux-fox
来自:linux知识宝库 (http://www.linuxmine.com)
现存:http://www.linuxmine.com/5723.html
联系:linuxmine#gmail.com
分类:学习方法
添加:陈绪
上一篇:Google发现的十大真理
不明白?欢迎到 linux论坛 (http://bbs.linuxmine.com) 参加讨论!
linux太难用了!(一通鼠标点击,进入/etc)
学习linux,你忘记windows的思维方式了吗?
怎么安装软件阿?那一堆文件是干什么的阿?
学习linux,你还在浮躁吗?
进入linux,随便按了几下.赶紧重启进入win
学习linux,你用心了吗?
.......
你我共勉之
linux太难用了!(一通鼠标点击,进入/etc)
学习linux,你忘记windows的思维方式了吗?
怎么安装软件阿?那一堆文件是干什么的阿?
学习linux,你还在浮躁吗?
进入linux,随便按了几下.赶紧重启进入win
学习linux,你用心了吗?
.......
你我共勉之
作者:GuCuiwen email:win2linux@163.com
版权声明:
本文档可以在网络上在非商业范围内自由转载,转载请注明出处
如果转载版面包含商业广告,请向作者支付至少每千字100园的稿费
以书面,书籍形式转载和出版请按至少每千字100园人民币的标准向作者支付稿费
首先,我想引用一下别人说过的一句话:除非在过去的十年你一直生活在山洞里,否则你一定听说过linux.
是的,现在听说过linux,会一点linux基本操作的人多如牛毛,然而真正能用linux做一点事情的确少之又少,这就造成了现在的状况:各大 linux论坛十分热闹,但我国linux人材却还十分紧缺.到底是什么原因造成了这样的状况? 纠其原因,只有两个字:浮燥!
如果在论坛里来一......
最好的开发人员是培养出来,而非买来的(转)(2006-04-14 01:39:00)
摘要:最好的开发人员是培养出来,而非买来的
2006.04.10 来自:zdnet.com.cn Robert L. Bogue
认真考虑一下,得到最有天赋的项目开发人员的最佳方法是培养,而非购买。
在阅读有关敏捷开发的材料时,我发现,无论是传统的软件开发技术,还是敏捷方法,都要高度依赖熟练的开发人员才能确保成功。这一事实让我触动。由于许多因素的影响,具有相似经历的开发人员的表现水平却相差很大,这点已为人们所接受;所以人们对优秀的开发人员比较关注也就不足为奇了。尽管如此,一个或一小群开发人员,利用“英雄模式”开发,通过他们的奉献精神与坚韧毅力,还是完成了许多开发工作。
很明显,我们需要优秀的开发人员。但问题是,到哪去找优秀的开发人员呢?
十几年来我一直参与招聘工作,我可以毫不迟疑地告诉你:有可能找到最优秀的开发人员,但是可能性不大。这不是一件容易的事,即使读完一千份简历,可能也只能找到一两个真正优秀的开发人员。
认真考虑一下,你会发现,只有通过培养,而不是购买,才能得到最优秀的开发人员。
什么造就最优秀的开发人员?
关于是什么造就最优秀的开发人员,大家持不同的看法。不管是敏捷还是传统的开发技巧都需要开发人员拥有稍异于人的东西。但是,无论开发人员应用哪种技巧,这都归结为一个词:思考。
位于Bloom认知技能教育目标分类最底层的是知识。即回想(或识别)数据与信息。应用在开发方面,这就意味着识别C#语法或回想出执行循环的正确语法。
位于认知分类最顶层的是综合与评估。综合指能够合成不同的因素以形成全新的解决方案。而评估是指对观念、方法或材料做出判断的能力。在工作过程中,开发人员需要不断地应用这些高层次的认知能力。
许多人认为,与描述认知过程的差异相比,将这一观念表达为思考更为自然。通常,对高层次的观念(例如如何综合片段来形成解决方案)所做的思考越多,开发人员就更优秀。
海底捞针
在完全放弃招聘(购买)最优秀的开发人员之前,我们先通过检验专业技能来了解一下招聘过程。我例行公事地对应聘开发职位的候选人进行了一次口头测试。由于我面试的大多数开发人员需要能够熟练地操作数据库,我问他们一个简单的问题:
给你一个带客户id域与名称的客户表,以及一个......