E1.1,C语言程序设计
程序和编程语言
程序(program)告诉计算机如何完成一个计算任务。而程序由一系列的指令(instruction)组成,是指示计算机做某种运算的命令。
任何一个程序,都由输入,输出,运算,测试与分支,循环几个操作组成。所以,编写程序就是把任务分解为子任务,子任务再分解为更简单的任务的一个过程。
习题
1、解释执行的语言相比编译执行的语言有什么优缺点?
现在回答这个思考题,根据编译和解释的不同原理,你能否在执行效率和平台无关性等方面做一下比较?
希望读者掌握以概念为中心的阅读思考习惯,每读一节就总结一套概念之间的关系图画在书上空白处。如果读到后面某一节看到一个讲过的概念,但是记不清在哪一节讲过了,没关系,书后的索引可以帮你找到它是在哪一节定义的。
在流程上面,解释不需要经过编译,会具有更高的执行效率。在专用于这个芯片的场景下,这是一种执行速度更快的选择。
但是解释更像是一种translate,是一种one to one的模式,把一个指令解释为另一个可以执行的指令。大多数情况下,机器的执行的情况是不一样的。所以他又一个显著的特征是,输入的编码需要根据机器执行的不同,而去修改而适应设备。因为对于每一个机器而言,“解释”的语言似乎都是独一无二的。
然而,编译的方式可以通过保持代码的一致性,而通过编译器转换为不同的可执行的机器语言。适应计算的终端的结构。由于代码的一致性,在可读性,可复用性等等方面,编译无疑是更加优秀的一种解决方案。
以下是AI给我的点评,指出了我的一些认识错误:
解释执行是边翻译边执行,每运行一次都要实时翻译,存在大量翻译开销,执行效率更低、运行速度更慢;
编译执行是提前一次性编译为对应芯片的原生机器码,运行时直接执行机器指令,无实时翻译开销,执行效率更高、速度更快(芯片专属场景下,编译型的速度优势会更明显)。
解释型语言(Python、JavaScript、Shell 等)源码完全不用修改,跨平台靠「不同平台的专属解释器」适配硬件,是解释器适配设备,不是源码要改;
反而是原生编译型语言(C/C++),不同平台需要重新编译生成对应可执行文件,源码依旧统一,无需修改。
原来python也是很像一种指示型的语言。怪不得说C语言几乎是执行效率的极限。
随笔
从上一次完成F6,到现在开始E1,中间将近二十天,没有更新我的blog。
而这二十天我在干什么呢,我在疯狂的配置我的AI,尝试了很多的AI概念,但最终好像都只是浅尝辄止,没有什么意义。
编程来说,codex已经足够,再来很多的openclaw,很多的AI使用,我觉得这并没有非常强大的意义,现有的openclaw也能实现自迭代等等很多东西,但是比起vibe coding的自己写md而言,自主科研的方式没有一丝一毫地提升我的认知与我的思想。
那一切不属于我
语言决定思维的边界,而C语言作为一种非常基础的语言,我想,我的思维边界也随之而得到了拓展,我很开心。
做真正的科研,不投机取巧,不功利主义。懂了以后再发论文,形成自己的认知。不随波逐流,也不人云亦云。时间的沉淀,我相信能够让我变成一个更好的我。我想,向openclaw等等这些替代人类大脑的工作说“不”,重塑自己的认知,培养自己的核心竞争力。





