Hacker News new | ask | show | jobs
by ThePhysicist 3617 days ago
Very intersting ideas! I also think that in the future we will see a lot more declarative programming languages that model high-level concepts of a given program, while low-level "plumbing" code will be generated automatically. I'm not yet sure about the role that AI will play in this process though, and I think there are many things that we have to solve before we'll see something that can write generic programs.

Program synthesis is a very active field of research and many AI-based methods have been proposed in the last decades, IMHO what most systems lack is the applicability to real-world programming languages and use cases though.

Having worked on static program analysis, I know that even our current ability to understand and reason about existing programs is still very limited. A main reason for this is that most real-world systems are composed of many parts that are not easily specifiable under a single paradigm (e.g. templates, database code, configuration files).

To build a usable AI-based programming system, we will need:

* A description languge that is able to model ALL aspects of a given real-world system under a single paradigm

* A system to analyze and understand the artefacts produced by the above system

* A way to generate real-world code from the specification above, including a way to "fill in the blanks" that the user did not specify (as leaving out the details the whole point of such a system)

* A way to test the generated code against the specifications provided by the user and further "reasonable" assumptions, which will be needed as the specifications by the user will not be complete, see above

* A way to guide this process towards a reasonable program through user feedback within a reasonably small number of steps

While none of these things are impossible, implementing them is a significant challenge with a lot of unknowns for which we don't have good solutions yet.

I therefore think the first AI-based systems which we'll see in the coming years will be limited to specific problem domains (e.g. data analysis, logic programming) for which we can more easily build a system as the above.