杰里米·西克。;安德鲁·卢姆斯代恩 通用编程语言。 (英语) Zbl 1217.68050号 科学。计算。程序。 76,第5期,423-465(2011). 概述:泛型编程是开发可重用软件库的有效方法。许多编程语言提供泛型并具有描述接口的功能,但没有一种语言完全支持泛型编程中使用的习惯用法。为了满足这一需求,我们开发了语言({mathcal G})。({mathcal G})的中心特征是概念,这是一种受现代需求启发的组织泛型约束的机制C类++库\({\mathcal G}\)提供模块化类型检查和单独编译(甚至泛型)。这些特性支持模块化软件开发,尤其是独立开发的组件的平滑集成。在本文中,我们介绍了设计\({mathcal G}\)的基本原理,并通过两个案例研究展示了\({mathcal G{\)的表达能力:从C类++到\({\mathcal G}\)。({mathcal G})的设计与为下一步提出的概念扩展有很多共同之处C类++标准(作者参与了其设计),但本文中描述了一些重要的差异。 MSC公司: 68甲15 编程语言理论 68号30 软件工程的数学方面(规范、验证、度量、需求等) 关键词:可重用软件库;程序设计语言设计;通用程序设计;泛型;多态性;关联类型;软件重用;类型类;签名;仿函数;虚拟类型 软件:斯卡拉;哈斯克尔;PolyTOIL公司;毫升;二维三角剖分;增强C++库;CGAL公司;贝塔;促进;特点;格贝塔;快速排序;STL公司;旋风;阿尔卑斯山;BGL公司 PDF格式BibTeX公司 XML格式引用 \textit{J.G.Siek}和\textit{A.Lumsdaine},科学。计算。程序。76,第5号,423--465(2011;Zbl 1217.68050) 全文: 内政部 arXiv公司 参考文献: [1] Randell,B.:1968年软件工程,1-10(1979) [2] 弗雷德里克,P。;布鲁克斯(Brooks,J.):《神秘的人月:关于软件的论文》(1978) [3] M.D.McIlroy,《大规模生产的软件组件》,摘自:《软件工程概念和技术学报》,1968年北约软件工程会议,1969年,第138-155页 [4] 克莱门茨,P。;Northrop,L.:软件产品线:实践和模式,(2002) [5] 卡普尔,D。;穆瑟,D.R。;Stepanov,A.:算子和代数结构,(1981) [6] 穆瑟,D.R。;Stepanov,A.A.:通用编程,Lncs 358,13-25(1989) [7] 穆瑟,D.R。;Stepanov,A.A.:ada中的通用算法库,216-225(1987) [8] A.Kershenbaum,D.Musser,A.Stepanov,《高阶命令式编程》。技术报告88-10,伦斯勒理工学院,1988年 [9] Backhouse,R。;Jansson,P。;Jeuring,J。;Meertens,L.:通用编程——简介,Lncs 1608,28-115(1999) [10] B.Stroustrup,C++的参数化类型,收录于:USENIX C++会议,1988年 [11] A.A.Stepanov,M.Lee,标准模板库,技术报告X3J16/94-0095,WG21/N0482,ISO编程语言C++项目,1994年 [12] Austern,M.H.:通用编程和STL:使用和扩展C++标准模板库,专业计算系列(1998) [13] Köthe,U.:计算机视觉中的可重用软件,《计算机视觉和应用手册》3(1999) [14] Siek,J.G。;李·L·Q。;Lumsdaine,A.:boost图形库:用户指南和参考手册,(2002年) [15] Boissonnat,J.D。;Cazals,F。;Da,F。;魔鬼,O。;Pion,S。;Rebufat,F。;Teillaud,M。;Yvinec,M.:CGAL编程:三角剖分示例,421-422(1999) [16] 皮特·W·R。;威廉姆斯,医学硕士。;史蒂文,M。;斯威尼,B。;Bleasby,A.J。;Moss,D.S.:生物信息学模板库:生物计算的通用组件,生物信息学17,729-737(2001) [17] 阿莱特,F。;Dayal,P。;Grzesik,A。;昂纳克,A。;科尔纳,M。;Laeuchli,A。;Manmana,S.R。;Mcculloch,I.P。;Michel,F。;诺亚克·R·M。;施密德,G。;美国肖尔沃克。;Stoeckli,F。;托多,S。;Trebst,S。;Troyer,M。;沃纳,P。;Wessel,S.:ALPS项目:强相关系统的开源软件,《日本物理社会杂志》74,30(2005) [18] 加西亚,R。;Järvi,J。;Lumsdaine,A。;Siek,J.G。;Willcock,J.:泛型编程语言支持的比较研究,115-134(2003)·Zbl 1125.68019号 [19] 加西亚,R。;Järvi,J。;Lumsdaine,A。;Siek,J.G。;Willcock,J.:泛型编程语言支持的扩展比较研究,《函数编程杂志》17,145-205(2007)·Zbl 1125.68019号 ·doi:10.1017/S09567968061006198 [20] M.Odersky,P.Altherr,V.Cremet,I.Dragos,G.Dubochet,B.Emir,S.McDirmid,S.Micheloud,N.Mihaylov,M.Schinz,E.Stenmn,L.Spoon,M.Zenger,Scala编程语言概述,IC/2004/64技术报告,EPFL,2004 [21] E.Ernst,gbeta——一种具有虚拟属性、块结构和传播、动态继承的语言,丹麦奥胡斯大学计算机科学系博士论文,1999年 [22] Ernst,E.:家族多态性,Lncs 2072,303-326(2001)·Zbl 0982.68637号 [23] Siek,J.G。;Lumsdaine,A.:通用编程的基本语言支持,73-84(2005) [24] J.Y.Girard,《治安法庭解释》。巴黎第七大学博士学位,巴黎,法国 [25] Reynolds,J.C.:类型、抽象和参数多态性,513-523(1983) [26] 查克拉瓦蒂,M.M.T。;凯勒,G。;Jones,S.Peyton;Marlow,S.:与类相关的类型,1-13(2005)·兹比尔1369.68089 [27] 查克拉瓦蒂,M.M.T。;凯勒,G。;Jones,S.Peyton:相关类型同义词,241-253(2005)·Zbl 1302.68055号 [28] Järvi,J。;格雷戈,D。;Willcock,J。;Lumsdaine,A。;Siek,J.G.:泛型编程中的算法专门化——C++中约束泛型的挑战,(2006) [29] J.G.Siek,通用编程语言,印第安纳大学博士论文,2005年 [30] J.G.Siek,A.Lumsdaine,大型通用库的语言要求,收录于:GPCE’05:第四届生成性编程和组件工程国际会议论文集,2005年 [31] D.Gregor,J.Järvi,J.G.Siek,G.D.Reis,B.Stroustrup,A.Lumsdaine,《概念:C++中泛型编程的语言支持》,收录于:《ACM SIGPLAN面向对象编程、系统、语言和应用会议论文集》,OOPSLA’06,2006 [32] S.Peyton Jones,M.Jones,E.Meijer,《类型类:设计空间的探索》,摘自:《第二届哈斯克尔研讨会论文集》,1997年 [33] M.Jazayeri,R.Loos,D.Musser,A.Stepanov,泛型编程,摘自:Dagstuhl泛型编程研讨会报告,1998年 [34] M.Austern,标准库扩展技术报告,技术报告N1711=04-0151,ISO/IEC JTC 1,信息技术,小组委员会SC 22,编程语言C++,2004 [35] Silicon Graphics,Inc.:标准模板库的SGI实现,2004年。http://www.sgi.com/tech/stl/ [36] Musser,D.R.:《反思性排序和选择算法》,《软件实践与经验》27,983-993(1997) [37] Hoare,C.A.R.:算法64:快速排序,ACM通信4,321(1961) [38] N.C.Myers,《特性:一种新的有用的模板技术》,C++报告,1995年 [39] Järvi,J。;Willcock,J。;Lumsdaine,A.:算法专门化和概念约束泛型,(2004) [40] 米尔纳,R。;托夫特,M。;Harper,R.:标准ML的定义,(1990年) [41] 勒罗伊,X。;Doligez博士。;Garrigue,J。;雷米·D·。;Vouillon,J.:目标caml文档和用户手册,(2003) [42] B.Liskov、R.Atkinson、T.Bloom、E.Moss、C.Schaffert、B.Scheifler、A.Snyder,CLU参考手册,技术报告LCS-TR-225,麻省理工学院,1979年 [43] G.J.Ditchfield,《Cforall概述》,滑铁卢大学,1996年 [44] Magnusson,B.:被认为有害的代码重用,《面向对象编程杂志》4(1991) [45] J.Järvi,B.Stroustrup,D.Gregor,J.Siek,Decltype and auto,技术报告N1478=03-0061,ISO/IEC JTC 1,信息技术,小组委员会SC 22,编程语言C++,2003 [46] Mitchell,J.C.:《多态类型推断与包容》,《信息与计算》76,211-249(1988)·兹比尔0656.68023 ·doi:10.1016/0890-5401(88)90009-0 [47] Pierce,B.C.:类型和编程语言(2002)·兹比尔0995.68018 [48] Tiuryn,J。;Urzyczyn,P.:二阶类型的子类型问题是不可判定的,信息与计算179,1-18(2002)·Zbl 1049.68039号 ·doi:10.1006/inco.2001.2950 [49] Le Botlan,D。;Rémy,D.:MLF:将ML提升到系统F的能力,27-38(2003)·Zbl 1315.68051号 [50] Odersky,M。;Läufer,K.:使用类型注释,54-67(1996) [51] Jones,S.P。;病毒性肠炎,D。;Weirich,S。;Shields,M.:任意库类型的实用类型推断,《函数编程杂志》17,1-82(2007)·Zbl 1107.68030号 ·网址:10.1017/S0956796806006006034 [52] Shan,C.:性感类型在行动,SIGPLAN公告39,15-22(2004) [53] Horn,A.:关于代数直接并成立的句子,《符号逻辑杂志》16,14-21(1951)·Zbl 0043.24801号 ·doi:10.2307/2268661 [54] S.Peyton Jones,Haskell 98语言与图书馆:修订报告,2002年·Zbl 1067.68041号 [55] S.Peyton Jones,M.Jones,E.Meijer,《类型类:设计空间的探索》,摘自:Haskell Workshop,1997年 [56] Nelson,G。;Oppen,D.C.:基于同余闭包的快速决策程序,《ACM杂志》27,356-364(1980)·Zbl 0441.68111号 ·doi:10.1145/322186.322198 [57] P.J.唐尼。;Sethi,R。;Tarjan,R.E.:常见子表达式问题的变体,Jacm 27,758-771(1980)·Zbl 0458.68026号 ·doi:10.1145/322217.322228 [58] 瓦德勒,P。;Blott,S.:如何减少特殊多态性,60-76(1989) [59] 霍尔,C.V。;哈蒙德,K。;Jones,S.L.Peyton;Wadler,P.L.:haskell中的类型类,关于编程语言和系统的ACM事务18,109-138(1996) [60] Jones,M.P.:合格类型:理论与实践(1994)·Zbl 0841.68113号 [61] 哈珀,R。;Morrisett,G.:使用内涵类型分析编译多态性,130-141(1995) [62] B.Dawes、D.Abrahams、R.Rivera(Boost C++库) [63] ISO:ISO/IEC 14882:2003:编程语言–C++,国际标准化组织(ISO),2003·Zbl 1067.68043号 [64] J.Coplien,《奇怪的重复模板模式》,C++报告,1995年,第24-27页 [65] Dijkstra,E.:关于与图形有关的两个问题的注释,数字数学1,269-271(1959)·Zbl 0092.16002号 ·doi:10.1007/BF01386390 [66] Prim,R.:最短连接网络和一些推广,贝尔系统技术期刊36,1389-1401(1957) [67] Bellman,R.:《关于路由问题》,《应用数学季刊》16,87-90(1958)·Zbl 0081.14403号 [68] Johnson,D.B.:稀疏网络中最短路径的高效算法,Jacm 24,1-13(1977)·Zbl 0343.68028号 ·数字对象标识代码:10.1145/321992.321993 [69] Reynolds,J.C.:走向类型结构理论,Lncs 19,408-425(1974)·Zbl 0309.68016号 [70] Liskov,B。;斯奈德,A。;阿特金森,R。;Schaffert,C.:CLU中的抽象机制,ACM通信20,564-576(1977)·Zbl 0362.68018号 ·doi:10.1145/359763.359789 [71] Milner,R.:编程中的类型多态理论,《计算机与系统科学杂志》17,348-375(1978)·Zbl 0388.68003号 ·doi:10.1016/0022-0000(78)90014-4 [72] 布尔巴基,N.:《数学要素》。集合论(1968)·Zbl 0175.27001号 [73] S.Wehr,R.Lämmel,P.Thiemann,JavaGI:Java通用接口,收录于:ECOOP 2007,Proceedings,LNCS,Springer-Verlag,2007,25页 [74] Macqueen,D.:标准ML模块的实现,212-223(1988) [75] E.Poll,S.Thompson,Aldor的类型系统,技术报告11-99,坎特伯雷肯特大学计算实验室,1999年·Zbl 0962.68182号 [76] Goguen,J.A。;温克,T。;梅塞盖尔,J。;Futatsugi,K。;Jouannaud,J.P.:《OBJ简介》(1992年) [77] , (1997) [78] Dreyer,D。;哈珀,R。;查克拉瓦蒂,M.M.T。;Keller,G.:模块化类,63-70(2007)·Zbl 1295.68061号 [79] 坎宁,P。;库克·W·。;希尔,W。;Olthoff,W。;Mitchell,J.C.:面向对象编程的F-bounded多态性,273-280(1989) [80] B.Emir,A.Kennedy,C.Russo,D.Yu,C#泛型的方差和广义约束,载于:ECOOP 2006–面向对象编程,2006 [81] Igarashi,A。;Viroli,M.:变量参数类型:泛型的灵活子类型方案,编程语言和系统上的ACM事务28,795-847(2006) [82] 托格森,M。;汉森,C.P。;Ernst,E。;冯·德·阿赫,P。;Bracha,G。;Gafter,N.:为Java编程语言添加通配符,1289-1296(2004) [83] A.肯尼迪。;Russo,C.V.:广义代数数据类型和面向对象编程,21-40(2005) [84] Järvi,J。;Willcock,J。;Lumsdaine,A.:主流面向对象泛型的关联类型和约束传播,1-19(2005) [85] 雷米·D·。;Vouillon,J.:Objective ML:对ML的有效面向对象扩展,对象系统的理论与实践4,27-50(1998) [86] 布鲁斯,K.B。;舒特,A。;Van Gent,R.:Polytail:一种类型安全的多态面向对象语言,Lncs 952,27-51(1995) [87] Kristensen,B.B。;Madsen,O.L。;Möller-Pedersen,B。;Nygaard,K.:BETA编程语言中的抽象机制,285-298(1983) [88] Madsen,O.L。;Möller-Pedersen,B.:虚拟类:面向对象编程中的强大机制,397-406(1989) [89] Thorup,K.K.:《Java中虚拟类型的遗传》,Lncs 1241、444-471(1997) [90] M.Torgersen,虚拟类型是静态安全的,在:FOOL 5:第五届面向对象语言基础国际研讨会,1998 [91] Odersky,M。;克雷米特,V。;Röckl,C。;Zenger,M.:具有依赖类型的对象的名义理论,Lncs(2003) [92] 托夫特,M。;Talpin,J.P.:基于区域的内存管理,信息和计算132,109-176(1997)·Zbl 0876.68027号 ·doi:10.1006/inco.1996.2613 [93] 格罗斯曼,D。;莫里塞特,G。;吉姆·T。;希克斯,M。;Wang,Y。;Cheney,J.:《气旋中基于区域的记忆管理》,282-293(2002) 此参考列表基于出版商或数字数学图书馆提供的信息。其项与zbMATH标识符进行启发式匹配,可能包含数据转换错误。在某些情况下,zbMATH Open的数据对这些数据进行了补充/增强。这试图尽可能准确地反映原始论文中列出的参考文献,而不要求完整或完全匹配。