作为一门古老的编程语言,C语言已经坚挺了好几十年了,初学者从C语言入门,大学将C语言视为基础课程。不管别人如何抨击,如何唱衰,C语言就是屹立不倒;Java、C#、Python、PHP、Perl 等都有替代方案,它们都可以倒下,唯独C语言不行。

程序是在内存中运行的(我们将在《载入内存,让程序运行起来》一节中详细说明),一名合格的程序员必须了解内存,学习C语言是了解内存布局的最简单、最直接、最有效的途径,C语言简直是为内存而生的,它比任何一门编程语言都贴近内存。

所谓内存,就是我们常说的内存条,就是下图这个玩意,相信你肯定见过。


图:内存条

所有的程序都在拼尽全力节省内存,都在不遗余力提高内存使用效率,计算机的整个发展过程都在围绕内存打转,不断地优化内存布局,以保证可以同时运行多个程序。

不了解内存,就学不会进程和线程,就没有资格玩中大型项目,没有资格开发底层组件,没有资格架构一个系统,命中注定你就是一个菜鸟,成不了什么气候。

以上这点我有深刻的体会!工作期间我曾专注于网站开发,虽然能够设计出界面漂亮、体验良好的网页,但是对内存泄漏、多线程、共享内存等底层概念一窍不通,感觉和周围同事的差距很大,这让我非常郁闷,不知道如何突破。我曾多次尝试学习内存和线程,也找了很多资料,但是无论如何都啃不懂,到头来还是一头雾水。

离职后我全职运营C语言中文网,于是决定再次系统、深入、全面地学习C语言,并结合C语言去了解一些内存知识,这个时候我才发现,原来C语言就是为内存而生的,C语言的设计和内存的布局是严密贴合的,我因为学习C语言而吃透了内存,了解了计算机内存是如何分布和组织的。

C语言无时无刻不在谈内存,内存简直就是如影随形,你不得不去研究它。

至关重要的一点是,我能够把内存和具体的编程知识以及程序的运行过程结合起来,真正做到了学以致用,让概念落地,而不是空谈,这才是最难得的。

另外一个惊喜是,攻克内存后我竟然也能够理解进程和线程了,原来进程和线程也是围绕内存打转的,从一定程度上讲,它们的存在也是为了更加高效地利用内存。

从C语言到内存,从内存到进程和线程,环环相扣:不学C语言就吃不透内存,不学内存就吃不透进程和线程。

我感觉自己瞬间升华了,达到了一个新的高度,之前的很多谜团都解开了,和大神交流也没有障碍了。

「内存 + 进程 + 线程」这几个最基本的计算机概念是菜鸟和大神的分水岭,也只有学习C语言才能透彻地理解它们。Java、C#、PHP、Python、JavaScript 程序员工作几年后会遇到瓶颈,有很多人会回来学习C语言,重拾底层概念,让自己再次突破。

C语言是菜鸟和大神的分水岭相关推荐

  1. 打开c语言运行不了_C语言——菜鸟和大神的分水岭:内存、线程、进程

    作为一门古老的编程语言,C语言已经坚挺了好几十年了,初学者从C语言入门,大学将C语言视为基础课程.不管别人如何抨击,如何唱衰,C语言就是屹立不倒:Java.C#.Python.PHP.Perl 等都有 ...

  2. 菜鸟到大神的上位历程,即学即用走向人生巅峰

    菜鸟到大神的上位历程,即学即用走向人生巅峰 结合个人经历总结的前端入门方法,总结从零基础到具备前端基本技能的道路.学习方法.资料.由于能力有限,不能保证面面俱到,只是作为入门参考,面向初学者,让初学者 ...

  3. Java集合从菜鸟到大神演变

    转载自 Java集合从菜鸟到大神演变 先来看一张集合概况图,这里从上到下列举了几个最经常用的集合 1.集合接口 java.util.Collection 是一个集合接口.它提供了对集合对象进行基本操作 ...

  4. C语言/C++程序员大神打造纯C的电子时钟(加图形库+源码)

    C语言/C++程序员大神打造纯C的电子时钟,每天看时间再也不麻烦了 C和C++的区别: C是一个结构化语言,它的重点在于算法和数据结构.C程序的设计首要考虑的是如何通过一个过程,对输入(或环境条件)进 ...

  5. “菜鸟”和“大神”de区别

    "菜鸟"和"大神" 刚刚走出就业的程序员,技术是刚刚起步的基点.那下面我们就聊一聊有关技术的东西.首先请您先想想这几个问题.现在社会上有很多程序员,CSDN就是 ...

  6. 从菜鸟到大神之自动化测试(基础一)

    从菜鸟到大神之自动化测试(基础一) 一.自动化测试就是软件测试 1.什么是软件测试? 2.为什么需要软件测试 3.为什么不让开发做测试 4.软件测试的目的和作用 二. 软件测试的七条原则 三.计算机的 ...

  7. 赛尔号周五服务器维护大概到几点,赛尔号:每日玩多少小时算肝帝?2小时是菜鸟,大神:我24小时...

    赛尔号:每日玩多少小时算肝帝?2小时是菜鸟,大神:我24小时 大家好,说起赛尔号这款游戏,很多人都知道这是一个很耗费大家时间的游戏.因为它以肝闻名,以氪为辅,令得很多玩家爱不释手,也令得很多玩家纷纷退 ...

  8. 项目前的一篇战地日记-菜鸟和大神的区别

    转眼间,来了兄弟连已经一个月了,这一个月的日子感觉时间过的好充实呀!每天最早12点休息(几乎是不可能的,老多事等着你去完成呢)7.30起床.和以前那样安逸的日子比起来,刚开始还真是让我有点受不了.不过 ...

  9. 软件测试菜鸟还是大神,一道测试用例设计笔试题就能测出!

    软件测试菜鸟还是大神,一道测试用例设计笔试题就能测出!为什么这么说呢?是因为你们的思路有着天壤之别,来看吧: 相信不少朋友在笔试的时候都遇到过测试用例设计的笔试题.通常是一个登陆页面,上面有用户名,密 ...

最新文章

  1. 关于“Cannot find any provider supporting AES/ECB/PKCS7Padding”问题的解决方案
  2. 修改及查看mysql数据库的字符集
  3. Mongodb学习(安装篇): 在centos下的安装
  4. 进制转换应用场景_PLC编程:PLC内部各类型数据转换(整理分享)
  5. 从内核文件系统看文件读写过程
  6. 第三方快递接口API调用
  7. android 电话号码标记,强化电话标记功能 360手机卫士3.0安卓版体验
  8. 家用计算机配置,家用计算机怎么配置?
  9. App主界面交互框架(其中包括标签式、跳板式、列表式、旋转木马、抽屉式、点聚式、陈列馆式、瀑布流)
  10. Java算法:牛客网哔哩哔哩bilibili笔试真题算法Java版1-14题
  11. bzoj 1864 三色二叉树
  12. Read timed out executing GET (读取执行GET超时)
  13. c35是什么意思_混凝土C35P6是什么意思
  14. python中的折线图、散点图、直方图绘制和图像参数设置
  15. PWN入门(9)NX enabled,PIE enabled与返回LibC库
  16. 医学院交换去计算机学院,2017年北京协和医学院阜外心血管病医院823计算机原理考研强化模拟题...
  17. ble 读写特征值特征值_BLE添加特征值
  18. 计算机中文速录技能,亚伟中文速录机训教程(6.0版).doc
  19. 一篇文章让你了解大数据采集技术
  20. vue 首屏优化加载(三)(CND引用)

热门文章

  1. 如何用Pygame写游戏(七)
  2. 92030302随堂笔记 c# 1614675886
  3. python-使用云图库实现文字填画的效果-0225
  4. 备课笔记190826
  5. Python的简史:一切从讨厌花括号开始
  6. thymeleaf模板引擎基础使用(转)
  7. IOS微信API异常:unrecognized selector sent to instance 0x17005c9b0'
  8. linux 基础学习之目录与文件处理命令
  9. Oracle常用的日期函数
  10. 在gluster中配置distributed 卷