郑明听到这话,十分震惊:“你这意思是,其实你们这函数里面是没有值传递的!”
李勇军点了点头:“是的。”
郑明思考了一下:“那这样子很可能会导致一些不想传递的修改被传递出来。”
李勇军说道:“这是自然的,设计本身就是一种权衡。”
“我认为只有引用传递带来的好处远大于它带来的坏处,而且在较大规模的软件工程当中,大部分变量都包含众多成员变量,更经常出现的情况其实是不小心用了值传递带来的一些问题。”
“了解。” 郑明若有所思地点了点头,然后总结道,“我理解现在‘乾坤’语言相对 C 语言改进的地方有这几块。”
“第一个是刚才讨论的指针能力的改动。第二个是内置了像是字典、可变数组、类这样的高级数据结构,还有不少像是求和、最大值、最小值这种默认函数。第三个是用缩进来表示代码块,避免了大括号带来的视觉干扰。不知道还有没有什么疏漏呢?”
他把这几块内容称之为相对于 C 语言的改动,是因为他十分相信这些改动能够较大地提升程序员的开发效率。
听到郑明看一个示例工程就能这么快分析出 “乾坤” 和 C 语言相比几处关键的改动,李勇军意识到眼前这人是一个编程水平极佳的程序员,他给秦奕使了一个眼色,秦奕却有些好笑地摇了摇头。
李勇军感到有些可惜,不过他还是积极地和郑明继续交流:“在代码层面上比较关键的改动基本就是这些,在运行时有一个比较关键的差别,就是‘乾坤’是解释器语言,它有一个运行时环境。”
“运行时环境?” 郑明皱眉,“这对程序性能损耗可不小。”
李勇军说道:“对,确实有不小的性能损耗,但其实大多数时候我们对性能并没有那么高的要求,而且我们还设计了‘乾坤’语言和 C 语言程序交互的方式,所以就算遇到部分对性能有要求的逻辑,我们也完全可以通过 C 语言甚至是汇编语言外联的方式来达到高性能的目的。”