KEYNOTE 1: Alan Kay - Rethinking Design, Risk, and Software
Our increasingly complex needs have led us to build increasing complex software. We’ve done this in an incremental fashion, building code on top of code. We write understandable snippets of code built on programming languages we know well and then bundle them into program structures to perform complex tasks. This incremental process may seem to have low risk at the snippet level, but it leads to program structures that can be hundreds of millions of lines of code that is intractable to change, redesign, and understanding, nor in the end is it easy to design. It also leads to code with potentially unwanted emergent properties.
Today, we know how to create programs that can create programming languages. So why not write software that closely follows the problem, without a programming language, then let other programs create the programming language to support it? If we apply this rethinking to the design process, both problems and solutions can be thought of in terms of relational str