×

用C++概念编程。 (英语) Zbl 1211.68050号

摘要:本文探讨了C++中概念和概念图的定义、应用和局限性,重点讨论了库组合。我们还将概念与其他语言中的适应机制进行了比较。
在将数据结构调整到库的API时,高效的非侵入式调整机制至关重要。使用可重用组件进行开发是一种广泛使用的构建软件的方法。组件的形式各不相同,从源代码到不可修改的二进制库。计划在C++的下一个版本中出现的Concepts语言功能在设计时考虑到了这样的组合,有望提高创建通用、非侵入、高效和身份保护适配器的能力。
我们报告了两个不同库之间数据结构调整的案例,并说明了最佳实践和习惯用法。首先,我们使用不同的API改编了几个库中的GUI小部件,以便与通用布局引擎一起使用。我们进一步开发这个示例来描述运行时概念习惯用法,将概念的适用性扩展到需要运行时多态性的域。其次,我们利用透明的适配层,组成了图像处理库和图形算法库,使图形算法能够有效地应用于图像处理领域。我们使用自适应层来实现一些关键算法,并且报告很少或没有性能下降。

MSC公司:

68甲15 程序设计语言理论
PDF格式BibTeX公司 XML格式引用
全文: 内政部

参考文献:

[1] Adobe systems,Inc.,Adobe Source Libraries,2008年。stlab.adobe.com网站
[2] 安,P。;朱拉,A。;罗斯,S。;桑德斯,S。;史密斯,T。;Tanase,G。;N.托马斯。;阿马托,N。;Rauchberger,L.:STAPL:一个自适应的通用并行C++库,计算机科学讲义26241933-208(2001)·Zbl 1023.68700号
[3] Austern,M.H.:通用编程和STL:使用和扩展C++标准模板库,专业计算系列(1998)
[4] G.Baumgartner,M.Jansche,K.Läufer,Half&Half:Java的多重调度和追溯抽象,技术报告OSU-CISRC-5/01-TR08,俄亥俄州立大学,2002年
[5] E.P.Becker,工作草案,编程语言C++标准,技术报告N2009=06-0079,ISO/IEC JTC 1,信息技术,小组委员会SC 22,编程语言C++,2006年4月
[6] Bellman,R.E.:关于路由问题,夸特。应用。数学。16, 87-90 (1958) ·Zbl 0081.14403号
[7] L.Bourdev,H.Jin,通用图像库,2006.opensource.adobe.com/gil
[8] 布鲁尔,A。;Gottschling,P。;格雷戈,D。;Lumsdaine,A.:通过库组成影响并行图特征解算器,第20届IEEE国际并行分布式处理研讨会论文集(IPDPS 2006),美国加利福尼亚州洛斯阿拉米托斯,466(2006年4月)
[9] 查克拉瓦蒂,M.M.T。;凯勒,G。;Jones,S.Peyton;Marlow,S.:与类相关的类型,1-13(2005)·Zbl 1369.68089号
[10] 查克拉瓦蒂,M.M.T。;凯勒,G。;Jones,S.Peyton:相关类型同义词,241-253(2005)·Zbl 1302.68055号
[11] C++Boost,Boost智能指针库。www.boost.org/libs/smart_ptr网站
[12] 迪金森,S。;Pelillo先生。;Zabih,R.:计算机视觉中图形算法专题介绍,IEEE trans。图案肛门。马赫英特尔公司。23,第10号,1049-1052(2001)
[13] Fabri,A。;Giezeman,G.-J。;Kettner,L。;Schirra,S。;Schönherr,S.:关于计算几何算法库CGAL的设计,《软件——实践与经验30》,第11期,1167-1202(2000)·Zbl 1147.68781号 ·doi:10.1002/1097-024X(200009)30:11<1167::AID-SPE337>3.0.CO;2-B型
[14] Felzenszwalb,P.F。;Huttenlocher,D.P.:《高效的基于图的图像分割》,国际计算机杂志。相对于。59,第2期,167-181(2004)
[15] 伽玛,E。;赫尔姆·R。;约翰逊,R。;Vlissides,J.:设计模式:可重用面向对象软件的元素,(1995)·Zbl 0887.68013号
[16] 加西亚,R。;Järvi,J。;Lumsdaine,A。;Siek,J。;Willcock,J.:泛型编程语言支持的扩展比较研究,J.funct。程序。17, 145-205 (2007) ·兹比尔1125.68019 ·doi:10.1017/S09567968061006198
[17] K.Gopal,R.Pai,T.R.Ioerger,T.Romo,J.C.Sacchettini,TEXTAL:自动化蛋白质结构测定的人工智能技术,摘自:《第十五届人工智能创新应用会议论文集》,IAAI,2003年,第93–100页
[18] 格雷戈,D。;Järvi,J。;Siek,J。;斯特劳斯特鲁普,B。;Reis,G.D。;Lumsdaine,A.:概念:C++中泛型编程的语言支持,291-310(2006)
[19] D.Gregor,A.Lumsdaine,分布内存并行计算的提升序列图算法,收录于:OOPSLA’05:2005年ACM SIGPLAN面向对象编程、系统、语言和应用会议论文集,2005年,第423–437页
[20] D.Gregor,M.Marcus,T.Witt,A.Lumsdaine,C++0x标准库的基本概念,技术报告N2677=08-0187,ISO/IEC JTC 1,信息技术,小组委员会SC 22,编程语言C++,2008
[21] D.Gregor,J.Siek,《实施概念》,技术报告N 1848=05-0108,ISO/IEC JTC 1,信息技术,小组委员会SC 22,编程语言C++,2005年8月。www.open-std.org/jtc1/sc22/wg21/docs/papers/2005/n1848.pdf
[22] D.Gregor,B.Stroustrup,J.Widman,J.Siek,概念的拟定措辞(第8版),技术报告N2741=08-025,ISO/IEC JTC 1,信息技术,小组委员会SC 22,编程语言C++,2008年8月
[23] D.Gregor,《概念GCC:C++的概念扩展》,2005年。http://www.generic-programming.org/software/ConceptGCC
[24] H.E.Hinnant,D.Abrahams,P.Dimov,关于添加对C++语言的正确引用的建议,技术报告N 1690=04-0130,ISO/IEC JTC 1,信息技术,小组委员会SC 22,编程语言C++,2004年9月。www.open-std.org/jtc1/sc22/wg21/docs/papers/2004/n1690.html
[25] H.E.Hinnant,P.Dimov,D.Abrahams,《为C++语言添加移动语义支持的提案》,技术报告N1377=02-0035,ISO/IEC JTC 1,信息技术,小组委员会SC 22,编程语言C++,2002年9月。www.open-std.org/jtc1/sc22/wg21/docs/papers/2002/n1377.htm
[26] T.R.Holton,T.R.Ioerger,J.A.Christopher,J.C.Sacchettini,TEXTAL:解释电子密度图的模式识别系统,摘自:《第七届分子生物学智能系统国际会议论文集》,ISMB,1999年,第130–137页
[27] IBM Research,面向对象编程和适配器模式。www.research.ibm.com/sop/sopcadap.htm
[28] 国际标准化组织,ISO/IEC 14882:2003:编程语言:C++,第二版,瑞士日内瓦,2003年,第757页
[29] C++性能技术报告,技术报告N1487=03-0070,ISO/IEC JTC 1,信息技术,小组委员会SC 22,编程语言C++,2003
[30] Järvi,J。;Gregor博士。;Willcock,J。;Lumsdaine,A。;Siek,J.:泛型编程中的算法专门化:C++中约束泛型的挑战,272-282(2006)
[31] Järvi,J。;Willcock,J。;Lumsdaine,A.:概念控制多态性,Lncs 2830,228-244(2003)
[32] M.Jazayeri,R.Loos,D.Musser,A.Stepanov,通用编程,Dagstuhl通用编程研讨会报告,德国达格斯图尔学院,1998年。www.dagstuhl.de/Reports/98171.pdf
[33] Jones,M.P.:具有函数依赖性的类型类,计算机科学讲义1782,230-244(2000)·Zbl 0971.68641号
[34] Kiczales,G。;Hilsdale,E。;休古宁,J。;克尔斯滕,M。;Palm,J。;Griswold,W.G.:aspectj概述,计算机科学课堂讲稿2072,327-353(2001)·Zbl 0982.68552号
[35] 拉梅尔,R。;Ostermann,K.:软件扩展和与类型类的集成,161-170(2006)
[36] Läufer,K。;鲍姆加特纳,G。;Russo,V.F.:Java、Compute的安全结构一致性。J.43,第6期,469-481(2000)·Zbl 0979.68011号 ·doi:10.1093/comjnl/436.6469文件
[37] Läufer,K。;Odersky,M.:多态类型推理和抽象数据类型,ACM trans。程序。语言系统。16,第5期,1411-1430(1994)
[38] Litvinov,V.:cecil中基于约束的多态性:走向实用和静态类型系统,388-411(1998)
[39] Magnusson,B.:代码重用被认为是有害的,面向对象程序。4、3、8号(1991年)
[40] M.Marcus,J.Järvi,S.Parent,《运行时多态泛型编程——在ConceptC++中混合对象和概念》,收录于:K.Davis和J.Striegnitz(编辑),《Multiparadigm编程2007:2007年ECOOL研讨会论文集》。主页.fh-regensburg.de/mpool/
[41] 马特森,M。;博世,J。;Fayad,M.E.:框架集成问题、原因、解决方案、共同点。ACM 42,第10号,80-87(1999)
[42] B.McNamara,Y.Smaragdakis,C++中的静态接口,在:C++模板编程第一次研讨会,德国埃尔福特,2000年。oonumerics.org/tmpw00/
[43] Mehlhorn,K。;Näher,S.:组合和几何计算的LEDA平台,(1999)·Zbl 0976.68156号
[44] N.Mitchell,G.Sevitsky,H.Srinivasan,《数据日记:在基于框架的应用程序中建模运行时复杂性的方法》,收录于:第一届以图书馆为中心的软件设计国际研讨会论文集,LCSD’05。OOPSLA’05研讨会;作为伦斯勒理工学院计算机科学系的技术报告06-12,2005年10月
[45] N.C.Myers,《特征:一种新的有用的模板技术》,《C++报告》,7(5),1995年,第32–35页
[46] M.Odersky,穷人类型课程,在IFIP WG 2.8会议上的演讲,函数编程,2006年7月。lamp.epfl.ch/odersky/teaks/wg2.8-boston06.pdf
[47] M.Odersky,《Scala语言规范:2.0版》,草案,2006年3月17日。http://scala.epfl.ch/docu/files/ScalaReference.pdf
[48] 美国家长,《超越对象:理解我们编写的软件》,《C++Connections演讲》,2005年。opensource.adobe.com/wiki/index.php/图片:Regular_object_presentation.pdf
[49] 2006年俄勒冈州波特兰OOPSLA’06图书馆中心软件设计研讨会上的主题演讲。lcsd.cs.tamu.edu/2006年
[50] S.Peyton Jones,M.Jones,E.Meijer,《类型类:设计空间的探索》,载于《第二届哈斯克尔研讨会论文集》,1997年。citeseer.ist.psu.edu/peytonjones 97type.html
[51] Pirkelbauer,P。;父母,S。;马库斯,M。;Stroustrup,B.:C++标准模板库的运行时概念,171-177(2008)
[52] 皮特·W·R。;威廉姆斯,医学硕士。;史蒂文,M。;斯威尼,B。;Bleasby,A.J。;Moss,D.S.:生物信息学模板库——生物计算的通用组件,《生物信息学》17,第8期,729-737(2001)
[53] Shani,U.:二值光栅图像中的填充区域:图形理论方法,SIGGRAPH计算机。图表。14,第3期,321-327(1980)
[54] 史J。;Malik,J.:标准化切割和图像分割,IEEE trans。图案肛门。马赫英特尔公司。22,第8号,888-905(2000)
[55] Siek,J。;Lee,L.-Q。;Lumsdaine,A.:boost图形库:用户指南和参考手册,(2002年)
[56] J.Siek,A.Lumsdaine,L.-Q.Lee,Boost Graph Library,Boost,2001年。网址:www.boost.org/libs/graph
[57] Siek,J。;Lumsdaine,A.:矩阵模板库:高性能科学计算的通用组件,Compute。科学。《工程1》,第6期,70-78(1999)
[58] J.Siek,A.Lumsdaine,《概念检查:C++中的绑定参数多态性》,载于:《C++模板编程第一次研讨会》,2000年10月。oonumerics.org/tmpw00/
[59] Silicon Graphics,Inc.,标准模板库的SGI实现,2004年。http://www.sgi.com/tech/stl/
[60] A.Stepanov,M.Lee,《标准模板库》,技术报告HPL-94-34(R.1),惠普实验室,1994年。www.hpl.hp.com/techreports
[61] Szyperski,C.:组件软件:超越面向对象编程(1998)
[62] M.Troyer,P.Dayal,R.Villiger,迭代特征解算器模板库。www.comp-phys.org/software/ietl/
[63] 瓦德勒,P。;Blott,S.:如何减少特殊多态性,60-76(1989)
此参考列表基于出版商或数字数学图书馆提供的信息。其项与zbMATH标识符进行启发式匹配,可能包含数据转换错误。在某些情况下,zbMATH Open的数据对这些数据进行了补充/增强。这试图尽可能准确地反映原始论文中列出的参考文献,而不要求完整或完全匹配。