|
“人机协同”的智能化编程:大数据时代软件自动化的机遇和挑战 |
雁栖湖会议研讨:计算机能代替程序员吗 |
|
写不完的代码,熬不完的夜,进度总是赶不上变化。程序开发是一项既费时费力,又容易出错的工作。但当前持续涌现的软件工程大数据以及快速发展的人工智能技术,正使得软件自动化成为可能。通过程序合成、代码补全、程序变换、代码推荐、程序修复、自适应演化等手段,软件自动化可以将软件开发者从繁重的编码工作中“解放”出来。
“让计算机完全代替人开发程序,理论上是不可能的。” 在近日举办的雁栖湖会议上,中国科学院院士林惠民告诉《中国科学报》记者。他表示,虽然从任意的规范说明中自动生成程序的问题是不可判定的,但可以通过让计算机与人交互的方式来生成程序,也可以在某些特定领域自动生成程序,让计算机代替人完成软件开发过程中不需要创造性的工作。
第三次工业革命通常被认为是由计算、通信和软件驱动,正在给人类生活和工作方式带来巨大的变化。软件工程大数据带来了新机遇,但程序自动化依然面临着挑战。
林惠民说:“深度学习依赖于能够涵盖几乎所有可能的应用场景的大型训练数据集。从代码中学习比从数据中学习要困难得多。数据的含义是不言而喻的,而程序的含义则极其复杂;为了提高效率,有些代码非常晦涩难懂;在程序的语法和语义之间存在着巨大的鸿沟。”
软件自动化不仅能降低程序编写的难度,还可以为软件持续演化来提高质量提供有效的支持。软件技术从根本上改变了商业模式以及人类社会,但与此同时如何应对系统和软件质量方面的巨大挑战成为一个新问题,特别是安全性、适应性、互操作性等质量属性及其相互之间的冲突和影响,在这个方面软件开发大数据分析大有可为。
南加州大学计算机科学教授,美国工程院院士Barry W. Boehm以其团队的研究和实践经历,介绍了他们在基于大数据分析的软件自动化及开发过程中改进的一些工作。他说到,通过大规模程序分析和大数据分析可以持续监控软件开发中的漏洞和技术债务。此外,通过将基于领域模型的代码生成等软件自动化技术与敏捷开发过程相结合,还可以进一步提升已有软件开发效率和质量。
面对计算技术、机器学习和能够用于训练算法的大数据的发展,人工智能正在变得可行。“在人工智能这条路上,我们仍然还有很长的路要走。但是在很多应用上人工智能都表现得比人类更加优秀, 尤其是在分析大数据并进行预测的工作上,这将导致许多工作包括编写程序可以被自动化流程以及机器所取代。”南安普顿大学计算机科学教授、英国皇家学会院士Dame Wendy Hall表示。
即便如此,Dame Wendy Hall也强调了在软件自动化领域,AI的发展可能会给社会带来的潜在威胁,以及需要解决的道德、责任和多样性问题。她以《爱丽丝梦游仙境》为比方,“正如爱丽丝在透过镜子时发现的,一些事情并非总是它最初的样子!快速发展的AI时代,各类独立开发的程序,导致互联网内的某些系统彼此不兼容,未来必将面临混乱和困惑的风险。”
林惠民对此表示认同,在他看来,软件自动化需要将人类程序员的创造性思维和能力与机器的自动化处理能力有机结合。机器无法取代人类,真正需要创造力的工作还需回归人类本身。思辨性与创造力,始终是人类的核心竞争力。