点燃思想闪电,如云自由漂泊分享 http://blog.sciencenet.cn/u/吴渝 我的微博:http://t.qq.com/iRaining

博文

答学生学习计算机编程的普遍问题

已有 5986 次阅读 2008-8-6 16:42 |个人分类:教育心得|关键词:学者

(回信)

好!

经常有学生问我这个问题,想学编程,学什么好?怎样学好?

这个问题貌似简单,发信的学生也认为老师张口就来,他们的疑惑立马可解。可不知这个问题其实很难有简单而统一的答案呢。

其实,我认为计算机编程就是应用计算机语言的问题,比如,对人类语言学习而言,你以为学英文好,中文好,还是法语等等?
对计算机而言,这里是有个选择的问题,但不如人类语言那么复杂。
因为,人类语言这个系统太复杂,类别太多,词汇和语法太多,不太具有类推性。
你学好了中文,熟练可以运用,就一定可以熟练运用英语吗?
想想你学了英文多少年,要不就是方法不对,用得太少,所以还没有自如应用如母语。

而计算机语言就比较奇特,你学好了一种语言,很快可以类推到其他语言上(但面向对象和非对象类二者区别较大),学习新语言的速度会越来越快。
比如,我所认识的计算机编程高手都不把语言当问题,他们编写什么类型的代码都可以,编写任何应用都可以,切换语言好像换衣服一样容易(这当然要到一个境界之上)。
为什么会这样呢?
大概就是计算机语言这个系统小,词汇有限——你想想里面都有多少指令和控制吧。
人们发明创造计算机语言系统,也是为了让它们帮助人类解决有限的问题,即用有限指令解决有限问题,这本身就说明这个工具是有局限的,也比人类语言容易学习得多。
另外,更重要的是,解决实际问题时,计算机语言只是手段,真正起作用的是算法思想。
即你用什么语言不重要,有了算法思想就好办,而算法思想可以用伪码、程序流程图等其他工具表示出来。
真正把算法流程变成程序代码的人,是信息社会的蓝领工人,对高中生进行简单培训就可以胜任了(软件外包所号称的)。
能设计算法的程序设计师,还有能设计软件系统的系统分析师,才是信息社会人才金字塔上的中上层人员。

那么你还是要问我如何选择一门语言和学习好这门语言。
按我上面的观点,要找一本合适的教材可真不容易。抱歉,我不直接从事计算机语言教学,不知道第一线的答案。事实上,不少教师已经注意到这个问题,正在努力尝试。
而我确实知道一门好的入门书籍不应该只讲计算机语法系统。这就好比让你学习了一大堆英文单词和语法,结果最后还是不会听、读、说。
好书的视野应该是基于算法思想培训的(除非你已经建立了),语法只是其中附带学习的部分。后者好比查字典一样,你知道规则后随便怎么用都可以,不会的总可以找到答案。
算法思想也不是一本书可以包括的,在计算机课程体系里,它包含在很多专业课程中,如算法设计、数据结构、数据库原理、数字图像处理、多媒体技术、单片机、嵌入式系统等等。不同学科的课程中也有散落的算法思想培训,特别是和应用有关的。
而且,养成算法思想也不是光单向输入就可以的,你一定要经常性输出,多编写不同种类的小程序,累计到一个时候就好了(什么时候因人而异)。
我不太相信那些速成的方法,天才例外。

计算机编程是需要终身学习和提高的,追逐新技术很苦很累,不是每个人都会坚持到终点。
国内一个奇特的现象是:很多人只把计算机编程当成就业的敲门砖,找到工作后随时改行。至少,我还没有遇到一个国内编程到退休的老编程人员,反而遇到一个来自美国的老程序员,对C#这样的工具都是临到退休前才学会并使用的。
IT行业的编程工作难道只是年轻人的舞台?还是我们认识上有了误区,把程序员的岗位当成跳板?还是没有一个有效的机制让程序员安心在这个岗位上用丰富的经验开发高明而可信的程序?

回到老问题,学什么语言好?如果有了算法思想,就看你的喜欢和特长了,同时考虑就业和社会需求也行。
面向对象和非对象类各学一种即可,精通其中一种,都可以找到饭吃。
不管是数据库编程,嵌入式编程,甚至流行的各种网络编程,都是算法思想的实现,只是手段和场合不同而已。
我没有办法帮你选择。
人只有对于自己真正喜欢的事物才能心甘情愿投入,衣带渐宽终不悔。
如果你不明白自己的兴趣和能力所在,那可以尝试一种自己最有倾向性的选择开始,让自己诚心投入一件事情去做,而不是光在这里焦虑。时间就这样慢慢流逝了。
知道吗?有时候,很多选择反而没有选择。没有选择的反而一条路走到了成功。你完全可以带着一种决然的心情去做好一件事,不要以为自己有退路就好。

说了半天,好像是没有回答你的问题。呵呵,希望你自己回答它们。
对了,你总是可以用人类语言学习来对比,这样,很多答案其实十分明白的。
想去法国,那么学法语吧。一定要找到可以和你操练法语的环境,自己多多练习,不要学哑巴法语。
想当语言翻译?只是用于和外国人简单交流?还是讨论深层次专业问题?等等,学习方式和词汇要求都不一样。
想到国际化大公司就职?他们需求如何?想有各种丰富的语言经历(比如经常出国或当语言志愿者)?

最重要的,你真的喜欢编程吗?
如果是,以上都不是问题。



https://m.sciencenet.cn/blog-53846-34397.html

上一篇:国际学术会议的会务组织差异
下一篇:这个小强有点强

3 杨绪洪 王春艳 陈安

发表评论 评论 (5 个评论)

数据加载中...
扫一扫,分享此博文

Archiver|手机版|科学网 ( 京ICP备07017567号-12 )

GMT+8, 2024-6-18 03:24

Powered by ScienceNet.cn

Copyright © 2007- 中国科学报社

返回顶部