1.1 既是设计师,又是程序员
Created on Sun Jan 16 14:29:29 2022; Last updated on Wed Aug 21 22:50:37 2024 @author: Richie Bao
1.1.1 形式空间思维与数理逻辑思维
专业设计师(例如建筑、景观、规划、艺术等)和工程师(程序员)(例如计算机科学(computer science/SC)、数据科学(data science/DS)、程序设计(Computer Programming,CP)等)各自所受到的训练内容截然不同。设计师是设计出可供人们使用的实体及空间或虚拟对象,且能够给予精神上的愉悦,这个过程除了基本的专业知识,更多是形式空间思维的训练,例如测绘、制图、美术、构成、设计训练等。工程师(程序员)相对涉猎的各类专业更加丰富,较为核心的有CS、DS和CP等。根据专业解决问题内容的不同,偏向选择的语言类型有所出入,例如CS是研究计算机工作理论和应用(涉及人工智能、机器学习、安全和图形学等),通常会选择C、C++、Java、JavaScript 和 python等;DS以分析发现数据模式,以数据支撑决策为主,通常会选择 python、R、Java 和 SRS等。
正如 DS 具有更强的学科交叉性,服务于不同的专业领域,设计领域的数字化设计方向也在不断的得以充实、延申扩展,这包括参数化设计(Parametric design)、建筑信息模型(Building Information Modeling,BIM)、机器人智能建造、城市空间数据分析等内容。在数字智能化设计背景下,设计师的专业内容有必要增加编程设计板块。一方面强化已有的设计训练内容,增强解决问题的能力;再者可以不断拓展设计方法和分析途径,减弱设计软件壁障,成为具有编程能力的设计师和工具的构建者。
专业的程序员基本很难转专业到设计领域,因为设计师更多是设计训练,空间感知、创造性思维的培养,但是,设计师却可以通过编程语言的学习,保持数理逻辑思维的训练,应用编程语言技术解决设计专业问题。对于设计专业首推的语言包括,用于参数化设计的可视化节点编程 Grasshopper(GH,基于 Rhinoceros3D(Rhino3D) 三维软件平台),其脚本(Script)语言包括使用 Python、C#、C++等;用于城市空间数据分析及参数化设计和几乎所有数字化设计方向的 Python 语言;用于机器人智能建造和城市传感器感知及实验设备建造和互动装置的 C、C++ 语言;用于建筑信息模型的 Dynamo(基于Revit)等。
1.1.2 节点可视化编程与文本式编程
设计领域中的 GH(参数化)和 Dynamo(BIM)通过组件连接构建计算逻辑,是典型的节点可视化编程(Visual node-based programming / Node-based coding)工具。python、C、C++ 和 C# 等应用解释器(interpreter)或编译器(compiler)逐行编写代码为文本式编程(text-based programming)。GH 能够在设计领域迅速普及,不仅在于其所具有的参数化意义;可视化编程(Visual programming language, VPL)对不具有编程基础的设计师来讲更容易学习,并应用实践到设计专业领域。
大部分编程语言入门学习的第一行代码通常是打印字符串"Hellow world!"
,例如:在 Python 语言中代码如下,
print("Hello world!")
🡮
Hello world!
在 C 语言中代码如下,
#include <stdio.h>
int main()
{
printf("Hello world!\n");
return 0;
}
🡮
Hello world!
GH 主要是处理空间几何形式的三维模型,对字符串处理的意义相对较小,因此 GH 给出处理字符串的Text
面板组件很少。如要大量处理字符串,可以通过Python Script
组件借助 Python 语言处理,或者使用C# Script
或者VB Script
。下图1.1-1通过Panel
组件分别输入两个字符串,利用组件Concatenate
连接组合输出为“Hello world!”。
图 1.1-1 打印输出字符串 “Hello World!”
1.1.3 笔记
文本式编程语言的学习,要选择适合的解释器或编译器,例如 Python 推荐使用Anaconda① 环境管理器(Python包管理器)下的 Spyder 或 JupyterLab。其中 JupyterLab 能够直接交互操作运行验证代码,并同时记录说明文字,方便语言的学习。对于 C 初学者则推荐包含编译器的Dev-C++②或者Code::Blocks③ ,及 Visual Studio,VS④ 、Visual Studio Code,VSC⑤。Spyder、Dev-C++、Code::Blocks、VS、VSC 等不具有类似JupyterLab 或者 Jupyter 交互式笔记本的功能,但是可以通过增加注释的方式解释代码含义。
可以把 GH 工具理解为解释器,对组件代码的注释可以通过Scribble
或者Panel
组件实现。例如上图中的文字#连接字符串输出Hello world!
使用Scribble
组件。Panel
组件则可以不作为输入或输出项,可单独作为文字记录的工具,例如上图红色的Panel
。
另外推荐使用Markdown(MD)⑥轻量级标记语言,支持图片、图表、视频和数学公式,以易读易写的纯文本格式编写文档。MD 可以输出 HTMl 或 PDF 等多种格式,及应用docsify⑦等工具生成文档网站。编辑 MD 的工具很多,通常推荐使用Visual Studio Code, VSC。
为了避免文件丢失,尤其 GH 代码文件,造成无法挽回的损失;及方便协作和多终端处理,推荐使用GitHub⑧将项目(包含代码,说明等文件)推送至云端托管。
注释(Notes):
① Anaconda,用于科学计算(数据科学、机器学习应用、大数据处理、预测分析等)的 Python 和 R 编程语言的环境管理器,旨在简化包管理和部署(https://www.anaconda.com/)。
② Dev-C++,Windows平台下 C 和 C++ 的集成开发环境(Integrated Development Environment,IDE)(https://www.bloodshed.net)。
③ Code::Blocks,是一个免费的 C/C++ 和 Fortran 的集成开发环境(Integrated Development Environment,IDE),具有很强的可扩展性和完全可配置性(https://www.codeblocks.org/)。
④ Visual Studio,为用 .NET 和 C++、C# 等,在 Windows 上构建网页(web)、云(cloud)、桌面(desktop)、移动(mobile)应用程序,服务和游戏最为综合的 IDE(https://visualstudio.microsoft.com/downloads/)。
⑤ Visual Studio Code,是一个轻量级但功能强大的源代码编辑器,适用于 Windows、macOS 和 Linux 等系统,内置了 JavaScript、TypeScript 和 Node.js,为 C++、C#、Java、Python、PHP、Go 和 .NET 等语言运行提供了丰富的扩展生态系统 (https://code.visualstudio.com/)。
⑥ Markdown,轻量级标记语言,支持图片、图表和数学公式等,且易读易写,广泛用于撰写帮助文档 (https://en.wikipedia.org/wiki/Markdown)。
⑦ docsify,通过智能的加载和解析Markdown文件,即时显示生成一个网站。可以通过配置index.html文件,部署到GitHub页面上,发布网站(https://docsify.js.org/#/)。
⑧ GitHub,是一个开发者平台,允许开发者创建、存储、管理和共享代码。通过使用 Git,为每个项目提供 Git 的分布式版本控制及访问控制、故障跟踪、功能请求、任务管理、持续集成和 wiki(https://github.com/)。