深入c语言和程序运行原理 - 掌握 C 程序从编写到运行的全链路法则
你将获得
- 7 大 C 核心语法背后的实现细节
- 快速掌握 C 标准库的功能与原理
- C 项目工程化的 4 类实用技巧
- 深入 C 程序运行的全流程
作者简介:
于航,PayPal 技术专家,极客时间专栏《WebAssembly 入门课》作者,QCon 和 GMTC 大会优秀讲师、出品人。
现负责 PayPal Compliance Platform 相关的技术研发和管理工作。个人研究方向主要为 Web 前端基础技术架构、WebAssembly、编译及虚拟机技术。擅长 JavaScript、C/C++、x86 汇编。曾出版国内第一本 WebAssembly 技术书籍《深入浅出 WebAssembly》。2018 年,深度参与 Emscripten 编译器工具链项目的研发工作,并致力于推动国内 Wasm 技术的发展和落地实践。
课程简介:
提到学习 C 语言,不知道你有没有这样的疑惑:
- C 语言这么基础,大家基本都熟悉啊,还需要从头开始学吗?
- 用 C 语言做应用层开发时,总感觉无从下手,和 Python、Java 比起来,C 语言产出效率是不是太低了?
- 在新语言层出不穷的今天,C 语言已经诞生这么久了,会不会就要过时了?
- ……
其实这些都可以归结为两个问题。第一个,C 语言可以用来干啥?第二个,学 C 语言,学习重点是什么?
C 语言远远没有过时,甚至可以说,这个世界上几乎所有重要的软件都与 C 有着直接或间接的关系。C 语言精确的程序控制能力和高效的运行时性能,让它被广泛应用于实现操作系统、嵌入式系统应用、编译器、数据库、驱动程序,以及服务器应用等较为底层和基础的系统级程序。--[引用请说明:www.iquizhi.com(爱求知-知识付费下载)]--
而且,即使你不使用 C 语言进行开发,深入学习 C 语言,也是你修炼编程内功、成为高手的必经之路。C 语言抽象层次低,学习它能够让你从基础层面了解程序是如何工作的。理解了计算机系统底层运作机制,你在设计更复杂、性能更高的程序时,就能得心应手、融会贯通。
不过,如果要发挥 C 语言的最大威力,只掌握 C 语言的基本语法是远远不够的。我们还需要深入到 C 语言的内部,去了解⼀个 C 程序从编写到编译,再到被运⾏的整体流程细节。只有做到“知其然”并“知其所以然”,方能运用自如,百战不殆。
于是,我们和于航老师一起设计了这门“不一样的 C 语言课”,想要带你从新的视角来学习 C 这门“旧”的语言。
课程模块设计
这门课分为四个模块,从 C 语言的核心语法实现到 C 程序的运行原理,带你掌握 C 程序从编写到运行的全链路法则。
前置篇
快速了解汇编语言、寄存器这些较为底层的基础知识,并且回顾一个 C 程序从编写到运行的完整生命周期。另外,还会用一个比较复杂的 C 程序,带你快速回顾 C 语言的核心语法。
C 核心语法实现篇
梳理 C 语言 7 大核心语法“背后的故事”,带你了解编译器如何在汇编层面实现这些语法。你会对 C 程序的运行细节有更深刻的理解,从而更好地掌握并优化程序运行。
C 工程实战篇
介绍 C 语言在大型工程实战中的必备技巧,主要包括:快速掌握 C 标准库的重要功能,以及这些功能背后的实现原理;掌握编写高性能 C 代码、编码规范、结构化测试、结构化编译这些 C 项目工程化的实用技巧。
C 程序运行原理篇
为你介绍一个 C 程序是如何通过编译,并最终被操作系统运行的。程序的运行涉及到众多与操作系统的交互细节,你将在这个模块里详细了解。
课程大纲:
- 快速回顾:一个 C 程序的完整生命周期
- 程序基石:数据与量值是如何被组织的?
- 计算单元:运算符是如何工作的?
- 控制逻辑:表达式和语句是如何协调程序运行的?
- 代码封装(上):函数是如何被调用的?
- 代码封装(下):函数是如何被调用的?
- 整合数据:枚举、结构与联合是如何实现的?
- 操控资源:指针是如何灵活使用内存的?
- 编译准备:预处理器是怎样处理程序代码的?