作家
登录

35年老程序员个人谈:C语言时代行将落幕

作者: 来源: 2018-01-29 09:26:40 阅读 我要评论

年前最后一场技巧盛宴 | 1.27与京东、日记易、假贷宝技巧大年夜咖畅聊智能化运维成长趋势!


 

这几天来,我(Eric Raymond)在思虑那些正在挑衅C说话的体系编程说话领心肠位的新潮说话,尤其是 Go 和 Rust。思虑的过程中,我意识到了一个让我震动的事实——我有着 35 年的C说话经验。每周我都要写很多C代码,然则我已经记不清跋扈上一次我创建一个新的C说话项目是在什么时刻了。

然则,如今我不仅是不再应用 C 说话写新的项目,甚至我都记不清我是什么时刻开端如许做的了,并且……回头想想,我认为这都不是本世纪产生的工作。

这个对于我来说是件大年夜事,因为如不雅你问我,我的五个最核心软件开起身能是什么,“C说话专家” 必定是你最有可能听到的之一。这也激起了我的思虑。

C 说话的将来会如何 ?C说话是否正像昔时的 COBOL 说话一样,在光辉之后,走向落幕?

我正好是在C说话迅猛成长,并把汇编说话以及其它很多编译型说话挤出主流存在的前几年开端编程的。

那场过渡大年夜约是在 1982 到 1985 年之间。在那之前,有很多编译型说话争相吸引法度榜样员的留意力,那些说话中还没有明白的引导者;然则在那之后,小众的说话就直接毫无声气的退出了舞台。

主流的说话(FORTRAN、Pascal、COBOL)则要么只限于老代码,要么就是固守单一范畴,再就是在C说话的边沿范畴顶着愈来竽暌国大年夜的压力苟延残喘。

而在那今后,这种情况持续了近 30 年。尽管在应用法度榜样开辟上出现了新的动向:Java、 Perl、 Python, 以及许很多多不是很成功的竞争者。起先我很少存眷这些说话,这很大年夜一部分是因为在它们的运行时的开销对于当时的实际硬件来说太大年夜。是以,这就使得C的成功无可撼动。

为了应用和对接大年夜量已有的C说话代码,你得应用C说话写新代码(一部分脚本说话测验测验过打破这种壁垒,然则只有 Python 有可能取获成功)。

回想起来,我在 1997 年应用脚本说话写竽暌功用时本应当留意到这些说话的更重要的意义的。当时我写的是一个名为 SunSITE 的赞助图书治理员做源码分发的帮助软件,当时应用的是 Perl 说话。

我不会指出这位同伙的名字,免得给他太多压力,让他做出太多不切实际的包管。然则他的实现办法真的很是有意思,我会尽量给他募集资金。

这个应用美满是用来处理文本输入的,并且只须要可以或许应对仁攀类的反竽暌功速度即可(大年夜概 0.1 秒),是以应用C或者其余没有动态内存分派以及字符串类型的说话来写就会显得很傻。

然则在当时,我仅仅是把其视为一个实验,而完全没有想到我几乎再也不会在一个新项目标第一个文件里敲下 int main (int argc, char **argv) 如许的C说话代码了。

我说“几乎”,主如果因为 1999 年的 SNG。 我想那是我最后一个用C大年夜头开端写的项目了。

在 1997 年我进修了 Python, 这对我来说是一道分水岭。这个说话很好梦——就像我早年应用的 Lisp 一样,并且 Python 还有很酷的看巍甚至还完全遵守了 POSIX!还有一个蛮好用的对象体系!Python 没有把C说话挤出我的对象箱,然则我很刻就锇惯了在只要能用 Python 时就写 Python ,而只在必须应用C说话时写C。

(在此之后,我开端在我的访谈中指出我所谓的 “Perl 的教训” ,也就是任何一个没能实现和C说话语义等价的遵守 POSIX 的说话都注定要掉败。在计算机科学的成长史上,很多学术说话的骨骸俯拾皆是,原因是这些说话的设计者没有意识到这个重要的问题。)

显然,对我来说,Python 的重要优势之一就是它很简单,当我写 Python 时,我不再须要担心内存治理问题或者会导致核心转储的法度榜样崩溃 —— 对于C法度榜样员来说,处理这些问题烦的要命。

而不那么明显的优势正好在我更改说话时浮现,我在 90 年代末写竽暌功用法度榜样和非核心体系办事的代码时,为了均衡成本与风险都邑偏向于选择具有主动内存治理然则开销更大年夜的说话,以抵消之前提到的C说话的缺点。

尽量地在C说话和 Python 之间选择 C —— 只如果能的话我就会大年夜C说话转移到 Python。这是一种降低工程复杂程度的有效策略。我将这种策略应用在了 GPSD 中,而针对 NTPsec , 我对这个策略的采取则加倍体系化。这就是我们能把 NTP 的代码库大年夜小削减四分之一的原因。

然则今天我不是来讲 Python 的。尽管我认为它在竞争中脱颖而出,Python 也未必真的是在 2000 年之前彻底停止我在新项目上应用C说话的原因,因为在当时任何一个新的学院派的动态说话都可以让我不再选择应用C说话。也有可能是在某段时光里在我写了很多 Java 之后,我才慢慢远离了C说话。

而在仅仅几年之前(甚至是 1990 年),那些说话的开销照样大年夜到无法遭受的;那时硬件家当的成长还在早期阶段,没有给摩尔定律足够的时光来发挥威力。

我写这个回想录是因为我认为我并非特例,活着纪之交,同样的成长和改变也改变了不少C说话熟手在行的编码习惯。像我一样,他们在当时也并没有意识到这种改变┞俘在产生。

在 2000 年今后,尽管我还在应用 C/C++ 写之前的项目,比如 GPSD ,游戏韦诺之战以及 NTPsec,然则我的所有新项目都是应用 Python 的。

有很多法度榜样是在完全无法在C说话下写出来的,尤其是 reposurgeon 以及 doclifter 如许的项目。

如不雅你完全不认为这种情况令人震动,那你很可能不是一个体系法度榜样员。我知道有很多法度榜样员应用更高等的说话工作。然则我把大年夜部分时光都花在了深刻打磨像 NTPsec、 GPSD 以及 giflib 这些器械上。闇练应用C说话在这几十年迈一向就是我的特长。

尽管没有一个全主动说话转换软件让我很是不爽,然则应用 Go 说话来写体系法度榜样对我来说不算麻烦,我发明我写G写的还挺高兴的。我的很多C编码技能还可以持续应用,我还收成潦攀垃圾收受接收机制以及并发编程机制,这何乐而不为?


  推荐阅读

  谷歌为什么退出中国?李彦宏可能只说出了部分真相

年前最后一场技巧盛宴 | 1月27日与京东、日记易技巧大年夜咖畅聊智能化运维成长趋势! 于1月 29 日发行的《时代》周刊中,百度公司开创人兼CEO李彦宏成为封面人物,成为中国互联网登《时代>>>详细阅读


本文标题:35年老程序员个人谈:C语言时代行将落幕

地址:http://www.17bianji.com/lsqh/40442.html

关键词: 探索发现

乐购科技部分新闻及文章转载自互联网,供读者交流和学习,若有涉及作者版权等问题请及时与我们联系,以便更正、删除或按规定办理。感谢所有提供资讯的网站,欢迎各类媒体与乐购科技进行文章共享合作。

网友点评
自媒体专栏

评论

热度

精彩导读
栏目ID=71的表不存在(操作类型=0)