Automatic Programming is one of the most important areas of computer science research today. Hardware speed and capability have increased exponentially, but the software is years behind. The demand for software has also increased significantly, but it is still written in old fashion: by using humans. There are multiple problems when the work is done by humans: cost, time, quality. It is costly to pay humans, it is hard to keep them satisfied for a long time, it takes a lot of time to teach and train them and the quality of their output is in most cases low (in software, mostly due to bugs). The real advances in human civilization appeared during the industrial revolutions. Before the first revolution, most people worked in agriculture. Today, very few percent of people work in this field. A similar revolution must appear in the computer programming field. Otherwise, we will have so many people working in this field as we had in the past working in agriculture. How do people know how to write computer programs? Very simple: by learning. Can we do the same for software? Can we put the software to learn how to write software? It seems that is possible (to some degree) and the term is called Machine Learning. It was first coined in 1959 by the first person who made a computer perform a serious learning task, namely, Arthur Samuel. However, things are not so easy as in humans (well, truth to be said - for some humans it is impossible to learn how to write software). So far we do not have software that can learn perfectly to write software. We have some particular cases where some programs do better than humans, but the examples are sporadic at best. Learning from experience is difficult for computer programs. Instead of trying to simulate how humans teach humans how to write computer programs, we can simulate nature.
翻译:自动编程是当今计算机科学研究中最重要的领域之一。 硬件速度和能力已经大幅增长, 但软件却落后了多年。 对软件的需求也大幅增长, 但软件的需求仍然以老式写作: 使用人类。 当工作是由人类完成时, 有很多问题: 成本、 时间、 质量。 否则, 我们将会有很多人在这个领域工作, 像我们过去在农业工作一样。 人们如何知道如何写计算机程序? 很简单: 学习如何做到简单。 我们能否在软件上做同样的事情? 我们能否在软件上做同样的事情? 在工业革命期间,人类文明的真正进步出现了。 在第一次革命之前, 大多数人在农业工作。 今天, 极少数的人在这个领域工作。 类似的革命必须出现在计算机编程中。 否则, 我们将会有如此多的人在这个领域工作, 像过去在农业工作一样。 人们如何知道如何写电脑程序? 很简单: 学习如何做到简单简单。 我们能否在软件上做同样的事情呢? 我们能否在软件上学会如何写程序呢? 我们能否把软件放在如何学得更好呢? 在工业革命期间, 似乎这是可能的(到某种程度)