内容简介:这里所说的自动编程,是运用人工智能技术来自动生成程序,尽量免除人类劳动。在自动产生程序之前,先要知道需求是什么吧?要能把需求准确地描述给机器,这就需要一种需求描述语言。假如我们制造了这种需求描述语言,它进一步发展,越发规范,成为了一种DSL(领域特定语言)。嗯,这就变成了DSL编程。假如要生成一个应用程序,要选择一些开发框架、中间件和技术方案吧?人类开发时要考虑开发成本和效益的权衡,但是机器既然已懂得多种技术方案,对它来说开发成本为0,那么选择最好的那一个技术方案就行了。这就相当于存在一套最好(也可能最复杂
这里所说的自动编程,是运用人工智能技术来自动生成程序,尽量免除人类劳动。
在自动产生程序之前,先要知道需求是什么吧?要能把需求准确地描述给机器,这就需要一种需求描述语言。假如我们制造了这种需求描述语言,它进一步发展,越发规范,成为了一种DSL(领域特定语言)。嗯,这就变成了DSL编程。
假如要生成一个应用程序,要选择一些开发框架、中间件和技术方案吧?人类开发时要考虑开发成本和效益的权衡,但是机器既然已懂得多种技术方案,对它来说开发成本为0,那么选择最好的那一个技术方案就行了。这就相当于存在一套最好(也可能最复杂)的框架,用DSL在框架之上编程。
闹了半天就是DSL和框架啊?智能到哪去了?
要想真正发挥人工智能的作用,我有两个思路:
-
自动提问
就算有了需求描述语言,人类就能准确描述需求吗?如果描述得不好,机器能否通过一些分析,针对不足之处,向人类提问,用答案来完善需求描述呢? -
自主学习
人工智能的精髓是自主学习。如果机器能学习世界上现有的代码,不需要人类特意为它提供需求描述语言和技术方案,就方便多了。最好是人类直接说需求,机器自己思考,有问题就提问。
有一个有趣的事——最初的自动编程是什么呢?当编译器技术刚发明时,它就是自动编程:自动把高级语言代码转化成汇编码或机器码。
我个人认为,凡是能给人类省事的技术,哪怕是if-else,也可以算是某种人工智能。
现在要求高了,编译器是硬编码的智能,而我们还要可扩展、甚至自动扩展的智能。现在的自动编程主要有两个流派:基于规则推理的、基于机器学习的(包括统计学习、深度学习等)。学术界对自动编程有一个更特别的说法——程序合成(Program Synthesis)。
由于机器学习的火爆,比较流行的似乎是基于机器学习(+深度学习)的自动编程,其中一种是通过学习输入输出数据的样本,自动“猜”出一个能处理这些数据的程序。
对此,摘录马毅教授的一条微博:数学告诉我们,无论overfit了多大的样本数据,经验事实如何震撼,也取代不了逻辑严格的推理证明——这是唯一能将结论从有限样本扩展到无限的方法。
例如一个递归程序,只有数学归纳法能准确生成它,任何有限样本都无法准确生成它(只能近似猜测)。对于有一点小bug就能出大事的程序,不能松懈啊。
因此我不是很赞成基于机器学习的自动编程,即使要用,也只是辅助手段吧。啊哈哈~
以上所述就是小编给大家介绍的《谈一谈自动编程》,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对 码农网 的支持!
猜你喜欢:- 编程范式 —— 函数式编程入门
- 【go网络编程】-HTTP编程
- 【go网络编程】-Socket编程
- c++并发编程—分布式编程
- Scala面向对象编程之Trait高级编程技术实践-JVM生态编程语言实战
- 函数式编程之数组的函数式编程
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
Python机器学习基础教程
[德]安德里亚斯·穆勒、[美]莎拉·吉多 / 张亮 / 人民邮电出版社 / 2018-1 / 79.00元
本书是机器学习入门书,以Python语言介绍。主要内容包括:机器学习的基本概念及其应用;实践中最常用的机器学习算法以及这些算法的优缺点;在机器学习中待处理数据的呈现方式的重要性,以及应重点关注数据的哪些方面;模型评估和调参的高级方法,重点讲解交叉验证和网格搜索;管道的概念;如何将前面各章的方法应用到文本数据上,还介绍了一些文本特有的处理方法。一起来看看 《Python机器学习基础教程》 这本书的介绍吧!