本章是一份调查,旨在回顾计算机语言设计和 实现方面的相关工作,并介绍了设计和开发BERA 语言的经验教训。根据编程语言历史网站[HOPL,2010], 其数据库列出了8,512种计算机语言,其中17,837条书目记录包含 来自这些参考文献的11,064条摘录。维基百科在 计算机语言页面下引入了600多种语言,它代表性地列出了89种常用的 计算机编程语言,用于比较它们的一般和技术信息[维基媒体,2010]。而且,计算机语言每天都在诞生[Mashey,2004]。
     本研究的目的不是解决与编程语言有关的一般和广泛问题。然而,有许多有用的参考资料来研究和开发一种语言,作为数百种仍然具有生命力的语言的扩展。BERA 语言旨在成为专门针对特定领域的领域特定语言,即AEC 行业。为了做出有影响力的努力,BERA语言应该反映复杂和实际的问题,但也易于使用。本章介绍了要处理的问题以及需要的特定于域的建模需求根据从其他类型语言中学习的经验教训,实现这种有效性和易用性。

该问题在特定领域的语言发展的主要问题: 通常是如何其使用的有效性和易用性可以完成。

程序应该在构建设计规则和分析的高级操作中编写,而不是在具有更高粒度级别的低级操作中编写。

该程序语言使用涉及两个主要方。一个是建筑设计和评估专家,如建筑师或工程师,另一个是国际金融公司专家,他的专业知识是软件实施。

BERA语言允许为负责设计评审过程的人员提供更多控制和选项。如果高级域特定语言与其他通用编程语言一样复杂,学习或使用它没有任何优势。在另一方面,如果过于局限于处理具体问题,也不会有价值,甚至如果它是很容易学习和使用。这个问题非常困难,但应该在语言设计层面解决,以便恰当地找出这两个相互冲突的问题之间的最佳折衷方案。甚至美国国家航空航天局(美国国家航空航天局)也使用自己的特定领域语言来控制航天飞机,以提高可靠性并降低风险,成本和开发时间[Parr,2007]。

BIM中的特定于域的语言
     IFC作为BIM领域特定的建模语言

在20世纪70年代到80年代,当只有少数计算机辅助设计(CAD)系统时,早期尝试在不同系统之间交换一组几何数据而没有数据丢失。CAD系统之间的互操作性是在每个领域特定领域开发标准产品模型的主要动机。从那时起,国际金融公司由国际互操作联盟(IAI,目前称为buildingSMART)自1994年起为AEC工业部门开发。

IFC是用于表示建筑信息模型的基于ISO STEP的建模语言之一,并且它被认为是建立行业产品模型的主导标准。该截至2010年,当前版本的IFC是2x3TC1。它不是一个封闭的定义。将发布具有行业认可和所需功能的新版本。基于IFC 模型,建筑模型代表了有关建筑物及其相关属性的大量几何和拓扑信息。(请参阅第3.2.3节和图3.1,作为当前IFC如何代表本研究范围内的构建对象的概述。)IFC上有许多材料,如[ISO 10303,1994; 伊士曼,1999年; IAI,2000; IAI,2003; 伊士曼,2007年; Eastman等,2008; buildingSMART,2010a; buildingSMART,2010b]。 
       BIM特定于域的编程语言与BIM 领域特定建模语言领域的可靠研究和开发工作相比,BIM领域特定编程语言领域的研究和开发很少。(参见图1.1,区分BIM领域特定的建模和编程语言)在1970年代,被认为是建筑信息模型研究的早期阶段,有18个是BIM领域特定语言开发的重大努力。伊士曼开发了GLIDE和GLIDE II(交互设计的图形语言)[Eastman和Henrion,1977],尝试使用一组功能性交互操作来生成建筑设计。这项工作之前是卡内基梅隆大学开发的一项名为BDS(建筑描述系统)的早期工作
[Eastman,1975; Eastman等,1976]这不是一种完整的语言,而是一组操作和对象。GLIDE是众所周知的,并在其他八个大学
研究小组中实施。

然而,在地理信息系统(GIS)领域,已经做出了努力。承担开发用于操纵地理空间数据的语言和系统,如Spatial SQL [Egenhofer,1987,1994]。这些系统包含空间数据,例如城市,街道,河流,地块等的位置和形状。由于该域的性质,它们仅支持2D中的空间对象。这些系统主要是基于关系数据库系统开发的,因此它们的特定于域的语言也基于SQL语言。例如,自20世纪80年代后期以来,引入了不同的方言,如Spatial SQL [Egenhofer,1987,1994 ],KGIS [Ingram等,1987],PSQL [Roussopoulos等,1988],GEOQL [Ooi等,1989]。 ],TIGRIS [Herring等,1988],等等。不仅在GIS领域而且在BIM领域,已经有很多尝试为3D建筑模型设计和实现不同类型的“空间查询语言” ,因为基于IFC 已经使用了建筑产品模型服务器环境。 ,特别是由[Borrmann等,2009a; Borrmann等,2009b; Borrmann,2010a](见图2.1)。但是,通过使用IFC,有时很难检索空间拓扑,空间拓扑,关系以及对域专家更重要的特定属性等空间语义。示例是SECOM IFC Model Server 的部分模型查询语言[Adachi,2003] [Adachi,2010]和EuroStep Model Server的产品模型查询语言[Eurostep,2010]。

随着对空间语义重要性的认识的提高,一些基于类似SQL的语言实现了以建模模型为中心的查询[Renz,2002; Borrmann 
等,2006; Schultz等,2008]。基于空间语义的查询示例如下:
- 选择第2级中的所有空格。
- 获取地下楼层中的所有墙。
- 选择触摸此特定板的所有列。
更具体地,图2.1中的示例是由[Borrmann等人,2010a]开发的用于3D空间查询语言的原型应用的快照。这是一个很好的例子,用于演示语言驱动的BIM方法是如何有用的。本例中使用的输入程序代码如下。它检索站在特定板对象顶部的所有列对象。
SELECT 
Col.id 
FROM IFCColumn COL,IFCSlab slab3 
WHERE ABOVE_HS_RELAXED(col.id,slab3.id)AND TOUCH(col.slab3.id)
AND slab3.id =`Oid23089_IfcSlab_Floor_” 
20
图2.1。3D空间查询语言原型应用程序的屏幕截图
[Borrmann,2010a]。
构建模型上的这种类似SQL的查询语言非常简单有用,尤其适用于具有数据库和SQL查询语言经验的人员[SQL,2010]。此外,图2.1中所示的原型应用程序具有用户友好的对话界面,可轻松编写语言。这种菜单驱动的界面对于用户来说是一个有用的实用工具,即使它的执行最终是通过程序代码的形式完成的。

BERA语言应该在语言语法和语义中具有此查询语言功能,因为它是收集用户定义对象的基本功能4。 最近的努力包括慕尼黑技术大学和芬兰VTT 的Borrmann研究小组为4 开发“空间约束语言”的工作。请参阅6.3节,预览BERA语言如何查询和处理建筑物。在 BERA语言中,此查询功能用于对象实例化和规则检查。 但是,这并不意味着BERA语言仅限于查询语言。第6.4,6.5 和6.6节说明了其规则定义和执行示例。

智能建筑规则检查[Borrmann,2010b]。这项工作侧重于空间语义,涉及基于空间查询语言的项目,但仍处于开发阶段。其范围主要在建筑施工阶段,因此该项目中的建筑元素主要是结构对象而不是空间对象。

另一方面,BERA 侧重于建筑环境规则和分析,最初的发展主要是空间对象。由于特定领域语言的性质,很难研究和审查各种类似的案例。但是,根据本章中审查的案例,我们可以制定战略,方法和方法BERA语言设计和实施的技术手段。

回顾其他语言的经验教训虽然它们的界限通常过于模糊,无法区分,但计算机编程语言可以根据几个角度进行分类,例如
年代,类别,生成,范例,目标用户,标准化等。一个标准的语言甚至可以有许多用于不同目的的方言。本研究介绍了两套语言,并说明了在BERA语言设计中可以借用哪些功能。作为简要介绍,第一组包含JavaScript和ActionScript脚本语言,以便审查它们的有效性和可扩展性根据目标对象的扩展而定。第二组是Processing 语言,它是基于Java的特定于域的语言之一,以便推测
它是如何设计的,以减轻用户和开发人员的困难。这些语言在某些方面彼此相似,因为它们的创建是为了缩短传统的语言执行过程,例如编辑编译运行周期[Scott,2005]。

特别是脚本语言旨在最终用户更快,更轻松地支持软件应用程序。
       基于ECMAScript的脚本语言ECMAScript是一种广泛使用的脚本语言,尤其适用于万维网。它通常用于众所周知的JavaScript和ActionScript方言中。它已由ECMA International在ECMA-262规范和ISO / IEC 16262中于1997年标准化[ECMA International,2010a; ECMA International,2010b; ISO 16262,2010 ]。依靠万维网联盟(W3C)[W3C,2010a]支持各种
Web标准和API,ECMAScript成为用户最流行的脚本语言之一。许多常见的Web浏览器都支持JavaScript进行处理客户端Web文档。大多数基于HTML [W3C,2010d]的网页开发人员熟悉JavaScript并知道如何处理Web文档元素,如文本字段,图像,按钮,选择框和其他各种Web表单。JavaScript最近越来越受欢迎,因为在Web 2.0 [ Web2.0,2010 ]中开发Web界面有许多现有的基于标准的新方法,例如XHTML [W3C,2010d; XHTML,2010],CSS [W3C,2010b],XML[W3C,2010e],AJAX [W3C,2010f],jQuery库[JQuery,2010]等。JavaScript于1996年通过Netscape网络浏览器[Netscape Communications,2010]推出。由于万维网的成功,JavaScript已经存在甚至对那些不熟悉计算机语言的人也很受欢迎。它是一种面向对象的脚本语言,可在客户端Web浏览器上运行,以访问应用程序中的对象。它受到许多语言的影响,其语法与其名称所暗示的Java语言类似,因此新手程序员更容易开发动态网页。它可以控制网页中的元素,如W3C的文档对象模型(DOM)[W3C,2010c],并使用户界面更具
交互性。图2.2显示了DOM的简化概述。它允许访问页面文档并通过脚本控制其元素。JavaScript使用点符号不仅可以访问文档的关联对象和属性,还可以直观地访问函数调用。这也是面向对象概念和实现的另一个重要的显着特征。实例化对象具有其属性以及其预定义的行为(例如,方法,函数调用)。最近很多面向对象商业编程语言通常接受它只是因为它写得更快更清晰[Lethbridge,2005]。例如,基于图2.2中的DOM,可以通过点符号:window.history访问导航历史记录,并且可以通过符号:window.document.forms.button访问表单中的按钮。以下JavaScript代码显示了 在页面加载后确定内部HTML内容
的未确定宽度
和高度时动态控制内部框架(HTML关键字:iframe)的宽度和高度的示例。
function 
reSize()

var objBody = ifrm.document.body; 
var objFrame= document.all [“ifrm”]; 
objFrame.style.height = objBody.scrollHeight + (objBody.offsetHeight - objBody.clientHeight)

objFrame.style.width =`100%' 

window.reSize();

图2.2。JavaScript目标对象的示例:文档对象模型(DOM)。

另一种着名的ECMAScripting语言是ActionScript。它也广泛用于网络,嵌入Flash电影剪辑[Gay,2010]。随着Adobe FlashTM(以前称为Macromedia Flash)[ActionScript,2010] 越来越多地在网络上使用,ActionScript在制作复杂电影时变得越来越流行。以下示例显示了一个非常简单的操作:如果用户释放鼠标,则影片剪辑将移动到第35帧并开始播放。ActionScript中的习语非常直观且用户友好。
on(release)

gotoAndPlay(35); 
}
这些示例代码是两种脚本语言的非常有限的片段。但是,它们证实了它们的有效性和易用性,这是开发特定领域语言时需要克服的主要问题。

当JavaScript控制Web DOM时,ActionScript控制电影的帧和行为。它们非常有效且易于处理每个目标域中的特定问题。

由于脚本语言和特定领域语言的性质意味着,基于ECMAScript的特定于域的语言影响了许多用于开发BERA语言的特性,特别是关于它们的抽象原理和处理目标对象的方法。BERA试图处理预定义的复杂模型和建筑信息模型。建筑信息模型,例如在IFC中实施的建筑信息模型,已经在其自己的方案中提供了结构良好的数据格式,但其内部数据结构对于临时用户而言通常是复杂且繁重的(参见并比较图3.1和3.2)。

在BIM软件中,构建数据结构以明确的方式表示,但是用户倾向于以隐式方式处理它,因为建筑设计的本质。ECMAScript是一个先例,因为它支持基于以域为中心的用户定义名称的预定义和标准化对象模型。该方法的目标对象(DOM或Flash动画)是由这样的脚本语言管理不是对领域专家如此困难。

例如,在JavaScript中,用户习惯于在高级别上使用目标对象模型。他们不需要理解文档模型,客户端浏览器,网络协议和Web服务器如何在低级别上以计算方式相互操作。

基于Java的特定于域的语言特定于域的语言通常难以区分小型语言通用编程语言和脚本语言,如JavaScript。但是,它们通常出现在现代计算环境中。示例包括嵌入在Web编程语言中的HTML ,用于Web脚本语言的CSS [W3C,2010b],嵌入在许多其他编程语言中的Regular Expressions [The Open Group,1997] 等等。域特定语言通常具有由于其特定目的而变小的含义。 
由于Java [TIOBE Soft,2010]的普及,许多特定于域的语言是基于Java虚拟机(JVM)开发的,包括基于Java的DSL处理。
自2001年以来,Casey Reas 和Ben Fry在麻省理工学院媒体实验室[Processing,2010]开发了加工工艺。其目标用户是想要编程图像,动画和交互式图形的学生,艺术家,设计师,研究人员等。它起源于另一种领域特定语言,由John Maeda于1999年开发的[数字设计] (DBN)[MIT Media Lab,2010]。
        Processing语言是一种易于学习新手程序员的语言,但却创造了使用少量编程线的强大的2D和3D图形。由于其开放许可政策和易用性,即使对于开发人员来说,它也有很多方言被不同的域用户采用,例如Wiring和Arduino用于设计微控制器[Wiring,2010; Arduino,2010]和Fritzing支持产品的物理原型设计[Fritzing,2010]等.

Processing有自己的用Java 开发的IDE(集成开发环境),它使用户可以根据自己的兴趣进行尝试。它使用Java的Applet库执行源代码并显示图形窗口,该库也可通过Web浏览器获得。总的来说,界面非常直观和简单。处理程序语法与Java非常相似,代码在内部翻译成纯Java代码,由JVM编译执行。这使得Processing语言非常易于移植和管理,因为它继承了Java环境带来的好处。图2.3显示了一个Processing程序的示例,该程序在执行时只显示矩形和三角形。该过程显示了语言在使用和开发中的易用性,因为大多数特定于域的语言都是这样做的。如图2.3所示,用户只需要键入简化的函数调用,如triangle(args)和rect(args),其中triangle和rect是“PApplet”Java中的预定义方法类文件(它们也来自Java 2D / AWT库),args是它们给定的参数(在这种情况下,所有都是2D坐标点或长度值)。用户输入代码被转换为图2.3中的(2)所示的纯Java代码,并立即由JVM执行。

图2.3。处理语言执行的简化示例。
       这种基于Java的领域特定语言的体系结构在某些方面对BERA语言的开发有影响,特别是在实际实现中。然而,BERA语言还有另一个巨大的实施层:建筑模型平台及其与BERA语言的桥梁。正如2.2.1节所述,IFC是一个合理的目标构建模型,因为它是为了规范化BIM平台中嵌入的各种原生建筑模型。

目前的BIM平台有支持IFC导入和导出的翻译器,以及IFC 与平台特定的原生建筑模型非常接近。因此,在本研究的范围内,建筑模型采用IFC格式,它基本上将BIM数据传输到BERA语言框架中。因此,需要用户可用的更简单和中性的建筑模型。用户可以轻松访问此模型,而不是访问平台相关或通常非常复杂的本机数据结构(包括IFC)。此外,即使它被简化和中和,它仍应提供高保真度以在特定问题域上有用。

下一章将详细介绍该模型(BERA对象模型:BOM)。为了使它成为不同环境的可移植和可管理语言以及类似于基于Java的域特定语言的实现,本论文中的BERA 语言实现和应用程序利用了JVM 及其相关实用程序。

---------------------------------------------------

译者注:

专业领域语言,与通用语言的不同,表现在与具体数据模型的结合程度。通用语言,可以定义表达任何数据模型。领域语言,则与特定专业领域模型紧密结合,其实是专业领域模型的一套语言接口。

专业领域语言典型样例:

Javascript+DOM(操作html网页)

sql+二维表(操作关系数据库)

专业领域语言的简单,表现在数据类型上,专业领域语言的类型有限,并与领域模型中的对象类型对应。

专业领域语言的简单,还表现在计算方法上,专业领域语言的计算方法是专业的,并且计算的对象都是领域模型中的对角类型。

BIM建筑环境规则和分析(BERA)语言介绍(三)第二章 背景相关推荐

  1. BIM建筑环境规则和分析(BERA)语言介绍(一)概要

    -------作者:JIN KOOK LEE   指导: Charles M. Eastman 本研究旨在设计和实现特定领域的计算机 编程语言:建筑环境规则和分析(BERA)语言. 由于建筑信息模型( ...

  2. BIM建筑环境规则和分析(BERA)语言介绍(四)第三章 BERA语言设计

    设计策略 什么是好的语言设计?没有明确的答案,但许多研究人员 声称,新语言有重要因素可以获得接受和 长寿.就领域特定语言的主要目的而言,新语言 应首先以一种简单的方式有效地解决新问题[Mashey,2 ...

  3. R语言基础题及答案(二)——R语言与统计分析第二章课后习题(汤银才)

    R语言与统计分析第二章课后习题(汤银才) 题-1 用函数rep( )构造一个向量x, 它由3个3, 4个2, 5个1构成. x<-rep(c(3,2,1),times=c(3,4,5));pri ...

  4. 大学“电路分析基础”试题合集第二章

    大学"电路分析基础"试题合集第一章  "电路分析基础"试题合集第二章 一.填空题(每空1分) 1.电流所经过的路径叫做 电路 ,通常由 电源 . 负载 和 中间 ...

  5. c语言程序设计课件第二章,c语言程序设计课件张元国 ISBN9787566300386 PPT第二章数据类型 运算符与表达式...

    1.第2章 数据类型.运算符与表达式,语言的数据类型 常量与变量 运算符与表达式 不同类型数据间的转换,2.1语言的数据类型,数据是计算机程序处理的所有信息的总称,数值.字符.文本等都是数据,在各种程 ...

  6. python语言程序设计基础第二章答案_python语言程序设计基础(嵩天版),第二章程序练习题...

    python语言程序设计基础(嵩天版),第二章程序练习题 欢迎访问江南烧酒的博客 2.2汇率兑换程序.按照1美元=6人民币汇率编写一个美元和人民币的双向兑换程序. """ ...

  7. 数据结构(C语言版) 第二章 线性表 知识梳理+作业习题详解

    目录 一.线性表顺序存储结构(顺序表) 0.线性表的基本概念 1.样例引入:多项式相加 二.线性表链式存储结构(链表) 0.链表的基本概念 1.前插法代码实例 2.链表尾插法完整代码附带各种操作 三. ...

  8. c语言样本,C语言样本教案 第二章

    C 语言程序设计教案 顺序结构程序设计(一) 本章 内容 1.C 语言的基本语句 2.简单的 C 程序结构 3.字符数据的输入输出___getchar 与 putchar 函数 1.C 语言的基本语句 ...

  9. 在c语言中输入三个数据类型,【C语言讲解】第二章:数据类型3

    该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 4.除法运算符"/"双目运算具有左结合性.参与运算量均为整型时, 结果也为整型,舍去小数.如果运算量中有一个是实型,则结果为双精度实型 ...

最新文章

  1. 真香!如何用300行代码写完一个Spring基本框架?
  2. 网络流三·二分图多重匹配 HihoCoder - 1393
  3. k8s提交镜像到harbor仓库
  4. 不能输入_为什么稳压器输入端不能配漏电保护器
  5. 计算机视觉算法工程师 笔试,深度学习算法工程师笔试题目
  6. Spring:Spring相关知识介绍笔记
  7. 参数变化_光纤激光切割机操作和工艺参数变化对质量的影响
  8. vue小案例一:todolist
  9. 税务计算机类考试题型,速看!2020年税务师考试方式、题型及计算器要求
  10. RS-485半双工延时问题
  11. TPT中脚本评估的正确打开方式 (上):强大的内置函数库
  12. 计算机CPU核心部件简介
  13. 用Python实现温度转换程序
  14. girlfriend 生气心情不好怎么解决?
  15. mysql安装时的英文_安装MySQL遇到的常见英文翻译
  16. 网络信息化时代,3D产品建模宣传很到位
  17. 宁波诺丁汉计算机博士学费,宁诺1600万元博士奖学金开放申请 PhD scholarships open for application...
  18. docx poi 原理_POI读取.doc 和.docx的区别
  19. 【工具】goland pull代码 出现 you local changes would be overwritten by merge.Commit, stash or revert ......
  20. 虚拟机VMware 安装centos、常规配置、共享文件等

热门文章

  1. 网络运维工具--shell批量下发
  2. Python解决鸡兔同笼
  3. 读王竹峰老师 《一个数据库十年老兵的思考与总结》 有感
  4. sdi线缆标准_HD-SDI 高清视频同轴电缆
  5. 银行提供了整数整存整取定期储蓄业务,其存期分为一年,两年,三年,五年,到期凭存单支取本息,编写一个程序,输入存入的本金数目,计算假设存一年,两年,三年,五年,到期取款时,银行应支付多少本息分别是多少
  6. C#求100以内的质数
  7. 不得不爱:中国十大绝色美景图
  8. 【转贴】linux操作系统下c语言编程入门
  9. 自动驾驶车辆控制(车辆运动学模型)
  10. 项目章程的主要内容#软考高级信息系统项目管理师/高项读书笔记#3