Programming in Eliza
OverviewSoftware engineering is the study and an application of engineering to the design, development, and maintenance of software. In most cases, when we talk about software engineering, we refer it to software developing, software testing and software debugging. End-user Software Engineering encourages end-users, that is people who are not professional software developers to get involved in the software development. However, the challenges remain as end-users are lacking significant knowledge of programming concepts, even the basics among which, e.g. statement, condition, and loop, are abstruse to acquire. In addition, end-users are usually lacking patience in the complicated developing processes especially when there're abundant errors or warnings reported which happen frequently on beginners. To make situation worse, current developing environments are developed for professionals that makes it even harder for beginners to set about.
In this research, we propose the framework that assist people to program by synthesizing the code from natural language descriptions; to spend less time on platform environments by making them unified; and to test and debug their code interactively via a conversation-based expert system. We believe it can make programming languages, APIs, and developing environment easy to learn, more efficient, and less error-prone. We have built a system to assist with program synthesis called Programming in Eliza (PiE). PiE can automatically synthesize programs from natural language conversations between Eliza and the user. PiE is useful for programming in domain-specific languages. We have implemented PiE to synthesize programs in the LOGO programming language, the Shell Scripting languages, and the Cisco ACL language. Our experimental results show PiE enables end-users with different programming skill levels to learn and program with better expereinces.