纠纷奇闻社交美文家庭
投稿投诉
家庭城市
爱好生活
创业男女
能力餐饮
美文职业
心理周易
母婴奇趣
两性技能
社交传统
新闻范文
工作个人
思考社会
作文职场
家居中考
兴趣安全
解密魅力
奇闻笑话
写作笔记
阅读企业
饮食时事
纠纷案例
初中历史
说说童话
乐趣治疗

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

2月14日 呛人心投稿
  这几天来,我(EricRaymond)在思考那些正在挑战C语言的系统编程语言领袖地位的新潮语言,尤其是Go和Rust。思考的过程中,我意识到了一个让我震惊的事实我有着35年的C语言经验。每周我都要写很多C代码,但是我已经记不清楚上一次我创建一个新的C语言项目是在什么时候了。
  如果你完全不认为这种情况令人震惊,那你很可能不是一个系统程序员。我知道有很多程序员使用更高级的语言工作。但是我把大部分时间都花在了深入打磨像NTPsec、GPSD以及giflib这些东西上。熟练使用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或者别的没有动态内存分配以及字符串类型的语言来写就会显得很傻。
  但是在当时,我仅仅是把其视为一个试验,而完全没有想到我几乎再也不会在一个新项目的第一个文件里敲下intmain(intargc,charargv)这样的C语言代码了。
  我说“几乎”,主要是因为1999年的SNG。我想那是我最后一个用C从头开始写的项目了。
  在那之后我写的所有的C代码都是在为那些上世纪已经存在的老项目添砖加瓦,或者是在维护诸如GPSD以及NTPsec一类的项目。
  当年我本不应该使用C语言写SNG的。因为在那个年代,摩尔定律的快速迭代使得硬件愈加便宜,使得像Perl这样的语言的执行效率也不再是问题。仅仅三年以后,我可能就会毫不犹豫地使用Python而不是C语言来写SNG。
  在1997年我学习了Python,这对我来说是一道分水岭。这个语言很美妙就像我早年使用的Lisp一样,而且Python还有很酷的库!甚至还完全遵循了POSIX!还有一个蛮好用的对象系统!Python没有把C语言挤出我的工具箱,但是我很快就习惯了在只要能用Python时就写Python,而只在必须使用C语言时写C。
  (在此之后,我开始在我的访谈中指出我所谓的“Perl的教训”,也就是任何一个没能实现和C语言语义等价的遵循POSIX的语言都注定要失败。在计算机科学的发展史上,很多学术语言的骨骸俯拾皆是,原因是这些语言的设计者没有意识到这个重要的问题。)
  显然,对我来说,Python的主要优势之一就是它很简单,当我写Python时,我不再需要担心内存管理问题或者会导致核心转储的程序崩溃对于C程序员来说,处理这些问题烦的要命。
  而不那么明显的优势恰好在我更改语言时显现,我在90年代末写应用程序和非核心系统服务的代码时,为了平衡成本与风险都会倾向于选择具有自动内存管理但是开销更大的语言,以抵消之前提到的C语言的缺陷。
  而在仅仅几年之前(甚至是1990年),那些语言的开销还是大到无法承受的;那时硬件产业的发展还在早期阶段,没有给摩尔定律足够的时间来发挥威力。
  尽量地在C语言和Python之间选择C只要是能的话我就会从C语言转移到Python。这是一种降低工程复杂程度的有效策略。我将这种策略应用在了GPSD中,而针对NTPsec,我对这个策略的采用则更加系统化。这就是我们能把NTP的代码库大小削减四分之一的原因。
  但是今天我不是来讲Python的。尽管我觉得它在竞争中脱颖而出,Python也未必真的是在2000年之前彻底结束我在新项目上使用C语言的原因,因为在当时任何一个新的学院派的动态语言都可以让我不再选择使用C语言。也有可能是在某段时间里在我写了很多Java之后,我才慢慢远离了C语言。
  我写这个回忆录是因为我觉得我并非特例,在世纪之交,同样的发展和转变也改变了不少C语言老手的编码习惯。像我一样,他们在当时也并没有意识到这种转变正在发生。
  在2000年以后,尽管我还在使用CC写之前的项目,比如GPSD,游戏韦诺之战以及NTPsec,但是我的所有新项目都是使用Python的。
  有很多程序是在完全无法在C语言下写出来的,尤其是reposurgeon以及doclifter这样的项目。
  由于C言受限的数据类型本体论以及其脆弱的底层数据管理问题,尝试用C写的话可能会很恐怖,并注定失败。
  甚至是对于更小的项目那些可以在C中实现的东西我也使用Python写,因为我不想花不必要的时间以及精力去处理内核转储问题。这种情况一直持续到去年年底,持续到我创建我的第一个Rust项目,以及成功写出第一个使用Go语言的项目。
  如前文所述,尽管我是在讨论我的个人经历,但是我想我的经历体现了时代的趋势。我期待新潮流的出现,而不是仅仅跟随潮流。
  在98年的时候,我就是Python的早期使用者。来自TIOBE的数据则表明,在Go语言脱胎于公司的实验项目并刚刚从小众语言中脱颖而出的几个月内,我就开始实现自己的第一个Go语言项目了。
  总而言之:直到现在第一批有可能挑战C语言的传统地位的语言才出现。
  我判断这个的标准很简单只要这个语言能让我等C语言老手接受不再写C的事实,这个语言才“有可能”挑战到C语言的地位来看啊,这有个新编译器,能把C转换到新语言,现在你可以让他完成你的全部工作了这样C语言的老手就会开心起来。
  Python以及和其类似的语言对此做的并不够好。使用Python实现NTPsec(以此举例)可能是个灾难,最终会由于过高的运行时开销以及由于垃圾回收机制导致的延迟变化而烂尾。
  如果需求是针对单个用户且只需要以人类能接受的速度运行,使用Python当然是很好的,但是对于以机器的速度运行的程序来说就不总是如此了尤其是在很高的多用户负载之下。
  这不只是我自己的判断因为拿Go语言来说,它的存在主要就是因为当时作为Python语言主要支持者的Google在使用Python实现一些工程的时候也遭遇了同样的效能痛点。
  Go语言就是为了解决Python搞不定的那些大多由C语言来实现的任务而设计的。
  尽管没有一个全自动语言转换软件让我很是不爽,但是使用Go语言来写系统程序对我来说不算麻烦,我发现我写G写的还挺开心的。我的很多C编码技能还可以继续使用,我还收获了垃圾回收机制以及并发编程机制,这何乐而不为?
  本来我想把Rust也视为“C语言要过时了”的例证,但是在学习并尝试使用了这门语言编程之后,我觉得这种语言现在还没有做好准备。也许5年以后,它才会成为C语言的对手。
  随着2017结束,我们已经发现了一个相对成熟的语言,其和C类似,能够胜任C语言的大部分工作场景(我在下面会准确描述),在几年以后,这个语言界的新星可能就会取得成功。
  这件事意义重大。如果你不长远地回顾历史,你可能看不出来这件事情的伟大性。三十年了这几乎就是我作为一个程序员的全部生涯,我们都没有等到一个C语言的继任者,也无法遥望C之后的系统编程会是什么样子的。而现在,我们面前突然有了后C时代的两种不同的展望和未来
  另一种展望则是下面这个语言留给我们的。
  我的一个朋友正在开发一个他称之为“Cx”的语言,这个语言在C语言上做了很少的改动,使得其能够支持类型安全;他的项目的目的就是要创建一个能够在最少人力参与的情况下把古典C语言修改为新语言的程序。
  我不会指出这位朋友的名字,免得给他太多压力,让他做出太多不切实际的保证。但是他的实现方法真的很是有意思,我会尽量给他募集资金。
  现在,我们看到了可以替C语言实现系统编程的三种不同的可能的道路。而就在两年之前,我们的眼前还是一片漆黑。我重复一遍:这件事情意义重大。
  我是在说C语言将要灭绝吗?不是这样的,在可预见的未来里,C语言还会是操作系统的内核编程以及设备固件编程的主流语言,在这些场景下,尽力压榨硬件性能的古老规则还在奏效,尽管它可能不是那么安全。
  现在那些将要被C的继任者攻破的领域就是我之前提到的我经常涉及的领域比如GPSD以及NTPsec、系统服务以及那些因为历史原因而使用C语言写的进程。还有就是以DNS服务器以及邮件传输代理那些需要以机器速度而不是人类的速度运行的系统程序。
  现在我们可以对后C时代的未来窥见一斑,即上述这类领域的代码都可以使用那些具有强大内存安全特性的C语言的替代者实现。Go、Rust或者Cx,无论是哪个,都可能使C的存在被弱化。
  比如,如果我现在再来重新实现一遍NTP,我可能就会毫不犹豫的使用Go语言去完成。
投诉 评论

蚂蚁“借呗”、京东金条、腾讯微粒贷对比,你选哪个?近日,腾讯信用正式上线,相信手快的朋友都已经查到自己的“腾讯版”信用分了吧!小编也查了一下,只有可怜的728分,难道是我没有充值会员的原因?随腾讯信用分一起到来的,还有“……明天起余额宝将限购,取消自动转入支付宝和余额宝很多人都在使用,而且余额自动转入余额宝的功能也非常方便,让我们的零钱自动理财增值。不过今天下午,支付宝发布《余额自动转人余额宝暂停公告》,明天起取消了自动转……腾讯信用公测:方便了直接可以在微信中借钱腾讯信用全国公测了!2017年8月8日微信无现金日开始之前,腾讯悄然开放了微信信用分查询渠道,不过开放之后仅是QQ超级会员专享。而后,腾讯信用开放广州,深圳,江苏区域。凭腾讯信……“百度不正当竞争”,今日头条将对其提出诉讼近日,我们接到用户举报,在百度搜索“今日头条”相关内容,排序第一的搜索结果,是由非正规稿源(百度旗下的自媒体平台“百家号”)于2017年12月中旬发布的“旧闻”(今日头条被要求……PALVLiberty飞行汽车完成通行考核将在欧洲上路行驶【智车派新闻】有人说,汽车是男人的浪漫,飞行则是人类亘古以来的梦想。如今,人类已经实现了飞行的梦想,汽车也在满大街地跑,那么把汽车和飞行结合在一起会是什么样呢?PALVL……路由器能挖矿,手表能挖矿,连傲游浏览器也能挖矿了近日,傲游浏览器上线了一款挖矿插件,宣称只要正常使用浏览器就能获得共生币LVT(共生币是基于先进的区块链技术开发的去中心化的加密数字货币)。官方表示,共生币是你上网时间、……17年前卖小黄图起家的网站,竟有“区块链”的架构?比特币、区块链站上了风口,并且在狂风里给我们强行刷了一波金融姿势。现在谁还敢说自己不知道区块链是啥,那种羞耻感估计等于当众宣布自己没穿裤子所以呢,今天并不打算给你们将区块……百度网盘下载权限变严:未登录用户无法下载文件近日,有服务提供商发布消息称,百度网盘已经收紧下载权限,未登录的游客用户已经无法下载来自百度网盘的文件。在此前,百度网盘并没有对此做出限制,伴随着百度网盘对于第三方客户端……2017十大经济人物评选完整名单:雷军入选由新浪财经、人民日报(客户端)、吴晓波频道联合打造的“2017十大经济年度人物”颁奖盛典于2018年1月28日在北京演艺中心举办。雷军第一个登场亮相,获得的评价也极高:“……35年老程序员个人谈:C语言时代行将落幕这几天来,我(EricRaymond)在思考那些正在挑战C语言的系统编程语言领袖地位的新潮语言,尤其是Go和Rust。思考的过程中,我意识到了一个让我震惊的事实我有着35年的C……“撒币”大战的新演变:流量矩阵化、竞答社交化一、谁谁又“撒币”了!以前上电视智力问答节目中选手,站在舞台自带明星光芒,这样机会相当稀缺,现在只要你想测试个人的知识储量,或是想赢得一笔奖金现在只要打开直播软件就可以了……陆奇:每天工作19小时一年让百度市值逼近千亿美金,李彦宏背后2017年,对于百度,无疑是可喜的一年。在岁末年初之际,百度也提交了一份令人满意的答卷:在经过长达三年时间的低迷之后,百度股票突破260美元,创造了历史的新高价位,市值也……
宝马7系手绘渲染图出炉!分体式大灯设计更时尚新潮【智车派新闻】10月29日,网上有网友发布了全新宝马7系车型的渲染图,让大家可以提前感受一下这款新车的外观设计。新车设计与上代车型的变化还是很明显的,不管是格栅还是车身整体的设……上海限行政策升级特斯拉线下单店日销量暴增四倍!【智车派新闻】近日,受限行升级的影响,上海新能源汽车销量暴增。有知情人士透露,自“上海公布”发出最新的交通限行管理措施后,特斯拉单店日销量暴增至之前的四倍。特斯拉Mode……载誉而归!奔腾E01成“2020年度媒体推荐车型”5冠加身【智车派新闻】10月25日,2020中国新能源汽车大赛”落下帷幕,并在广州举行了“新能源汽车嘉年华”及赛事颁奖典礼。其中,奔腾E01以优异的表现成为了“2020年度媒体推荐车型……九号平衡车机甲战车改装套件推出:能漂移和水弹射击【智车派新闻】平衡车的出现满足了人们对于短途出行和休闲娱乐的需求。继卡丁车系列改装套件后,九号平衡车机甲战车改装套件已于近日公布,并将在11月1日至11月30日开启众筹,其中单……全新现代名图将于2021年上半年上市!大灯造型夸张【智车派新闻】智车派从相关渠道获悉,全新一代现代名图两个版本的车型将在2021年上半年上市。全新一代现代名图采用了全新的设计风格,令整车外观更具辨识度。但是,目前官方还未透露更……比亚迪将推全新电动车平台首款车型明年上海车展发布【智车派新闻】日前,比亚迪高级副总裁廉玉波透露,比亚迪正在预研下一代高性能、高安全纯电平台。新平台将应用大量创新技术,将充分发挥电动汽车在空间、驾驶性、智能化方面的优势,使得电……威马回应EX5爆炸事件:全力配合调查后续公布结果【智车派新闻】10月27日晚,有网友发微博爆料,称北京市海淀区北电环力学所内一辆威马电动汽车EX5发生起火爆炸事故,一时间在网上引起热议。实际上,这已经是威马汽车本月发生的第4……新款奥迪A5Sportback11月中旬上市外观有所调整【智车派新闻】第一代奥迪A5凭借年轻时尚的外观获得了不少年轻消费者的喜爱,不过作为一款小众车型,奥迪A5在市场上一直处于比较尴尬的位置,奥迪需要对此做出改变。日前,智车派从相关……上汽名爵领航超燃上市!7款车型售价9。98万15。98万元【智车派新闻】10月28日晚间,上汽名爵领航新品发布会正式举行,名爵领航燃动科技SUV领航上市。新车共推出了7个版本,售价9。98万元15。98万元,集设计、品质、操控、智能、……473万元起售!劳斯莱斯全新古思特价格公布至奢至美【智车派新闻】近日,全新劳斯莱斯古思特国内售价公布:标轴版车型售价470万元起,长轴版车型售价550万元起。全新古思特采用劳斯莱斯全新的品牌标识,搭载6。75LV12发动机,匹……大众量产电动车ID。3正式向用户交付马斯克表示还不错【智车派新闻】近几年来,电动汽车发展异常迅猛,即使是传统车企都纷纷入局,大众汽车就是其中之一。虽说作为燃油车行业的霸主,但是在电动车方面依然被特斯拉甩开差距。在特斯拉大火的今天……LGChem拟分拆汽车电池业务将于12月份成立新公司【智车派新闻】据外媒报道,LGChem(LG化学)计划将电池业务分拆成一家新公司。报道称,电动汽车市场蓬勃发展,LGChem现在分拆电池业务是正确的。新公司将作为LGChem全……
友情链接:中准网聚热点快百科快传网快生活快软网快好知文好找美丽时装彩妆资讯历史明星乐活安卓数码常识驾车健康苹果问答网络发型电视车载室内电影游戏科学音乐整形