Читать книгу Rethinking Prototyping - Группа авторов - Страница 103

1 Introduction

Оглавление

Design computation is understood to mean the direct application of computational concepts and operations to the formulation and resolution of design problems. In this approach, the designer, architect or engineer, etc. - directly or indirectly - writes a computer programme whose execution generates the design configuration and geometry. This can be contrasted to other non-computational forms of design, where the final resulting configuration and geometry are manually constructed by the designer or draftsman potentially with the assistance of an interactive computer graphics application. In this manual approach there is no representation of the design logic or intent which is independent of the geometry created.

In computational design, the designer must not only think about the result that he wishes to achieve but also the exact sequence of operations or intermediate constructive elements that when executed will achieve the desired outcome.

Design computation is an example of an investment-reward process. It is generally agreed that if the designer can make the initial investment in such a generative programme, then it will be subsequently much easier to explore alternative design options simply by changing the value of the driver variables, watching and evaluating alternative designs being generated. The challenge is to create a computation environment which can provide a gentle learning curve for designers with little or no prior computational experience to start this investment-reward process. Such a system must both provide the designer with immediate practical results, the reward, and at the same time encourage him to take risks and explore new unfamiliar concepts and techniques, the investment.

1.3 What Are the Characteristics of Computational Tools That Are Appropriate for Design?

To create a successful design-computation system, which can be an appropriate learning environment, we have to address the process by which designers express design logic both either explicitly or implicitly as executable code and the characteristic of the tools or languages, which might be used. For example, how do the characteristic of the tools and languages relate to the skills or interests of the designer?

In the main, conventional computer programming or scripting languages, such as Python, Java, C# and VB are based on imperative programming. “Imperative programming is a programming paradigm that describes computation in terms of statements that change a program state. In much the same way that imperative mood in natural languages expresses commands to take action, imperative programs define sequences of commands for the computer to perform”[1].

There are many successful examples of imperative languages being used in design computation, but for the designer with no prior computational experience these languages often present an abstraction barrier. “The abstraction barrier is determined by the minimum number of new abstractions that must be mastered before using the system” [2]. Applying this to learning and using an imperative language, and we can see that the number of abstraction that have to understood and operationalized is quite daunting for designer, as the novice programmer.

The question remains, how can we offer tools to the designer that avoids this initial abstraction barrier? The long-term objective is not to encourage the designer to completely avoid imperative programming. Indeed this type of programing has considerable applicability and value to design computation and the abstraction barrier is not insurmountable. The approach proposed here is to gradually introduce this and other advance computing concepts via a less arduous route and at the appropriate moment when the designer has recognised the limitations of other more easily learnt approaches.

Rethinking Prototyping

Подняться наверх