higher, more appropriate, level of abstraction. It still entails writing programs, usually by using symbols, keywords, and operational instructions to tell the computer what we want it to do. A compiler is but a means to translate in reverse, down the generation ladder, rendering high-level programs readable and executable by the machine. And programming still requires testing and debugging, or preferably verification, to make sure that what we told our computer to do will have the results we desire. Moreover, we also must carefully specify the very the author describes his dream about freeing ourselves from the straightjackets of programming, making the process of getting computers to do what we want intuitive, natural, and also fun. he recommends harnessing the great power of computing and transforming a natural and almost playful means of programming so that it becomes fully operational and machine-doable. David Harel Weizmann Institute of Science