It can c0de!

@Gluk

Blog about creating a Computer Programmer AI

457 words

Guestbook
You'll only receive email when It can c0de! publishes a new post

Lexic

Acronym Meaning
AI Artificial Intelligence
CPAI Computer Programmer AI
CPI Collection of Programming Instruction
PI Programming Instruction
SPIEO Set of Pairs "Input-Expected Ouput"

A new challenge

This journal, or collection of notes, is about a documenting concepts and ideas to create a Computer Programmer AI (CPAI).
What is refered by a CPAI is an application that is capable of producing software code to solve specific problems.

The idea of is based on modern software architectures and AI modern technics to create an application that can deduce or guess an algorithm based on a provided Set of Pairs "Input-Expected Output" (SPIEO) and a Collection of Programming Instruction (CPI).
If an algorithm is found that solves the SPIEO using the CPI, it will be memorized as a new Programming Instruction (PI) in the CPI.
The SPIEO are provided in the form of a validation function or a validation program.
It would be as if a unit test function is provided to a software developer for him to code the logic that will pass all the assertion in the test.

This means the CPAI will need to be teached through SPIEO for it to discover new algorithm that will enriched its CPI.

To resume, the objectives would not be to create an AI that would develop application by understanding the meaning of a given instruction such as "create a program/function that do this" but it would rather be to create some sort of super software developer assistant.

The developper/architect can access the collection of algorithm produced by the CPAI like he would by using a library (like boost for example) but if no function matches what the developper/architect needs, he can create a SPIEO for the CPAI to generate the required behavior function.

The advantages of the CPAI would ideally be:

  • for the developer/architect to focus on high level behavior instead of implementation
  • to improve software quality by using function that would always be tested (Test Driven Developement)
  • to reduce development time by focus on developping only test units (SPIEO) for new functions instead of having to develop the function + the testing function(s)
  • to create more efficient code (time and size) that a human would
  • to create a centralized bank of utilities functions without having to multiply third party libraries
  • to create more complex function faster than a human would

The idea to produce a program such as the CPAI, is to start small (small CPI and simple SPEIO) from an initial concept (that will be described in another note) and adapt the architecture and the concept iteratively based on the progress and challenges met.

Please feel free to provide ideas and inputs that would make this challenge a success.