前 言
(一)
在多年从事C语言、C++和Java教学工作中,少不了有学生要求解释如fun(i ++,i ++)这样的问题。有时,到外校进行学术交流时,也不乏同行教师问到这个问题。我感觉,能问到这个问题的学生,无疑是好学生。因为,这个问题虽小,但要解释清楚它,需要涉及非定义行为、赋值表达式的副作用、序列点、程序设计风格等方面的概念,这些概念在相关教材中几乎不见提到,许多教师也不清楚。更让我吃惊的是,当我给一位从事了30多年C与C++教学的大学副教授讲赋值表达式的副作用时,他竟然回了我一句:“我不这样认为。”这足以说明问题的严重性了。
实际上,与其说是赋值操作的副作用,不如说是“变量”的副作用。这似乎是一个不可逾越的鸿沟。因为“值的变化”是变量的基本性质。然而,这个问题在Python中被解决了,因为它的数据多数属于不可变类型。对于不可变类型的变量赋值,就成为引用指向另外一个对象了。这确实是Python的一大突破。Python有许多让人耳目一新的特点,正是这些特点,使它得到了快速推广,并赢得广泛的支持。
2017年7月19日,IEEE(美国电气电子工程师学会)出版的旗舰杂志IEEE Spectrum发布了第4届顶级编程语言交互排行榜。这个排行榜由读者需求、用户增速、开源、设计自由度、雇主需求5个子排行榜组成。其中,前4个子排行榜中都是Python力压群雄,只有雇主需求一榜位于C和Java之后,排名第三。图1为IEEE Spectrum 2017 编程语言 Top 10 排名情况。
图1 IEEE Spectrum 2017编程语言Top 10排名情况
据 IEEE Spectrum介绍ÿ