archives

Automatic Programming

Wouldn't the ultimate programming language be English? No, of course not, you say, it's too imprecise and ambiguous. (It's not even statically typed :^). From a programmer's standpoint, true -- but the programmer gets specs from somebody somewhere and is concerned with turning them into machine code.

So I'm not talking about cocktail-party English. I mean technical, jargon-laden English complete with embedded equations and diagrams such as the specs for a development project are written in anyway. And included is the assumption that it's not just one way, but there is a dialogue between the customer and the developer(s).

A bit of history: up until the early 80s, there was a strong subfield of AI called automatic programming. The idea was exactly the above: hand the system the same specs you'd give a human developer, and it did the rest.

Over the course of the 80s, AI collapsed. There was a boom in expert systems, there were Lisp machines, there was the Connection Machine. None lived up to its promise, and there was the concomitant bust. Automatic programming as a separate subfield of AI disappeared completely.

Even so, a lot of the stuff in languages now came out of 70s AI. Object-oriented languages look an awful lot like the "frame-based" AI languages at the semantic level. Any language with type inference is using a theorem prover to construct programs, just like the AP systems did.

One of my mentors at Rutgers did his PhD on the last AP project (Psi at Stanford). He claims that the ultimate downfall of AP was that you couldn't build the natural-language front end without cracking the general AI problem. (And no one has...)

So here's my question for the Ultimate Lambdas: skip the natural language. Design a formal input language for the front end. But still pose it at the semantic level of the specs. An expert system looks a lot like the kind of thing that goes on in an optimizing compiler. We have quite a lot of experience with automatic design and design assistants. Today's workstation has more horsepower than a Connection Machine. Why aren't we doing automatic programming?

Josh

CrossTalk: Secure Coding Standards

Increasingly, standards organizations are working on ways to improve software security. Accomplishing change through standards organizations can be harder than accomplishing change at any other organizational level, but when successful, can have a broader impact across the industry. The international standards bodies – International Organization for Standardization (ISO) and International Electro-technical Commission (IEC) – are working on a number of projects that affect software security...

This article is a useful starting point for information regarding various international standards related to the security implications of programming languages and programming practices.