按键盘上方向键 ← 或 → 可快速上下翻页,按键盘上的 Enter 键可回到本书目录页,按键盘上方向键 ↑ 可回到本页顶部!
————未阅读完?加入书签已便下次继续阅读!
。总的来说信息安全学的研究还是非常深奥的,这方面体会比较深的要算是在最近的微软杯程序设计大赛中利用平台开发的那个项目My E…business Fairy过程中了。
'3'闲聊软件工程
关于计算机科学的一些边缘科学我想谈一谈软件工程技术,对于一个企业,推出软件是不是就是几个程序员坐在一起,你写一段程序,我写一段程序呢?显然不是。软件工程是典型的计算机科学和数学,管理科学,心理学,社会学等学科的综合。它使我们这些搞理论和技术的人进入了一个社会。你所要考虑的不仅仅是程序的优劣,更应该考虑程序与软件的区别,软件与软件产品的区别,软件软件产品的市场前景,如何去更好的与人交流。这方面我还在学习阶段,以后这方面再写文章吧,先推荐给大家几本书:畅销20年不衰的《人月神话》(清华大学中文版,中国电力出版社影印版),《软件工程…实践者研究的方法》(机械工业出版社译本),《人件》(据说每一位微软公司的部门经理都读过这本书,推荐老总们和想当老总的同学都看看,了解一下什么是软件企业中的人)以及微软公司的《软件开发的科学与艺术》和《软件企业的管理与文化》(研究软件企业的制胜之道当然要研究微软的成功经验了!)看完上面的书,结合自己做的一些团队项目,我的一些比较深的体会有这么几点:
1.How important a plan is for a project development。
2.How to municate with your team members in a more effective way。
3.How to solve unexpected situations。
4.The importance of unification。
5.The importance of doing what you should do。
6.The importance of designing before programming。
7.The importance of management。
8.The importance of thinking what your teammates think。
在软件开发过程中我们应当具有以下能力:
1。Like it if you would like to do it。
We believe that your attitude toward your work will definitely makes great effect on the project。
2。The spirit of group working。
Take myself as an example。 I am just a part of the team; just a little part。 You must make it clear that you are just a member of the team; but your effort will change your project a lot。
3。Passion
With passion; you can do your job in a more effective way。
4。The ability of solving unexpected problems。
5。Learning New things in a very short time
It is the basic requirement for we puter major to learn new technology。
6。Creativity
The tools are changing。 As for us; what's more important is to use these new tools and technology to enable people and businesses throughout the world to realize their full potential。
7。The ability to do your work independently。
Every member has his own business。 In a team; your work cannot be replaced by others' so you must do your business well in order to assure the project development process。
团队开发当中的一些具体精神应当有:
Success and Failure is not one person's effect。
Your team's success is not the contribution of a single person。 Success contributes to the whole team。 If your project failed; it also is not just because of one person's poor work。 It is also your failure。
Learn from each other。
Every person has his own specialty。 Even Bill Gates cannot know all the things about software development。 We often learn from each other and gains a lot。 The old saying goes like this:
There must be one out of three who can be your teacher。 In our team we say: Every person is your teacher。
Help those who have problems。 Use the group working spirit to overe all the difficulties。
There is no need to explain it。 As the old saying: Two heads are better than one。 We always find it difficult to solve all the problems just by oneself。
Praise them who have got some improvement。
In our team; I always praise the members when they have finished something or just solved one problem; and they think that it is interesting and gains a lot。 Because they can see their efforts。
Say something if needed。
这个是一次软件大赛当中的体会,和大家也做个交流,不过不能再说了,软件工程学说起来写本2000页的书一点也不多,恕我才疏学浅,不再做过多论述了。
'4'谈谈学习态度的问题
关于计算机技术的学习我想是这样的:学校开设的任何一门科学都有其滞后性,不要总认为自己掌握的某门技术就已经是天下无敌手了,虽然现在Java;VB;C;C++用的都很多,怎能保证没有被淘汰的一天,我想平台的诞生和X#语言的初见端倪完全可以说明问题。换言之,在我们掌握一门新技术的同时就又有更新的技术产生,身为当代的大学生应当有紧跟科学发展的素质。举个例子,就像有些同学总说,我做网页设计就喜欢直接写html,不愿意用什么Frontpage;Dreamweaver。能用语言写网页固然很好,但有高效的手段你为什么不使呢?仅仅是为了显示自己的水平高,unique? 我看真正水平高的是能够以最快的速度接受新事物的人。高级程序设计语言的发展日新月异,今后的程序设计就像人们在说话一样,我想大家从xml中应是有所体会了。难道我们真就写个什么都要用汇编,以显示自己的水平高,真是这样倒不如直接用机器语言写算了。反过来说,想要以最快的速度接受并利用新技术关键还是在于你对计算机科学地把握程度。当然有一点我们必须指出,就是对于新技术要辩证得看,不能盲从。
计算机技术牵扯的内容更为广泛些,一项一项说恐怕没个一年半载也说不清。我只想提醒大家的还是那句话,技术与科学是不能分家的,学好了科学同时搞技术,这才是上上策。犹如英语,原先人们与老外交流必须要个翻译,现在满马路的人都会说英语。就连21世纪英语演讲比赛的冠军都轮不到英语系的学生了。计算机也是一样的,我们必须面对的一个现实就是:计算机真就只是一个工具,如果不具备其它方面的素养,计算机系的学生虽然不能说找不到工作,不过总有一天当其他专业性人才掌握了计算机技术后将比我们出色许多。原因就在于计算机解决的大都是实际问题,实际问题的知识却是我们少有的。单一的计算机技术没有立足之地。
我想是时候指出:学习每一个课程之前,都要先搞清这一课程的学习目的。这一学科的应用领域。据我自身所了解到的同龄同学和低年级的同学的学习状况:他们之中很少有人知道学一个学科的学习目的,期末考试结束了也不知道学这科做什么用。这就失去了读计算机科学的意义。当然这与现存的教育思想不能说一点关系都没有。
总的来说,从教育角度来讲,国内高校的课程安排不是很合理,强调理论,又不愿意在理论上深入教育,无力接受新技术,想避开新技术又无法避得一干二净。我觉得关键问题就是国内的高校难于突破现状,条条框框限制着怎么求发展。我们虽然认识得到国外教育的优越性,但为什么迟迟不能采取行动?哪怕是去粗取精的取那么一点点。我们需要改变。从我们自身角度来讲,多数人4年下来既没有学习计算机科学的学术水平,也没有学习计算机技术的那种韧劲。在我刚上大一时,我的计算机科学入门导师,淮北煤炭师范学院王爱平教授曾经对我说过这样一番话:〃当你选择了计算机这一门科学,就意味着你踏上了一条不归路,就意味着你一生都要为之奋斗……你的身后是悬崖,只有向前走,不能往后退。〃
有些同学说按照这样学习学的东西太多,有的未见得有用,我想打个形象的比方:学校学出来的人都是一个球体,方方面面的知识都应具备。可是社会上需要球体的地方很少,反而需要的是砖和瓦,即精通某一行的人才。但是对于同等体积的物体,用球体来改造是最方便最省事的。学校的学生很多,为了能够使更多的学生来适应这个社会,学校也就不得以把所有的学生都打造成一个球体,然后让社会对这些学生进行再加工,成为真正能够有用的人才。即使你非常清楚自己的将来要干什么,并且非常下定决心要走自己的路,这一步你也必须走,世界是在不断变化的,你不能预料未来。想清楚,努力去干吧!
计算机科学博大精深,我只是个初学者。前面的路还长,计算机科学需要我们为之奋斗。。。。。。学习计算机科学需要韧性,更需要创新,需要激情。深刻学习理论知识,勇于接受新技术的挑战,这才是我们这一代人应具有的素质。最后送大家一句话〃Wake up every day with a feeling of passion for the difference technology will make in people's life!〃。
补充日期: 2004…10…23 01:19:06
计算机科学研究的内涵与外延
撰文: 曾毅
最后更新2004年3月11日
声明:本文力图介绍计算机科学研究范畴的概要情况,以对学习和研究计算机科学的读者有一个引论性的介绍,内容将随笔者学习深入与计算机科学发展而更新。
要想学好计算机科学,我们认为首先要对计算机科学研究的内涵与外延至少有一个概要性的了解。对于刚刚入学的计算机系学生以及虽然学习了很长时间的计算机,但是还是觉得很迷茫的学生来说,究竟计算机科学研究的是什么大部分人可能还不清楚,本文着力论述计算机科学的研究范畴,以对同学们有所启发。
谈到计算机的历史中对计算机科学方向性的确定最应当提的就是美国计算机协会,1946年,美国在华盛顿哥伦比亚大学成立了美国计算机协会ACM(Association for puting Machinery)他们对计算机学科的发展做出了前瞻性的预测:将计算机学科的发展方向分为三个部分:
'一'计算机基础问题的研究:
(1)计算理论: (theory of putation)
计算理论是关于计算和计算机械的数学理论。
主要内容包括:
1。算法(algorithm):解题过程的精确描述
2。算法学(algorithmics):系统的研究算法的设计,分析与验证的学科
3。计算复杂性理论(putational plexity theory):用数学方法研究各类问题的计算复杂性学科。
4。可计算性理论(putability theory):研究计算的一般性质的数学理论。
5。自动机理论(automata theory):以研究离散数字系统的功能和结构以及两者之关系为主要 内容的数学理论。
6。形式语言理论:用数学方法研究自然语言和人工语言的语法理论。
(2)计算几何学 :(putational geometry)
研究几何外形信息的计算机表示,分析和综合的新兴边缘学科,它是计算机辅 助几何设计(CAGD)的数学基础。
主要内容如:
1。贝塞尔曲线和曲面 2。B样条曲线和曲面 3。孔斯曲面
(3)并行计算问题 : (parallel putation)
所谓并行计算就是 “同时执行”多个计算问题
他的延伸学科有:
并行编译程序(parallel zing pilers)
并行程序设计语言(parallel programming language )
并行处理系统(parallel processing system)
并行数据库(parallel database)
并行算法(parallel algorithm)
(4)形式化方法(formal method)
建立在严格数学基础上的软件开发方法。软件开发的全过程中,从需求分析,规约,设计,编程,系统集成,测试,文档生成,直至维护各个阶段,凡是采用严格的数学语言,具有精确的数学语义的方法,都称为形式化方法。
(5)程序设计语言理论: (Theory of programming language)
研究书写计算机程序语言的学科。
主要内容:研究语法,语义,语用以及程序设计语言的优劣。