编程语言为什么要区分表达式expression和语句statement
编程语言为什么要区分表达式expression和语句statement?
先说核心观点:表达式解决"是什么"的问题,表示的是一个值;语句解决"做什么"的问题,表示的是一个动作。设计编程语言的要求,逻辑更清晰,更容易设计便于程序员更好的、更精确地交流表达式、语句的区别
所有代码都有语句组成(简单语句、复合语句),而表达式可能是语句的一部分。以自然语言来类比下,“买一本书”,其中“买一本书”整体是一个语句,而“书”是一个表达式。代码是要执行的,本质上是执行一堆指令的过程,所以代码由语句组成。但是要执行一条语句,可能需要先明确“表达式”的值,否则计算机会模糊。
以Python为例, 可以print的都是表达式:
比如print(3), print(max(3, 9)) 都能执行成功,表明3和max(3,9)都是一个表达式。
而print(x=3), print(import numpy)会报错,说明x=3, import numpy不是表达式,其中前者是一个赋值语句,后者是一个导入语句。
有时候,一个语句可能全部由表达是组成,称之为表达式语句,其中该语句的表示的动作是“求该表达式的值”,python官方文档的原文是:
表达式语句用于计算和写入值(大多是在交互模式下),或者(通常情况)调用一个过程 (过程就是不返回有意义结果的函数;在 Python 中,过程的返回值为 None)。表达式语句会对指定的表达式列表(也可能为单一表达式)进行求值。这一点,可能会让很多人模糊纠结,其实使用起来不用太较真,只要记住表达式用来表示的是一个值,语句表示的是一个动作。
如果让你设计一门新的编程语言,要区分表达式和语句么?你可能说,那太难了,我就是一个语言的使用者。那换个问题,如果让你设计一辆汽车,你需不需要将汽车拆分成发动机、车架、车窗、轮胎等各个零件?作为设计师,你为什么要拆分呢? 我想一种答案,可能是拆分后,每个人可以关注与自己的细分领域,效率会更高。
一门编程语言的诞生,语法要足够严谨。如果语法模糊,编译器会困惑,软件开发人员作为使用者会更困惑,严重影响体验。语法要严谨,就要将语句进行进一步的拆分。打个比方,程序设计同样如此,这样逻辑会更清晰,更容易设计。绝大多数语言的设计,都会区分表达式和语句的。
便于交流程序员会有很多专业术语,这些术语就是为了更好、更准确的交流。想象下,如果不区分两者,碰到两个较真的程序员,那两人可能会每次都要花额外的时间,来确定一个模糊两可的词汇,都会去猜、然后去确认。岂不是沟通效率很低?
这个问题我之前也纠结过,站在程序语言的设计视角可能会更容易理解,更容易明白原因。
声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!
若转载请注明出处: 编程语言为什么要区分表达式expression和语句statement
本文地址: https://pptw.com/jishu/58572.html
