This Week in Programming: The Dream of AI-Driven Program Synthesis
It might be a bit of a dream for every coder out there, to write the code that would completely automate what they do, so they might be paid to do nothing at all… right? At some point, that dream becomes a nightmare, however, when the coder is completely replaced and automated out of a job.
Fret not, we’re nowhere close to that yet, but the Massachusetts Institute of Technology IT this week of yet another step on the way to automated code creation with its write-up of a new program-writing AI called SketchAdapt, which “learns how to compose short, high-level programs, while letting a second set of algorithms find the right sub-programs to fill in the details.”
People have been saying for a while that deep learning needs to be combined with symbolic AI (aka good old-fashioned AI, or GOFAI).
MIT researchers now have a system called SketchAdapt which does that to write its own programmes.https://t.co/uYMFkFq8u8
— Calum Chace (@cccalum) June 17, 2019
“Unlike similar approaches for automated program-writing, SketchAdapt knows when to switch from statistical pattern-matching to a less efficient, but more versatile, symbolic reasoning mode to fill in the gaps,” they write. “Rather than rely on experts to define program structure, SketchAdapt figures it out using deep learning. The researchers also added a twist: When the neural networks are unsure of what code to place where, SketchAdapt is programmed to leave the spot blank for search algorithms to fill.”
The SketchAdapt program was created by Armando Solar-Lezama, a professor at MIT’s Computer Science and Artificial Intelligence Laboratory (CSAIL). The name may sound familiar, because this isn’t his first foray into the realm — he first created Sketch, which was “based on the idea that a program’s low-level details could be found mechanically if a high-level structure is provided” and saw “spinoffs to automatically grade programming homework and convert hand-drawn diagrams into code.”
For those interested in a bit more behind the scenes, this video shows a class by Solar-Lezama on precisely these ideas, but… ten years ago:
This Week in Programming
- Visual Studio Code for Java: While the first Java language server for Visual Studio Code was developed during a hackathon a few years back, Microsoft has now made it official with the release of the Visual Studio Code installer for Java. In the blog post, Microsoft touts its recent commitment to Java, noting that Microsoft Azure became a Platinum Sponsor of the AdoptOpenJDK project back in 2018, and calls it “a turning point for us so much we’ve also added a functionality to detect and help developers install a JDK binary in their environments, having AdoptOpenJDK as the recommended distribution.” Thus, the installer of Visual Studio Code for Java developers, which “automatically detects if you have the fundamental components in your local development environment, including the JDK, Visual Studio Code and essential Java extensions.” The installer will detect and install all the tools needed, but if you’re looking for more info on how to get started, check out their tutorial. Currently, the installer is available for download for Windows, with a macOS version on the way.
- Java (and More) Comes to App Engine, Too: While we’re here talking about Java, Google has also added the Java 11 runtime to App Engine in beta. Now, developers can use the latest Long-Term-Support version of the Java programming language to develop and deploy your applications on Google App Engine. Google notes that the Java 11 runtime does not provide a Servlet-based runtime anymore, which means that you need to bundle a server with your application, giving you the freedom to choose whichever library or framework you want, such as Spring Boot, Vert.x, SparkJava, Ktor, Helidon or Micronaut. Beyond Java, App Engine also doubled the memory and added Go 1.12 and PHP 7.3 to its list of App Engine second generation runtimes, “which let you use any language library, have direct network access, and connect to Google Cloud VPC Networks, giving you a more idiomatic developer experience, support for native modules and faster execution.” Second generation runtimes announced in the last year include Node.js 10, PHP 7.2, Python 3.7, and Ruby 2.5 (alpha) — and now, Java 11, Go 1.12, and PHP 7.3.
Programmers: we want a language that's easy to use and give us clear and concise control over the code we write.
Same programmers: you mean i have to handle errors explicitly whenever they happen in the code? Oh no no no, that should be magical.
— Vladimir Vivien (@VladimirVivien) June 20, 2019
- GitHub Package Registry Gets Rid of Deletes, Adds Beta Testers: GitHub’s newly announced Package Registry has made some updates after a month of beta testing, with the first being the removal of the ability to delete a package that other projects may depend upon. “When a project depends on a package,” they write, “the package should be available for as long as it’s needed within the project. To avoid breaking projects that may depend on a package, GitHub Package Registry no longer supports deletion of packages or versions through the GitHub UI or APIs. In exceptional cases, users can create a request to delete a package via GitHub Support, and we will work with authors to address their concerns.” Beyond barring deletion, the company has also added 2,000 additional accounts into the beta program, with more on the way.
- GitHub Offers Code Review with Pull Panda Acquisition: GitHub has said that it now offers a better way to collaborate on code reviews after acquiring Pull Panda, which helps teams “create more efficient and effective code review workflows on GitHub.” The tool provides three features: Pull Reminders, a Slack reminder when a collaborator needs a review, Pull Analytics, and Pull Assigner, which automatically distributes code across a team. The three features are now available for free as one GitHub Marketplace application — Pull Panda — while GitHub works to integrate them fully. DevClass writes of the acquisition that Pull Panda isn’t the first, with GitHub having purchased WYSIWYG web design tool Easel in 2014, Ordered List in 2011, and Spectrum and Dependabot after becoming part of Microsoft last year.
- GitLab Aids Workflow with Scoped Issue Labels: Looking to the other side quickly, GitLab has unveiled scoped issue labels, which it admits might seem like “too small of a feature to make a splash” but says is worth paying attention to as it “might help reduce cycle time.” Basically, with Scoped Labels, “teams can apply mutually exclusive labels (that share the same scope) to an issue, merge request, or epic, solving custom fields and custom workflow states use cases. Scoped Labels make it possible for teams to define a basic custom field that avoids confusion and cleans up issue lists (i.e. fewer duplicate labels).” Rather than writing more about it, here’s a quick walk-through video that does the explaining.
- Envoy Proxy Goes Mobile: Envoy Proxy has gone mobile, with the release of Envoy Mobile, an iOS and Android client network library. Lyft, the company behind Envoy, explains that Envoy was first released with the idea in mind that “the network should be transparent to applications” and “when network and application problems do occur, it should be easy to determine the source of the problem,” but “the reality is that three 9s at the server-side edge is meaningless if the user of a mobile application is only able to complete the desired product flows a fraction of the time.” Hence, Lyft is pushing Envoy beyond the edge and into mobile devices, where Envoy Mobile, in conjunction with Envoy in the data center, will expand to “the entire distributed system network, not just the server-side portion.” Envoy Mobile is meant to be compiled directly into client mobile applications for both iOS and Android.
The 2 hardest problems in programming are:
1. Let's not invest time and money in the new thing.
2. Let's not invest time and money in the old thing because a new thing is coming.
— Dave Rupert (@davatron5000) June 19, 2019
Feature image by Tumisu from Pixabay.