【来信】
老师你好,我才接触C语言,现在对C语言很迷茫,自己上网查了一些资料也无头绪,现在想问老师几个问题。
1.C和C++到底有什么不同;2.C++的教程能适用于C吗?
3.找不到一些比较好的入门的基础书籍和算术书籍,老师能否介绍一些。
希望老师能解除我的困惑,在这里先谢谢老师了。
【我的回复】
可以看出你是一位很认真的同学。认真在战术上一定是重要的,请发扬下去;但在制定战略时,使用不当,让你的心思跑到了细节上,甚至是末节上,不免会成为障碍。
我是这样理解你的“迷茫”的。迷茫正常,但现在太多的同学一有些疑惑,就讲“迷茫”,大有这个问题下不去就无法迈开下一步了。早就有一个写作计划,题目叫“迷茫是个病”,一直抽不出时间只能等着。是你所言“迷茫”让我由感而发,这个说法并不针对你,你也没有这么严重。
回到正题,解答你的困惑。
“C和C++到底有什么不同?”我很喜欢你用的“到底”,我很喜欢认真的同学。但对于这个问题,想打击你一下,有些认真过头。定下要学习C语言,这个问题对你此时而言并不重要。好比要确定旅游,你已经在去黄山的途中,而心里还有个没有去过的张家界,你会问人,这两个地方到底有什么不同。此类的问题,不同的人会有不同的回答,当然最重要的是你的回答,这要等到你亲自去过这两个地方之后才能做出。这种问题不好答,答不好。有些问题,你可以采取放一放,等待自己的回答。
不过,我简单地直接回答一下。C++是由C而来的,C++包含C(术语叫兼容)。凡是C支持的,C++一般都支持(有少数C++不建议用,但还保留。)C++在C的基础增加了不少新东西,主要的是支持了面向对象程序设计(当然还有别的)。刚学程序设计,暂时知道这些够了。
“C++的教程能适用于C吗?”有了上个问题简单的回答,这个问题显然了。如果你的目标是学C,而不是C++,用C的教程最好。C++教程一般采取两种思路,一种是“纯C++”,开篇就面向对象,这种书对你一定不适用。还有一种思路,分两个阶段:面向过程和面向对象,其实放在前边的面向过程部分,核心就是C。这种书和讲C的书之间最大的区别恐怕就是输入输出(C用printf和scanf,C++用cout和cin)不同而已。此类的书可以作为你的参考,如果足够好。(从这个意义上讲,我正在建设的C++的资源,秋季学期的内容也适合C语言的学习者)我不知道你的专业和学习C的目标,对计算机相关专业的初学者,我是赞成用后一种思路学C++程序设计的。先学C,再学C++,也行。
推荐“好的入门的基础书籍”。这个问题网上的回答很多,我就不再多说。面对网上的推荐,你的真正困惑可能是不知该信谁的。这样的判断能力可以有,也应该有,如果没有,由此练。如果你是自学就不说了,如果正在跟着老师上课,最重要的将课本用好。参考书必须要有,在接受别人推荐后,一定要自己试读,符合自己胃口,且不断有自己可以接受的新知识,就是对你最好的书。有些非常经典的书籍,超出了你接受的范围,对你可能并不合适,要留待下一阶段去读。在不同阶段,“好”有不同含义,在读后面的书时,可能会把前面书中所讲的不严密(但是符合你之那个阶段理解)的观点推翻。阶段性提高,学会自己把握。这也是我不给你推荐具体书的原则。
问题回答完了。最想说的,某些问题要抓住不放,不解决不罢休,对有些问题,你要学会先想一想,再放一放,过段时间再想一想。哪些该抓,哪些该放,这是你要长进的地方。再补充一句是,无论用什么教程,学习C语言要给自己安排出足够的实践来,做到这一点,恐怕也得涉及到用什么样的实践资源的问题了。听别人的,做自己的判断。
祝从认真的学习中获得更大的进步!
给编程初学者的其他建议:
- 菜鸟“抄程序”之道——编程起步时,老是自己写不出程序来,等待不是办法,“抄"程序是个办法,但要抄之有道……
- 初学C语言,没有头绪,怎么办——着急不是办法,想办法动起来
- 零基础计算机专业学生如何面对
- 编程困难没思路,我差到哪儿了?
PS: 面对初学者们,多展示些风度,少来点断言;多些相对的适不适,少些绝对的好不好;多些对智慧选择的引导,少些唯此为真霸气的熏染。欢迎评论和讨论,自觉抵制攻击式、口号式言论!