An Enhanced Programming Environment for Generative Design Guilherme Ferreira Thesis to obtain the Master of Science Degree in Information Systems and Computer Engineering Supervisor: Prof. Dr. António Paulo Teles de Menezes Correia Leitão Examination Committee Chairperson: Prof. Dr. Alberto Manuel Rodrigues da Silva Supervisor: Prof. Dr. António Paulo Teles de Menezes Correia Leitão Member of the Committee: Prof. Dr. Daniel Jorge Viegas Gonçalves May 2016 Agradecimentos Agradeço... Pimeiramente à minha mãe pela sua dedicação e sacrifício, que mesmo passando por todas as dificuldades diárias a que um imigrante é sujeito, acreditou no seu sonho e conseguiu proporcionar-me uma boa educação e um futuro próspero. À Adriana, pelo seu amor e parceria na luta diária, apoioando-me nas horas mais difíceis e fazendo-me acordar quando já estava adormecido. À Noire, a minha rafeira alentejana que passou a tese inteira a fazer-me companhia, ressonando enquanto eu escrevia. Aos meus amigos Bruno Fernandes, Aldemiro Costa, Rafael Baltazar, Samuel Coelho, Marcus Gomes, Se- bastião Maya e André Rodriques, pelo apoio e companheirismo. À Fundação para a Ciência e Tecnologia (FCT) pelo apoio financeiro para o desenvolvimento do projecto. Ao Professor Dr. António Leitão pela sua grande sabedoria, honestidade e orientação, especialmente a partir do momento em que comecei a minha vida profissional. As suas críticas muito asssertivas e as suas sugestões inovadoras, foram um dos motivos pelos quais este trabalho conseguiu atingir o seu objectivo. Mais que um professor, um grande amigo. Ao Robby Findler pela paciência e interesse em ajudar-me, mostrando que um bom âmbiente de progra- mação não se faz pelas suas ferramentas mas sim pelas pessoas que se dedicam ao seu desenvolvimento. Ao Fábio Pinheiro e ao Rafael Reia, companheiros do INESC que passaram horas comigo a descutir e a solucionar muitos dos meus problemas. Ao Bruno Ferreira pela amabilidade de dividir a sua bolsa comigo nos primeiros meses da tese. Ao gupo GAC, particularmente à Inês, à Renata, e à Sofia que aceitaram participar na avaliação do meu trabalho e também ao Pedro Alfaiate, Artur e Guilherme Barreto pelas suas valiosas críticas e sugestões. Para finalizar, aos meus familiares que acreditaram em mim e deram-me a força e motivação para atingir o meu propósito, em particular aos meus tios, Joel, Rita, Juliana e Cristina, à minha avó Marly e à minha prima Maria José. “The best way to predict the future is to invent it.” – Alan Kay Abstract Increasingly more architects are moving from the traditional architectural processes and the classic forms of architectural coding to a modern area called Generative Design. Generative Design (GD) is the application of computational methods to design architectural structures or objects. In this area, designers write programs that when executed produce geometric models. This movement is clearly visible both in the academia, with current architecture curricula adopting programming courses, and in the industry, with design studios re- placing traditional processes with computer applications. However, for the most users, the transition from computer-aided design (CAD) applications to GD methods can be quite significant. Therefore, it is important that GD systems encourage users to learn, giving them the necessary support to evolve their knowledge and strategies. Unfortunately, the most used systems are not capable of responding to this need because they are old or obsolete, or they do not enforce any good principle of software engineering such as document code. To overcome this problem, this thesis proposes two programming tools for GD systems, namely (1) sketch-program correlation tool that allows architects to use sketches and combining them with code, and (2) immediate feedback tool that accelerates the effect of actions in the program output. We found that while the first tool turns program documentation in a less tiresome task, consequently minimizing the lack of documen- tation in the GD programs; the second tool enhances the program visualization, creating a new medium that helps people to design programs. This thesis uses Rosetta tool to implement and validate the proposed tools, clearly showing the advantages of this modern programming environment over the most used systems for GD. Keywords: immediate feedback; image correlation; DrRacket; Rosetta Resumo Nos dias de hoje verifica-se uma clara evolução nas ferramentas utilizadas pelos arquitectos, havendo uma substituição dos processos arquitectónicos tradicionais e das codificações arquitecturais clássicas para uma nova área denominada Desenho Generativo. Desenho Generativo (DG) consiste na aplicação de métodos computacionais na geração de objectos arquitecturais. Nesta área, designers escrevem programas que quando executados produzem modelos geométricos. Este movimento é claramente visível tanto a nível académico, com o actual currículo de arquitectura que adopta cursos de programação, como na indústria com ateliers de design a substituírem os processos tradicionais por aplicações informáticas. No entanto, para a maioria dos utilizadores, a transição dos processos tradicionais para os métodos de desenho generativo pode ser sig- nificativamente difícil, pelo que é importante que os sistema de DG encorajem os utilizadores a aprenderem, dando-lhes o suporte necessário para evoluirem o seus conhecimentos e estratégias. Infelizmente, a maioria dos sistemas não é capaz de responder a esta necessidade por serem tecnologias antigas e obsoletas ou que não imponhem qualquer bom princípio da engenharia de software, tal como a documentação do código. Para ultrapassar este problema, esta tese propõe duas ferramentas de programação, nomeadamente (1) uma ferra- menta de correlação-programa que permite aos arquitectos combinarem código com esquissos arquitecturais e (2) uma ferramenta de feedback imediato que acelera o efeito das acções feitas no cógido mostrando-as imediatamente no output do programa. Verificámos que a primeira ferramenta torna a documentação do pro- grama numa tarefa menos cansativa, minimizando a falta de documentação dos programas de DG e que a segunda ferramenta melhora a visualização do programa criando um novo meio de auxílio que ajuda o desen- volvimento de programas. Esta tese utiliza a ferramenta Rosetta para implementar e validar as ferramentas propostas, mostrando claramente as vantagens deste ambiente de programação moderno sobre a maioria dos sistemas utilizados. Palavras-Chave: feedback imediato; correlação com esquissos; DrRacket; Rosetta Contents List of Tables xii List of Figures xv Acronyms xix 1 Introduction 1 1.1 Problem Statement . .1 1.2 Objectives . .2 2 Background 5 2.1 A Programming Framework . .5 2.2 Coding in Architecture . .6 3 Related Work 7 3.1 Programming System . .7 3.2 General-purpose systems . .7 3.2.1 Eclipse . .8 3.2.2 LightTable . .9 3.3 Teaching systems . 10 3.3.1 LOGO . 11 3.3.2 SmallTalk . 11 3.3.3 Processing . 12 3.3.4 Fluxus . 13 3.3.5 DrRacket . 14 3.3.6 PythonTutor . 15 3.3.7 YinYang . 15 3.4 Empowering Systems . 16 3.4.1 DesignScript . 16 3.4.2 Monkey . 17 3.4.3 Rosetta . 18 3.4.4 Grasshopper . 19 3.4.5 Dynamo . 20 3.4.6 Mathematica . 20 3.4.7 IPython . 21 3.4.8 MathCAD . 22 3.5 Summary . 22 3.6 Conclusion . 23 xi 4 Designing a Programming Environment for Generative Design 25 4.1 Design Principles: a recurring need . 25 4.2 Program Documentation . 26 4.2.1 Tools for documenting software programs . 27 4.2.2 Tools for documenting Generative Design programs . 29 4.3 An approach for documenting Generative Design programs . 31 4.3.1 Sketch-program correlation tool . 32 4.3.2 Dealing with images resources . 33 4.3.3 Automatically binding code with images . 33 4.3.4 Designing a fallback mechanism . 35 4.3.5 Presenting binding associations . 35 4.3.6 Strategies to improve the usability in the source code editor . 36 4.4 Immediate feedback . 36 4.4.1 Immediate feedback in Generative Design . 37 4.4.2 Immediate feedback tool . 37 4.4.3 The activities of program experimentation . 37 4.4.4 Improving program execution . 38 4.4.5 Program experimentation in Generative Design . 39 4.4.6 Inline sliders mechanism . 40 4.4.7 An inherent problem . 41 4.4.8 Adaptive sliders . 41 4.4.9 Dealing with errors . 42 4.5 Conclusion . 42 5 Implementing Programming Tools for Generative Design 43 5.1 Rosetta . 43 5.2 DrRacket . 46 5.3 Implementing the proposed tools . 48 5.3.1 Program-sketch correlation tool . 48 5.3.2 Immediate feedback tool . 52 5.4 Implementation Details . 54 5.4.1 General architecture . ..
Details
-
File Typepdf
-
Upload Time-
-
Content LanguagesEnglish
-
Upload UserAnonymous/Not logged-in
-
File Pages93 Page
-
File Size-