Goto

Collaborating Authors

 programming system


ANPL: Towards Natural Programming with Interactive Decomposition

Neural Information Processing Systems

Though LLMs are capable of generating plausible programs, it's challenging to interact with the LLMs further to revise the program, especially if the user's specific requirements are different from the initial proposal. In this paper, we introduce ANPL, an interactive programming system that ensures users can always refine the generated code towards their specific programmatic intents via structureddecompositions. Borrowing the paradigm of sketching from program synthesis, an ANPL program consists of a set of input-outputs that it must satisfy, a "sketch" -- control/data flow expressed in precise code (e.g. Python), and "holes" -- sub-modules to be implemented by the LLM specified with natural language. The user revises an ANPL program by either modifying the sketch, changing the language used to describe the holes, or providing additional input-outputs to a particular hole, turning it into a sub-ANPL program that can be solved recursively. This workflow allows the users to offload programming burdens to the LLM as much as possible while retaining the ability to pinpoint and resolve bugs locally, without exposing the rest of the program to the LLM. We deploy ANPL on the Abstraction and Reasoning Corpus (ARC), a set of unique tasks that are challenging for state-of-the-art AI systems, showing it outperforms baseline programming systems that (a) without the ability to decompose tasks interactively and (b) without the guarantee that the modules can be correctly composed together. Additional evaluations on APPS, HumanEval, and real-world programming tasks have validated that the ANPL framework is applicable to multiple programming domains. We release the ANPL solutions to the ARC tasks as a dataset, providing insights into how humans decompose novel tasks programmatically.


ANPL: Towards Natural Programming with Interactive Decomposition

Neural Information Processing Systems

Though LLMs are capable of generating plausible programs, it's challenging to interact with the LLMs further to revise the program, especially if the user's specific requirements are different from the initial proposal. In this paper, we introduce ANPL, an interactive programming system that ensures users can always refine the generated code towards their specific programmatic intents via structureddecompositions. Borrowing the paradigm of sketching from program synthesis, an ANPL program consists of a set of input-outputs that it must satisfy, a "sketch" -- control/data flow expressed in precise code (e.g. Python), and "holes" -- sub-modules to be implemented by the LLM specified with natural language. The user revises an ANPL program by either modifying the sketch, changing the language used to describe the holes, or providing additional input-outputs to a particular hole, turning it into a sub-ANPL program that can be solved recursively.


AI Weekly: The promise and limitations of machine programming tools

#artificialintelligence

Machine programming, which automates the development and maintenance of software, is becoming supercharged by AI. During its Build developer conference in May, Microsoft detailed a new feature in Power Apps that taps OpenAI's GPT-3 language model to assist people in choosing formulas. Intel's ControlFlag can autonomously detect errors in code. And Facebook's TransCoder converts code from one programming language into another. The applications of computer programming are vast in scope.


Cpp-Taskflow v2: A General-purpose Parallel and Heterogeneous Task Programming System at Scale

arXiv.org Artificial Intelligence

The Cpp-Taskflow project addresses the long-standing question: How can we make it easier for developers to write parallel and heterogeneous programs with high performance and simultaneous high productivity? Cpp-Taskflow develops a simple and powerful task programming model to enable efficient implementations of heterogeneous decomposition strategies. Our programming model empowers users with both static and dynamic task graph constructions to incorporate a broad range of computational patterns including hybrid CPU-GPU computing, dynamic control flow, and irregularity. We develop an efficient heterogeneous work-stealing strategy that adapts worker threads to available task parallelism at any time during the graph execution. We have demonstrated promising performance of Cpp-Taskflow on both micro-benchmark and real-world applications. As an example, we solved a large machine learning workload by up to 1.5x faster, 1.6x less memory, and 1.7x fewer lines of code than two industrial-strength systems, oneTBB and StarPU, on a machine of 40 CPUs and 4 GPUs.


Convo: What does conversational programming need? An exploration of machine learning interface design

arXiv.org Artificial Intelligence

Vast improvements in natural language understanding and speech recognition have paved the way for conversational interaction with computers. While conversational agents have often been used for short goal-oriented dialog, we know little about agents for developing computer programs. To explore the utility of natural language for programming, we conducted a study ($n$=45) comparing different input methods to a conversational programming system we developed. Participants completed novice and advanced tasks using voice-based, text-based, and voice-or-text-based systems. We found that users appreciated aspects of each system (e.g., voice-input efficiency, text-input precision) and that novice users were more optimistic about programming using voice-input than advanced users. Our results show that future conversational programming tools should be tailored to users' programming experience and allow users to choose their preferred input mode. To reduce cognitive load, future interfaces can incorporate visualizations and possess custom natural language understanding and speech recognition models for programming.


DynamicPPL: Stan-like Speed for Dynamic Probabilistic Models

arXiv.org Machine Learning

We present the preliminary high-level design and features of DynamicPPL.jl, a modular library providing a lightning-fast infrastructure for probabilistic programming. Besides a computational performance that is often close to or better than Stan, DynamicPPL provides an intuitive DSL that allows the rapid development of complex dynamic probabilistic programs. Being entirely written in Julia, a high-level dynamic programming language for numerical computing, DynamicPPL inherits a rich set of features available through the Julia ecosystem. Since DynamicPPL is a modular, stand-alone library, any probabilistic programming system written in Julia, such as Turing.jl, can use DynamicPPL to specify models and trace their model parameters. The main features of DynamicPPL are: 1) a meta-programming based DSL for specifying dynamic models using an intuitive tilde-based notation; 2) a tracing data-structure for tracking RVs in dynamic probabilistic models; 3) a rich contextual dispatch system allowing tailored behaviour during model execution; and 4) a user-friendly syntax for probabilistic queries. Finally, we show in a variety of experiments that DynamicPPL, in combination with Turing.jl, achieves computational performance that is often close to or better than Stan.


The Three Pillars of Machine Programming

arXiv.org Artificial Intelligence

In this position paper, we describe our vision of the future of machine programming through a categorical examination of three pillars of research. Those pillars are: (i) intention, (ii) invention, and(iii) adaptation. Intention emphasizes advancements in the human-to-computer and computer-to-machine-learning interfaces. Invention emphasizes the creation or refinement of algorithms or core hardware and software building blocks through machine learning (ML). Adaptation emphasizes advances in the use of ML-based constructs to autonomously evolve software.


Natural Programming of a Social Robot by Dialogs

AAAI Conferences

This paper aims at bringing social robots closer to naive users. A Natural Programming System that allows the end-user to give instructions to a Social Robot has been developed. The instructions derive in a sequence of actions and conditions, that can be executed while the own sequence verbal edition continues. A Dialogue Manager System (DMS) has been developed in a Social Robot. The dialog is described in a voiceXML structure, where a set of information slots is defined. These slots are related to the necessary attributes for the construction of the sequence in execution time. The robot can make specific requests on encountering unfilled slots. Temporal aspects of dialog such as barge-in property, mixed-initiative, or speech intonation control are also considered. Dialog flow is based on Dialog Acts. The dialog specification has also been extended for multimodality management. The presented DMS has been used as a part of a Natural Programming System but can also be used for other multimodal humanrobot interactive skills.


Constraint Programming for Data Mining and Machine Learning

AAAI Conferences

Machine learning and data mining have become aware that using constraints when learning patterns and rules can be very useful. To this end, a large number of special purpose systems and techniques have been developed for solving such constraint-based mining and learning problems. These techniques have, so far, been developed independently of the general purpose tools and principles of constraint programming known within the field of artificial intelligence. This paper shows that off-the-shelf constraint programming techniques can be applied to various pattern mining and rule learning problems (cf. also (De Raedt, Guns, and Nijssen 2008; Nijssen, Guns, and De Raedt 2009)). This does not only lead to methodologies that are more general and flexible, but also provides new insights into the underlying mining problems that allow us to improve the state-of-the-art in data mining. Such a combination of constraint programming and data mining raises a number of interesting new questions and challenges.


Evaluations of the LODE Temporal Reasoning Tool with Hearing and Deaf Children

AAAI Conferences

LODE is a web tool for children that are novice readers, and is primarily meant for deaf children. It proposes written stories and interactive games for reasoning, globally, on the stories. In this paper, first, we motivate the rationale of LODE, and explain its reasoning games. Then we briefly describe the design of the web client-server architecture of LODE; the server employs a constraint programming system for creating and solving the LODE games in real time. Finally, we concentrate on two evaluations of the latest prototype of LODE: one with hearing novice readers; another one with deaf readers. We conclude by discussing the results of the evaluations, and their implications for LODE.