宏语言为何不受欢迎?

本文探讨了宏语言的历史,从早期文本编辑器的扩展到现代编程语言的发展。宏语言因类型贫弱和易引入不易察觉的错误而不受欢迎,尽管在某些场景如GNU Autotools中仍被使用。现代编程语言倾向于避免宏,转向更强大且易于调试的解决方案,如C++的const和内联函数。文章通过实例展示了宏语言的局限性和挑战,提出谨慎使用宏以避免复杂逻辑。
摘要由CSDN通过智能技术生成

人类用计算机处理文本主要是依赖宏语言以及一些专用的文本编辑器。事实上,早期的文本编辑器只提供基本的文本编辑功能,然后借助宏语言进行功能扩展。结果人类很快就发现,基于宏扩展的编辑器,功能越复杂,它的行为就越诡异。于是,文本编辑器的扩展语言很快就被换成了当时的一种通用的动态类型的函数式编程语言——Lisp。实际上,这就是 Emacs 的前世与今生。

研究编程语言设计的人,所追求的目标是,怎样定义一套文法,使之既能使之对人类简单又友好,且能准确无误的转译为另一种语言。在专业做编程语言设计的人看来,宏语言是最弱的语言,因为它几乎没有什么类型可言。类型越强的语言,往往越便于程序分析。要是有兴趣一起交流学习c/c++的小伙伴可以加群:941636044,里面有大神会给予解答,也会有许多的资源可以供大家学习分享,欢迎大家前来一起学习进步!

从宏处理器的角度来看,宏语言中只有两种类型:文本与宏。宏展开的结果是文本,但宏本身也是文本,二者的界限往往不是那么明显。在 M4 中,往往要借助引号来区分宏与普通文本,而引号本身又有可能是文本。类型如此贫弱,因此很容易在宏定义时引入一些并不显而易见的错误,而这些错误无法被其他程序检测。另外,用宏语言编写的复杂程序一旦在运行时出现问题,就很难准确定位问题所在,因为错误是在宏展开的结果中发现的,发现错误的时候,很难快速确定它是哪个宏的展开结果。

虽然 Dennis Ritchie 是 M4 的设计者之一,但是他并没有将 M4 作为 C 语言的宏处理器,而是为 C 语言设计了一种更为轻巧、简单的宏处理机制,显然这是有意而为之。

Eric Raymonad 在《Unix 编程艺术》一书中

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值