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总工程师)

 

本文为EET电子工程专辑原创文章,禁止转载。请尊重知识产权,违者本司保留追究责任的权利。
  • 现在不是有自动化的缩排工具了吗,这个应该不是问题
  • (来源:UBM 2014 Market Survey),2021年了,居然引用2014年的调查
  • 啊士大夫
阅读全文,请先
您可能感兴趣
尽管生成式AI令人感到惊喜,但很多创新还没有真正落实到每个用户或企业的AI应用上。为了开发出真正不可或缺的“AI杀手级应用”,必须加快创新步伐,激励更多开发者致力于AI领域的开发和创新活动。
为了确保英国市场的竞争不受影响,CMA将对这一收购事宜进行调查。CMA称,允许相关方提交有关该交易可能对英国竞争产生影响的初步意见。
“神玑 NX9031”采用5nm车规工艺制造的高阶智能驾驶芯片,其芯片和底层软件均已实现自主设计,拥有超过500亿颗晶体管。该芯片采用32核超强CPU架构,并集成了高性能图像信号处理器ISP和各类推理加速单元NPU,能够灵活高效地运行各类AI算法。
在中国先进制程被封锁、算力芯片的峰值性能落后的大背景下,中国应该如何应对挑战呢?唐志敏认为,应该全栈协同,突破算力芯片和系统的关建技术,即需要系统级思维,在限制条件下求全系统的最忧解,不追求芯片峰值性能的绝对领先,通过协同创新、全栈优化,得到领先的性能。
微软还指出,由于与欧盟达成的协议,公司无法做出类似的改变来提高操作系统的安全性。因此,当第三方安全软件更新出现缺陷时,这些措施进一步加剧了问题的严重性。
通过收购Wiz,Alphabet将能够显著增强其在云计算市场的竞争力。Wiz的全方位云业务对于拥有大量计算资源的大型公司来说非常有吸引力,这有助于Alphabet在这一领域进一步巩固其市场地位。
目前,智能终端NFC功能的使用频率越来越高,面对新场景新需求,ITMA多家成员单位一起联合推动iTAP(智能无感接近式协议)标准化项目,预计25年上半年发布1.0标准,通过功能测试、兼容性测试,确保新技术产业应用。
中科院微电子所集成电路制造技术重点实验室刘明院士团队提出了一种基于记忆交叉阵列的符号知识表示解决方案,首次实验演示并验证了忆阻神经-模糊硬件系统在无监督、有监督和迁移学习任务中的应用……
C&K Switches EITS系列直角照明轻触开关提供表面贴装 PIP 端子和标准通孔配置,为电信、数据中心和专业音频/视频设备等广泛应用提供创新的多功能解决方案。
投身国产浪潮向上而行,英韧科技再获“中国芯”认可
点击蓝字 关注我们安森美(onsemi)在2024年先后推出两款超强功率半导体模块新贵,IGBT模块系列——SPM31 IPM,QDual 3。值得注意的是,背后都提到采用了最新的FS7技术,主要性能
来源:观察者网12月18日消息,自12月2日美国发布新一轮对华芯片出口禁令以来,不断有知情人士向外媒透露拜登政府在卸任前将采取的下一步动作。美国《纽约时报》12月16日报道称,根据知情人士以及该报查阅
12月18日,珠海京东方晶芯科技举行设备搬入仪式。插播:加入LED显示行业群,请加VX:hangjia188在10月31日,珠海京东方晶芯科技有限公司发布了Mini/Micro LED COB显示产品
对于华为来说,今年的重磅机型都已经发完了,而明年的机型已经在研发中,Pura 80就是期待很高的一款。有博主爆料称,华为Pura 80将会用上了豪威OV50K传感器,同时电池容量达到5600毫安时。至
有博主基于曝光的信息绘制了iPhone 17系列渲染图,对比iPhone 16系列,17系列最大变化是采用横置相机模组,背部DECO为条形跑道设计,神似谷歌Pixel 9系列,这是iPhone六年来的
阿里资产显示,随着深圳柔宇显示技术有限公司(下称:“柔宇显示”)旗下资产一拍以流拍告终,二拍将于12月24日开拍,起拍价为9.8亿元。拍卖标的包括位于深圳市龙岗区的12套不动产和一批设备类资产,其中不
近期,高科视像、新视通、江苏善行智能科技等企业持续扩充COB产能。插播:加入LED显示行业群,请加VX:hangjia188■ 高科视像:MLED新型显示面板生产项目(二期)招标12月18日,山西高科
LG Display  12月18日表示,为加强OLED制造竞争力,自主开发并引进了“AI(人工智能)生产体系”。“AI生产体系”是AI实时收集并分析OLED工艺制造数据的系统。LG Display表
亲爱的企业用户和开发者朋友们距离2024 RT-Thread开发者大会正式开幕仅剩最后3天!还没报名的小伙伴,抓紧报名噢,12月21日不见不散!大会时间与地点时间:2024年12月21日 9:30-1
上个月,亿万富翁埃隆·马斯克谈到了年轻一代的生育问题。他强调生育的紧迫性,认为无论面临何种困难,生育后代都是必要的,否则人类可能会在无声中走向消亡。他认为人们对于生育的担忧有些过头,担心经济压力等问题