一句话:提出 Software 2.0:以训练数据和学习模型替代手工算法,并指出深度学习框架依赖编程语言概念。
本文是 Erik Meijer 的主旨演讲,讨论 Software 2.0(用学习到的模型编程)迅速取代 Software 1.0(用手工算法编程)的趋势。传统软件工程要求工程师形式化规约、设计算法并组合或分解系统;Software 2.0 则让工程师收集训练数据并输入 ML 算法,由算法合成目标函数的近似,训练数据是该函数的部分外延定义。核心论点是:代码不再是关键制品,数据成为中心,源代码编译被用数据训练模型替代。这一编程风格对生命周期模型、项目规划与估算、需求分析、程序设计、构建、调试、测试、维护和实现等传统实践造成深远冲击,甚至可能使之过时。作者据此强调,伟大的深度学习框架背后是更伟大的编程语言概念。
In many areas, such as image recognition, natural language processing, search, recommendation, autonomous cars, systems software and infrastructure, and even Software Engineering tools themselves, Software 2.0 (= programming using learned models) is quickly swallowing Software 1.0 (= programming using handcrafted algorithms). Where the Software 1.0 Engineer formally specifies their problem, carefully designs algorithms, composes systems out of subsystems or decomposes complex systems into smaller components, the Software 2.0 Engineer amasses training data and simply feeds it into an ML algorithm that will synthesize an approximation of the function whose partial extensional definition is that training data. Instead of code as the artifact of interest, in Software 2.0 it is all about the data where compilation of source code is replaced by training models with data. This new style of programming has far-reaching consequences for traditional software engineering practices. Everything we have learned about life cycle models, project planning and estimation, requirements analysis, program design, construction, debugging, testing, maintenance and implementation, … runs the danger of becoming obsolete.
DOI 原文 ·
@inproceedings{paperbot4652,
title = {Behind every great deep learning framework is an even greater programming languages concept (keynote)},
author = {Erik Meijer},
booktitle = {FSE},
year = {2018},
doi = {10.1145/3236024.3280855}
}