广告

C语言还有哪些需要改进的?

时间:2021-02-11 作者:Jack Ganssle 阅读:
C++语言在我看来充满了相当的复杂度以及黑暗之处,聪明的人最好不要踩到。还有Java语言是一种有趣的面向对象(OO)方法,但其垃圾回收(garbage collection)机制以及缺乏指标(pointer)等特性,使该语言不适合大多数的嵌入式开发。
广告

如果你是一个写程序的老手,你可能用过很多种有着不同基础哲学的程序语言;你用过Perl吗?它的概念跟Algol有很大的不同;直译的Basic语言是如此容易,让很多人能进入这个领域,而Visual Basic则是一头完全不同的“怪兽”。

我的第一种语言(在母语英语之后)是Fortran,我用过不少它的分支语言以及编译程序。汇编语言(Assembly)…嗯,就是汇编语言,不是有太多人能说出个所以然;C语言基本上是汇编语言,在生产力方面有大幅改善。

C++语言在我看来充满了相当的复杂度以及黑暗之处,聪明的人最好不要踩到。还有Java语言是一种有趣的面向对象(OO)方法,但其垃圾回收(garbage collection)机制以及缺乏指标(pointer)等特性,使该语言不适合大多数的嵌入式开发。

C语言多年来在这个产业界是流行语言,调查数据显示(如下图),该语言在嵌入式领域的市占率最高,而且其地位数年来屹立不摇,许多新一代的语言如Python都仍远远落后,C将会在很长一段时间继续是主力语言。


各种程序语言的使用情况统计
(来源:UBM 2014 Market Survey)

但 C语言已经很“老”了,也受到那样的长寿影响;该语言隐藏了迟钝点,批评者指出,C语言开发者似乎厌恶打字;那大多数来自不良习惯,像是使用非常短的变量 名称(variable names)。任何一种语言都会被滥用,但对比典型的C程序,例如Ada程序代码,有人确实会疑惑为何我们看起来如此简洁,该语言本身就很简洁。

假设你可以用魔法改变C语言的某一个方面,你会改变哪里、为什么?我会想要摆脱花括号(即{},又称波型括号);我们都曾经历来自深度套迭的程序代码段落之错误以及编译程序抱怨(compiler complaints),我们会搞混需要多少结束括号以及它们该被放置在哪里。

我比较喜欢需要匹配开始与结束段落,以终结声明(end statement)来指示哪个段落已经结束;例如:

这需要打更多字,但任何一个软件开发者如果打字不够快就是入错行了;其好处是更容易了解段落在哪里开始与结束。当然,谨慎地缩排也能告诉我们相同的事情,但今日有太多程序代码被这么多人修改过,原始工程师精心地缩排通常变成无可救药的错位。可能很难知道哪一个括号是结束哪一个段落,被误放的括号可能会让编译程序发疯。

而深度套迭控制架构当然也可能导致大量连续的“end if”声明,这可能会是例外而不是规则;并没有“银弹”可以拯救我们,但小小的改变,像是利用开始/结束声明而非括号,有可能带来非常大的帮助。

我通常会在批注的地方针对哪个括号是结束哪个段落做记号,但如果程序语言能像我说的,编译程序能指出遗失以及被混淆的“end”声明岂不是更好?其他有的语言指令就包含卷标的结束声明并因而获益,Ada就是一个最佳案例

你呢?如果你可以改变C语言的某一个部分,你会想改变什么?又为什么?

编译:Judith Cheng, EETimes Taiwan

责编:Luffy Liu

(参考原文: Fixing C,by Jack Ganssle,The Ganssle Group总工程师)

 

  • (来源:UBM 2014 Market Survey),2021年了,居然引用2014年的调查
  • 啊士大夫
本文为EET电子工程专辑 原创文章,禁止转载。请尊重知识产权,违者本司保留追究责任的权利。
  • 2021年,电动、连网汽车与车用软件路在何方? 笔者在前一篇专栏文章中探讨了《2021年自驾车产业发展大势》,在这篇文章中,让我们来看看在汽车电子领域的其他关键技术与商业趋势,包括电池动力电动车(battery electric vehicles,BEV)、连网车辆以及车用软件。
  • EDA厂商国微思尔芯拟科创板IPO, 已进入上市辅导期 2月1日消息,国产EDA厂商国微思尔芯拟申报在科创板首发上市,信息显示,国微思尔芯已于1月27日与中金公司签署了辅导协议,并于同日在上海证监局进行了辅导备案。
  • 合作伙伴眼中的HarmonyOS:专访HarmonyOS首批生态共建者 江苏润和软件股份有限公司(以下简称润和软件)是华为HarmonyOS官方的首批南向生态的共建合作伙伴之一。在HarmonyOS 2.0发布的第一天,润和软件就随即发布了支持HarmonyOS的HiSpark Wi-Fi IoT智能家居开发套件、HiSpark AI Camera开发套件和HiSpark IPC DIY开发套件,目前也仍在对HarmonyOS生态做持续共建。
  • IoT走向成熟的一年:IoT市场现状,与未来展望 在IoT时代,不仅有面向北向的软件开发者,也有南向硬件开发者;生态共建合作伙伴有了更大的外延。华为HarmonyOS与涂鸦智能衔接硬件和软件的生态共建者,就成为IoT时代比较有代表性的角色。这也是电子工程专辑这类媒体开始更多关注开发者生态的原因。
  • 为什么芯片级的安全解决方案,比软件更靠谱? 如果在系统设计中没有引用任何的安全方案,就意味着系统中所有关键数据和代码直接开放给所有人,无疑会在实际运营中面临非常大的风险。基于此,不少企业和服务提供商从成本或其它方面考量,选择了软件安全方案,但是软件方案一般运行在通用MCU、CPU环境中,数据易于被访问和读取,也易于被复制、篡改、分析和理解……
  • 卡我们脖子的,从来不是只有硬件 微内核技术用于嵌入式领域尚不多见,源于轻量级实时操作系统的微内核更是有着较大的开创性。但经过2年多的研发,国产RT-Thread Smart微内核操作系统凭借在资源占用、启动时间、实时性指标上取得的优异表现,打破了Vxworks、QNX等国外操作系统长时间以来形成的垄断局面
广告
热门推荐
广告
广告
广告
EE直播间
在线研讨会
广告
广告
面包芯语
广告
向右滑动:上一篇 向左滑动:下一篇 我知道了