×

通用编程语言。 (英语) Zbl 1217.68050号

概述:泛型编程是开发可重用软件库的有效方法。许多编程语言提供泛型并具有描述接口的功能,但没有一种语言完全支持泛型编程中使用的习惯用法。为了满足这一需求,我们开发了语言({mathcal G})。({mathcal G})的中心特征是概念,这是一种受现代需求启发的组织泛型约束的机制C类++库\({\mathcal G}\)提供模块化类型检查和单独编译(甚至泛型)。这些特性支持模块化软件开发,尤其是独立开发的组件的平滑集成。
在本文中,我们介绍了设计\({mathcal G}\)的基本原理,并通过两个案例研究展示了\({mathcal G{\)的表达能力:从C类++到\({\mathcal G}\)。({mathcal G})的设计与为下一步提出的概念扩展有很多共同之处C类++标准(作者参与了其设计),但本文中描述了一些重要的差异。

MSC公司:

68甲15 编程语言理论
68号30 软件工程的数学方面(规范、验证、度量、需求等)
PDF格式BibTeX公司 XML格式引用

参考文献:

[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的数据对这些数据进行了补充/增强。这试图尽可能准确地反映原始论文中列出的参考文献,而不要求完整或完全匹配。