For something so centered around automation, programming is an awfully manual process. Every time a developer churns out a new line of code, there’s a very good chance somebody has crafted the very same syntax–or something close to it–somewhere else in the world. Yet right this very moment, countless devs are toiling away at their own workstations, doing duplicate work and in the process, wasting precious time.
Now, the government agency that gave us the Internet is hoping to fix that problem. In concert with more than 20 computer scientists at three universities, DARPA is working on the programmer’s version of autocomplete and autosuggest. With this advance, coding the next killer app will be as easy as Googling for GIFs or accidentally drunk-texting the wrong thing to your ex. Okay, maybe not that easy but you get the idea.
PLINY, which is named after the Roman encyclopedia author, will use Bayesian statistics to mine an enormous trove of open source code for common properties and behaviors. As a developer types, the system will mine this reservoir of code for logical clues about what might come next.
The system will also streamline the process of debugging and spotting potential security flaws, leaning on the collective intelligence of millions of programmers in real time rather than the fleshy slab of tissue in one person’s skull.
The $11 million project–which is being led by Rice University–will unfold over the next four years as computer scientists figure out how to build a version of autocomplete smart enough to traverse billions of lines of code written in various languages.
…PLINY will need to be sophisticated enough to recognize and match similar patterns regardless of differences in programming languages and code specifications. The system will have to explore different ways of interweaving code retrieved through search into a programmer’s partially completed draft program and analyze the resulting code to make sure that it does not have bugs or security flaws.
The core of the system will be a data-mining engine that continuously scans the massive repository of open-source code. The engine will leverage the latest techniques in deep program analyses and big-data analytics to populate and refine a database that can be queried whenever a programmer needs help finishing or debugging a piece of code.
Just as some code editors today automatically suggest specific tags or commonly used properties, PLINY aims to make much more granular and complex suggestions based on code that’s already been written. If executed properly, it’s easy to imagine such a system speeding up the development process pretty dramatically. Or, if our experience with autocorrect on our phones is any indication, it could introduce a whole new kind of headache.