The hottest intelligent software development progr

  • Detail

Intelligent software development: programmers and AI robots pair programming together

intelligent software development: programmers and AI robots pair programming together

15:22 source://

original title: intelligent software development: programmers and AI robots pair programming together

Lei Feng AI technology review note: with the development and application of AI technology, people's cognition of "artificial intelligence" has been constantly refreshed and expanded, In the eyes of the public, AI is becoming more and more powerful. It can not only defeat the top players of human beings in chess games, but also carry out speech recognition, automatic translation, face recognition, and even autonomous vehicle. Recently, Peking University and silicon core technology team jointly launched a new AI achievement, aixcoder, which uses AI technology to assist developers in automatic programming, which has ignited people's discussion and thinking about the great development potential of "ai+ software" and the development prospect of "software development automation"

making computers write code automatically is not only a concern in the field of software development, but also a long-term concern in the field of artificial intelligence. As early as 1964, solomonoff, a pioneer in the field of machine learning, once proposed that "for humans, writing computer programs is a difficult and time-consuming activity. Automating this process through automatic code generation or program induction is a long-term research topic in the field of artificial intelligence." In recent years, deepmind and Facebook have put forward similar discussions in their papers

then, without the intervention of human programmers, how about the current research progress of completely relying on AI technology for program code generation? The following are some typical research work in recent years:

in 2016, Google deep mind published a paper "neural programmer interpreters", which proposed a deep neural network model to generate simple programs by using the input and output results of the program, but the scale of the generated program is relatively limited, which is usually a short program composed of simple instructions

in 2017, Facebook also proposed a method of selecting instructions and combining programs on a data set containing eight basic instructions in its paper "unsupervised program induction with hierarchical general progressive neural networks"

in the same year, Microsoft published a paper "deepcoder: learning to write programs" on similar issues, which improved the speed of program generation, but failed to achieve a qualitative improvement in program size and generation effect

these achievements have played an important role in promoting the research of automatic program generation compared with ABS, but at the same time, it can also be seen that under the scenario of completely independent programmers, the preparation of industrial level programs still needs further research

different from the above research ideas, the research team from Peking University, especially with the development of mechanical parts in the direction of large-scale, complex, high-temperature and high-speed use environment, is committed to "assisting human programmers to automatically write program code". "Although the automatic generation of programs in scenarios that do not rely on human programmers at all still needs further research, we can use artificial intelligence technology to assist humans in programming." Li Ge, an associate professor of the Key Laboratory of highly trusted software technology of the Ministry of education at Peking University, told Lei Feng, "we have made important research progress in" using AI to assist programmers in programming to improve the efficiency and quality of programming. "

Li Ge's research team is one of the first teams in the world to engage in computer program analysis and generation research based on deep neural networks. His research achievements in code function semantic analysis, code automatic generation and completion have been highly concerned by peers at home and abroad. In recent years, the team has achieved a series of important research results and formed a number of important industry patents and academic papers. Based on the scientific research achievements, LIGO's laboratory is turning to industrial applications, and is committed to transforming "intelligent software development technology" into a commercial product aixcoder that can support industrial production

aixcoder intelligent programming robot

aixcoder is a new intelligent programming robot product, which provides services for programmers by "pair programming" with programmers, so as to improve the programming efficiency of programmers. With the help of aixcoder, the program will completely get rid of the traditional programming mode, and there is no need to write the program word by word

aixcoder can automatically predict the programmer's programming intention and continuously recommend "the next piece of code to be written" to the programmer. The programmer can directly confirm the next entered code by "one click completion", thus greatly improving the coding efficiency. At the same time, aixcoder can also intelligently search and recommend standard program codes similar to the current program function in the process of program programming, so as to provide a powerful programming reference for programmers. At present, aixcoder programming robot has launched Android, jfinal, tensorflow and other versions to assist programmers in different fields

according to Hao Yiyang, the core technician of the aixcoder r r & D team, introduced to Lei Feng: aixcoder adopts an advanced neural network model with a specific depth that is specially applied to program analysis and generation, and uses strictly screened massive domain source code data for training, so that aixcoder can fully learn and master the coding patterns and laws hidden in massive code, and use this information for subsequent code generation and completion

not only that, the trained aixcoder can also quickly understand a programmer's personal programming habits, and use advanced multi card technology to dynamically record programmers' commonly used program patterns, commonly used API call sequences, etc., so as to effectively and automatically assist programmers in the programming process, and assist programmers to automatically complete non creative programming work to the greatest extent

at present, aixcoder adopts the operation mode of "cloud service", and its deep learning model is like the "programming brain" deployed in the cloud. Its client is integrated in the ide in the form of plug-ins, which realizes the seamless connection with mainstream integrated development platforms such as IntelliJ, eclipse, vs code, etc. programmers can realize the connection with "cloud AI service" through aixcoder plug-ins, and use their "programming brain" anytime and anywhere

at the same time, aixcoder can also provide customized and exclusive services in professional fields for software enterprises, and provide exclusive services for software enterprises in the way of internal cloud. A software outsourcing company that has used this service reported that aixcoder can not only effectively save programmers' development time, but also effectively reduce programmers' dependence on API documents or related information. "The time that originally needed to search for similar code and API usage patterns has been saved, and you can concentrate more on writing the code required by a specific system." From the perspective of programmers, with the help of aixcoder, developers can spend more time writing "new" code and improve their personal value

aixcoder research process

talking about the original intention of studying this intelligent programming robot, Associate Professor Li Ge said that the current software development process has the problem of "the defects in the development stage are delayed to be solved", that is, the program defects, errors and other problems that programmers fail to solve in the programming process often need to rely on subsequent code scanning, code review, program testing and other links to be found, Then send it back to the programmer's development site to solve it. However, when the above problems return to the development site, programmers often change the development scene long ago, and they can only modify the returned code by rebuilding the previous development site. This unreasonable process greatly delays the solution time of programming problems, resulting in the reduction of development efficiency

taking Baidu as an example, Wang Haifeng, senior vice president of Baidu, mentioned when attending the soft Expo this year that Baidu added 6700 new demand cards every day, the system was built more than 70000 times a day, and the system was launched more than 700 times a day. Under the pressure of such R & D needs, the installation of the experimental machine requires that software development must achieve rapid iteration, the R & D cycle must be shortened, and a large number of R & D needs must be completed in the programming stage, rather than "delaying the problems that should be solved in the programming stage to the subsequent links". Therefore, how to use intelligent means to improve the efficiency and quality of software coding has become an important issue in current software development

how to apply AI technology to software development, help developers solve more problems in the development stage, and improve the efficiency and quality of software development? This is the problem that associate professor Li Ge's research team has been thinking deeply. In order to help programmers write programs, AI model must first understand the programs written by programmers and understand their programming intentions. With this thinking, they began the research of program code analysis and generation using deep learning technology

at the end of 2013, Li Ge served as a visiting scholar in the Artificial Intelligence Laboratory of Stanford University. At that time, researchers in his same laboratory were engaged in research related to natural language processing based on deep learning. He is inspired by the research methods in these related fields. He believes that a specific deep learning model can be used to analyze the semantics of program code. However, there are many differences between program languages and natural languages:

first of all, program languages usually describe semantics based on three types of grammatical structures: sequence, branch and cycle, which has a stronger structure, and the structural information of programs has many ways of expression, such as data flow diagram, control flow diagram, call diagram, program aspect diagram and so on

secondly, the overall semantics of the program is less dependent on the meaning of a single word, and its literal semantics may be quite different from the semantics of the program, with stronger abstraction

thirdly, the granularity of program analysis is larger than that of natural language. Usually, the analysis unit is module. A program module usually contains many closely related statements

in addition, program semantics also depends on a lot of background knowledge, such as API knowledge, domain requirements knowledge, and so on

the existence of these problems makes LIGO realize that if he wants to know the semantics expressed by the program, he must design a new model suitable for the program language

based on years of research foundation and in-depth thinking on program characteristics, LIGO research team designed and constructed a series of deep neural network models specially used for program analysis and generation. At the same time, they used the open source resources obtained from GitHub, stackoverflow, etc. after a series of cleaning, analysis and annotation, they accumulated a large number of standardized program code data to support the training of deep neural networks, and finally obtained excellent training results, forming a number of industry-leading scientific research achievements, which constitute the foundation of aixcoder

taking the tensorflow version of aixcoder as an example, they used more than 300000 processed tensorflow source codes as training data, so that the neural network model learned the knowledge and experience of various normative patterns, potential rules, common API sequences, habitual coding modes, etc. needed to write tensorflow codes. In the process of programmers writing code, aixcoder can

Copyright © 2011 JIN SHI