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
Reference Type Logic Variables in Constraint-logic Object-oriented Programming
约束逻辑面向对象的编程,例如使用Muli,促进了商业软件的集成开发,偶尔涉及找到约束逻辑问题的解决方案。面向对象特性的可用性要求将对象也用作逻辑变量,而不是仅限于基本类型的逻辑变量。目前的工作贡献了一个概念,引用类型的逻辑变量的约束逻辑面向对象的编程,考虑到任意类层次结构的程序编写的面向对象的语言。这个概念讨论了约束逻辑面向对象程序和引用类型逻辑变量之间的交互,特别是对逻辑变量的调用和访问,类型操作和等式。此外,它还提出了相应的执行环境如何处理这些交互的方法。
2019-03-01 cs.PL
Structured Traversal of Search Trees in Constraint-logic Object-oriented Programming
在本文中,我们提出了一个明确的,非严格的表示搜索树的约束逻辑面向对象编程。我们的搜索树表示包括在应用程序执行过程中的非确定性和确定性行为。引入这样的表示便于使用各种搜索策略。为了证明我们的方法的适用性,我们将显式搜索树的虚拟机的约束逻辑面向对象的程序设计语言Muli。然后,我们示例性地实现了三种搜索算法,按需遍历搜索树:深度优先搜索,广度优先搜索和迭代深化深度优先搜索。特别是,最后两个策略允许一个完整的搜索,这是新颖的约束逻辑面向对象编程,并突出了我们的主要贡献。最后,我们使用几个基准比较实施的策略。
2019-08-27 cs.PL
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
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
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
Toward Functionality Oriented Programming
提出了面向功能的程序设计的概念,并讨论了面向功能的程序设计的一些方面:(1)实现独立的基本类型和泛型集合类型;(2)实现独立的语法要求和建议;(3)统一的文档和代码;(4)跨模块接口;(5)跨语言程序设计方案。最后给出了一个面向功能的程序设计原型。
2011-02-18 cs.HC 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
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
Reasoning About a Service-oriented Programming Paradigm
本文介绍了一种新的分布式应用程序开发方法:面向服务的方法。这是一个概念文件的基础上,我们的经验,在开发一个理论和编程服务的语言。理论形式化和语言解释器都向我们展示了一种新的编程范式存在的证据。在本文中,我们说明了它的基本特征。
2009-06-22 cs.DC cs.PL
Object-Oriented Modeling of Programming Paradigms
对于正确的应用程序,使用编程范式(如函数或逻辑编程)可以极大地提高软件开发的生产力。但是这些强大的范例都与外来的程序设计语言联系在一起,而软件开发的管理要求对单一语言进行标准化。这种困境可以通过以一种新的方式使用面向对象编程来解决。传统的分析方法是采用面向对象的建模方法。在新的方法中,分析确定了应用程序的理想范例;开发从范例的面向对象建模开始。在本文中,我们说明了新的方法,给出面向对象的建模和约束编程的例子。这些例子表明,不再需要在专用于它的语言中体现编程范式。
2006-11-09 cs.PL cs.SE
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
Operator-oriented programming: a new paradigm for implementing window interfaces and parallel algorithms
我们提出了一个新的编程范式,可以是有用的,特别是,用于实现窗口接口和并行算法。这个范例允许用户定义可以包含嵌套运算符的运算符。这种新的范式被称为面向运营商。这种模式的目标之一是避免许多面向对象语言中固有的对象定义的复杂性,并转向透明的算法定义。
2010-04-23 cs.DC cs.PL
A Comparative Study of the Usability of Two Object-oriented Concurrent Programming Languages
并发性在通用计算中的重要性正在迅速增加,这是由于最近转向多核处理架构。因此,越来越多的开发人员不得不学习编写并发程序,这是一项即使对专家来说也很难的任务。因此,语言设计者们正在致力于使并发编程比使用传统线程库“更容易”的语言。然而,一种新语言比另一种语言更有用的说法不能由纯粹的理论考虑来支持,而需要实证研究。在本文中,我们提出了一个研究的设计,比较并发程序设计语言方面的理解和调试现有的程序和编写正确的新程序。这种研究的一个关键挑战是避免在培训阶段和解释参与者的解决方案时可能引入的偏见。我们通过使用自学材料和评估方案来解决这些问题,该方案暴露了校正器的任何主观决定,或者完全消除它们。我们应用我们的设计比较两个面向对象的语言的并发性,多线程Java和SCOOP(简单并发面向对象编程),在学术环境。我们得到的结果有利于SCOOP,即使研究参与者以前的Java线程的培训。
2010-11-28 cs.PL
Concept-Oriented Programming: References, Classes and Inheritance Revisited
面向概念编程(COP)的主要目标是描述对象是如何表示和访问的。它使引用(对象位置)成为程序的第一类元素,负责许多难以通过对象建模的重要功能。COP通过引入一个新的构造、概念和一个新的关系、包含,重新思考并概括了类和继承等面向对象的主要概念。一个优点是,仅使用几个基本概念,我们就能够描述目前属于不同编程范式的许多一般思维模式:建模对象层次结构(基于原型的编程),父方法优先于子方法(Beta中的内部方法),模块化横切关注点(面向方面的编程),价值取向(函数式编程)。由于COP仍然向后兼容面向对象编程,它可以被看作是一个前景的发展方向,一个简单而自然的统一编程模型。
2014-09-13 cs.PL cs.SE
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
Applying Type Oriented Programming to the PGAS Memory Model
分区全局地址空间内存模型已经被许多语言和应用程序所普及。然而,这种抽象通常会导致程序员不得不依赖于一些内置的选择,并且由于这种隐式并行性,在程序员很少帮助的情况下,代码的可伸缩性和性能严重依赖于编译器和应用程序的选择。我们提出了一种方法,面向类型的编程,并行性的所有方面都通过类型和类型系统编码。例如,程序员关联的类型信息将决定数组如何分配、分区和分布。有了这些丰富的高级信息,编译器就可以生成一个高效的目标可执行文件。如果程序员希望省略详细的类型信息,那么编译器将依赖于有良好文档记录的安全默认行为,这些行为可以在以后通过添加类型进行调优。提出了一种遵循PGAS存储模型的面向类型的并行程序设计语言Mesham。我们说明了如何,如果这样做的话,使用类型可以调整所有参数和选项与此PGAS模型在一个干净和一致的方式,而无需重写大部分的代码。FFT的案例研究,并考虑在可编程性和性能方面-后者,我们证明了与现有的FFT求解器的比较。
2020-09-26 cs.PL
Locally-Oriented Programming: A Simple Programming Model for Stencil-Based Computations on Multi-Level Distributed Memory Architectures
用于高性能计算的新兴混合加速器架构通常适合于使用数据并行编程模型。不幸的是,这些体系结构的程序员面临着陡峭的学习曲线,其经常需要学习新的语言(例如,OpenCL)。此外,这些机器的集群的存储器组织的分布式(并且经常是多级)性质提供了额外的复杂性。本文介绍了初步的工作,研究如何编程与本地定位可以提供更简单的访问加速器架构。面向本地的编程模型对于需要应用模板或卷积内核的算法的解决方案特别有用。在这种编程模型中,程序员通过仅修改单个数组元素(称为局部元素)来编写算法,但对局部元素周围的小型子数组具有只读访问权限。我们演示了如何一个面向本地的编程模型可以通过使用源到源程序转换作为语言扩展。
2015-02-12 cs.DC cs.PL
Process-Oriented Parallel Programming with an Application to Data-Intensive Computing
我们介绍面向过程的编程作为一个自然的扩展面向对象的编程并行计算。它基于这样的观察:面向对象语言的每个类都可以实例化为一个进程,可以通过远程指针访问。进程指针的引入不需要语法扩展,用编程对象标识进程,并使进程能够通过执行远程方法简单地交换信息。面向过程的编程是一种高级语言,可以替代多线程、MPI和当前用于并行计算的许多其他语言、环境和工具。它只使用现有语言(如C++和Python)的最小语法扩展来实现自然的基于对象的并行性,因此有可能导致并行编程的广泛采用。我们实现了一个原型系统运行进程使用C++与MPI,并使用它来计算一个大型的三维傅立叶变换的计算机集群上建立的商品硬件组件。三维傅立叶变换是具有复杂数据访问模式的数据密集型应用程序的原型。面向进程的代码只有几百行,通过实现大规模并行和最大化硬件利用率来实现非常高的数据吞吐量。
2014-07-21 cs.DC cs.PL
Aspect-oriented Programming with Julia
本文提出将面向方面编程集成到 Julia 中,利用其元编程能力开发了 AspectJulia 框架,通过封装横切关注点有效提升了软件的模块性、可维护性与适应性。
2024-12-25 cs.PL
Object Oriented and Functional Programming for Symbolic Manipulation
讨论了使用不同编程技术进行符号操作的混合方法的优点。该方法的主要目的是将面向对象的程序设计方法与函数式语言在数据处理、内部表示和软件可移植性等方面的优点相结合,使面向对象的程序设计方法便于用户表示数据和算法。
1999-01-13 cs.PL cs.SC
Object-oriented design for massively parallel computing
我们定义了一个抽象的框架,面向对象的编程和面向对象的语言,如C++,可以解释为并行程序设计语言。并行C++代码通常比MPI的等效C++代码短十倍以上。并行C++中代码行数的大量减少主要是由于并发协调和通信指令(包括消息的打包和解包)在对象操作的实现中自动生成。我们实现了一个原型的编译器和并行C++的运行时系统,并使用它们来创建复杂的数据密集型和HPC应用程序。这些结果表明,采用并行面向对象的框架有可能大大降低并行编程的成本。我们还表明,标准的顺序面向对象的程序可以移植到并行架构,自动并行化,并可能加快。并行面向对象的框架使得能够实现具有用于互连结构的专用后端的编译器,其将网络硬件特征直接暴露给应用。我们讨论了潜在的影响计算机体系结构。
2019-03-01 cs.PL
Extending Object-Oriented Languages by Declarative Specifications of Complex Objects using Answer-Set Programming
许多应用程序需要复杂结构的数据对象。如果所考虑的对象受到不同的应用程序特定的约束,则开发用于创建此类对象的新算法解决方案或调整现有算法解决方案可能是一项重要且昂贵的任务。但是,通常以声明方式描述所需的对象相对容易。在本文中,我们建议使用答案集编程(ASP)--一个完善的声明式编程范式从该地区的人工智能--实例化对象的标准面向对象的程序设计语言。特别是,我们扩展了Java的声明性规范,所需的对象可以使用可用的ASP求解器技术自动生成。
2011-12-06 cs.AI cs.PL
Object-Oriented Theorem Proving (OOTP): First Thoughts
自动(即,计算机辅助的)定理证明(ATP)可以有多种形式。本文介绍了我们在定义面向对象的定理证明(OOTP)作为一种新的ATP风格的努力的早期步骤。传统的定理证明(TTP)是迄今为止唯一为人熟知的ATP类型。OOTP是TTP的一种推广。虽然TTP强烈地基于函数式编程(FP),但OOTP强烈地基于面向对象编程(OOP)。我们相信OOTP是一种定理证明的风格,它的功能和自然性不亚于TTP,因此在实际应用中可能不亚于TTP。
2019-02-27 cs.PL
A new model for Context-Oriented Programs
面向上下文编程(COP)是一种新的编程技术,它允许在程序执行时更改命令执行的上下文。与面向对象编程(面向方面编程)相比,COP更灵活(模块化和结构化)。本文提出了一个精确的语法导向的操作语义面向上下文的编程与层,实现COP语言,如ContextJ* 和ContextL。我们的语言模型是建立在Java丰富的层概念和激活和停用层范围。本文还提出了一个静态类型系统,保证类型化的程序不会卡住。利用所提出的语义方法,本文给出了类型系统的数学正确性。
2014-02-23 cs.PL cs.SE
Object-oriented Programming Laws for Annotated Java Programs
面向对象的编程法则已经在不与行为接口规约语言(BISL)相结合的语言的上下文中提出。源代码和接口规范之间的强依赖性可能会在转换程序时造成许多困难。在本文中,我们介绍了一套面向对象的语言,如Java结合Java建模语言(JML)的编程法则。这套法律处理面向对象的功能,同时考虑到他们的规格。有些法律只涉及规约语言的特征。这些定律构成了一组小的转换,用于开发更精细的转换,如重构。
2010-03-25 cs.LO cs.PL cs.SE
Universal Object Oriented Languages and Computer Algebra
通用面向对象语言使程序设计更加简单和高效。在文章中被认为是使用类似的方法在计算机代数的可能性。一个清晰而强大的通用语言是有用的,如果特定的问题没有实现在标准软件包,如REDUCE,MATHEMATICA等,如果使用内部程序设计语言的包看起来不是很有效。像LISP这样的函数式语言在代数和符号操作方面有一些优势和传统。函数式编程和面向对象编程并不是不兼容的。被认为是一个纯粹的功能和代数表达式的操作对象的模型的扩展。
1999-01-15 cs.PL
$φ$-Calculus: Object-Oriented Formalism
Huawei(华为)
本文提出$φ$-演算,旨在为面向对象编程提供一个形式化工具,弥补现有方法在覆盖现代OO语言特性方面的不足。
2026-07-07 cs.PL
Component Programming and Interoperability in Constraint Solver Design
Prolog曾经是实现约束求解器的主要宿主。现在看来已经不是这样了。为了有用,约束求解器必须可集成到以命令式或面向对象语言编写的工业应用程序中;为了高效,它们必须与其他求解器交互。为了满足这些要求,现在许多求解器都以可扩展的面向对象库的形式实现。在Pfister和Szyperski之后,我们认为“对象是不够的”,我们建议将求解器设计为面向组件的库。我们说明了我们的方法的原型的架构的描述,我们评估其优点和缺点。
2001-05-07 cs.PL
Bounded-Choice Statements for User Interaction in Imperative and Object-Oriented Programming
为命令式编程(C、Java和Android)添加多功能交互是一项重要任务。不幸的是,现有的语言只提供有限的用户交互结构。这些构建体通常以$unbounded$定量的形式存在。例如,现有的语言只能通过$read(x)/scan(x)$结构从用户处获取键盘输入。注意,在$x$可以具有任何值的意义上,$x$的值是无界的。因此,这种构造对于具有有界输入的应用程序没有用处。为了支持有界选择,我们提出了新的有界选择语句的用户交互。每个输入设备(键盘、鼠标、触摸、$...$)自然都需要一个新的有界选择语句。然而,为了使事情变得简单,我们专注于键盘的有界选择语句- kchoose-以允许用户更多地控制和更多地指导参与。很容易将我们的想法调整到其他输入设备。我们通过Java(BI)来说明我们的想法,这是核心Java的扩展,为键盘提供了一个新的有界选择语句。
2015-11-23 cs.PL
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
Fixed-Point-Oriented Programming: A Concise and Elegant Paradigm
针对自引用计算类问题传统实现复杂易错、现有范式缺乏直接支持的问题,提出面向不动点的编程FPOP范式,通过高层抽象、结构化推理规则与用户引导优化实现声明式高效编程,大幅简化代码并推动该领域研究应用。
2025-07-29 cs.PL
Writing Internet of Things Applicatations with Task-Oriented Programming
物联网(IoT)正在快速发展。2018年,地球上每人大约有一台连接设备,此后这一数字一直在增长。这些设备通过不同的方式与环境进行交互,同时使用传感器和执行器,使程序并行。然而,编写这种类型的程序是困难的,因为设备具有很小的计算能力和内存,平台是异构的,语言是低级的。面向任务编程(TOP)是一种声明式程序设计语言范式,用于表达工作的协调、用户和系统的协作、共享数据的分发以及人机交互。mTask语言是一种专门的,但成熟的,用于物联网设备的多后端TOP语言。通过字节码解释后端和与iTask的集成,任务可以在设备上动态执行。这意味着--根据当前的情况--任务可以在运行时间定制,编译为与设备无关的字节码,并发送到设备进行解释。发送到设备的任务完全集成在iTask中,以允许与任务进行各种形式的交互,例如观察任务值和与共享数据源(SDS)进行交互。整个物联网应用程序(包括服务器和设备)都是用一种语言编程的,尽管使用了两种嵌入式领域特定语言(EDSL)。
2022-12-08 cs.PL
DynaSOAr: A Parallel Memory Allocator for Object-oriented Programming on GPUs with Efficient Memory Access
长期以来,面向对象编程被认为对于SIMD高性能计算来说效率太低,尽管许多重要的HPC应用程序都具有固有的对象结构。在SIMD加速器(包括GPU)上,这主要是由于内存分配和内存访问的性能问题:有一些库直接在加速器设备上支持并行内存分配,但所有这些库都受到未合并内存访问的影响。我们发现了一类广泛的面向对象的程序,许多重要的现实世界的应用程序,可以有效地实现大规模并行SIMD加速器。我们称这个类为单方法多对象(SMMO),因为并行性是通过在一个类型的所有对象上运行一个方法来表达的。为了让普通程序员能够快速进行GPU编程,我们开发了DynaSOAr,这是一个用于SMMO应用程序的CUDA框架。DynaSOAr由(1)完全并行、无锁、动态内存分配器,(2)数据布局DSL和(3)高效、并行的do-all操作组成。DynaSOAr通过控制内存分配和内存访问,实现了优于最先进的GPU内存分配器的性能。DynaSOAr通过阵列结构数据布局提高了已分配内存的使用率,并通过无锁分层位图有效管理空闲和已分配内存块来实现低内存碎片。与其他分配器相反,我们的设计在很大程度上基于原子操作,以原始(去)分配性能换取更好的整体应用程序性能。在我们的基准测试中,DynaSOAr在最先进的分配器上实现了高达3倍的应用程序代码加速。此外,DynaSOAr比其他分配器更有效地管理堆内存,允许程序员在相同内存量的情况下运行高…
2019-06-09 cs.PL
Detecting unanticipated mutual recursion using Elegant Objects representation of object-oriented programs
Elegant Objects(EO)是面向对象编程范式的一种变体,它支持纯对象和装饰。EO程序设计语言就是基于这些思想,Bugayenko建议将其作为面向对象程序的中间表示。本文提供了一些基于Java,C++和Python的类结构在EO中的合理表示。然后,我们重新制定了经典的脆弱的基类问题的背景下,这些表示。最后,我们讨论了一个算法检测的一个子集的脆弱基类模式在EO程序。我们表明,使用EO作为一种中间语言是合理的,并讨论可能的改进语言,以协助更丰富的静态分析。
2022-09-05 cs.PL
HDPython: A High Level Python Based Object-Oriented HDL Framework
提出了一种基于Python的高级硬件描述语言HDPython,它以Python为源语言,并将其转换为标准的VHDL语言。与其他从高级程序设计语言到硬件描述语言的转换器构建方法相比,这种新方法旨在整个过程中保持面向对象的范式。这种方法不是从Python中删除所有高级功能以使其成为HDL,而是相反。它试图展示如何在HDL中实现高级语言的某些功能,为用户提供高级编程的相应好处。
2023-01-26 cs.PL
A Programming Language Oriented Approach to Computability
可计算性和复杂性领域是计算机科学的发源地。图灵、丘奇和克莱因都发展了形式主义,证明了他们所认为的“直观可计算”。然而,时代在变化,今天的(有抱负的)计算机科学家在构建自动机或编写函数方面不那么精通,他们更熟悉程序设计语言的世界。本文将尝试以更适合现代开发人员的形式介绍可计算性理论和复杂性的典型概念。它主要以\cite{jones}为基础,但也从其他来源获取输入,以提供示例、附加信息等。
2014-02-10 cs.LO cs.PL
On the chemistry of typestate-oriented actors
面向类型状态的编程是OO范式的扩展,其中对象不仅根据接口建模,而且根据其使用协议建模,描述方法调用的合法序列,可能取决于对象的内部状态。我们认为,演员模型允许typestate-OOP在一个固有的分布式设置,对象/演员可以同时访问的几个进程,和本地实体合作进行通信协议。在本文中,我们通过一些用Scala Akka编写的示例来说明这种方法。我们表明,Scala的抽象支持干净和自然的面向类型状态的演员编程与通常的异步和非阻塞语义。我们还表明,标准类型系统的Scala和类型包装通常(无类型)Akka的ActorRef是足够的类型安全提供丰富的形式,使良好的类型演员尊重他们的预期通信协议。这种方法借鉴了坚实的理论背景,包括一个健全的行为类型系统的连接演算,这是一个基础演算的分布式异步进程的语义是基于化学抽象机,揭示了其强大的连接与面向类型状态的编程的并发对象和演员。
2016-07-11 cs.PL
Extending Design by Contract for Aspect-Oriented Programming
契约式设计(DbC)和程序断言的运行时实施使得能够构建更健壮的软件。它还允许在错误报告中分配责任。不幸的是,没有对面向AOP的编程(AOP)的运行时契约执行和责任分配的支持。将DbC扩展到方面会带来大量与断言验证的正确顺序相关的问题。我们表明,没有一般正确的执行顺序的对象断言和方面断言。将方面进一步分类为不可知的、服从的或叛逆的,定义了需要遵循的断言验证顺序。我们描述了这种分类的应用程序中的原型DbC工具的AOP命名为科纳,方面用于实现合同,合同用于强制执行方面的断言。
2005-01-24 cs.PL cs.SE
Inter-language Collaboration in an Object-oriented Virtual Machine
多语言虚拟机有很多优点。它们允许软件开发人员使用为不同的程序设计语言编写的软件库。此外,语言实现者不必为低级VM功能而烦恼,并且它们的实现可以从现有虚拟机中的优化中受益。MagLev是Ruby程序设计语言在GemStone/S虚拟机上的实现,用于Smalltalk程序设计语言。在这项工作中,我们提出了如何在这两种语言编写的软件组件可以相互作用。我们将展示MagLev如何统一Smalltalk和Ruby对象模型,同时考虑Smalltalk Meta类、Ruby单例类和Ruby模块。此外,我们还展示了如何从Smalltalk调用Ruby方法,反之亦然。我们还提出了MagLev的桥方法实现Ruby方法调用约定的概念。最后,我们将我们的解决方案与其他语言实现和虚拟机进行比较。
2016-06-11 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
An Approach to Programming Based on Concepts
在本文中,我们描述了一种新的编程方法,它概括了面向对象的编程。它基于使用一种新的编程构造,称为概念,它概括了类。概念被定义为一对两个类:一个引用类和一个对象类。每个概念都有一个父概念,父概念是使用包含关系泛化继承指定的。我们描述了几个重要的机制,如引用解析,上下文栈,对偶方法和生命周期管理,继承和多态性。这种编程方法被定位为一种新的编程范式,因此我们制定了它的主要原则和规则。
2007-12-30 cs.PL