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
Object-oriented design for massively parallel computing
我们定义了一个抽象的框架,面向对象的编程和面向对象的语言,如C++,可以解释为并行程序设计语言。并行C++代码通常比MPI的等效C++代码短十倍以上。并行C++中代码行数的大量减少主要是由于并发协调和通信指令(包括消息的打包和解包)在对象操作的实现中自动生成。我们实现了一个原型的编译器和并行C++的运行时系统,并使用它们来创建复杂的数据密集型和HPC应用程序。这些结果表明,采用并行面向对象的框架有可能大大降低并行编程的成本。我们还表明,标准的顺序面向对象的程序可以移植到并行架构,自动并行化,并可能加快。并行面向对象的框架使得能够实现具有用于互连结构的专用后端的编译器,其将网络硬件特征直接暴露给应用。我们讨论了潜在的影响计算机体系结构。
2019-03-01 cs.PL
Proving False in Object-Oriented Verification Programs by Exploiting Non-Termination
我们研究了三种不同的面向对象程序验证器:Gobra、KeY和Dafny。我们表明,所有这三个可以证明假使用一个简单的技巧与幽灵变量声明和非终止代码。这表明,这些语言的验证器可以产生不合理的结果,没有太大的困难,这可能是所有面向对象的验证器共同的。
2022-12-05 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
Comparative Analysis of Widely use Object-Oriented Languages
University of Management and Technology(管理与技术大学)
针对面向对象入门语言难以选择且缺乏统一评估方法的问题,本文提出一个依据技术与环境特征评估常用面向对象语言的综合比较框架。
2023-06-02 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 Metamodel of Unit Testing for Object-Oriented Programming Languages
单元测试是一种用于验证程序的一部分的准确性和正确功能的方法。这项工作包括研究的关系和方法来测试面向对象的编程(OOP)程序,并提出了一个元模型,使程序员编写测试,同时编写源代码进行测试,利用OOP程序设计语言的关键功能,如继承,多态性等。
2009-12-18 cs.PL
Towards Interactive Object-Oriented Programming
为了表示交互式对象,我们提出了一个选择析取声明语句的形式S R,其中S;R是(过程或字段)声明语句类内。此语句具有以下语义:请求用户在创建该类的对象时从S和R中选择一个。此语句用于表示需要与用户交互的交互式对象。
2013-01-29 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
Structured Traversal of Search Trees in Constraint-logic Object-oriented Programming
在本文中,我们提出了一个明确的,非严格的表示搜索树的约束逻辑面向对象编程。我们的搜索树表示包括在应用程序执行过程中的非确定性和确定性行为。引入这样的表示便于使用各种搜索策略。为了证明我们的方法的适用性,我们将显式搜索树的虚拟机的约束逻辑面向对象的程序设计语言Muli。然后,我们示例性地实现了三种搜索算法,按需遍历搜索树:深度优先搜索,广度优先搜索和迭代深化深度优先搜索。特别是,最后两个策略允许一个完整的搜索,这是新颖的约束逻辑面向对象编程,并突出了我们的主要贡献。最后,我们使用几个基准比较实施的策略。
2019-08-27 cs.PL
Fast Recompilation of Object Oriented Modules
一旦程序文件被修改,重新编译的时间应该被最小化,而不牺牲执行速度或高级面向对象的功能。重新编译时间通常是现代OO语言处理的大型图形交互式分布式应用程序的一个问题。开发了编译服务器和快速代码生成器,并与SRC Modula-3编译器和Linux ELF动态链接器集成。由此产生的编译和重新编译的速度提升令人印象深刻。讨论了不同语言特性、处理器速度和应用程序大小的影响。
2005-06-10 cs.PL
GOOL: A Generic Object-Oriented Language (extended version)
我们提出了GOOL,一个通用的面向对象的语言。它证明了一种具有正确抽象的语言可以捕获面向对象程序的本质。我们展示了如何GOOL程序可以用来生成人类可读的,文档化的和惯用的多种语言的源代码。此外,在GOOL中,可以表达常见的编程习惯和模式,从简单的库级函数,到简单的任务(命令行参数,列表处理,打印),再到更复杂的模式,例如具有输入,输出和输入输出参数的方法,最后是设计模式(例如观察者,状态和策略)。GOOL是Haskell中的嵌入式DSL,可以生成Python,Java,C#和C++代码。
2019-11-26 cs.PL
Object-Oriented Modeling of Programming Paradigms
对于正确的应用程序,使用编程范式(如函数或逻辑编程)可以极大地提高软件开发的生产力。但是这些强大的范例都与外来的程序设计语言联系在一起,而软件开发的管理要求对单一语言进行标准化。这种困境可以通过以一种新的方式使用面向对象编程来解决。传统的分析方法是采用面向对象的建模方法。在新的方法中,分析确定了应用程序的理想范例;开发从范例的面向对象建模开始。在本文中,我们说明了新的方法,给出面向对象的建模和约束编程的例子。这些例子表明,不再需要在专用于它的语言中体现编程范式。
2006-11-09 cs.PL cs.SE
Refinable Function : An Object-oriented Approach to Procedure Modularity
模块化是现代软件工程的基本方面,然而许多先进的模块化技术需要前瞻性的技术作为开发和操作过程的一部分。在本文中,我们提出了精炼功能,一个面向对象的方法,先进的基于语言的,对称模块化技术的过程。我们在概念上比较了可精炼函数与现有技术,以证实模块化的好处可以在没有编译器支持的情况下在成熟的面向对象语言中实现。介绍了函数的继承、封装和多态性等概念,将面向对象的思想引入到过程模块化中,并描述了在JavaScript中可精炼函数的设计和实现,以验证我们的方法在实际Web应用开发中的有效性。我们通过讨论在异步处理上应用模块化的关注点来介绍可精炼函数实现的实际方面。我们测试并实现了Refinable Function,以证实其与Web应用程序开发和产品线实现的相关性。
2021-09-14 cs.PL
Pushdown Exception-Flow Analysis of Object-Oriented Programs
静态推理的存在和关于异常是具有挑战性的:异常恶化了众所周知的数据流和控制流分析之间的相互递归。最近开发的用于λ演算的下推控制流分析暗示了一种改进异常分析的方法:下推堆栈可以精确地匹配捕获和抛出,就像它匹配返回和调用一样。这项工作概括了下推控制流分析面向对象的程序和异常。异常的下推分析比下一个最好的分析Bravenboer和Smaragdakis的Doop提高了几个数量级的精度。通过将抽象的垃圾回收推广到面向对象的程序中,我们将分析时间减少了一半。我们评估我们的实现Dalvik字节码的标准基准以及几个Android应用程序。
2013-02-12 cs.PL
Formalizing $φ$-calculus: a purely object-oriented calculus of decorated objects
存在许多演算用于对面向对象语言的各种特性进行建模。它们中的许多都是基于$λ$ -演算的,并且专注于基于静态类型的类语言或基于动态原型的语言。我们正式的装饰对象,非正式地提出了Bugayenko,这是定义在对象和依赖于装饰作为一个主要的机制对象扩展的无类型演算。它不是基于$λ$ -演算,但只有四个基本的语法结构是一样完整的。我们证明了演算是合流的(即具有Church-Rosser性质),并介绍了一个抽象的机器调用的名称评估。最后,我们提供了一个健全的翻译$λ$ -演算记录。
2022-12-02 cs.LO 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
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 Programming Laws for Annotated Java Programs
面向对象的编程法则已经在不与行为接口规约语言(BISL)相结合的语言的上下文中提出。源代码和接口规范之间的强依赖性可能会在转换程序时造成许多困难。在本文中,我们介绍了一套面向对象的语言,如Java结合Java建模语言(JML)的编程法则。这套法律处理面向对象的功能,同时考虑到他们的规格。有些法律只涉及规约语言的特征。这些定律构成了一组小的转换,用于开发更精细的转换,如重构。
2010-03-25 cs.LO cs.PL cs.SE
HDPython: A High Level Python Based Object-Oriented HDL Framework
提出了一种基于Python的高级硬件描述语言HDPython,它以Python为源语言,并将其转换为标准的VHDL语言。与其他从高级程序设计语言到硬件描述语言的转换器构建方法相比,这种新方法旨在整个过程中保持面向对象的范式。这种方法不是从Python中删除所有高级功能以使其成为HDL,而是相反。它试图展示如何在HDL中实现高级语言的某些功能,为用户提供高级编程的相应好处。
2023-01-26 cs.PL
Universal Object Oriented Languages and Computer Algebra
通用面向对象语言使程序设计更加简单和高效。在文章中被认为是使用类似的方法在计算机代数的可能性。一个清晰而强大的通用语言是有用的,如果特定的问题没有实现在标准软件包,如REDUCE,MATHEMATICA等,如果使用内部程序设计语言的包看起来不是很有效。像LISP这样的函数式语言在代数和符号操作方面有一些优势和传统。函数式编程和面向对象编程并不是不兼容的。被认为是一个纯粹的功能和代数表达式的操作对象的模型的扩展。
1999-01-15 cs.PL
Concept-Oriented Programming
面向对象编程(OOP)的目的是通过将对象的表示和访问机制隐藏在原语引用中来描述对象的结构和行为。在这篇文章中,我们描述了一种方法,称为面向概念的编程(COP),它侧重于建模参考,假设他们也拥有应用程序特定的结构和行为占了很大一部分,甚至大部分的整体程序的复杂性。COP中的引用是完全合法的,并获得与对象相同的地位,而函数则分布在对象和引用之间。为了支持这种设计,我们引入了一个新的编程结构,称为概念,它概括了传统的类和概念包含关系概括类继承。COP的主要优点是它允许程序员描述任何程序的两个方面:显式使用的对象函数和具有横切性质的引用的中间功能,并在对象访问期间在幕后隐式执行。
2010-09-26 cs.PL
Suggest an Aspect-Oriented Design Approach for UML Communication Diagram
统一建模语言(UML)是一种有效的面向对象软件建模语言,目前的面向对象软件设计方法还不成熟,不能很好地描述软件的并发性、容错性、分布性和持久性等非功能性需求。我们的方法建议使用面向方面的软件开发(AOSD)机制来解决的问题,在UML中的通信图的交互只支持面向对象的机制,因此AOSD允许设计程序,是超出了严格的面向对象的,并可能改善的结构和实现。
2013-07-03 cs.PL cs.SE
Verification of Object-Oriented Programs: a Transformational Approach
我们表明,验证面向对象的程序,通过断言的方法,可以实现在一个简单的方式,通过利用一个语法导向的转换,从面向对象的程序递归程序。这种转换表明自然的证明规则和它的正确性,帮助我们建立健全和相对完整的证明系统。困难之一是如何在断言语言中正确处理实例变量和别名。所讨论的程序设计语言支持数组、实例变量、失败和带参数的递归方法。
2011-11-08 cs.LO cs.PL
Seamless Object-Oriented Requirements
契约式设计通过将软件需求与实现统一起来,实现了无缝的软件开发。然而,在其纯粹的形式下,契约式设计在契约的表达性、可验证性和可重用性方面留下了一些问题。这些问题大大降低了无缝开发的实用性。本文介绍了无缝面向对象的需求-一种新的无缝开发方法,它建立在契约式设计和现在可用的高级程序证明工具的基础上。文章解释和说明了新的方法,最后定量评估的程度,该方法解决了传统合同的问题。
2019-11-23 cs.PL cs.SE
Object-oriented solutions
在本文中简要概述的动机,使用的数学思想,预形式化和假设,对象作为函子建设,“软”类型和概念的建设,案例研究的基础上可变域的概念,提取计算背景,和评估的例子。
2001-06-11 cs.DB cs.LO cs.PL
Concept-Oriented Programming: References, Classes and Inheritance Revisited
面向概念编程(COP)的主要目标是描述对象是如何表示和访问的。它使引用(对象位置)成为程序的第一类元素,负责许多难以通过对象建模的重要功能。COP通过引入一个新的构造、概念和一个新的关系、包含,重新思考并概括了类和继承等面向对象的主要概念。一个优点是,仅使用几个基本概念,我们就能够描述目前属于不同编程范式的许多一般思维模式:建模对象层次结构(基于原型的编程),父方法优先于子方法(Beta中的内部方法),模块化横切关注点(面向方面的编程),价值取向(函数式编程)。由于COP仍然向后兼容面向对象编程,它可以被看作是一个前景的发展方向,一个简单而自然的统一编程模型。
2014-09-13 cs.PL cs.SE
A Sound and Complete Hoare Logic for Dynamically-Typed, Object-Oriented Programs -- Extended Version --
定义了一种简单的动态类型、(纯粹的)面向对象语言。给出了一种结构化的操作语义和一种Hoare式的程序逻辑,用于在多个正确性概念中对语言中的程序进行推理。霍尔逻辑被证明是合理的和(相对)完整的,是-尽我们所知-第一个这样的逻辑动态类型的语言。
2016-01-08 cs.LO cs.PL
Object Oriented and Functional Programming for Symbolic Manipulation
讨论了使用不同编程技术进行符号操作的混合方法的优点。该方法的主要目的是将面向对象的程序设计方法与函数式语言在数据处理、内部表示和软件可移植性等方面的优点相结合,使面向对象的程序设计方法便于用户表示数据和算法。
1999-01-13 cs.PL cs.SC
Mapping Objects to Persistent Predicates
Prolog逻辑程序设计在许多需要存储知识的系统中被广泛用于提供持久性。用于供应持久性的Prolog编程语言的一些实现具有与其他程序设计语言的双向接口,总体上具有面向对象的编程语言。目前,缺少用于系统开发的工具和框架,这些工具和框架以简单和敏捷的形式使用逻辑谓词持久性。更具体地说,目前需要一个面向对象和逻辑持久性提供程序,允许在主存中操作对象,并且该对象的持久性具有逻辑编程谓词方面。目前的工作介绍了一个面向对象和逻辑持久性提供者的支持对象的序言声明性映射的替代。所提出的替代方案包括逻辑编程谓词与面向对象方法的对应关系,其中对于逻辑编程的每个元素,一个面向对象的元素使其相互作用。逻辑程序设计谓词的面向对象表示提供了对组成知识的元素进行操作的便利。
2017-05-01 cs.LO cs.PL cs.SE
A Type-Based Complexity Analysis of Object Oriented Programs
介绍了一种面向对象的通用程序设计语言的类型系统,以推断资源上界。得到了多项式时间可计算函数集的一个可靠而完整的刻画。因此,类型化程序的堆空间和栈空间需求也是多项式有界的。这种类型系统的灵感来自于以前关于隐式计算复杂性的工作,使用分层和非干扰技术。所提出的方法有几个优点。首先,它为程序员提供了显式的大$O$多项式上界,因此它的使用可以允许程序员避免内存错误;其次,类型检查在多项式时间内是可判定的。最后,它具有良好的表达能力,因为它分析了大多数面向对象的特性,如继承,重载,重写和递归。此外,它可以处理由对象保护的循环,也可以扩展到改变控制流的语句,如break或return。
2018-02-19 cs.LO cs.PL
Resource control of object-oriented programs
超解释是一种工具,它提供了一个上限的大小计算值的一些符号的程序。超解释对处理一阶函数程序的复杂性问题表现出了极大的兴趣。例如,它们允许在Alogtime中描述所有按位可计算的函数。本文是一个尝试,以适应超解释框架的片段面向目标程序,包括不同的编码的数字,通过使用构造符号,循环和while结构和非递归方法的副作用。我们给出了一个标准,称为兄弟标准,它确保每个兄弟程序计算的对象的大小是由输入的大小多项式有界。
2007-06-15 cs.LO cs.PL
An Object-Oriented and Fast Lexicon for Semantic Generation
Leiden University Centre for Linguistics (LUCL)(莱顿大学语言学中心(LUCL))
本文介绍了一个大型计算词典的技术设计、存储和在Prolog环境下的访问。传统上,数据结构的有效访问和存储是由关系数据库管理系统实现的。在Delilah,一个基于词典的NLP系统中,语义生成器对词典的有效访问至关重要。我们表明,我们非常详细的HPSG风格的词汇规范不适合在关系模型,他们不能有效地检索。我们认为,他们更自然地适合在面向对象的模型。虽然存储的对象是冗余的,我们声称,有效的访问仍然是可能的,通过应用索引,和压缩技术,从关系模型的面向对象的模型。我们证明,它是可能的,以实现面向对象的存储和快速访问的ISO Prolog。
2009-05-20 cs.CL cs.DB cs.DS