如何写一个高可用的C程序?

嵌入式从0到1 2021-12-10 11:01

所谓编程不会C语言,便称码农也枉然!


为什么这么说?


因为C语言打娘胎出来时,就是为了写操作系统用的。


从诞生至今,一直稳居所有编程语言前三!


小哈哥特别佩服丹尼斯里奇那天马行空的想象力!高度抽象思维能力!C语言设计的如此完美!


我们现在用所有的操作系统核心绝大部分代码都是C语言编写的!


但是提到 C 语言,很多人的第一反应是:C 语言,不都过时了?还有必要研究吗?

 
当然有必要。用一个词来形容:C 生万物

听起来有点浮夸,但也没说错。现今这个世界上,几乎所有重要的软件都跟 C 有关系
 
主流操作系统是 C 写的,绝大多数语言的编译器也是 C 写的,数据库、网络、硬件驱动、服务器应用等等,都是 C 写的。说霸气点儿,这个世界就是在 C 语言之上运行的。而且在这些领域,C 语言是完全的“垄断”,连竞争者都没有。
 
所以,扎心的就来了——“会不会 C 语言是软件工程师和社畜的分界线” 。毕竟,真正的高手,就得掌握计算机是如何组成的,程序是如何运行的,编译器是如何把高级语言转化成 CPU 指令的,网络设备是如何传送数据的...等等,而这些,都要跟 C 语言打交道,说白了,C 语言就是内功。

 

而且众所周知,现如今几乎所有的编程语言,都是以 C 语言为基础拓展的:C++、Java、Go、Python、JS 等等,所以你会发现,学好了 C 语言,别的语言都很容易上手,更不会因为“语言层出不穷”而焦虑。当然,你也可以跳过 C 语言学其他的语言,不过,技术债迟早是要还的

 

不夸张地说,想要成为高手,就必须吃透 C 语言。只有如此,你的技术之路才能走得更远。

 

所以,与其吐槽说 C 语言“过时”,不如想想,如何更好地拥抱、使用它。毕竟,大部分人学 C 之路都颇为坎坷,会遇到很多困难,比如:

 
  • C 语言的的语法很基础,但学完又感觉什么都不会?
  • 指针是如何灵活使用内存的?
  • 如何编写高性能代码?
  • 编译器在链接程序时发生了什么?
  • ....
 
我的经验,学好C语言,除了简单的语法外,更重要的是要搞懂 C 程序从编写到编译,再到被运⾏的整个细节。分享我当初的学习路径:
 
  • 掌握基本语法,理解 C 程序的运行细节;

  • 掌握标准库,性能优化以及工程化内容,搞懂如何写一个可以用在生产实践中的 C 程序

  • 掌握编译、链接、加载以及和操作系统的交互细节,搞懂 C 程序是如何运⾏起来的。
 
当年我啃的时候并不容易,难点在于系统性的资料不好找,市面上所谓“0 元送、免费”的资料,不仅只有基础语法,更是零散不成体系,学了一堆跟没学一样,云里雾里的。
 
体系化这个层面,我还是比较推荐老朋友「极客时间」的,他们最近出了个专栏 ——深入 C 语言和程序运行原理》早在专栏打磨阶段,我就参与了调研,现在上线了,读了几篇,还不错,想跟大家分享一下,先来看专栏总结的学习路线图,建议收藏👇


 

 

这个专栏最大的感触是 —— 完全按照程序员的学习痛点来设计的:
 
先聚焦于 C 语言的核心语法,带大家了解编译器是如何在机器指令层面实现它们的;其次介绍现代 C 语言标准库中的一些重要功能,及背后的运作机制;接着详解适合编写高性能的 C 代码,也是工程化相关的重要内容。最后,探讨二进制可执行程序是如何在与操作系统的协同工作下被运行。
 
从这 4 个层面,跟着看下来,你就能深入理解 C 程序的完整生命周期。原价 129 元,用极客时间「隐藏优惠」到手¥89
 
扫码看目录、免费试读👇🏻


 
早鸟+口令「cyuyan666」
到手仅¥89
新人无需口令,¥59 拿下
 

C 语言高效学习路径

 
专栏作者是「于航」,PayPal 技术专家,也是 QCon 和 GMTC 大会优秀讲师和出品人。18 年那会,还深度参与了 Emscripten 编译器工具链项目的研发工作,在推动国内 Wasm 技术的发展和落地实践方面出了不少力。
 
最早是在极客时间的「每日一课」里看到他出的视频,对他提到的 C 语言的学习方式,印象非常深刻,而这次专栏的设计逻辑就是聚焦 C 语言核心语法实现C 项目工程化技巧 → 深入 C 程序运行。

主要分为四个模块:
 
  • 前置篇
 
专栏中涉及到了计算机体系结构、汇编语言等较为底层的基础知识,为避免读者的知识盲区,所以会快速带你了解汇编语言、寄存器等内容,并且回顾一个 C 程序从编写到运行的完整过程;还会用一个比较复杂的 C 程序,带大家快速回顾 C 语言的核心语法。
 
  • C 核心语法实现篇
 
梳理 C 语言7大核心语法“背后的故事”,带你了解编译器如何在汇编层面实现这些语法。通过这一模块的学习,你会对 C 程序的运行细节有着更深刻的理解,从而可以更好地掌握并优化程序运行。
 
  • C 工程实战篇
 
介绍 C 语言在大型工程实战的必备技巧。包括:
 
  • 快速掌握 C 标准库的重要功能,以及这些功能背后的实现原理;
  • 掌握编写高性能C 代码、编码规范、结构化测试与编译等,这些 C 项目工程化的实用技巧。
 
  • C 程序运行原理篇
 
介绍 C 程序是如何通过编译,并最终被操作系统运行的。程序的运行涉及到众多与操作系统的交互细节,你将在这个模块里详细了解。
 
说了这么多,一起来看下目录吧下面👇🏻



再说一遍优惠:

 
原价 129 元
早鸟+口令「cyuyan666」
到手仅需¥89
新人无需口令,¥59 拿下
 
扫码看免费试读👇🏻
 

 
时至今日,C 语言作为最“古老”的编程语言之一,仍然“老当益壮”、生生不息。这一切靠的不是巧合,而是绝对的实力。
 
而要发挥 C 语言的最大威力,我们就不应该只简单了解它的语法,而应该在此基础上进一步了解代码如何被编译,程序如何被运行。只有当完整的“链路”建立在脑海中时,你才对程序有了最完全的把控。
 
点击「阅读原文」👇🏻,这次吃透 C 语言。
嵌入式从0到1 专注于嵌入式知识分享
评论
  • 习学习笔记&记录学习学习笔记&记录学习学习笔记&记录学习学习笔记&记录学习笔记&记录学习习笔记&记学习学习笔记&记录学习学习笔记&记录学习习笔记&记录学习学习笔记&记录学习学习笔记记录学习学习笔记&记录学习学习笔记&记录学习学习笔记&记录学习学习笔记&记录学习学习笔记&记录学习习笔记&记录学习学习笔记&记录学习学习笔记&记录学习学习笔记&记录学习学习笔记&记录学习学习笔记&记录学习学习笔记&记录学习学习笔记&学习学习笔记&记录学习学习笔记&记录学习学习笔记&记录学习学习笔记&记录学习学习笔记&记
    youyeye 2024-12-12 10:13 52浏览
  • 全球智能电视时代来临这年头若是消费者想随意地从各个通路中选购电视时,不难发现目前市场上的产品都已是具有智能联网功能的智能电视了,可以宣告智能电视的普及时代已到临!Google从2021年开始大力推广Google TV(即原Android TV的升级版),其他各大品牌商也都跟进推出搭载Google TV操作系统的机种,除了Google TV外,LG、Samsung、Panasonic等大厂牌也开发出自家的智能电视平台,可以看出各家业者都一致地看好这块大饼。智能电视的Wi-Fi连线怎么消失了?智能电
    百佳泰测试实验室 2024-12-12 17:33 71浏览
  • 时源芯微——RE超标整机定位与解决详细流程一、 初步测量与问题确认使用专业的电磁辐射测量设备,对整机的辐射发射进行精确测量。确认是否存在RE超标问题,并记录超标频段和幅度。二、电缆检查与处理若存在信号电缆:步骤一:拔掉所有信号电缆,仅保留电源线,再次测量整机的辐射发射。若测量合格:判定问题出在信号电缆上,可能是电缆的共模电流导致。逐一连接信号电缆,每次连接后测量,定位具体哪根电缆或接口导致超标。对问题电缆进行处理,如加共模扼流圈、滤波器,或优化电缆布局和屏蔽。重新连接所有电缆,再次测量
    时源芯微 2024-12-11 17:11 120浏览
  • 应用环境与极具挑战性的测试需求在服务器制造领域里,系统整合测试(System Integration Test;SIT)是确保产品质量和性能的关键步骤。随着服务器系统的复杂性不断提升,包括:多种硬件组件、操作系统、虚拟化平台以及各种应用程序和服务的整合,服务器制造商面临着更有挑战性的测试需求。这些挑战主要体现在以下五个方面:1. 硬件和软件的高度整合:现代服务器通常包括多个处理器、内存模块、储存设备和网络接口。这些硬件组件必须与操作系统及应用软件无缝整合。SIT测试可以帮助制造商确保这些不同组件
    百佳泰测试实验室 2024-12-12 17:45 81浏览
  • 习学习笔记&记录学习学习笔记&记录学习学习笔记&记录学习学习笔记&记录学习笔记&记录学习习笔记&记学习学习笔记&记录学习学习笔记&记录学习习笔记&记录学习学习笔记&记录学习学习笔记记录学习学习笔记&记录学习学习笔记&记录学习学习笔记&记录学习学习笔记&记录学习学习笔记&记录学习习笔记&记录学习学习笔记&记录学习学习笔记&记录学习学习笔记&记录学习学习笔记&记录学习学习笔记&记录学习学习笔记&记录学习学习笔记&学习学习笔记&记录学习学习笔记&记录学习学习笔记&记录学习学习笔记&记录学习学习笔记&记
    youyeye 2024-12-11 17:58 91浏览
  • 铁氧体芯片是一种基于铁氧体磁性材料制成的芯片,在通信、传感器、储能等领域有着广泛的应用。铁氧体磁性材料能够通过外加磁场调控其导电性质和反射性质,因此在信号处理和传感器技术方面有着独特的优势。以下是对半导体划片机在铁氧体划切领域应用的详细阐述: 一、半导体划片机的工作原理与特点半导体划片机是一种使用刀片或通过激光等方式高精度切割被加工物的装置,是半导体后道封测中晶圆切割和WLP切割环节的关键设备。它结合了水气电、空气静压高速主轴、精密机械传动、传感器及自动化控制等先进技术,具有高精度、高
    博捷芯划片机 2024-12-12 09:16 90浏览
  • 在智能化技术快速发展当下,图像数据的采集与处理逐渐成为自动驾驶、工业等领域的一项关键技术。高质量的图像数据采集与算法集成测试都是确保系统性能和可靠性的关键。随着技术的不断进步,对于图像数据的采集、处理和分析的需求日益增长,这不仅要求我们拥有高性能的相机硬件,还要求我们能够高效地集成和测试各种算法。我们探索了一种多源相机数据采集与算法集成测试方案,能够满足不同应用场景下对图像采集和算法测试的多样化需求,确保数据的准确性和算法的有效性。一、相机组成相机一般由镜头(Lens),图像传感器(Image
    康谋 2024-12-12 09:45 93浏览
  • 一、SAE J1939协议概述SAE J1939协议是由美国汽车工程师协会(SAE,Society of Automotive Engineers)定义的一种用于重型车辆和工业设备中的通信协议,主要应用于车辆和设备之间的实时数据交换。J1939基于CAN(Controller Area Network)总线技术,使用29bit的扩展标识符和扩展数据帧,CAN通信速率为250Kbps,用于车载电子控制单元(ECU)之间的通信和控制。小北同学在之前也对J1939协议做过扫盲科普【科普系列】SAE J
    北汇信息 2024-12-11 15:45 119浏览
  • 本文介绍瑞芯微RK3588主板/开发板Android12系统下,APK签名文件生成方法。触觉智能EVB3588开发板演示,搭载了瑞芯微RK3588芯片,该开发板是核心板加底板设计,音视频接口、通信接口等各类接口一应俱全,可帮助企业提高产品开发效率,缩短上市时间,降低成本和设计风险。工具准备下载Keytool-ImportKeyPair工具在源码:build/target/product/security/系统初始签名文件目录中,将以下三个文件拷贝出来:platform.pem;platform.
    Industio_触觉智能 2024-12-12 10:27 85浏览
  • 首先在gitee上打个广告:ad5d2f3b647444a88b6f7f9555fd681f.mp4 · 丙丁先生/香河英茂工作室中国 - Gitee.com丙丁先生 (mr-bingding) - Gitee.com2024年对我来说是充满挑战和机遇的一年。在这一年里,我不仅进行了多个开发板的测评,还尝试了多种不同的项目和技术。今天,我想分享一下这一年的故事,希望能给大家带来一些启发和乐趣。 年初的时候,我开始对各种开发板进行测评。从STM32WBA55CG到瑞萨、平头哥和平海的开发板,我都
    丙丁先生 2024-12-11 20:14 81浏览
我要评论
7
点击右上角,分享到朋友圈 我知道啦
请使用浏览器分享功能 我知道啦