向C语言致敬

开发 前端
在Cloudmetrx 公司,我们大量的使用C语言。鉴于不久前,UNIX传奇人物、C语言的创始人Dennis Ritchie 的过世,我们向C语言表示致敬是再合适不过的了。

本文是从Toast to C 这篇文章翻译而来。

在Cloudmetrx 公司,我们大量的使用C语言。鉴于不久前,UNIX传奇人物、C语言的创始人Dennis Ritchie 的过世,我们向C语言表示致敬是再合适不过的了。

考虑到我们还使用了其它的语言——ClojureNode.js和其它很流行的平台,这种大量的依赖C语言的现象更显得不平常。并不是这种语言更 古老,更“受人尊敬”,我们才会倾向于使用这种语言和技术。只是因为当面对高性能的计算时,没有任何语言能跟C语言相比。有人提出了Java,但这些人错 了。没有什么语言能跟C语言相比。

以我的观点,C语言这么多年来依旧保持流行的原因在于它的相对自由的编程范式。大多数的语言,无论是好的还是差的,都生来伴随着一些鼓励使用的编程范式——面向对象的,函数式的,等。于是硬件的设计就趋向对这种范式进行***的支持。

而C语言,并不去逼迫硬件进行改造。它提供了你对硬件进行粗放型访问的能力。你可以对硬件做你任何想做的操作。没有任何什么编程范式带来的约束——你也可以强制自己使用任何范式。

在邱奇-图灵论题(Church–Turing thesis)中,C语言就是图灵机(Turing)。C语言基本上就是数学加上你可以在上面书写的纸带。所有的算法都是跟两种基本操作有关:对纸带的读和写,然后做小型的算法操作。

当时,世界上所有参考这个理论生产的计算设备看起来都类似图灵机,但却经常被按照Church形式使用。Church论述中的lambda运算考虑 的是将计算行为做有意义的优雅的表现,这是面向人类的;而图灵机考虑的计算行为是面向基于晶体管和电子管的机器的。这是两种自然的方向;C语言更倾向于追 求驾驭真实硬件的能力,代价是损失可读性和优雅性。

从诞生到流行,并持续数十年保持活跃,创造这样的一种技术是何等的丰功伟绩。我不认为C语言的自由范式是成功的唯一理由。它的语法也是同样的精彩 ——尽管这种语言是复杂的,尽管内存管理是复杂的,C语言使这些变得极其的清晰,让你知道事情是如何的进行的。C语言的语法还影响了其它很多种语言——从 Perl到Java到Javascript——这都是它的语法的清晰和实用的证明。

虽然C语言很强大,但不失编写的乐趣。坐下来花5个小时用vim编写C程序对我来说是一件很享受的事。就像是你在驾驶一辆手动档的汽车,你感觉它跑的越来越快。经过一个月的使用Python比较,C语言驾驶起来就像带有喷气机引擎的宝马。它的速度是风驰电掣的;你可以运行time计算,结果会让你张大嘴巴——百万分之一秒!惊奇。

但C语言并不是一直这样可赞。C语言有时会变成淘气使坏的女孩,让你绝望,困惑,不得不使用gdb。但是在一天的***,你还是会回来拥抱C——它的速度太诱人了。

在Cloudmetrx公司,我们所有的金融相关的逻辑处理都是使用的C语言,除bootstrapping。没有C语言这样惊人的处理速度,我们即时运算的产品是不可能实现的,我们不可能去处理这样大规模的负载。事实上,我们的一个用C写的标价的模块和一个用Java写的模块的速度差别是明显的。虽然不是很大,但足够明显;明显得对于实时金融分析来说显得太明显。

这就是C语言,一个淘气的女孩,一个速度妖姬。向你致敬!

原文:http://www.aqee.net/

【编辑推荐】

  1. 我们从C语言之父丹尼斯身上学到了什么
  2. Java之父评价C语言之父:我用尽了形容词
  3. 不缅怀C语言之父的果粉都不是真果粉
  4. C语言之父丹尼斯-里奇去世 享年70岁
  5. C语言中史上最愚蠢的Bug
责任编辑:陈贻新 来源: 外刊IT评论
相关推荐

2009-07-24 09:02:41

Windows 7 R软件开发开发团队

2011-06-27 14:56:31

JavaScript

2019-10-24 15:30:23

程序员技能开发者

2011-06-14 09:17:05

RISC安腾unix

2020-05-13 20:43:44

编程语言JavaPython

2011-07-05 16:57:53

C语言

2011-07-05 17:07:14

C语言

2023-07-13 15:16:30

编程语言Rust

2010-01-15 17:38:37

C++语言

2011-11-28 09:05:01

JavaScriptDart微软

2009-08-12 16:39:50

C#向Excel插入数

2010-01-14 10:34:02

C++语言

2009-09-04 17:44:35

2009-08-03 16:28:53

Java语言与C#语言

2022-01-28 14:54:21

staticC语言编译器

2022-04-25 15:55:58

C 语言编程语言Java

2009-09-02 17:10:45

C#语言入门

2009-08-18 09:17:01

JavaScript2
点赞
收藏

51CTO技术栈公众号