Since most end users lack programming skills they often spend considerable time and effort performing tedious and repetitive tasks such as capitalizing a column of names manually. Inductive Programming has a long research tradition and recent developments demonstrate it can liberate users from many tasks of this kind.
Key insights• Supporting end-users to automate complex and repetitive tasks using computers is a big challenge for which novel technological breakthroughs are demanded.• The integration of inductive programing techniques in software applications can support users by learning domain specific programs from observing interactions of the user with the system. • Inductive programming is being transferred to realworld applications such as spreadsheet tools, scripting, and intelligent program tutors.• In contrast to standard machine learning, in inductive programming learning from few examples is possible because users and systems share the same background knowledge.• The efficient induction of small but conceptually complex programs becomes possible because search is guided by domain-specific languages and the use of higher-order knowledge.Much of the world's population use computers for everyday tasks, but most fail to benefit from the power of computation due to their inability to program. Most crucially, users often have to perform repetitive actions manually because they are not able to use the macro languages which are available for many application programs. Recently, a first mass-market product was presented in the form of the Flash Fill feature in Microsoft Excel 2013. Flash Fill allows end users to automatically generate string processing programs for spreadsheets from one or more user-provided examples. Flash Fill is able to learn a large variety of quite complex programs from only a few examples because of incorporation of inductive programming methods.Inductive Programming (IP) is an inter-disciplinary domain of research in computer science, artificial intelligence, and cognitive science that studies the automatic synthesis of computer programs from examples and background knowledge. IP developed from research on inductive program synthesis, now called inductive functional programming (IFP), and from inductive inference techniques using logic, nowadays termed inductive logic programming (ILP). IFP addresses the synthesis of recursive functional programs generalized from regularities detected in (traces of) input/output examples [42, 20] using generate-and-test approaches based on evolutionary [35,28,36] or systematic [17,29] search or data-driven analytical approaches [39,6,18,11,37,24]. Its development is complementary to efforts in synthesizing programs from complete specifications using deductive and formal methods [8].ILP originated from research on induction in a logical framework [40,31] with influence from artificial intelligence, machine learning and relational databases. It is a mature area with its own theory, implementations, and applications and recently celebrated the 20th annive...