第1个回答 2010-11-16
问得这么空的话,
最好的话,听取前面回答是必要的.
但是想想你在学校里,不要浪费学校的资源.
多与你的同学交流询问也是很有必要的.
还有一点就是不要心急.把我看到的比较好的文章改写如下.
这也是我回答与你问题相似的网友的回答:
从你的提问来看,我感觉出来你是位好学生.
我也是软件工程专业的学生.现在大三.
今天再次看到了一以前看过的文章.文章的标题就是十年学会编程.
当然也许你会在一些书店上,或者网上看到搜索到一些标题为30天XXX从入门到
精通.21天学会XXX.更有甚都有书敢写起,一周学会XXX的.
我刚刚在卓越亚马逊中图书分类中使用高级搜索类别选择计算机与互联网.时间为2000
到2010年.商品名填一个"天"字.
结果搜出来很多21天学会XXX的.你也可以试试,这的确很有趣.
但由此可以得出结论:要么人们急急忙忙的学习计算机,要么计算机比其它任何的东西都更
容易学,没有书籍教你在几天内学会高等数学的吧.但确实也是很大书号称几天内让你过CET6
但是你相信吧.我是不相信的.
让我们来分析下,像一体名为<<21天学会C语言>>的书意味着什么.
.学习:在这21天里,你没有时间写一些重大的程序,并从成功或者失败中得到收获.你没有时间
与有经验的程序员合作,并理解在那样的环境下工作是怎么回事,一句话,你不会有时间学到太
多的东西.因为他们只能谈论一些肤浅的和熟知的东西,而不是深入的理解.正如一句话所说:
浅尝辄止是危险的事情.
.C:在21天的时间里,你可能学会C的语法.但是你学不到更多的如何使用这些语法的知识.也就
是说,假如你曾是一个BASIC程序员,你可以学着C的语法写出BASIC风格的程序.但是你不可能
了解C真正的好处(和坏处).那么关键是什么呢?Alan Perils曾经说过:"一种不能改变你编程的
思维方式的语言,不值得去学习." 一种可能的情况是:你不能不学习一点儿C(或者其它的语言)
,因为你为了完成某项特定的任务,需要一个现存的工具建立接口.不过,那不是学习如何编程,
而是在学习如何完成那个任务.
.21天内:然而这不够.
在十年里学会编程
研究表明 (Hayes,Bloom)在任何一种领域内,象下棋、作曲、绘画、钢琴演奏、游泳、网球、以及原子物理学和拓扑学,等等,要达到专家水平大约都要化十年时间。没有真正的捷径:即使是莫扎特,4岁时就是音乐神童,13年后才开始写出世界级的作品。在另一方面,披头士似乎在1964年的Ed Sullivan表演上一炮走红。但他们从1957年就开始表演,在获得大众青睐后,他们的第一个重大成功,Sgt. Peppers,是1967年发行的。Samuel Johnson (塞缪尔·约翰逊,英国辞典编纂家及作家)认为要花比十年更长的时间:“在任何领域中出类拔萃都要用毕生的劳作来取得;它不可能用较低的代价获得。” 而Chaucer(乔叟,英国诗人)感叹到:“人生短暂,学海无涯。”
这是我为编程成功开出的方子:
* 设法对编程感兴趣,并且因为它有趣而编一些程序。确保编程一直充满足够乐趣,这样你才愿意投入十年宝贵时间。
* 与其他程序员交流; 阅读其它程序。这比任何书本或训练课程都重要。
* 写程序。 最好的学习方式是 从实践中学习。 用更技术性的话说,“在一个给定的领域内,个人的最大能力不是自动地由扩展了的经验取得的,但即使是高度有经验的人也可以通过有意识的努力来提高自己的能力” (p. 366) 和 “最有效的学习需要因人而异的适当难度,目标明确的任务,丰富的信息反馈,以及重复的机会和错误修正。” (p. 20-21) 此书 Cognition in Practice: Mind,Mathematics,and Culture in Everyday Life 是阐明此观点的令人感兴趣的参考文献。
* 如果愿意,在大学里呆上4年或更长(在研究生院里)。你会接触到一些需要学历证明的工作,你会对此领域有更深的理解。如果你不喜欢学校,你可以(通过一些贡献)在工作中获得相似的经验。在任何情况下,光啃书本是不够的。Eric Raymond,The New Hacker's Dictionary一书的作者,说过,“计算机科学不能把任何人变成编程专家,就象光研究刷子和颜料不会使人变成画家一样。” 我雇佣过的最好的程序员之一仅有高中程度;他做出了许多优秀的 软件,有他自己的新闻组,而且通过股票期权,他无疑比我富有的多。
* 和其他程序员一起做项目。在其中的一些项目中作为最好的程序员; 而在另一些项目中是最差的。当你是最好的,你能测试领导项目的能力,用你的观点激发别人。当你是最差的,你学习杰出者是怎么做的,了解他们不喜欢做什么(因为他们吩咐你做事)。
* 在其他程序员 之后接手项目。使自己理解别人写的程序。当程序的原作者不在的时候,研究什么需要理解并且修改它。思考如何设计你的程序以便后来者的维护。
* 学习至少半打的编程语言。包括一种支持类抽象的语言(象Java 或C++),一种支持函数化抽象的语言(象Lisp或ML),一种支持语法抽象的语言(象 Lisp),一种支持声明规格说明的语言(象Prolog或C++ 的模板),一种支持共行程序(coroutine)的语言(象Icon或Scheme),一种支持并行的语言(象Sisal)。
* 请记住“计算机科学”中有“计算机”一词。了解你的计算机要花多长时间执行一条指令,从内存中取一个字(有cache),从磁盘中读取连续的字,和在磁盘中找到新的位置。(答案)
* 参与一种语言标准化的工作。它可以是ANSI C++委员会,也可以是决定你周围小范围内的编程风格是应该两个还是四个空格缩进。通过任何一种方式,你了解到其他人在某种语言中的想法,他们的理解深度,甚至一些他们这样想的原因。
* 找到适当的理由尽快地从语言标准化的努力中脱身。
明白了这些,仅从书本中你能得到多少就成了一个问题。在我第一个孩子出生前,我读了所有的(关于育儿的)How to 书籍,仍然感觉是个手足无措的新手。30个月以后,我的第二个孩子快要出生了,我回头温习这些书了吗? 没有。相反,我依靠我的个人经验,它比专家写的数千页书更有用和可靠。
Fred Brooks在他的随笔 《没有银弹》 中定出了一个寻找优秀软件设计者的三步计划:
1. 尽可能早地,有系统地识别顶级的设计人员。
2. 为设计人员指派一位职业导师,负责他们技术方面的成长,仔细地为他们规划职业生涯。
3. 为成长中的设计人员提供相互交流和学习的机会。
此计划假设某些人已经具备了杰出设计者的必要才能; 要做的只是如何恰当地诱导他们。 Alan Perlis 说得更简明扼要:“每个人都能被教会雕刻:对米开朗其罗而言,反倒是告诉他哪些事不要做。同样的道理也适用于优秀的程序员。”
上面的回答前面是我写改编自十年学会编程一文.后面的是Copy过来的.希望对你有所帮助.
"给初学编程者的一些忠告"一文.也是值得去看一下的.
第3个回答 2010-11-16
从简单的程序开始理解、编写,慢慢分析复杂一些的。看书要边看边分析,逐字逐句理解、记住,前后知识连贯起来。 算法和数学有一定关系,但编程思维与数学思维不一样,编程要有计算机思维,有必要知道计算机存储和运算的基本原理,C程序接近机器语言。
教材大同小异,关键是吃透一本。买电脑练更方便,但要学好也不一定长时间泡电脑。我当时学的时候,研究教材例子和练习,自己把练习都编一遍,集中十来个程序一块上机调试,这样节省上机时间(我们那时上机按时间收钱),遇到编译不通、执行不了的程序就做个标记,下机回来后继续修改,下次上机在调试。多摸索,理论加实践,慢慢能自己编程程序,那怕最简单的也会有成就感,就会越来越喜欢编程。