开篇词|时至今日,如何更好地拥抱现代 C 语言?
该思维导图由 AI 生成,仅供参考
C 语言过时了吗?
精确控制程序
高效的运行时性能
学习 C 语言,为什么是你修炼编程内功的必经之路?
这门课是怎么设计的?
- 深入了解
- 翻译
- 解释
- 总结
C语言在当今仍然具有重要意义,尤其在系统级编程和底层程序开发中发挥着关键作用。本文作者以自身在WebAssembly技术和C++领域的经验为基础,设计了一门新课,旨在帮助读者从不同角度深入学习C语言。文章指出,尽管新编程语言层出不穷,但C语言并未过时,反而一直处于编程语言榜单前列。C语言的精确控制能力和高效的运行时性能使其在操作系统、嵌入式系统、编译器等领域得到广泛应用。作者强调C语言的灵活性,能够直接映射到硬件平台上的机器指令,以及通过内联汇编与硬件交互,适合需要细粒度控制资源的场景。此外,文章还提到了C语言的高性能特点,但也强调了需要正确处理内存分配与回收过程。总之,本文通过介绍C语言的特性和应用领域,为读者呈现了C语言在现代编程中的重要性和价值。 文章标题《学习 C 语言,为什么是你修炼编程内功的必经之路?》引人深思,探讨了C语言在现代编程中的重要性。作者以自身经验为基础,设计了一门新课,旨在帮助读者从不同角度深入学习C语言。文章指出C语言的精确控制能力和高效的运行时性能使其在操作系统、嵌入式系统、编译器等领域得到广泛应用。同时,强调了C语言的灵活性和高性能特点,但也提到了需要正确处理内存分配与回收过程。总之,本文通过介绍C语言的特性和应用领域,为读者呈现了C语言在现代编程中的重要性和价值。
2021-12-0675人觉得很赞给文章提建议
《深入 C 语言和程序运行原理》,新⼈⾸单¥59
全部留言(28)
- 最新
- 精选
- EC-hero置顶老师,“如下图所示,这里,左右两个窗口中相同背景颜色的代码行,表示了 C 代码与其对应的汇编代码。可以看到,左侧 C 代码中第三行变量 x 的值被存放到了 ebx 寄存器中” 是用什么软件看的?
作者回复: 是这个网站哈 https://godbolt.org/,可以调整主题。
2021-12-0923 - cc置顶想了解一些关于 「C 语言为什么设计成现在这样」的内容。 之前学过 Java 和 Go,自己看了一段时间的 C 语言,比如对 C 语言的函数声明就觉得很难读,后来看了一些资料,只要掌握“声明的语法和使用的语法类似”这一点,就比较容易看懂函数声明了。 最近还在继续学 C 语言,遇到的一个困惑就是,为什么 C 语言需要有头文件,而其他接触到的语言都没有这个概念
作者回复: 为什么 C 语言会有头文件这种设计?你可以这样简单理解:对于一个大型 C 项目,如何做到可以多人协作,分别编译,然后再把各自编写好的产物汇聚到一起,生成最终的可执行文件?我们通常会将一个模块可以对外使用的接口以原型的方式定义在头文件中,而将函数体实现隐藏。通过这种方式是不是就可以进行协作呢?但为什么其他语言没有借鉴类似的方式,这就说明这种方式并非一种好的设计。具体可以看看网上大家的讨论,比如这篇:https://softwareengineering.stackexchange.com/questions/233484/why-are-header-files-bad-design
2021-12-08413 - J²感觉C不太容易学好
作者回复: 其实也不太用纠结什么才是“学好”哈。作为语言,C 的语法就很简单很好学。但实际上,C 又由于应用的领域比较多,在写某些项目的时候又需要了解很多领域知识(比如编译器、数据库、协议等等)。所以总体还是看你学习 C 语言的目的是什么。
2021-12-0710 - Luke好早以前搞的os实验,看到那段at&t 汇编好亲切。 老师的代码等价于: dst =src; dst = dst + 1; 结果打印出来就是2 %1表示第二个参数,$1是立即数1。 rbp是栈的基指针,rsp是栈顶指针。 但愿没记错,哈哈。
作者回复: 正解!
2021-12-169 - Geek_5b2ab1老师你好,请问由c生成的汇编代码是平台无关的吗?之前学过arm汇编,对于arm汇编,有专门的pdf文件,讲解每条指令的作用。我看c生成的汇编代码好像不是arm汇编。 那由c生成的汇编代码是基于什么指令集的呢,有没有什么文档可以查看每条指令的介绍?
作者回复: 汇编代码本身就是平台相关的了,我们这门课中的汇编都基于 x86-64 指令集,你可以在这里找到有关这些指令的细节哈:https://www.intel.com/content/www/us/en/developer/articles/technical/intel-sdm.html
2021-12-076 - 罗耀龙@坐忘茶艺师学编程 来极客时间学的第一门语言就是C。 现在出了这门课,闭着眼睛就冲进来了。
作者回复: 感谢支持,一起学习!
2021-12-065 - 龍蝦老师,关于最近 Linux 5.18 将升级到 C11 的消息,能否详细解释下呢? 这个升级,具体要如何实施呢?
作者回复: 我大致看了一下那封邮件,主要原因是 Linus 希望使用“可以在 for 循环内部声明变量”,也就是 “for loop initial declaration” 这个特性。但这个语言特性只在 C99 或者 C11 下才支持。所以,才有了想要做升级的讨论。而之所以选择 C11,是由于编译器实现比较稳定,相较于 C99,也可以进一步利用更多的语言新特性。 升级做法应该就是把编译器选项从 -std=gnu89 改成 -std=gnu11。详情可以参考邮件列表链接:https://lore.kernel.org/lkml/20220308215615.14183-4-arnd@kernel.org/
2022-03-044 - 杨宇看到C89、C11这种命名,想起了千年虫。到了2089年,会怎样?
作者回复: hhhh这是一个好问题,希望 2089 年的时候 C 语言还在。
2022-04-213 - Alan_Hwang于老师,散发着艺术的气息。我选C,和大家一起学C
作者回复: 哈哈哈,感谢支持,一起学习!
2021-12-083 - 糊糊这次一定坚持下去,学懂
编辑回复: 小编给你加油!
2021-12-073