News

NEWS & ARTICLES

Accelerating Zoea Regression Testing

09 Nov 2024

A simple expedient can speed up Zoea regression testing by up to two orders of magnitude.

Towards a Self-Optimising Codebase

07 Nov 2024

Optimisation of Zoea knowledge sources could be automated using evolutionary programming. This is facilitated by Zoea's blackboard architecture.

AIAI 2024 Conference Paper

20 Aug 2024

Zoea recently presented a peer-reviewed research paper entitled Test Case Features as Hyper-heuristics for Inductive Programming at the AIAI 2024 Conference in Corfu, Greece. A version of the paper is also available on the Cornell University preprint server at arXiv.org.


https://arxiv.org/abs/2407.00519

The Instruction Subset Hypothesis

23 Jun 2024

Instruction subsets and related approaches are underpinned by a hypothesis that making generated code more closely resemble that produced by humans also reduces the effort required to find solutions. The results of several studies provide dramatic confirmation of this idea, however it's still not totally clear why this is so.

Developer Half-Life and the Value of AI Code

02 Jun 2024

Developer half-life is the time required for 50% of a developer's code to be eroded by later commits. This measure correlates directly with developer experience and represents a proxy metric for code value. In a mixed human-AI codebase, half-life could be used to assess the relative value of AI generated code.

Is Natural Language Really the Future of Coding?

01 Mar 2024

Tools built on top of large language models can produce impressive looking code in response to text prompts. Is this enough to enable non-technical people to produce real software?

Partial Evaluation of Knowledge Sources

12 Jan 2024

Zoea has used a program optimisation technique called partial evaluation to produce many additional variants of its knowledge sources - specialised for different instruction subsets. This improves Zoea runtime performance by over an order of magnitude.

Amplifying Tacit Knowledge

11 Sep 2023

Instruction subsets generalise beyond the training set due to increased instruction co-occurrence variety obtained through clustering. Zoea uses the same principle to further boost generalisation significantly in a process called amplification.

Compilation of Instruction digrams

28 Jul 2023

Implementing instruction digrams in Zoea turns out to be a simple matter of creating additional instruction subsets. These are produced up-front, meaning that instruction digrams have zero additional processing overhead at run-time.

Instruction digrams

21 Jun 2023

Zoea has come up with another simple way to make the search space for inductive programming even smaller. This time we use instruction digrams to shrink the problem by another 1000 times.

New Paper on Instruction Digrams Released

31 May 2023

Zoea have extended the instruction subset approach with a new technique called instruction digrams. These capture the frequency distribution of direct instruction application in human originated code. The result is a further reduction in the size of the inductive programming search space of several orders of magnitude. The approach is described in a paper that is available on the arXiv.org pre-print repository at Cornell University.


https://arxiv.org/abs/2305.13347

Using Large Language Models with Zoea

16 May 2023

Large language models show promise in automating the production of software however significant hurdles remain. Plugging Zoea into the workflow makes a lot of these problems go away.

Defusing the Combinatorial Explosion

10 Mar 2023

The combinatorial explosion has been one of the biggest challenges in AI since its inception. Now, Zoea has found a way to dramatically shrink the problem.

Zoea at ICAART-2023 Conference

8 Mar 2023

Zoea presented a paper at the 15th International Conference on Agents and Artificial Intelligence, ICAART 2023 which was held in Lisbon, Portugal, 22 - 24 February 2023.


The paper titled Shrinking the Inductive Programming Search Space with Instruction Subsets describes an important breakthrough in addressing the combinatorial explosion that will enable Zoea to generate large programs in less time - by many orders of magnitude. A pre-print of the paper is available on the arXiv.org repository at Cornell University.


https://arxiv.org/abs/2302.05226

Synthetic Test Cases

18 Jan 2023

Zoea uses synthetic test cases to represent internal data transformations. What are they and why are they so useful?

Coding Isn't a Numbers Game

19 Dec 2022

There is a fundamental disconnect between what is regarded as success when building an AI as opposed to code. This has serious implications for AIs that produce code.

Can Software Escape Zipf's Law?

15 Oct 2022

Nobody knows why the rank frequency distribution of instructions in code follows Zipf's law. But does it have to be this way?

Characterising Code Directly from Test Cases

18 Jun 2022

Computer programmers can frequently identify the corresponding code directly from one or more test cases. How can we get computers to do the same?

Zoea Ported to Amazon EC2

12 Apr 2022

Zoea - the revolutionary AI that generates code automatically from test cases - has been ported to Amazon Elastic Compute Cloud (EC2). In the process the core Zoea architecture has been optimised to make it completely asynchronous and stateless. This enables Zoea to efficiently employ any number of cores with extremely high utilisation, and helps to linearise the economics of Zoea resource investment.


As a result Zoea is now able to leverage virtually unlimited computing resources allowing it to compile much larger and more complex programs in less time.

Prolonging the Shelf Life of Software

21 Mar 2022

Even the best software begins to degrade almost as soon as it is written. Why is this and what if anything can we do about it?

Anatomy of a Zoea Knowledge Source

30 Jan 2022

Zoea contains a lot of knowledge about programming language concepts and how they can be utilised to produce code. It turns out that the way this knowledge is represented and structured is surprisingly simple.

Emergent Behaviour and AI

06 Dec 2021

Emergent behaviour is a characteristic of many AI systems. So what exactly is it and how important is it that we understand what's going on?

The Next AI Language

15 Nov 2021

Composable inductive programming is the next stage in the evolution of software development. What does this mean for AI?

Zoea at AI-2021 Conference

29 Oct 2021

Zoea have a short paper at the Forty-first SGAI International Conference on Artificial Intelligence AI-2021 (14-16 December 2021). The paper Knowledge-Based Composable Inductive Programming outlines Zoea from an AI perspective. 


http://www.bcs-sgai.org/ai2021/

The Secret Life of a Zoea Test Case

29 Sep 2021

Test cases play a central role in the automatic generation of software using Zoea. While test cases are conceptually simple, Zoea uses a number of variants so it is useful to understand their different characteristics and the relationships between them.

Where Does Software Compexity Come From?

16 Sep 2021

Software complexity is a measure of how difficult it is to produce a piece of code. Does this complexity come from the problem that is being solved or from the programming language that is used, and how can we tell?

String Rewriting in Zoea

07 Aug 2021

String rewriting systems are a type of program that converts text according to a set of rules. They have a wide range of practical uses but also serve as an important theoretical model for computer science. So how would you code a string rewriting system in Zoea?

New Paper on The Composability of Intermediate Values

17 Jul 2021

Can Zoea really be used to create software of any size? A study recently published on arxiv.org has the answer.


96,000 programs of different sizes were randomly generated and turned into test cases. The test cases were then used to regenerate versions of the original programs using Zoea. The results show linear relationships between the number of intermediate values and program size, and between the number of test cases and program size.

Zoea Video Tutorials Available

18 Jun 2021

Zoea have released a series of video tutorials for the Zoea Specification Language (ZSL) and Zoea Visual on YouTube.


https://www.youtube.com/playlist?list=PLDSPhHvPoOtpIupEQUpCWgSLpTUy6No5-

Zoea Visual Examples Published on Rosetta Code

16 Jun 2021

There is now a Zoea Visual page with a number of examples on Rosetta Code. Rosetta Code is a popular programming language comparison site where solutions to a wide range of programming tasks are provided in many languages.


http://rosettacode.org/wiki/Category:Zoea_Visual

What Makes Learning to Code so Hard for AI?

14 Jun 2021

People have managed to build AI systems that do lots of interesting and useful things. Yet building an AI that can code has proved elusive - until recently. Zoea is the first and so far the only AI that enables people to produce software of any size. So why has it taken so long for AI to learn to code?

Why We Need to Move Away from Algorithms

30 Apr 2021

Algorithms - particularly in the context of AI - have been coming in for a lot of negative attention lately. Maybe it's time for people to take a less hands-on approach in their creation.

Can data be Turing complete?

23 Feb 2021

It isn’t difficult to show that the Zoea programming language is ‘Turing complete’. However, this raises some interesting questions about the nature of programming languages.

Enabling Computers to Program Themselves

12 Jan 2021

Future AI systems ought to be able to write their own code. Zoea has the potential to make that possible.

Zoea Documentation Update

10 Dec 2020

Zoea have made available a user guide and a set of examples for Zoea Visual. The user guide provides a detailed description of the Zoea Visual language and case editor tool. The examples document includes 27 simple Zoea Visual programs together with a discussion of the approach and implementation in each case. The core Zoea language definition document has also been updated.

The Expressive Power of Zoea

05 Dec 2020

Zoea is an AI that lets anyone who can describe a problem as a set of input and output examples produce real code. Some might ask can Zoea really produce all the programs that a conventional language can just by writing test cases? The short answer is yes.

Subsidiary Test Cases in Zoea Visual

03 Nov 2020

The Zoea Visual programming language now allows developers to define programs using a hierarchy of embedded test cases. This significantly reduces the number of test cases required to define large and complex programs.

Zoea Visual Paper Released

21 Sep 2020

Zoea Visual is described in detail in a new research paper recently uploaded to the arXiv.org repository at Cornell University. The paper covers the design of the visual language and associated tools. It also shows how the combination of inductive and visual programming represents a new approach that is easy to learn, usable and expressive.

Zoea Goes Visual

10 Sep 2020

Zoea is already one of the simplest programming languages in existence. In order to improve its usability even further we have recently added a graphical programming language variant called Zoea Visual.

Set-Cover Abduction in Zoea

01 Aug 2020

Many of the facts and events that we observe can have multiple and even inconsistent interpretations yet people are generally able to make sense of it all. So how does an AI like Zoea deal with this kind of messy complexity?

Migrating Existing Code to Zoea

17 Jul 2020

Zoea is the first AI that can automatically generate software of any size from a set of test cases. This is a big deal that will ultimately transform the nature of software development forever. But what about all the software in other languages that already exists? 

The Inescapable Future of Coding

30 Jun 2020

AI is expected to have a significant impact on coding. One such AI is Zoea which creates software automatically from a specification that looks like a set of test cases. This will enable many more people to produce software but it will also fundamentally change our relationship with code.

Idiomatic Zoea

05 Jun 2020

When we learn a new programming language there are often concepts that we can bring along from previous languages we have encountered. For example, most developers can articulate the guidelines concerning what constitutes a good variable name.


These rules have evolved over a long period of time and apply with variations to virtually every language. Similar sorts of guidelines exist for other programming language elements such as control structures. But what if your new language doesn't have any variables or control structures?

Zoea Concepts and Terminology

31 May 2020

This article briefly explains the main concepts and terminology used in Zoea.


Program - Every piece of software that is produced with Zoea is called a program. Every program has a single input and a single output. Inputs and outputs may be a single value like a string or a number, or they may be an array that holds many values. If a program needs to have multiple inputs or multiple outputs then the developer needs to use arrays for these.


Test case - Zoea programs are written by a developer as a set of one or more test cases. A test case is a scenario that describes exactly what should happen when a user runs a program. A simple test case might consist of a specific input (X) and a specific output (Y). This can be interpreted as saying that for this program if the user inputs X then the program will output Y. 

Second Zoea Paper Announced

19 May 2020

Zoea have published another research paper to the arXiv.org preprint server at Cornell University. The paper entitled "Quantifying the Impact on Software Complexity of Composable Inductive Programming using Zoea" presents results that show Zoea is simpler than conventional programming languages.


The paper includes analysis that compares Zoea with eight popular conventional programming languages in terms of the size of their grammar and the number of keywords. This shows that the Zoea language is between 25-30% as complex as the simplest conventional languages.

Zoea Examples Published on Rosetta Code

26 Apr 2020

There is now a Zoea page with a number of examples on Rosetta Code. Rosetta Code is a popular programming language comparison site where solutions to a wide range of programming tasks are provided in many languages.


http://rosettacode.org/wiki/Category:Zoea

A New Kind of Programming Language

04 Apr 2020

Some might say that the last thing the world needs is another programming language. There are literally thousands of them. To non-programmers they are all equally abstruse. Programmers on the other hand often feel very strongly about which is better or worse. Clearly they can’t all be right.


It’s hard to believe but virtually all programming languages were created in an effort to make programming easier for people. Remember that programming languages only exist for the benefit of humans - computers would get by just fine without them. So the evolution of programming languages has proceeded in a series of mostly small steps such as “lets use square brackets instead of round ones.” This is the reason why all programming languages are fundamentally so alike.

Zoea Manual Released

03 Dec 2019

Zoea have made available version 1 of their developer guide. This includes the complete syntax for the Zoea language and the simple rules governing how various syntactic elements can be combined.


The manual which consists of 7 pages is organised around the eight reserved words in the Zoea language. Comprehensive examples of how each keyword can be used are provided.

Zoea Research Paper Published

20 Nov 2019

Zoea have published their first research paper on the arXiv.org preprint server at Cornell University. Entitled "Composable Inductive Programming Without Limits" this paper describes the unique Zoea approach to automation of coding through AI.


Inductive programming which is the automatic generation of software from input-output examples has had a long history of sporadic progress. Until now its widespread adoption has been held back by its inability to cope with larger programs. Zoea incorporates a number of advances that overcome this problem. These include the ability to combine smaller inductive programs to form larger ones as well as the capability to specify any number intermediate values between inputs and outputs.