想学C语言,跟着一个大佬学,中间一步错,后面就步步错,我该怎么办啊?

大一的新生怎么学C语言呢?我简单把我的想法说一下吧。

1. 自学才是硬道理。强大的自学能力是独自解决问题能力的根本,

程序员需要拥有强大的独自解决问题的能力。

2. 一个人可以走的更快,但一群人才能走的更远。

3. 入门阶段,coding为主,看书为辅。看书只是C语言学习的最简单的一步。入门阶段,动手实践,刷题才是最重要的。coding能够让你变强。

4. 请记住这个公式:

只看书 + 不实践 == C语言挂科

5. 如果你以后不想当优秀的工程师,不想在计算机这条路上走太远,只当一个平平淡淡的码农。推荐一条路:跟着老师一步一步走,跟着大学的培养方案,一步一步跟着走就行了。

6. 从过来人的角度,推荐一条路:MOOC的浙大在线教程当作主干道,买一本《The C Programming Language》先当作信仰供2个月。MOOC在11月前啃完它,然后尝试去看The C Programming Language,就行了。

7. 如果不甘平庸,那么我这里再推荐一条路:现在开始,买一本C primer plus,简单看一遍前几章语法,打开PTA(浙大的online judge),找一些basic的题,然后去疯狂刷,不懂就思考几小时,几小时没有结果,就在新生群里问学长和学姐。假期大量的做题,到了开学,再看看The C Programming language,补充核心语法知识。这样就赢在了起跑线上,就在假期超越大部分同学。

毋庸置疑,这是一条坎坷的路。

但踩坑踩多了,填坑填多了,你就学有所成了。

8. 如果你想通过计算机这条路走向人生巅峰,那么请在大一上向数据结构(知其然)发起进攻,在大一下向算法分析(知其所以然)发起冲锋。如果能在大一结束前真正的学的差不多,那么也就拥有了走上人生巅峰的可能。

9. 不懂就问是不可行的!学习很难受,如果有啥不懂的,就多思考,尝试自己去解决问题。如果确定了自己无法解决,那就可以问老师,问学姐,问学长了。问学姐学长不是为了答案,而是为了见多识广

在这里推荐点资源:

一、给初中生看的:

1.《啊哈C语言》

优点:简单易懂,生动有趣。

缺点:看完它,水平有限,还要看别的,才能满足大一考试需求。学的只是C语言的冰山一角。

二、给高中生、大一新生看的经典入门书:

1.《C primer plus》

2.《C Programming A Modern Approach》

优点:这2本,适合小白看。语法全覆盖,细节多,知识点讲的清楚,就像高中的《王后雄教程完全解读》。

缺点:琐碎细节太多,每一节内容太多,C语言的精华都被藏了起来,找不到重点,有很多学了的知识点,其实压根就不会怎么用。

第一本,真正的入门首选书籍。翻过类似C primer plus的书,只能说读的累(内容比较多),是给小白看的好书。

第二本,没翻过,但听说过其大名,也看了看目录,可以得到如下不严谨的评价:这本书足够厚,知识点够细,例题够多,质量极高,所以它厚的很有道理,没有复制粘贴的嫌疑,没有搞怪无厘头。本书适合作为百科全书,不懂就翻,不懂就翻,不懂就翻。

3.《The C Programming Language

首先,C语言的信仰书籍:《The C Programming Language》

优点:作者是最大的优点,本书作者是C语言之父。本书内容全是C语言的核心。代码示例大多都是库函数的实现方法。内容简洁明了、干净利落,几乎没有废话、没有过多琐碎细节,只讲最纯粹的C语言。

缺点:不适合小白,而适合有一定编程经验的读者(少数例题涉及到数据结构与算法,并且第一章跨度太大了)。书中示例的难度依次递增,对小白不友好。

因此此书适合作为一本精炼C语言的书,大一上学期结束,后来再倒过来看这本书,会对C语言的理解将会焕然一新。

三、给想成为大佬的人看的进阶书

适合对象:

单纯想进阶C语言,

想更加理解指针和内存的,

想搞Linux内核的,

想搞基础设备的,

想搞单片机的,

想进微软去改进windows的,

想搞一些贴近生活的硬件的(比如,闹钟,计时器、甚至简单的机器人)。

想搞软件的话,就别进阶C语言了,当然,学有余力的话,选择一门语言深入下去,准没错(具体选啥,取决于你未来的发展方向。假如你想做游戏/搞图形,那么请直接买一本C++ primer)。

有想法的同学可以进阶看一波。

1.《C陷阱与缺陷》

2.《C专家编程》

3.《C和指针》

4.《Head First C》

思、刷题站点:

1. 浙大PTA (想刷入门题、竞赛题的看过来):

PTA | 程序设计类实验辅助教学平台

2. 洛谷(想刷更多竞赛题的看过来)

首页 - 洛谷 | 计算机科学教育新生态

3. LeetCode(想大四就去BTA的看过来):

力扣

此外再补充一些经验:

1、要懂得使用互联网解决问题。

  • 入门阶段遇到问题,请直接使用Google、百度等搜索引擎,一般情况会得到CSDN、博客园、简书、知乎等平台的内容。但这些内容质量有高有低,有些甚至是错的。请择其善者而从之,其不善者而改之。
  • 进阶阶段遇到问题,请直接查看stackoverflow、github、各类相关技术的手册、各类官方文档。这些内容绝大部分都是英文,所以大一的同学,请务必学好英语。

2、国内的教科书,少碰。具体原因:中国应试教育的弊端,东西太死板。

比如:函数的传参,讲了一对概念叫做:实际参数与形式参数,然后就没了????然而:讲一下局部变量的生命周期,解释一下函数的参数列表是定义了新的变量就完事了。

比如:开始告诉我们使用scanf时要在变量前加个&,但学到后面又告诉我们字符串和数组不用加& 。所以&是个什么东西?&取的地址究竟是什么?

比如:在指针那一章,莫名其妙来了个地址?地址是什么个玩意?不介绍一下内存的编址和存储单元,想让我死记硬背?

一个指针就是一个变量,这样的点睛之笔,竟然全程藏着掖着。所以难是有道理的,因为书没选对。

当然,这里不是一棒子打死所有国内教材。毕竟当初因为这些''教材'',走了一些弯路,也浪费了一些时间。

C语言诞生于1972年。

在那个年代,受限于计算机的计算能力,程序语言的首要设计目标仍然是性能;

在那个年代,很多工程师们都知晓各种计算机原理。

因此C语言的词法、语法与底层硬件息息相关。

所以要学好C语言,必然要对计算机组成原理、计算机系统操作原理有一定的了解。

如果真的无法单单凭借C语言学懂指针,那么请务必去翻阅计算机组成原理、计算机操作系统原理的相关书籍。

3、可以适当查询:什么是开发集成环境。

针对开发集成环境(IDE),入门推荐使用轻量级IDE。例如:codeblcoks等等。

不推荐萌新们使用老的IDE,因为老的IDE就意味着很可能是老的编译器。例如:VC++ 6. 0等等。

不推荐使用大型的IDE,如Visual Studio、Eclipse。对于萌新,入门门槛颇高。

更不推荐萌新们使用记事本、Visual Studio Code这样的编辑器。因为编辑器往往需要自行下载并配置编译器。

4、C语言学到指针可以提前百度一下内存是什么,了解一下内存分区,如果能思考清楚''为什么指针大小在32位操作系统是4个字节?''就真的是学霸了。当然思考不清楚才是正常情况,这个时候可以去问老师,老师们应该很喜欢能提出这样问题的同学。当然,老师能不能解释清楚又是另外一回事了。

详情可进阶计算机组成原理,计算机操作系统原理。

5、可以适当了百度一下:内存与硬盘的关系。即一般情况下程序保存在硬盘中,运行时会被''拷贝''到内存中。硬盘中的中任何数据只有调入内存中才能真正使用。

详情可进阶计算机组成原理,计算机操作系统原理。

6、可以适当百度一下什么是编译器、什么是gcc/g++/gdb、GNU与MinGw。了解就好,不需要深入。如果能试着配置一次环境,用命令行编译一个main.c文件,如果失败了,不骄不躁静下心来千方百计去做到这一点。多的不敢说,至少可以说明一点,你的解决问题的能力很到位。当然,做不出来也没什么,学到越后边,自然就慢慢的会了。详情可进阶编译原理。

7、请牢牢记住语言并不是全部。代码之上的思想,才是灵魂。懂其思想,未来在实践时必然获益匪浅。

但懂其思想,谈何容易!
上了这么久的课,发现身边能讲出思想的老师真的太少了。
身边的绝大部分老师都是讲这个东西 ''是什么''而不是'为什么''。

8、尽早决定考研与就业。

请尽早想好你大四究竟是要去考研还是就业!越早决定越好!!!

如果你,决定大四要考研。就好好学专业课 好好学学校的必修课,把考研的知识学到位,考个高分。

在学有余力的情况下根据你选择的方向,学习一定的相关工程知识。选择导师时,请务必选择一个会指导你并且带你搞科研的导师,请务必远离只会白嫖、压榨你的导师。

如果你,决定大四要就业。就可以战略性的放一放高数、线代等(不是不学,而是不用学的特别特别深入。举个例子:一天24小时,没有必要花10个小时给高数、线代、概率论。反而,很有必要将24小时中的的8个小时给C语言、计算XX原理等专业课,1小时修整身心,1小时学高数等课程。)

残酷的现实告诉我:这些理论知识,重要的是思想。知识本身当初学的再好,多年不用,也会忘的差不多,需要的时候必须二次学习。如果懂其思想,二次学习就会很快。

所以对于不打算考研的同学,从大一起,学习重心可以向专业课倾斜很多。

9、尽早选择未来的发展方向

无论你是要工作还是考研。请务必选择适合自己的发展方向。

发展方向包括但不限于:

  1. 开发类(Web端、移动端、PC端)
  2. 测试类
  3. 人工智能、机器学习类
  4. 计算机图形学类
  5. 游戏引擎与游戏设计类
  6. 大数据分析、数据可视化类
  7. 数据库类
  8. 嵌入式设备类
  9. 信息安全类
  10. 通信工程类
  11. ........ 等等

这个方向定的越早,你会变得越来越充满自信, 因为你很清楚,你大学4年学了什么,你拥有实力,拥有竞争力。

你可能感兴趣的:(c语言,开发语言,程序员,学习)