提到 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程序如何与操作系统交互?相关推荐

  1. Java 和操作系统交互,你猜会发生什么?

    作者:lonelysnow 链接:https://www.jianshu.com/p/7f6832d61880 结合 CPU 理解一行 Java 代码是怎么执行的 根据冯·诺依曼思想,计算机采用二进制 ...

  2. linux有哪些高级语言编译器,程序语言,操作系统,编译器三者之间有何关系?...

    程序语言,操作系统,编译器三者之间有何关系?以下文字资料是由(历史新知网www.lishixinzhi.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 程序语言,操作系统,编译器三 ...

  3. Java 和操作系统交互细节

    结合 CPU 理解一行 Java 代码是怎么执行的 根据冯·诺依曼思想,计算机采用二进制作为数制基础,必须包含:运算器.控制器.存储设备,以及输入输出设备,如下图所示. (该图来源于百度) 我们先来分 ...

  4. c语言名字程序,c语言获得程序位数和操作系统位数和名称

    // vcis64.cpp : VC 64位程序开发心的--c语言获得程序位数和操作系统位数和名称. #include #include #include #include // 获取程序位数(被编译 ...

  5. 小程序云服务器选什么系统好,小程序云服务器操作系统选择

    小程序云服务器操作系统选择 内容精选 换一换 华为云帮助中心,为用户提供产品简介.价格说明.购买指南.用户指南.API参考.最佳实践.常见问题.视频帮助等技术文档,帮助您快速上手使用华为云服务. 当您 ...

  6. os模块:与操作系统交互的一个接口

    # os模块:与操作系统交互的一个接口 os.getcwd() 获取当前工作目录,即当前python脚本工作的目录路径 os.chdir("dirname") 改变当前脚本工作目录 ...

  7. react 交互_如何在React应用程序中跟踪用户交互

    react 交互 by Faouzi Oudouh 通过Faouzi Oudouh 如何在React应用程序中跟踪用户交互 (How to track user interactions in you ...

  8. 微信小程序与webview H5交互(内嵌H5跳转原生页面)

    在开发中,使用web-view组件内嵌H5页面是非常常见的,但很多人不知道webview内嵌H5如何与原生小程序 交互.下面介绍下实现微信小程序与webview H5交互的方法. web-view功能 ...

  9. wechat-小程序web-view与网页交互

    title: wechat-小程序web-view与网页交互 categories: Wechat tags: [wechat, web-view] date: 2018-10-26 14:13:18 ...

最新文章

  1. 服务发现与负载均衡 dubbo zk原理
  2. linuxquot;/quot;分区名称,linux分区,磁盘系统的管理,文件系统制作
  3. J0ker的CISSP之路:复习Access Control(10)
  4. shared_ptr循环引用定置删除器
  5. 进程在与Windows Process Activation Service通信时出现严重错误 w3wp.exe错误
  6. window7 telnet localhost 5554
  7. ProxySQL Cluster 概述
  8. Maven自动化构建工具
  9. 【收藏】Vue+elementUI的this.$refs.对象名.方法名的理解
  10. DDD理论学习系列(4)-- 领域模型
  11. jpa语法错误_JPA陷阱/错误
  12. php shopex,用PHP为SHOPEX增加日志功能代码
  13. [IOI2019] 景点划分
  14. Android锁机病毒分析
  15. 注册Balsamiq Mockups
  16. 沁恒蓝牙芯片CH57x系列学习与应用
  17. 学习MySQL的第一步:安装MySQL及数据库可视化工具Navicat
  18. Android实现截屏方式
  19. _Generic示例
  20. Android---universal-image-loader应用

热门文章

  1. 百度“无人车第一案”是场人才保卫战?
  2. 运动什么蓝牙耳机好用?
  3. LINUX查看进程的4种方法(小结)
  4. java ioc 原理_Spring IoC原理
  5. 血氧饱和检测仪————TFT方案设计
  6. 开直播的小程序需要多大的服务器,微信小程序直播需满足什么条件
  7. scanpy TSNE画图和sklearn TSNE画图复现
  8. Python计算机视觉——基本图像操作和处理
  9. 《乐高EV3机器人搭建与编程》一2.6 传感器
  10. java 反射getmethod_java 反射 getMethod传httpServletRequest报错