您当前位置: 首页 > 常识 >

c语言学习资料推荐(C语言入门书籍推荐)

100次浏览     发布时间:2024-11-26 09:21:03    

05年上大一的时候开始学C语言,当时用的教材是谭浩强版的《C语言程序设计》,,这本书真是应试教育的典范,填鸭式的内容,夹杂着各种错误,本该重点描述的地方浅尝辄止,各种吐槽点……

工作这么多年,到目前为止读了不少C相关的书籍。在走了很多弯路以后,个人认为一个正确的C语言的学习的路径应该为,

  • 在学习编程语言之前,建议先了解什么是计算机,可以观看《Crash Course Computer Science》
  • 安装一个linux系统,现在已经越来越方便了,比如参考之前的文章,可以在win11上安装wsl2和ubuntu,学习一些linux的基础命令;
  • 了解操作系统的基本原理,什么是进程、线程,编译、链接的基本原理,应用程序是如何运行的;
  • 学习gcc,gdb的基本使用命令(初期最好不要使用集成开发环境,例如visual studio,clion等强大的IDE去编写程序,建议直接命令行),结合预编译、编译、汇编、链接等指令去更深入的了解程序运行的原理,利用gdb去调试代码;
  • 学习一门基础语言,如果是第一门编程语言,那肯定是C,它应用广泛,操作系统(系统编程)、驱动、编译器开发、网络编程(socket)、音视频、游戏、GUI(部分组件)、嵌入式等等都是它的擅长领域,在编程语言中一直排名前3。它足够经典及精炼,执行效率高,占用内存少,可以“直接”和计算机硬件打交道,能更深一步的了解计算机的软硬件运行原理;
  • 学习cmake的基础语法及命令,因为目前大部分的开源C/C++代码都支持cmake编译;
  • 在掌握了一门基础语言后,学习对应的数据结构、算法、设计模式等。在这个阶段多去读一些开源的优秀源码,从小项目到大项目,学以致用,去学习优秀的大牛们是如何设计软件,如何利用简单的c语言去编写出优雅的代码;
  • 最后,在自己感兴趣的特定领域,例如网络编程,去学习一些已有的广泛使用的第三方库的使用。然后,去写一些现实中实际可以用的程序;

下面是我认为比较好的一些C语言书籍的推荐:

1.C程序设计语言


该书由计算机科学家Brian Kernighan和C语言之父Dennis Ritchie合著,是第一部介绍C语言编程方法的书籍。它因作者名字的缩写被简称为K&R;或是因封面颜色,也被称为白皮书。在C语言的发展和普及过程中起到了非常重要的作用,被视为是C语言的业界标准规范,而且至今仍然广泛使用。它被公认为计算机技术著作的典范,以清晰简洁的文字讲述而著称。书中用"hello world"为实例开始讲解程序设计,成为程序设计语言图书的传统。

2.C语言程序设计:现代方法(第2版•修订版)


相比于K&R,这本书更贴近于实际的应用,也更“现代”,适合进阶使用,所讲述的知识点都是干货,几乎没有废话。本书主要目的就是通过一种“现代方法”来介绍C语言,书中强调标准C,强调软件工程。第2版修订版中不仅有C99中的新特性,还与时俱进地增加了C11和C18中的内容。本书分为C语言的基础特性、C语言的高级特性、C语言标准库和参考资料4个部分。每章末尾的“问与答”部分给出一系列与该章内容相关的问题及答案,带着读者去思考,作者的水平真的是很高。

3.深入理解计算机系统


当你有一定的编程基础后,建议开始读《深入理解计算机系统》这本书,多读几遍,这本书“很硬”,每次读完的感受应该都不同。本书从程序员的视角详细阐述计算机系统的本质概念,并展示这些概念如何实实在在地影响应用程序的正确性、性能和实用性。全书共12章,主要内容包括信息的表示和处理、程序的机器级表示、处理器体系结构、优化程序性能、存储器层次结构、链接、异常控制流、虚拟存储器、系统级I/O、网络编程、并发编程等。书中提供大量的例子和练习,并给出部分答案,有助于读者加深对正文所述概念和知识的理解。

本书的最大优点是为程序员描述计算机系统的实现细节,帮助其在大脑中构造一个层次型的计算机系统,从最底层的数据在内存中的表示到流水线指令的构成,到虚拟存储器,到编译系统,到动态加载库,到最后的用户态应用。通过掌握程序是如何映射到系统上,以及程序是如何执行的,读者能够更好地理解程序的行为为什么是这样的,以及效率低下是如何造成的。

4.Modern cmake for c++

如下是kitware官网的介绍,cmake现在确实已经成为了c/c++软件系统的常用构建工具,

CMake: A Powerful Software Build System CMake is the de-facto standard for building C++ code, with over 2 million downloads a month. It’s a powerful, comprehensive solution for managing the software build process. Get everything you need to successfully leverage CMake by visiting our resources section.

cmake经过多年的发展,已经变得非常复杂。如果光读官网的文档,应该很少有人能读的下去。目前关于cmake的书籍很少,下面这本书是新出的,对cmake的方方面面都做了介绍,非常适合cmake的新人,如果你想深入了解cmake的构建系统,建议阅读本书,github有本书的翻译版本,地址为
https://github.com/xiaoweiChen/Modern-CMake-for-Cpp,但是还是建议大家读英文原版。


当掌握了C语言本身后,如果你是从事linux/unix相关领域软件的开发,我建议你一定要读下面的两本书(应该是3本,因为第一本是上下两册),虽然都很厚,但是如果认真读完,融会贯通,收获会非常大。建议先读第一本《Linux/UNIX系统编程手册》,如果有精力可以再精读《UNIX环境高级编程》,两本书可以互补。

5.Linux/UNIX系统编程手册


本书是介绍linux与unix编程接口的权威著作,主要讲解了高效读写文件,对信号、时钟和定时器的运用,创建进程、执行程序,编写安全的应用程序,运用posix线程技术编写多线程程序,创建和使用共享库,运用管道、消息队列、共享内存和信号量技术来进行进程间通信,以及运用套接字api编写网络应用等内容。 在汇聚大批 linux专有特性(epoll、inotify、/proc)的同时,还特意强化了对unix标准(posix、sus)的论述,彻底达到了“鱼与熊掌,二者得兼”的效果,这也堪称本书的最大亮点。

6.UNIX环境高级编程


很多人都知道APUE这本书,在本书第1版出版后的十几年中,UNIX行业已经有了巨大的变化,特别是影响UNIX编程接口的有关标准变化很大。本书在保持了前一版风格的基础上,根据最新的标准对内容进行了修订和增补,反映了最新的技术发展。书中除了介绍UNIX文件和目录、标准I/O库、系统数据文件和信息、进程环境、进程控制、进程关系、信号、线程、线程控制、守护进程、各种I/O、进程间通信、网络IPC、伪终端等方面的内容,还在此基础上介绍了多个应用示例,包括如何创建数据库函数库以及如何与网络打印机通信等。

7.TCP/IP详解 卷1:协议

如果是从事网络编程的相关领域,建议先读《TCP/IP详解 卷1:协议》,


本书是一本完整而详细的TCP/IP协议指南。描述了属于每一层的各个协议以及它们如何在不同操作系统中运行。作者W.Richard Stevens是大牛,书中对各层协议进行了详解,同时结合tcpdump的抓包结果对协议进行了深入的分析。

8.UNIX网络编程第1卷:套接口API(第3版)


本书主要结合TCP/IP协议介绍unix socket 相关api,本书第1、2版由Richard Stevens编写,第3版,由世界著名网络专家Bill Fenner和Andrew M. Rudoff执笔,根据近几年网络技术的发展,对上一版进行全面修订,增添了IPv6的更新过的信息、SCTP协议和密钥管理套接口的内容,删除了X/Open传输接口的内容。

相关文章