c是经典编程语言

当有朋友希望我教授编程的时候,有一个问题对我很困扰。

教哪一门编程语言

我想现在大家或多或少会听说过那么几种编程语言

  • Java
  • Ruby
  • Go

在Wiki上还专门有一个页面列出了几乎所有的编程语言List of Programming Language。没仔细数,感觉怎么也得有几百种。我想这也是想学习编程的初学这感到头大的事情,究竟要从哪个开始学习

对我个人而言,教大家c语言是最轻松的,因为我这么多年的工作经验就是c语言。随便挑一个点,都可以讲上很久,直到把你讲晕。然而这么做没有意义。对来听的同学,学不到真的东西。而对于我,这就是随便糊弄。

在《通往财富自由》专栏,老师对知识的定义又加了一个维度--时间。有些知识的时间作用范围比较短,而有些知识的时间作用范围比较长。我想

那些时间作用维度长到一定界限的知识就是经典。

经过多日的思考,我认为c语言确实可以算得上是经典。

历史悠久

C语言在1969年由两位贝尔实验室的科学家创造。仅从年头上来看,也就四十年。但是要知道第一台电子计算机是1946年才发明的,而第一台晶体管计算机诞生于1954年。所以c语言的历史,几乎就是整个计算机发展史。

别看c语言是编程界的老大爷,他老人家身体还硬朗着呢。

编程语言排名

这是2017年,全球编程语言的排名。大家可以看到c语言排名第二,活跃程度依然很高。然而与c语言同期的其他很多语言,几乎已经看不到他们的身影了。

看完了这张图,我突然想插入一个观点。

c语言并不难学

现在有不少不推荐入门者学习c语言的原因是觉得c语言的语法太复杂,对初学者来说不容易理解。然而这个排名却恰恰显示了这个观点是不正确的。如果这个语言的语法真的非常难学,那么应该会有更多的项目会采用更好的语言来实现。也就不会有c语言依然保持这么高排名的情况了。比如说大家几乎已经不记得的COBOL。

子孙众多

另一个可以说明c语言是经典的就是由c语言实现或者和c语言相关的语言达到了60多种。

C语言世家

这个网站上列出了这些相关的语言,其中包括了大家耳熟能详的

  • Java
  • Go

这么庞大的c语言家族正说明了c语言本身的优势。

  • 或是运行快速
  • 或是代码精简
  • 或是结构简练

如果我们从生物学的角度来看,凡是后代众多的都是因为其基因强大。而c语言这么多的后代,也证明了其语言自身强大的生命力。

其中我最想强调的不是运行快速,而是结构简单。当大家去看c语言代码的时候,如果和其它语言进行比较你会觉得c语言代码简直有种“裸”的感觉。

从一个层面上讲,“裸”带来的是“慢”。正如大家知道的,用Ruby搭一个网站可能只要几分钟。但用c语言,那么。。。

但是从另一个层面讲,“裸”带来的是“活”。就好像降龙十八掌,虽然只有十八掌,但是只要内功深厚能破一切。就好像我们所说的“元认知”,虽然简单,却可以用来认知万物。就好像《道德经》中的道,能够“道生一,一生二,二生三,三生万物”。

承上启下

假入我们把编程语言的发展看做是物种的演化,那么粗略的可以把编程语言分成这么几类

  • 机器语言
  • 汇编语言
  • 高级语言

机器语言基本就不是人能看的,一般能看得懂机器语言的我都称之为神。汇编语言也很难懂,除非特别熟悉计算机体系结构的。而高级语言则是我们大家通常能够见到的。比如Java, Ruby, Python这些都是高级语言。

而c语言是最接近机器的高级语言

绝大部分高级语言中出现的语法,在c语言中都有呈现。

  • 判断
  • 分支
  • 循环

这几个套路在各种高级语言中都是一样一样的。从底层逻辑来讲,学好了c语言,其余的高级语言也就学会了。

而c语言还有这其他语言没有的特点--接近机器

很多人认为这是c语言的缺点,暴露了机器的运行情况对大部分用户来说是不关心的。但是我在使用过程中却并这么认为。

了解了底层机制,你能更好理解语言的运行,发挥语言的效能

通过c语言的代码,你可以完全确认代码执行的行为。但是对于其他的高级语言,你可能必须要查阅手册,甚至是做实验你才能知道函数的行为。这点其实非常让人头疼。在这我就不举例子了,因为大部分读者应该很难理解。

那我说另一个点,为什么理解机器运行是有益的,尤其对初学者来说。最近在看python的代码,发现python中仍然对数据类型需要区分定义。比如fload64, float是区分的,但是不理解原理的就不清楚这是在说什么。

这么讲大家估计还是不懂,那我做一个类比。

就好像食堂师傅炒菜和家里炒菜,使用的锅应该是不一样的。食堂里用的应该会大一些,家里用的会小一些。食堂用小锅,那估计大厨要累死,吃饭的要饿死。家里用大锅,连放哪都不知道。而float64和float之间的关系就类似于这个食堂大锅和家里小锅的关系。

如果你知道了原理,这个概念就非常好理解。而c语言的概念中就包含了这些原理性的东西,让你在一次学习之后就能举一反三,知道这一类问题在其他语言中的处理。

这种原理性的东西和举一反三的能力,我认为就是经典。

写在最后

王强老师说过“读一流书,做一流人”,所以学习就要学经典。

经过了几日的思考,我终于确认在编程语言界,c语言是我能见到的经典语言。大家通过对c语言的学习,不仅能掌握绝大部分高级语言必须的知识,更能够通过c语言了解计算机体系相关的知识点,做到融会贯通,举一反三。那么此时我再推荐大家学习就问心无愧了。

PS:不知道王强老师的请关注微信公众号《杨小伟的世界》,查阅文章《学编程,究竟学的是什么》。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 212,294评论 6 493
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 90,493评论 3 385
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 157,790评论 0 348
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 56,595评论 1 284
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 65,718评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 49,906评论 1 290
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,053评论 3 410
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,797评论 0 268
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,250评论 1 303
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,570评论 2 327
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,711评论 1 341
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,388评论 4 332
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,018评论 3 316
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,796评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,023评论 1 266
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,461评论 2 360
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,595评论 2 350

推荐阅读更多精彩内容