关于本人
博主是一个野生程序员,是个正在自学计算机科学的菜鸟。
至于为什么要半路学习计算机科学?因为博主毕业后接触了建筑可视化这个行业,说通俗一点就是:“小明:你是做什么的呀?小林:我是帮建筑师做效果图的”,建筑设计行业为我展示了计算机图形学的魅力,同时也让我深刻感受到了软件开发对于一个行业居然有如此之大的影响。
为什么说软件开发对这个行业影响如此之大?那就要从这个行业的历史讲起了。在很长的一段时间里,每做一轮方案,建筑师都需要自己亲手绘制每一份图纸,具体的动作就是用鸭嘴笔在画板上的硫酸纸上作图,需要画平面图、剖面图、立面图、大样图,然后把硫酸纸上的内容通过化学反应晒到蓝图上。至于效果图,专业术语叫做透视图,也是建筑师自己手绘的。对于非专业人士而言,效果图远远比技术图纸来的直观、容易理解,因此方案的快速表现一直是建筑师的基本素养。
在上个世纪的90年代,计算机辅助设计(CAD)走入了大家的视野。几乎在很短的时间内,工程师们就拥抱了这个崭新的技术,用计算机作图极大地提高了从业人员的工作效率。在21世纪初,为了更好地辅助建筑师进行设计,3D设计软件SketchUp应运而生,建筑师可以在三维空间里推敲设计,这个软件在面世之初就受到了极大的欢迎。
图1——SketchUp(草图大师)
此后,这个行业又掀起了参数化设计和非线性设计的浪潮,需要注意的是这两个词语并不等同,非线性设计是一种设计潮流,比较典型的作品是弗朗克 • 盖里设计的毕尔巴鄂古根海姆博物馆以及扎哈 • 哈迪德设计的银河Soho。他们的设计突破了人们的认知,引入曲线和曲面作为主要的设计元素,让空间流动起来,外观也更具科技感、未来感。为了保证这样的设计能够完美落地,从图纸到施工需要多个专业的密切配合,而细节是设计的重中之重,就拿幕墙专业举例,我们最后实地看到的每一片幕墙都完美的凸显了设计意图,曲面该消隐的地方能够顺滑交接,该转折的地方又能感受到硬朗的边缘。我们甚至可以猜想每一片幕墙都是被Index的,它的尺寸和交接都是经过优化的,通过不断地微调使得每一个平面所拟合的曲面能够尽可能地接近原设计的曲面,让每一个区域的偏差值都小于一个阈值,这样简单易懂但非常繁琐的优化过程必须有专业软件帮助。哪怕是从初设阶段的设计到我们实际看到落地的效果,中间经历的设计迭代的密集程度也是90年代初的建筑师所无法想象的,由此可见软件开发对建筑行业的影响早已润物无声,成为工程师无法离开的bread and butter。

图2——银河soho

图3——毕尔巴鄂古根海姆博物馆
如果从抽象的层面上去看待一个方案的产生,我们会发现:虽然建筑设计的工作流程是框架化的,但是其复杂度非常高,有些时候对待特殊的场地必须要有非常规的思路,解决方案基本上没有复用的条件,因此对待一个设计任务,建筑师通常以面向过程的思路展开工作。
在构思方案的时候,建筑师会根据过往的经验先快速构思一个方案和委托方碰面,任务包括:功能划分(画气泡图)、基地的出入口规划(按照规范和交通流线来)、竖向设计(从经济和实用的角度),然后是体块布置(需要考虑功能和造型的关系),最后是平立剖设计。
不难发现,这样的设计效率是较为低下的,在给定的条件下,设计具有非常多可能性。很多时候,委托方希望看到不同的可能性,最后通过美观性、经济性、实用性等不同的评价标准来决定一个大的方向。这就要求设计快速迭代。

参数化设计在快速迭代的要求之下应运而生,其本质是由数据驱动,通过逻辑产生方案,很多建筑行业的从业人员将参数化设计更多的看作一种便捷的建模方式。实际上参数化设计的本质是数据与逻辑,甚至逻辑也可以看作数据的一种。在我看来,参数化设计是建筑师思考以及工作方式逐渐向软件开发靠近的尝试,虽然世界上的建筑方案不尽相同,但是很多问题的处理思路是类似的,如果能够总结足够多的逻辑共性,我们就可以形成一个可以复用的库,库中的方法耦合度低、依赖性弱,可以作为数据的角色为不同的方案服务。需要说明的是,参数化设计并不是建筑行业特有的,并且提出的时间并不长,其自身具有较大的局限性,作为一个方法论而言它根基尚浅,从社区的角度来说它并不活跃,从建筑师自身出发,参数化设计的概念并不清晰,没有办法让参数化设计为自己的日常工作服务。但这些并不妨碍我看好参数化设计的前景,在未来,计算机与几乎所有行业的关系只会越来越紧密,人们需要从琐碎的工作中脱身,发挥自己的创意,做更多有意义的事情。
我之所以在这个页面花了那么长的篇幅来介绍软件开发对于一个行业的影响,私心是想给我所认知的建筑行业一个比较简略的概括,并且通过软件开发对建筑行业的巨大影响来阐述我学习计算机科学及软件工程的动机和初心。
关于博客
这是一个主要专注于技术的博客,博客的内容包括但不限于:
- 网络开发技术(Web Development)
- 计算机科学理论(Computer Science)
- 数学(Math)
- PAT做题记录(Programming Ability Test)
- 一些阅读及思考(Reading)
如果有兴趣了解更多可以阅读我的第一篇博文:开博大吉
关于留言
博客的评论插件是utterances,它基于Github Issue,可以为JAM Stack且托管在Github的网站提供评论服务,因此你需要注册并登录Github账号才能够评论,如果你已经有了Github账号,也可以不通过网页直接在Issue里评论(随意咯)
关于建站
强烈推荐Github Pages,Github Pages可以免费为你托管静态网站,如果你熟悉Git管理工具,那么建站和维护的过程将会简便。虽然Jeykll框架是Github的官方推荐,但还是建议尝试多种基于JAM Stack的框架,选择框架需要考虑的因素包括以下两点:
- 你掌握哪一种语言
- 你喜欢哪一种模板引擎(template engine)
例如,我选择框架的初心就是希望使用JavaScript这个热门的语言,同时又能使用基于JavaScript的模板引擎,并且网站的结构搭好之后,发博文的方式就是直接在Vscode里写markdown文件,编译好之后git push到repository。Eleventy正好符合我心目中一个理想框架的样子,因此成为了我建站的选择。
结尾
这估计是全世界最不像“关于”的页面了,第一个篇幅我本来想做一个自我介绍,只是我估计如果你没有直接接触过这个行业,可能无法理解我学习计算机科学的动机在哪里。交代完背景之后我简短地叙述了这个博客主要讨论哪一些内容,以及博客评论区和建站的相关问题。最后,如果你想马上知道我又写了什么文章,可以在最下方找到订阅RSS的按钮。