At the beginning of last year, Microsoft launched a machine learning system called deepcoder, and claimed that the system has the ability of self coding. This move further the development of artificial intelligence.
Just as AI is based on many machine learning or deep learning methods, the code created by deepcoder is also based on a large number of existing code examples, which researchers usually use for systematic training.
As a result, deepcoder’s software is a collection of some other manually written programs, which the famous magazine wired calls “other software for grabbing”.
Of course, although deep coder is not satisfactory, the research on application programming by software itself is still an extraordinary work and has the prospect of inspiring the whole digital world.
Intention based programming
When we want a software to write applications for us, what do we really want? The answer is: we hope that the application written by the software can better express our intention.
The term “intention based” comes from the recent rise of “intention based network”, which is a method of network configuration based on artificial intelligence. It can predict the business intention of managers.
Intention based network can help managers to formulate higher-level business policies. Then, it will verify whether it can implement the policies, and check whether it can make the configured network resources reach the ideal state, and whether it can effectively supervise the network state to ensure that all policies can be implemented continuously, and correct them when necessary.
For example, you can ask Alexa to write an application for you that tracks your album collection. At this point, Alexa will automatically write the code for you and show it to you when it’s done for you to use.
What is the principle?
Just taking Alexa as an example, it’s not hard to find that the way AI uses is to find an application that is similar to your requirements, and then adjust the code according to your needs, or select some code fragments to combine them.
In other words, Alexa takes a similar approach to deepcoder, which is to “borrow” code from elsewhere and combine it to meet the needs of current customers.
But it’s not the AI software that we really want to collect the manually written code, is it? What we are really looking for is the ability to write innovative software for applications.
In other words, can AI be creative when it comes to programming? Can it write truly innovative applications? These applications are unimaginable.
Fifth generation language
For decades, for computer science researchers, they have been looking forward to a software that can generate the required application according to the user’s intention. But in fact, according to Wikipedia, the fifth generation language wave in the 1980s tried to “let computers solve a given problem without programmers.”
The fifth generation language is a kind of intention that the computer is expected to solve the problem automatically. Based on some given constraints, it is handed over to the program for processing without the need for the programmer to invest manpower again. The idea seems promising, but experimental results show that it still has great limitations.
Only specifying constraints can solve the problem too idealized: most mathematical optimization problems are looking for a set of mathematical expressions, which can well describe the constraints.
One of the great challenges in creating applications is that the fifth generation of languages doesn’t express algorithms very well – programmers have their own specific steps when they write code.
Therefore, the development of the fifth generation language is not optimistic, although it promotes the rapid development of declarative and application specific languages, such as SQL and HTML, which distinguish user intent from underlying software.
But there is no doubt that expressing your intentions in declarative language is quite different from software that can write your own applications. Writing “select * from album” is far from writing “Alexa, an application for me to track my albums.” The missing part of the fifth generation is AI.
In the 1980s, there was no way for software to write its own applications, but with the rapid development of artificial intelligence, the idea was no longer out of reach. The ability of the fifth generation language to deal with simple optimization tasks promotes the development of computer algebra system, which is also known as computer generation algorithm. Of course, development is not limited to this.
There are also some research projects, such as Google’s automl, which can build a neural network architecture based on machine learning. You can think of neural network architecture as an application, although it uses artificial intelligence technology. In this case, we have intelligent AI software that can write applications.
Automl and similar projects have broad development space. However, we are still not closer to Skynet, and even these efforts are not enough to match the intention based programming goals we described earlier.
In essence, automl and intention based programming are moving in different directions, because they have different ways of dealing with how users express their intentions. As shown in the above example, Alexa is human centered and can provide a consumer oriented user experience by using Alexa’s natural language processing ability and other contextual skills.
In automl (or any machine learning or deep learning work), engineers must correctly describe constraints (such as user intent).
For example, if you want to teach artificial intelligence to recognize a cat’s picture, you should have the following constraints: in a dataset containing one million pictures, at least 100000 of them contain a cat. Software may be able to distinguish them correctly, or it may be able to distinguish errors, but it will learn in every attempt.
So what are the effective constraints of the album tracking app I want? At present, this problem is still beyond the scope that we can solve.
At present, although artificial intelligence can not create an application that can meet the user’s intention, it has been applied in some simple application scenarios. What we have achieved now is artificial intelligence that can analyze patterns from large datasets.
If we can apply the algorithm to the data set, maybe we can make some progress. For example, if an AI based application can access a large number of manually created workflows, it can well predict the next step in your current workflow.
In other words, we call the function of the algorithm we have now “the next best action”. We may still need more efforts to make the software understand our requirements for the application. At present, we can use AI to explore the steps to achieve this goal.
AI can provide some suggestions for finding the “next best action”, but it can’t build the whole algorithm systematically, which looks more like enhanced intelligence than artificial intelligence.
We are trying to create a kind of software that can express human intention, not just solve problems automatically. Of course, we still need to help build the application, but make the process as simple as possible.
Based on this, the emerging low code or no code platform market in this direction of rapid innovation and development is not so strange.
Today’s low code or no code platforms can support complex, domain specific declarative languages, enabling people to express their intentions in English like expressions (or other human languages).
They also have the ability to template applications and application components, enabling users to assemble applications in a simple way like “drag and drop.”
Now, many low code or no code platform vendors are looking for ways to apply AI to them, which will increase the ability of application creators and help them specify the algorithms they want their applications to follow.
Maybe one day, we can directly tell these platforms what our requirements are, and then they will be automatically written for us. Although our technology has not developed to this extent, today, we are closer to the goal than low code or no code platform, and innovation is developing at an amazing speed. I don’t believe it will take long.
Read the original text
This is the original content of yunqi community, which can not be reproduced without permission.