Object-Oriented Intensional Programming: Intensional Classes Using Java and Lucid
本文介绍了面向对象的内涵编程(OO-IP),它是在Lucid的最新发展的意义上介于面向对象和内涵程序设计语言之间的一种新的混合语言。这种新的混合语言结合了Lucid和Java的基本特征,并引入了对象流的概念,这使得Lucid流中的每个元素都有可能成为具有嵌入内涵属性的对象。有趣的是,这种混合语言也为Java对象带来了显式表达和操作上下文概念的能力,创建了内涵对象的新概念,即其评估依赖于上下文的对象,在这里被证明可以翻译成标准对象。通过这种新的方法,我们扩展了内涵对象概念的使用和意义,丰富了Lucid中对象流的意义和Java中内涵对象的语义。
2009-09-03 cs.DC cs.PL
Constraint-Logic Object-Oriented Programming with Free Arrays
约束逻辑面向对象编程提供了面向对象编程和约束逻辑搜索之间的有用的共生关系。以集成方式使用逻辑变量、约束、非确定性搜索和面向对象编程的能力,有助于在面向对象应用程序中将与搜索相关的程序部分和其他业务逻辑相结合。通过这项工作,我们概念化数组类型的逻辑变量(“自由数组”),从而完成了一套类型的逻辑变量可以假设在约束逻辑面向对象编程。自由数组具有一些有趣的特性,比如长度不确定和对数组元素的访问不确定。
2020-08-31 cs.PL
Super Object Oriented Programming
应提交人的要求,这一陈述已被撤回。
2009-08-25 cs.PL
Concept-oriented programming: from classes to concepts and from inheritance to inclusion
在过去的几十年里,程序员一直在使用类的层次结构和面向对象编程(OOP)语言用树对世界上的事物进行建模。在本文中,我们描述了一种新的编程方法,称为面向概念的编程(COP),它通过引入概念和包含,分别概括类和继承。
2015-01-04 cs.PL
ForOpenCL: Transformations Exploiting Array Syntax in Fortran for Accelerator Programming
用于高性能计算的新兴GPU架构非常适合数据并行编程模型。本文介绍了初步的工作,检查编程方法,提供Fortran程序员访问这些新兴的系统。我们在Fortran中使用数组构造来展示这种不常使用的标准化语言功能如何轻松转换为低级加速器代码。ForOpenCL中的转换基于从Fortran到OpenCL的简单映射。我们证明,使用模板代码解决浅水流体方程,ForOpenCL编译器生成的转换的性能与手工优化的OpenCL代码相媲美。
2011-07-11 cs.PL
Context-Oriented Programming: A Programming Paradigm for Autonomic Systems
动态软件适应性是自主计算所利用的核心特性之一。然而,开发在运行时间改变其行为以适应操作条件的软件是一项具有挑战性的任务。在文献中已经提出了几种方法来解决这个问题,在不同的和互补的抽象层次:软件体系结构,中间件和编程水平。我们专注于ad-hoc程序设计语言结构可能提供的支持,以支持动态自适应行为。我们介绍了面向上下文的程序设计语言,我们提出了一个框架,该框架的位置在MAPE-K自主循环支持的范例。我们讨论了使用面向上下文的程序设计语言,而不是其他主流方法的基础上,面向动态方面的程序设计语言的优势,并提出了一个案例研究,显示如何提出的编程风格自然适合动态适应的要求。最后,我们讨论了一些已知的问题,并概述了一些开放的研究挑战。
2012-03-30 cs.PL
Object-Oriented Parallel Programming
我们介绍了一个面向对象的框架,并行编程,这是基于观察,编程对象可以被自然地解释为进程。并行程序由一组通过执行远程方法进行通信的持久进程组成。我们将讨论代码并行化和进程持久化,并在具有非常大的数据对象的计算的上下文中解释主要思想。
2014-04-17 cs.PL
Memory-Efficient Object-Oriented Programming on GPUs
面向对象编程通常被认为对于高性能计算(HPC)来说效率太低,尽管事实上许多重要的HPC问题具有固有的对象结构。我们的目标是为大规模并行SIMD架构(尤其是GPU)带来高效的面向对象编程。在这篇论文中,我们开发了各种技术来优化面向对象的GPU代码。最值得注意的是,我们确定了面向对象的单方法多对象(SMMO)编程模型。我们首先为SMMO应用开发了一个嵌入式C++阵列结构(SOA)数据布局DSL。然后,我们设计了一个无锁的,动态的内存分配器,存储在SOA布局的分配。最后,我们展示了如何通过内存碎片整理进一步优化SMMO应用程序的内存访问。
2019-08-16 cs.PL
Aspect-Oriented Programming based building block platform to construct Domain-Specific Language for HPC application
HPC系统的世界正在向一个更复杂的系统转变,因为处理器的性能改进已经放缓。领域特定语言(Domain-Specific Language,DSL)是一种很有前途的方法,它提供了一个高效的环境来创建一个高效的程序。然而,现有的DSL平台本身往往缺乏可移植性和成本DSL开发人员的巨大努力。为了解决这个问题,我们提出了一个基于面向方面编程(AOP)的DSL构建平台,使开发人员能够通过组合方面模块来构建DSL平台。方面模块管理抽象的应用程序流、数据结构和我们平台上的内存访问。因此,开发人员可以创建任何DSL平台,其目标应用程序具有HPC应用程序通常具有的属性,抽象假设。本研究实现了一个原型平台,可以处理MPI和OpenMP层。原型支持三种类型的应用程序(结构化网格,非结构化网格和粒子模拟)。然后,我们评估了实现平台的灵活性和生产力所带来的开销。
2022-08-29 cs.DC cs.PL
A Metamodel of Unit Testing for Object-Oriented Programming Languages
单元测试是一种用于验证程序的一部分的准确性和正确功能的方法。这项工作包括研究的关系和方法来测试面向对象的编程(OOP)程序,并提出了一个元模型,使程序员编写测试,同时编写源代码进行测试,利用OOP程序设计语言的关键功能,如继承,多态性等。
2009-12-18 cs.PL
Semantics of Programming Languages: A Tool-Oriented Approach
通过更加关注基于语义的工具生成,程序设计语言语义可以显著增加其影响。最终,这可能会导致“语言设计助手”包含大量的语义知识。
1999-11-26 cs.PL
Type oriented parallel programming for Exascale
虽然近年来HPC硬件和软件有了很大的进步,但我们用来编程这些机器的语言和模型仍然更加静态。这并不是因为缺乏努力,而是因为许多程序设计语言构建的基础不足以满足并行工作所需的表达能力。其结果是可编程性和性能之间的隐含权衡,由于许多科学用户是自己领域的专家,而不是HPC专家,这使得情况变得更糟。面向类型的编程通过类型系统编码语言的复杂性来解决这个问题。大多数语言功能都包含在一个松散耦合的类型库中,可以灵活地用于控制许多方面,如并行性。由于这种方法的高级性质,在编译过程中有很多信息可用于优化,并且在没有类型信息的情况下,编译器可以应用合理的默认选项,从而支持专家程序员和新手。我们证明,在没有性能或可扩展性的损失时,运行在高达8196个核心的Cray XE6系统,在这种类型的面向方式编写的代码提供了改进的可编程性。程序员能够在高级别上编写简单的隐式并行HPC代码,然后在需要时通过添加其他类型信息来显式调优。
2016-10-27 cs.DC cs.PL
Reference Type Logic Variables in Constraint-logic Object-oriented Programming
约束逻辑面向对象的编程,例如使用Muli,促进了商业软件的集成开发,偶尔涉及找到约束逻辑问题的解决方案。面向对象特性的可用性要求将对象也用作逻辑变量,而不是仅限于基本类型的逻辑变量。目前的工作贡献了一个概念,引用类型的逻辑变量的约束逻辑面向对象的编程,考虑到任意类层次结构的程序编写的面向对象的语言。这个概念讨论了约束逻辑面向对象程序和引用类型逻辑变量之间的交互,特别是对逻辑变量的调用和访问,类型操作和等式。此外,它还提出了相应的执行环境如何处理这些交互的方法。
2019-03-01 cs.PL
Toward Functionality Oriented Programming
提出了面向功能的程序设计的概念,并讨论了面向功能的程序设计的一些方面:(1)实现独立的基本类型和泛型集合类型;(2)实现独立的语法要求和建议;(3)统一的文档和代码;(4)跨模块接口;(5)跨语言程序设计方案。最后给出了一个面向功能的程序设计原型。
2011-02-18 cs.HC cs.PL
Structured Traversal of Search Trees in Constraint-logic Object-oriented Programming
在本文中,我们提出了一个明确的,非严格的表示搜索树的约束逻辑面向对象编程。我们的搜索树表示包括在应用程序执行过程中的非确定性和确定性行为。引入这样的表示便于使用各种搜索策略。为了证明我们的方法的适用性,我们将显式搜索树的虚拟机的约束逻辑面向对象的程序设计语言Muli。然后,我们示例性地实现了三种搜索算法,按需遍历搜索树:深度优先搜索,广度优先搜索和迭代深化深度优先搜索。特别是,最后两个策略允许一个完整的搜索,这是新颖的约束逻辑面向对象编程,并突出了我们的主要贡献。最后,我们使用几个基准比较实施的策略。
2019-08-27 cs.PL
Expert Systems with Logic#. A Novel Modeling Framework for Logic Programming in an Object-Oriented Context of C#
IU International University of Applied Sciences(IU国际应用科学大学)
我们提出了一种新的方法如何逻辑编程的专家系统可以直接声明在一个面向对象的语言。
2022-05-16 cs.AI cs.PL
On PROGRESS Operation. How to Make Object-Oriented Programming System More Object-Oriented (DRAFT)
实现持久对象的系统必须提供不同的机会,以便在对象存在期间以任意方式更改对象。在现代编程系统中,OO范式的传统实现具有基本的缺点,这使得持久可修改对象的实现变得相当复杂。存在不具有这些缺点的替代实现。在本文中,提供了PROGRESS操作,该操作修改现有继承层次结构中的现有对象。
2013-04-09 cs.PL cs.SE
Object-Oriented Modeling of Programming Paradigms
对于正确的应用程序,使用编程范式(如函数或逻辑编程)可以极大地提高软件开发的生产力。但是这些强大的范例都与外来的程序设计语言联系在一起,而软件开发的管理要求对单一语言进行标准化。这种困境可以通过以一种新的方式使用面向对象编程来解决。传统的分析方法是采用面向对象的建模方法。在新的方法中,分析确定了应用程序的理想范例;开发从范例的面向对象建模开始。在本文中,我们说明了新的方法,给出面向对象的建模和约束编程的例子。这些例子表明,不再需要在专用于它的语言中体现编程范式。
2006-11-09 cs.PL cs.SE
Transition-Oriented Programming: Developing Provably Correct Systems
本文提出面向转换的编程(TOP)范式,在统一理论框架中融合正确性规范、验证与实现,以解决正确性概念模糊带来的系统开发难题,支持构建可证明正确的系统。
2024-02-22 cs.PL
JavaCtx: Seamless Toolchain Integration for Context-Oriented Programming
面向上下文的编程是一种新兴的范式,它在语言层次上解决了软件动态适应和上下文相关问题的模块化问题。在本文中,我们提出了JavaCtx,一个工具,它采用编码约定生成的上下文感知的Java程序的语义,并随后将其编织到应用程序。JavaCtx的贡献是双重的:设计了一组编码约定,允许用普通Java编写面向上下文的软件,以及面向上下文的语义注入的概念,允许引入上下文感知的语义,而无需源到源的编译过程,这会破坏代码的结构。这两点都允许在现有的工业强度设备中无缝集成JavaCtx,并且大大简化了面向上下文的软件的开发。
2011-04-07 cs.PL
Concept-Oriented Programming
面向对象编程(OOP)的目的是通过将对象的表示和访问机制隐藏在原语引用中来描述对象的结构和行为。在这篇文章中,我们描述了一种方法,称为面向概念的编程(COP),它侧重于建模参考,假设他们也拥有应用程序特定的结构和行为占了很大一部分,甚至大部分的整体程序的复杂性。COP中的引用是完全合法的,并获得与对象相同的地位,而函数则分布在对象和引用之间。为了支持这种设计,我们引入了一个新的编程结构,称为概念,它概括了传统的类和概念包含关系概括类继承。COP的主要优点是它允许程序员描述任何程序的两个方面:显式使用的对象函数和具有横切性质的引用的中间功能,并在对象访问期间在幕后隐式执行。
2010-09-26 cs.PL
Concept-Oriented Programming: References, Classes and Inheritance Revisited
面向概念编程(COP)的主要目标是描述对象是如何表示和访问的。它使引用(对象位置)成为程序的第一类元素,负责许多难以通过对象建模的重要功能。COP通过引入一个新的构造、概念和一个新的关系、包含,重新思考并概括了类和继承等面向对象的主要概念。一个优点是,仅使用几个基本概念,我们就能够描述目前属于不同编程范式的许多一般思维模式:建模对象层次结构(基于原型的编程),父方法优先于子方法(Beta中的内部方法),模块化横切关注点(面向方面的编程),价值取向(函数式编程)。由于COP仍然向后兼容面向对象编程,它可以被看作是一个前景的发展方向,一个简单而自然的统一编程模型。
2014-09-13 cs.PL cs.SE
A comprehensive operational semantics of the SCOOP programming model
操作语义作为一种灵活但严格的方法来描述程序设计语言的含义。通常,感觉有必要保持语义小,例如通过避免状态空间爆炸来促进其用于模型检验。然而,在语义中省略许多细节通常会使结果仅对有限的核心语言有效,从而与任何实际实现留下很大的差距。在本文中,我们提出了一个完整的语义并发面向对象的程序设计语言SCOOP(简单并发面向对象编程)。语义已被发现足够详细的SCOOP编译器和运行时系统的实现,并检测和纠正各种错误和歧义,在原来的非正式规范和原型实现。在我们的形式化规范中,我们使用带有前提和公理的抽象数据类型来描述状态,并引入了一些特殊的运行时操作来用我们的推理规则来建模运行时系统。这种方法使我们能够使我们的大型正式规范管理,提供了第一步的参考文件指定面向对象的语言的基础上操作语义。
2012-04-13 cs.DC cs.PL
Towards Interactive Object-Oriented Programming
为了表示交互式对象,我们提出了一个选择析取声明语句的形式S R,其中S;R是(过程或字段)声明语句类内。此语句具有以下语义:请求用户在创建该类的对象时从S和R中选择一个。此语句用于表示需要与用户交互的交互式对象。
2013-01-29 cs.PL
Concurrent Typestate-Oriented Programming in Java
我们描述了一种生成的方法,使并发面向类型状态的编程在Java和其他主流语言。该方法允许程序员使用高级同步抽象来实现暴露状态敏感接口的对象,该高级同步抽象将方法与接收方对象的状态进行同步,这些方法在接收方对象中具有效果。外部工具负责生成实现同步逻辑的所有样板代码。行为类型用于指定对象协议。该工具将协议一致性验证与同步逻辑集成在一起,以便在运行时及时检测到协议违规。
2019-04-02 cs.PL
Towards a Decoupled Context-Oriented Programming Language for the Internet of Things
易于编程的行为是物联网中大规模可重构部署的一个主要问题。这类设备通常需要将其行为的一部分具体化,例如传感,数据聚合或代码卸载。大多数现有的面向上下文的程序设计语言都将整个行为集成在同一个类或封闭层中。我们建议从决策过程中抽象和分离上下文跟踪,并使用基于事件的处理程序来互连它们。我们保持了一个非常简单的声明式和非分层的编程模型。我们通过定义Golo的扩展来说明,Golo是一种基于JVM的动态语言。
2015-07-30 cs.PL
Functional Programming in Pattern-Match-Oriented Programming Style
纵观函数式编程的历史,递归已经成为描述程序中循环的自然方法。然而,在递归定义和算法的最简单解释之间,甚至对于基本的列表处理函数,如map,concat或unique,也经常存在着相当大的认知距离;当我们解释这些函数时,我们很少像在函数式编程中那样显式地使用递归。例如,map通常解释如下:map函数接受一个函数和一个列表,并返回将该函数应用于列表中所有元素的结果列表。本文提出了一种新的编程范式,称为面向模式匹配的编程,以填补这一空白。我们的方法的一个重要组成部分是利用非自由数据类型的模式匹配。非自由数据类型的模式匹配的特点是具有回溯和模式匹配算法可扩展性的非线性模式匹配。一些非标准模式构造,如非模式、循环模式和顺序模式,都是从这种模式匹配工具派生出来的。基于这一结果,本文介绍了许多编程技术,通过将递归限制在模式内,用直观的模式取代显式递归。我们将这些技术归类为面向模式匹配的编程设计模式。这些编程技术使我们不仅可以重新定义最基本的函数列表处理,如地图,concat,或独特的更优雅的比传统的功能编程风格,但也更实用的数学算法和软件,如SAT求解器,计算机代数系统,和数据库查询语言,我们还没有能够实现简洁。
2020-02-14 cs.PL
Design and Implementation of a Reversible Object-Oriented Programming Language
高级可逆程序设计语言很少,而且通常只提供底层机器细节的基本抽象。现代程序设计语言提供了大量的语言结构和范例,以促进抽象接口的设计,但我们目前对可逆程序设计语言的这些功能的适用性的理解非常有限。我们介绍了第一个可逆的面向对象的程序设计语言,ROOPL,支持用户定义的数据类型,类继承和子类型多态性。该语言扩展了现有可逆命令式语言的设计,并允许在可逆机器上有效实现。我们提供了一个形式化的语言语义,类型系统,我们通过实现一个可逆的图灵机模拟器证明了计算的通用性的语言。ROOPL语句是局部可逆的,不会增加程序大小或计算复杂性,并且该语言提供了对每个类方法的逆语义的直接存取。我们描述了从ROOPL到可逆汇编语言PISA的无垃圾翻译所需的技术,并提供了所述技术的完整实现。我们的研究结果表明,面向对象编程的核心语言功能进行了可逆计算领域的一些能力。
2017-07-25 cs.PL
Object Oriented and Functional Programming for Symbolic Manipulation
讨论了使用不同编程技术进行符号操作的混合方法的优点。该方法的主要目的是将面向对象的程序设计方法与函数式语言在数据处理、内部表示和软件可移植性等方面的优点相结合,使面向对象的程序设计方法便于用户表示数据和算法。
1999-01-13 cs.PL cs.SC
The C Object System: Using C as a High-Level Object-Oriented Language
C对象系统(Cos)是一个小型的C库,它实现了Clos、Objc和其他面向对象的程序设计语言中可用的高级概念:统一对象模型(类、元类和属性元类)、泛型函数、多方法、委托、属性、异常、契约和闭包。Cos依赖于C程序设计语言的可编程能力来扩展其语法并将上述概念实现为第一类对象。Cos旨在满足几个一般原则,如简单性,可扩展性,可重用性,效率和可移植性,这些在单一的程序设计语言中很少能满足。它的设计是为了提供高效和可移植的消息多分发和消息多转发的实现,这是代码可扩展性和可重用性的核心。有了COS功能,软件应该像脚本语言一样灵活和可扩展,像C编程一样高效和可移植。同样,Cos概念应该大大简化自适应和面向方面的编程以及分布式和面向服务的计算
2010-03-12 cs.PL
Object-oriented Programming Laws for Annotated Java Programs
面向对象的编程法则已经在不与行为接口规约语言(BISL)相结合的语言的上下文中提出。源代码和接口规范之间的强依赖性可能会在转换程序时造成许多困难。在本文中,我们介绍了一套面向对象的语言,如Java结合Java建模语言(JML)的编程法则。这套法律处理面向对象的功能,同时考虑到他们的规格。有些法律只涉及规约语言的特征。这些定律构成了一组小的转换,用于开发更精细的转换,如重构。
2010-03-25 cs.LO cs.PL cs.SE
Extending Object-Oriented Languages by Declarative Specifications of Complex Objects using Answer-Set Programming
许多应用程序需要复杂结构的数据对象。如果所考虑的对象受到不同的应用程序特定的约束,则开发用于创建此类对象的新算法解决方案或调整现有算法解决方案可能是一项重要且昂贵的任务。但是,通常以声明方式描述所需的对象相对容易。在本文中,我们建议使用答案集编程(ASP)--一个完善的声明式编程范式从该地区的人工智能--实例化对象的标准面向对象的程序设计语言。特别是,我们扩展了Java的声明性规范,所需的对象可以使用可用的ASP求解器技术自动生成。
2011-12-06 cs.AI cs.PL
A new model for Context-Oriented Programs
面向上下文编程(COP)是一种新的编程技术,它允许在程序执行时更改命令执行的上下文。与面向对象编程(面向方面编程)相比,COP更灵活(模块化和结构化)。本文提出了一个精确的语法导向的操作语义面向上下文的编程与层,实现COP语言,如ContextJ* 和ContextL。我们的语言模型是建立在Java丰富的层概念和激活和停用层范围。本文还提出了一个静态类型系统,保证类型化的程序不会卡住。利用所提出的语义方法,本文给出了类型系统的数学正确性。
2014-02-23 cs.PL cs.SE
A Constraint and Object Oriented Fifth Generation Programming Language and its Compiler and Runtime System
自LISP语言问世以来,第五代程序设计语言已经发展了几十年。然而,与第四代程序设计语言相比,第五代程序设计语言由于语义晦涩、问题表示严谨、推理能力有限等原因,一直没有得到广泛应用。为此,本文提出的第五代程序设计语言COOL(Constraint and Object Ordered Language)克服了以往第五代程序设计语言语义直观、处理问题条件限制严格等问题,提高了其推理能力。具体改进如下:第一,COOL支持面向过程和面向对象,便于在生产项目中应用;第二,COOL支持表达式作为函数声明和函数返回,提高了对数学公式的语言亲和力,支持将函数参数嵌入函数名字符串,使函数命名更接近自然语言。使数学问题更容易描述;第三,COOL引入了加权机制,通过累积加权加速推理过程。第四,COOL在编程中引入了正向和反向函数的概念,这样计算机就可以推断和执行具有逻辑顺序约束的问题。第五,计算机可以通过回溯算法和动态规划算法,利用正解过程推导出逆解过程,从而使计算机能够推导出具有时序约束的问题。第六,引入预执行步骤,将程序的推理和函数查询过程与执行过程分离,提高程序的执行速度。
2022-06-02 cs.PL
Extended abstract: Type oriented programming for task based parallelism
编写并行代码是困难的,并且在抽象和性能之间表现出基本的权衡。设计用于简化并行性复杂性的高级语言抽象做出了某些影响性能和可伸缩性的假设。另一方面,低级语言提供了许多优化的机会,需要深入的知识和程序员考虑并行性的棘手细节。需要一种方法,可以弥合差距,并提供编程的便利性和控制和优化的机会。通过可选地用附加的类型信息装饰代码,程序员可以指导编译器做出某些决定,或者依赖于合理的默认选择。
2020-10-27 cs.PL
Object-oriented programming: some history, and challenges for the next fifty years
面向对象编程与Ole-Johan Dahl和Kristen Nygaard在设计Simula语言方面的开创性工作密不可分,该语言于1961年春天在挪威计算中心开始。然而,正如我们今天所认为的那样,五十年后的今天,面向对象是思想、约束和人之间复杂相互作用的结果。达尔和奈加德肯定会认出它是他们的后代,但也可能会惊讶于它已经长大了多少。本文基于2011年8月22日在奥斯陆大学Ole-Johan Dahl hus科学开放之际所做的演讲。它着眼于Simula的基本思想,这些思想是如何发展成为主导的编程范式的,以及当我们接近下一个50年的信息学挑战时,它们必须提供什么。
2013-03-02 cs.PL
Choral: Object-Oriented Choreographic Programming
本文提出首个基于主流抽象的编排式编程语言 Choral,通过引入分布式数据类型概念将编排式与面向对象编程相融合,实现了模块化角色代码生成,并凭借对象传递等特性成为首个高阶编排式语言。
2023-10-19 cs.PL
A Practical Study of Control in Objected-Oriented--Functional--Logic Programming with Paisley
Paisley是Java中用于非确定性模式匹配的可扩展轻量级嵌入式领域特定语言。使用简单的API和编程习惯,它将任意数据对象的函数逻辑处理能力带到Java平台,而不约束底层的面向对象语义。在这里,我们提出了一个扩展的佩斯利框架,增加了基于模式的控制流。它利用了Java语言最近增加的功能,即函数接口和lambda表达式,以实现显式和透明的延续传递风格的控制方法。我们评估的实际影响的新功能,对现实世界的案例研究,重新设计的第三方开源项目使用佩斯利在传统的面向对象的数据查询习惯用法。我们发现这种方法对于遗留代码的增量重构是可行的,在关注点分离、清晰度和意图性方面有了显著的质的改进,从而使代码理解、测试和调试变得更容易。
2017-01-03 cs.PL
Have Object-Oriented Languages Missed a Trick with Class Function and its Subclasses?
本文指出面向对象语言缺乏面向对象意义上的 class Function 及其子类,通过在流行编程语言中实现此类子类进行实验性研究,探讨面向对象语言错失的这一机会。
2025-07-01 cs.PL
An Efficient Implementation of Guard-Based Synchronization for an Object-Oriented Programming Language
本文提出一种将守卫原子动作附加到对象,结合协程、工作线程及专用队列栈管理的高效实现,使实验语言Lime在合成基准上优于多种主流语言。
2025-05-27 cs.DC cs.LO cs.PL
Object-Oriented Programming, Functional Programming and R
本文回顾了R中的一些编程技术,这些技术已被证明是有用的,特别是对于大型项目。这些包括面向对象编程的几个版本,用于大量的R包。评论试图澄清各种版本背后的起源和思想,每个版本在适当的背景下都是有价值的。R也受到函数式编程思想的强烈影响,特别是将函数式编程与面向对象编程相结合的愿望。为了阐明这种特殊的思想组合是如何在当前的R语言和支持软件中产生的,本文将首先回顾面向对象和函数式编程背后的基本思想,然后研究R的演变,这些思想提供了背景。函数式编程支持定义良好的、可防御的软件,并提供可重现的结果。面向对象的编程是一种卓越的机制,可以在管理复杂性的同时为用户保持简单。这两种范式在支持主要软件以将模型拟合到数据和许多其他统计应用方面很有价值。这些范式在R.函数式编程激发了R语言的很多东西,但R语言并没有强制执行这种范式。从函数的角度来看,面向对象编程不同于非函数语言中使用的面向对象编程,需要强调这一区别以避免混淆。R最初复制了贝尔实验室的S语言,而S语言又受到早期程序库的强烈影响。在每一个阶段,新的想法都被添加进来,但以前的软件也继续在设计中显示其影响力。概述这一演变将进一步阐明为什么我们目前有这种有点不寻常的想法组合。
2014-09-09 cs.PL cs.SE stat.CO
A Comparative Study of the Usability of Two Object-oriented Concurrent Programming Languages
并发性在通用计算中的重要性正在迅速增加,这是由于最近转向多核处理架构。因此,越来越多的开发人员不得不学习编写并发程序,这是一项即使对专家来说也很难的任务。因此,语言设计者们正在致力于使并发编程比使用传统线程库“更容易”的语言。然而,一种新语言比另一种语言更有用的说法不能由纯粹的理论考虑来支持,而需要实证研究。在本文中,我们提出了一个研究的设计,比较并发程序设计语言方面的理解和调试现有的程序和编写正确的新程序。这种研究的一个关键挑战是避免在培训阶段和解释参与者的解决方案时可能引入的偏见。我们通过使用自学材料和评估方案来解决这些问题,该方案暴露了校正器的任何主观决定,或者完全消除它们。我们应用我们的设计比较两个面向对象的语言的并发性,多线程Java和SCOOP(简单并发面向对象编程),在学术环境。我们得到的结果有利于SCOOP,即使研究参与者以前的Java线程的培训。
2010-11-28 cs.PL
FooPar: A Functional Object Oriented Parallel Framework in Scala
我们提出了FooPar,在多范式程序设计语言Scala的高效并行计算的扩展。Scala提供了简洁干净的语法,并集成了函数式编程特性。我们的框架FooPar结合了这些功能与并行计算技术。FooPar是模块化设计的,支持轻松访问分布式内存架构的不同通信后端以及高性能数学库。在这篇文章中,我们使用它来并行化矩阵矩阵乘法,并显示其可扩展性的等效率分析。此外,基于两个超级计算机上的实证分析的结果。我们实现接近最佳性能wrt。理论峰值性能。基于这个结果,我们得出结论,与纯粹基于C和MPI的实现相比,FooPar允许完全访问Scala的设计特性,而不会遭受性能下降。
2013-06-13 cs.DC cs.PL
Phoenix -- The Arabic Object-Oriented Programming Language
计算机程序是由计算机中央处理单元从计算机存储器内执行的一组电子指令。它的目的是控制计算机的功能,使其能够执行各种任务。基本上,计算机程序是由人类使用程序设计语言编写的。程序设计语言是一组语法规则和词汇,用于指导计算机程序的正确编写。在实践中,大多数现有的程序设计语言都是在讲英语的国家编写的,因此它们都使用英语来表达它们的语法和词汇。然而,许多其他程序设计语言是用非英语语言编写的,例如,中国的BASIC,中国的Python,俄罗斯的Rapira和阿拉伯的Loughaty。本文讨论了一种新的程序设计语言Phoenix的设计与实现。它是一种通用的、高级的、命令式的、面向对象的、编译的阿拉伯语程序设计语言,使用阿拉伯语作为语法和词汇。Phoenix的核心是一个编译器系统,它由六个组件组成,它们是预处理器、扫描器、解析器、语义分析器、代码生成器和链接器。所进行的实验说明了Phoenix语言的几个强大功能,包括函数、while循环和算术运算。作为未来的工作,更先进的功能,包括继承,多态性,文件处理,图形用户界面,和网络的发展。
2019-05-24 cs.PL
A Context-Oriented Extension of F#
面向上下文的程序设计语言为我们提供了原始的结构,以适应程序的行为取决于其操作环境,即上下文的演变。在以前的工作中,我们提出了ML_CoDa,一个面向上下文的语言,有两个组件:一个声明性的成分编程的上下文和一个功能的计算。本文描述了ML_CoDa作为F#扩展的实现。
2015-12-24 cs.PL
A Programming Language Oriented Approach to Computability
可计算性和复杂性领域是计算机科学的发源地。图灵、丘奇和克莱因都发展了形式主义,证明了他们所认为的“直观可计算”。然而,时代在变化,今天的(有抱负的)计算机科学家在构建自动机或编写函数方面不那么精通,他们更熟悉程序设计语言的世界。本文将尝试以更适合现代开发人员的形式介绍可计算性理论和复杂性的典型概念。它主要以\cite{jones}为基础,但也从其他来源获取输入,以提供示例、附加信息等。
2014-02-10 cs.LO cs.PL
Applying Type Oriented Programming to the PGAS Memory Model
分区全局地址空间内存模型已经被许多语言和应用程序所普及。然而,这种抽象通常会导致程序员不得不依赖于一些内置的选择,并且由于这种隐式并行性,在程序员很少帮助的情况下,代码的可伸缩性和性能严重依赖于编译器和应用程序的选择。我们提出了一种方法,面向类型的编程,并行性的所有方面都通过类型和类型系统编码。例如,程序员关联的类型信息将决定数组如何分配、分区和分布。有了这些丰富的高级信息,编译器就可以生成一个高效的目标可执行文件。如果程序员希望省略详细的类型信息,那么编译器将依赖于有良好文档记录的安全默认行为,这些行为可以在以后通过添加类型进行调优。提出了一种遵循PGAS存储模型的面向类型的并行程序设计语言Mesham。我们说明了如何,如果这样做的话,使用类型可以调整所有参数和选项与此PGAS模型在一个干净和一致的方式,而无需重写大部分的代码。FFT的案例研究,并考虑在可编程性和性能方面-后者,我们证明了与现有的FFT求解器的比较。
2020-09-26 cs.PL
Mapping Objects to Persistent Predicates
Prolog逻辑程序设计在许多需要存储知识的系统中被广泛用于提供持久性。用于供应持久性的Prolog编程语言的一些实现具有与其他程序设计语言的双向接口,总体上具有面向对象的编程语言。目前,缺少用于系统开发的工具和框架,这些工具和框架以简单和敏捷的形式使用逻辑谓词持久性。更具体地说,目前需要一个面向对象和逻辑持久性提供程序,允许在主存中操作对象,并且该对象的持久性具有逻辑编程谓词方面。目前的工作介绍了一个面向对象和逻辑持久性提供者的支持对象的序言声明性映射的替代。所提出的替代方案包括逻辑编程谓词与面向对象方法的对应关系,其中对于逻辑编程的每个元素,一个面向对象的元素使其相互作用。逻辑程序设计谓词的面向对象表示提供了对组成知识的元素进行操作的便利。
2017-05-01 cs.LO cs.PL cs.SE
Extending Design by Contract for Aspect-Oriented Programming
契约式设计(DbC)和程序断言的运行时实施使得能够构建更健壮的软件。它还允许在错误报告中分配责任。不幸的是,没有对面向AOP的编程(AOP)的运行时契约执行和责任分配的支持。将DbC扩展到方面会带来大量与断言验证的正确顺序相关的问题。我们表明,没有一般正确的执行顺序的对象断言和方面断言。将方面进一步分类为不可知的、服从的或叛逆的,定义了需要遵循的断言验证顺序。我们描述了这种分类的应用程序中的原型DbC工具的AOP命名为科纳,方面用于实现合同,合同用于强制执行方面的断言。
2005-01-24 cs.PL cs.SE
Building A Proof-Oriented Programmer That Is 64% Better Than GPT-4o Under Data Scarcity
University of Illinois Urbana-Champaign(伊利诺伊大学厄巴纳-香槟分校);University of Chicago(芝加哥大学);Shanghai Jiaotong University(上海交通大学)
针对现有语言模型在数据稀缺下面向证明编程的不足,提出首个面向项目级面向证明编程生成与修复的合成数据增强方法,所训练的14B参数模型PoPilot在相关任务上比GPT-4o优秀64%,并能显著提升GPT-4o的修复性能。
2025-04-13 cs.CL cs.PL cs.SE
Design and Implementation of Dynamic Memory Management in a Reversible Object-Oriented Programming Language
可逆面向对象程序设计语言(ROOPL)于2016年底提出,并证明了面向对象编程范式在可逆环境中工作。该语言的特点是简单的静态作用域对象,这使得非平凡的程序乏味,如果不是不可能使用有限的工具编写。我们引入了一个新的语言ROOPL++形式的扩展ROOPL,具有动态存储管理和固定大小的数组,以增加语言的表达能力。该语言是ROOPL的超集,并已正式定义其语言语义,类型系统和计算的普遍性。可逆内存管理器布局的考虑进行了讨论,并最终导致伙伴内存布局的选择。ROOPL++中添加的扩展翻译到可逆的汇编语言PISA提供无垃圾计算。动态存储管理扩展成功地增加了ROOPL的表达能力,并因此表明,非平凡的可逆数据结构,如二叉树和双向链表,是可行的,并不违背可逆计算范式。
2018-04-12 cs.DS cs.PL
On the Interaction of Object-Oriented Design Patterns and Programming Languages
设计模式是从许多真实的系统中提炼出来的,用于对常见的编程实践进行分类。然而,由于缺乏支持程序设计语言的构造或机制,一些面向对象的设计模式被扭曲或过于复杂。在本文中,我们分析了几个已发布的设计模式,以寻找解决实现语言约束的惯用方法。从这个分析,我们奠定了基础的通用语言的结构和机制,如果提供了一个静态类型的,面向对象的语言,将更好地支持设计模式的实现,并传递,有利于建设许多真正的系统。特别是,我们的语言结构目录包括与继承分离的子类型,独立于类的词法作用域闭包对象,以及多方法分派。所提出的构造和机制并不是全新的,而是从各种语言和程序设计语言研究中采用的,并以新的正交方式组合。我们认为,通过描述设计模式的建议的结构和机制,模式描述变得更简单,因此,访问到更多的语言社区。特定语言中缺少的结构和机制可以使用聚合习惯用法来实现。
2019-05-31 cs.PL cs.SE
Aspect-oriented Programming with Julia
本文提出将面向方面编程集成到 Julia 中,利用其元编程能力开发了 AspectJulia 框架,通过封装横切关注点有效提升了软件的模块性、可维护性与适应性。
2024-12-25 cs.PL
A Comparative Case Study of Code Reuse With Language Oriented Programming
在软件设计中重用高级概念的能力和重用实现它们的代码的能力之间存在着差距。面向语言编程(LOP)是一种软件开发范式,旨在通过广泛使用领域特定语言(DSL)来缩小这一差距。使用LOP,高级可重用概念成为可重用DSL构造,并在DSL实现中完成它们到代码级概念的转换。特定的产品是使用DSL代码实现的,因此只重用高级概念。在本文中,我们提供了两种实现方法之间的比较:(a)使用外部DSL与投影语言工作台(MPS);和(b)使用内部DSL与LOP语言(Cedarian)。为了演示如何在每种方法中实现重用,我们提出了一个小的案例研究,LOP是用来建立一个软件产品线(SPL)的计算器软件。
2011-03-30 cs.PL cs.SE