你好,我是Martin。
我看到有不少还在读本科的学弟学妹私信让我安排一些学习路线,今天就安排一手学习路线。
今天先安排一手编程语言之母:C语言的学习路线,这可能是你见过的零基础最好的C语言学习路线了。
我从事Linux C/C++的学习&工作已经七八年了,现在在某游戏公司担任游戏后端开发工程师。
虽然我也是学的学的CS,但不得不说中国大多数大学的计算机教育都太差了,懂得都懂。
可以说能走到今天,基本全靠我一路自学走过来的,B站、github、网易云课堂、YouTube等就是我的学习课堂。。。
后来我在实习期间,导师推荐我去写文分享技术,我才开始分享自己学习和编程的经验和经历,目前我已经把我的学习经验开源在了github上如果你因为网络等原因无法访问github,我在国内的码云也放了一份!
github开源地址:https://github.com/GrindGold/CppGuide
码云开源地址:https://gitee.com/grindgold/CppGuide
就比如我学习操作系统会去参考清华学堂在线和哈工大李志军老师的操作系统;
学习数据结构除了听学校老师的课,我也会去浙大陈越和何应钦老师讲的数据结构;
学习计算机网络则会参考哈工大的计算机网络课程和B站韩立刚老师的在校课程
....
需要注意的是这些课程都是免费的公开课,观看它们也不需要任何的费用,B站就可以看。
当然了,今天就只说C语言的学习和练习,后续会继续安排上C++以及其余计算机基础学科的学习路线,敬请期待。
既然是零基础的C语言教程,那么我就推荐一些大一或者准大一的小伙伴从视频入手,因为相较于直接看书,视频是有人带着你学习的,从理解成本上就小很多了。
你只需要按照我的这个路线往下学就可以,入门 + 进阶 + 深入 + 练习网站 + 练手小项目&Demo,一次性给你安排全了,是完全的傻瓜式学习路线!
首先回答几个我经常被问到的C/C++编程语言的问题,真的是特别经典。
问: 老哥,为什么我学完了C语言或者C++,却感觉自己东西也做不出来?
答: 首先我先说的事编程语言学完了就能做出东西的话,那你也真是天才哇!
因为即使你语言学得就算再精通,它其实也只代表完成了“最小的”那一部分,和实际上手干活之间还是有一个非常大的差距,因为你只是学了编程语言这一个,还有更重要的计算机基础,比如操作系统、计算机网络、数据库。
问: 为什么C/C++写出来的东西都是运行在黑乎乎的命令行上?
答: 这也是C/C++语言学习过程中的一个弊端,就是交互性不强,它不像前端或者Java一样, 能够给你很强的正向反馈!但如果你说这语言没用,那我可就不同意了,就比如大名鼎鼎的Linux系统都以命令行跟用户交互呢,而且Linux里面很多强大的工具都是运行于黑乎乎的命令行的!
问: 从技术学习和实际运用的角度来看,C/C++和Java到底区别在哪?
答: C/C++这门语言,它和Java确实不太一样。
C语言和C++,尤其C++,语言粒度细、机制多,性能虽然高,但语言本身的包袱也确实重,我们更愿意称它“造轮子”的语言!也正是因为C语言和C++性能好、粒度细,所以什么都能做。
而Java本身就是一种服务于互联网软件开发的语言,它有一个明显的“生态圈”的概念,所以应用领域非常清晰。
如果你真的确定不了自己到底要学哪门编程语言,那就好好学C语言吧,这是编程语言之母,不管什么时候,学习C语言是绝对不会有错的。
如果你是真正的零基础,那你就看下面郝斌老师的课程;
如果你听过或者看过学校老师讲课,觉得讲的不好,那你就看翁凯老师的课程。
这是真正意义上的适合完全零基础的同学入门,因为郝斌老师自己就是0基础自学的,他会从自学者的角度带大家学 C 语言,
地址:https://www.bilibili.com/video/BV1os411h77o
浙大翁凯老师的《C语言程序设计入门课》可能是最适合入门的C语言课程了。
用一句话说就是翁凯老师 YYDS, 你可以看下这门课的评论区,好评如潮!
我随便截取了几个评论:
评论1:好老师和坏老师的区别在于好老师可以在10几分钟吧知识点讲透彻,还能让你听懂,坏老师则会做到他讲死你都不会,我很庆幸,碰到了翁凯老师这样的好老师,即便课程已经结束了,但是我还是愿意学习,这就是我对老师的评价
评论2:目前网上讲C语言最好的课程,没有之一。不接受任何反驳,不接受任何差评。
评论3:翁老师讲的很透彻,因为我不是cs专业的学生,想考浙大的cs研究生,于是慕名来学c,直观感觉,比我们学的谭浩强的书强的不止一点点。
这是课程大纲:
第一周:介绍:计算机、程序和C语言
第二周:计算:变量和表达式
第三周:判断:分支结构
第四周:循环
第五周:循环控制
第六周:数据类型和处理
第七周:函数
第八周:数组
第九周:指针
第十周:字符串
第十一周:结构类型
第十二周:程序结构
第十三周:链表
第十四周:文件
C 语言程序设计:https://www.icourse163.org/course/ZJU-9001
建议该课程与第二部分的C语言入门书籍配套使用。
很多人担心看书看不懂,那么这本书很适合你了。
这本书入门挺好的,可以提高对C的兴趣,里面讲的东西也不是那么难懂,可以作为入门第一本书。
这是C语言之父写的入门经典书籍,原作者是Brian W. Kernighan / (美)Dennis M. Ritchie,后来被国人翻译为中文的了,同样是一本好书!
《C Primer Plus》可以作为 C 语言工具书,也可以作为入门,本书内容循序渐进,能够锻炼编程思想。
友情提示,本书较为全面,全书共17章,其中第3-15章为C语言相关知识,相当全面,是一本很好的参考书。
经常在私信里看到有小伙伴问我学习完C/C++或Java、数据机构与算法等后可以去哪里练手和做项目?
其实网上有很多类似的开源题库可以供你联系,今天就良心推荐一个计算机学习网站,可能是我用过最好的计算机学习网站,可以刷算法、C/C++、Java、硬件、前端等,还有大厂面经、面试真题等。
下面是一些我用过的其中一些比较好的在线题库:
计算机基础必备基础知识练习 ,地址:https://www.nowcoder.com/link/pc_kol_aaaxiu02
C语言练习题库,地址:https://www.nowcoder.com/link/pc_kol_aaaxiu01
C++练习题库 ,地址:https://www.nowcoder.com/link/pc_kol_aaaxiu03
算法-面试必刷101,地址:https://www.nowcoder.com/link/pc_kol_aaaxiu04
现在是免费注册的,据我所知后面注册可能要收费了,如果你有类似的需要我建议你现在注册一个,正所谓:不白嫖就是亏!!!嘎嘎嘎!
C程序设计语言(第2版·新版)
这是一本经典好书,被称为C语言圣经,但不适合在入门阶段来看,否则就是妥妥的劝退你了。
需要注意的是本书作者是C语言之父Dennis M. Ritchie和著名计算机科学家Brian W. Kernighan合著的一本介绍C语言的权威经典著作。
千万记得看完前面推荐的入门书籍,再开始看这本书。
如果要问C语言的灵魂是什么?那肯定是指针了。
这本书适合C语言初学者和初级C程序员阅读,也可作为计算机专业学生学习C语言的参考。
全书共18章,覆盖了数据、语句、操作符和表达式、指针、函数、数组、字符串、结构和联合等几乎所有重要的C编程话题。书中给出了很多编程技巧和提示,每章后面有针对性很强的练习,附录部分则给出了部分练习的解答。
这本书的出发点不是要批判C语言,而是要帮助C程序员绕过编程过程中的陷阱和障碍。
很好的书,不是初级读物,但也不过于艰深,而且厚度刚刚好,让人在热情高涨阶段读完,不致于到了一半时间就气馁。
本书展示了最优秀的C程序员所使用的编码技巧,并专门开辟了一章对C++的基础知识进行了介绍。
书中C的历史、语言特性、声明、数组、指针、链接、运行时、内存以及如何进一步学习C++等问题进行了细致的讲解和深入的分析。全书撷取几十个实例进行讲解,对C程序员具有非常高的实用价值。
本书可以帮助有一定经验的C程序员成为C编程方面的专家,对于具备相当的C语言基础的程序员,本书可以帮助他们站在C的高度了解和学习C++。
今天给大家推荐几个开源项目,大家最好能够下载下来,然后去跑通并研究源码,这些源码都不多而且非常的易懂,下面就开始吧。
只有500行!!!带你实现json!
地址:https://github.com/DaveGamble/cJSON
贪吃蛇应该都玩过吧?
这个项目基于传统贪吃蛇进行了一些玩法上的创新,很适合 C 语言初学者。
地址:https://github.com/rapiz1/DungeonRush
这是一个不到 500 行的超轻量型 HTTP Server,可以用来理解服务器程序的原理和本质。
C语言 的入门级项目!用 C 语言从零写一个 HTTP 服务器!用来学习非常不错,也可以帮我们真正理解服务器程序的本质。
地址:https://github.com/EZLippi/Tinyhttpd
地址:https://github.com/Alinshans/MyTinySTL
是对标准库的补充,尤其是大规模高性能的情况下
地址:https://github.com/facebook/folly
这是一个关于数据库的开源项目,目前市面上很多分布式存储都会用leveldb作为本地存储引擎,里面的LSM等经典存储结构值得大家学习
地址:https://github.com/google/leveldb
——EOF——