
C语言入门:从被现实“逼着”开始说起 我这个人,跟大多数搞技术的朋友一样,都是被现实逼着才开始学东西的。以前我总觉得C语言这种“老古董”,那是实验室、搞硬件的人才碰的。...
我这个人,跟大多数搞技术的朋友一样,都是被现实逼着才开始学东西的。以前我总觉得C语言这种“老古董”,那是实验室、搞硬件的人才碰的。我一个写写网页,跑跑脚本的,搭搭服务器的,用不着。
但后来被生活扇了个大耳光,才明白,人不能活在自己的小圈子里。那阵子我那小破公司倒了,手里一个像样的项目拿不出来。更糟心的是,家里那台跑着我那些自动抓数据的小脚本的电脑,卡得跟死鱼一样,光占用内存就吃掉了我一半的资源。我寻思,我这小小的自动化,怎么能拖垮我整台机器?我这不是帮自己,是给自己添堵。
我找了个做嵌入式的哥们唠嗑,吐槽我的脚本效率低下。他白了我一眼,说:“你那套都是外围的,慢是正常的。要快,要省,要贴着机器跑,你得用C语言,直接跟硬件说话。” 他一说,我心里立马被点燃了。我那卡成PPT的电脑,成了我下定决心去啃C语言的导火索。
我这个人就是轴,说干就干。但着手去搞C语言,第一个大坎就来了。教程都是甩给你一大堆专业名词:什么编译器、链接器、IDE。我对着屏幕挠头,根本分不清谁是谁。我想着不就是写个小程序吗?怎么搞得跟造火箭一样复杂?
我试着在网上找现成的包,装了个MinGW。结果鼓捣了半天,连环境变量都没配命令行一敲,显示一堆乱七八糟的报错。

我气得差点想砸电脑。琢磨了一整天,我才理解,这写程序和跑程序是两回事。C语言就像个厨子,你写的代码是菜谱,但你需要一个炉子(编译器)把这菜谱变成能吃的饭。我之前光有菜谱,没炉子。
我退而求装了一个比较集成的开发环境。虽然它帮我藏起来了好多细节,但我至少能顺利地跑起来我的第一行代码了。
环境算是架起来了,我哆哆嗦嗦地敲下了那串经典的:

#include <stdio.h>int main() { printf("Hello, World!\n"); return 0; }
我保存文件,文件名起得特别正式,就叫first.c。然后点下运行按钮。那个黑乎乎的命令行窗口“唰”地一下跳出来,然后立马就显示了那几个字:Hello, World!。几乎是闪现的。
我盯着屏幕看了好久。虽然只是输出了几个字,但这速度,跟我之前用Python跑一个空脚本的感受完全不同。Python总要慢悠悠地启动一下它的解释器,C语言是直接、瞬发。
这一下我就明白了C语言的魅力。它不绕弯子,不废话。它直接操作内存,直接告诉电脑该干新手一定要知道的入门知识不是什么复杂的指针或者数据结构,而是要动手去感受这种“直接性”——感受你写的代码,就是电脑执行的命令。这感觉,就像你终于摸到了汽车的发动机,而不是只会踩油门。这也是为什么那些底层的、对效率要求高的老伙计,到现在都离不开这个C。
我那几个拖垮电脑的小脚本,现在准备用C语言一个一个地重写。虽然慢,但是扎实。