Reference Type Logic Variables in Constraint-logic Object-oriented Programming
约束逻辑面向对象的编程,例如使用Muli,促进了商业软件的集成开发,偶尔涉及找到约束逻辑问题的解决方案。面向对象特性的可用性要求将对象也用作逻辑变量,而不是仅限于基本类型的逻辑变量。目前的工作贡献了一个概念,引用类型的逻辑变量的约束逻辑面向对象的编程,考虑到任意类层次结构的程序编写的面向对象的语言。这个概念讨论了约束逻辑面向对象程序和引用类型逻辑变量之间的交互,特别是对逻辑变量的调用和访问,类型操作和等式。此外,它还提出了相应的执行环境如何处理这些交互的方法。
2019-03-01 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
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
Design and Implementation of a Reversible Object-Oriented Programming Language
高级可逆程序设计语言很少,而且通常只提供底层机器细节的基本抽象。现代程序设计语言提供了大量的语言结构和范例,以促进抽象接口的设计,但我们目前对可逆程序设计语言的这些功能的适用性的理解非常有限。我们介绍了第一个可逆的面向对象的程序设计语言,ROOPL,支持用户定义的数据类型,类继承和子类型多态性。该语言扩展了现有可逆命令式语言的设计,并允许在可逆机器上有效实现。我们提供了一个形式化的语言语义,类型系统,我们通过实现一个可逆的图灵机模拟器证明了计算的通用性的语言。ROOPL语句是局部可逆的,不会增加程序大小或计算复杂性,并且该语言提供了对每个类方法的逆语义的直接存取。我们描述了从ROOPL到可逆汇编语言PISA的无垃圾翻译所需的技术,并提供了所述技术的完整实现。我们的研究结果表明,面向对象编程的核心语言功能进行了可逆计算领域的一些能力。
2017-07-25 cs.PL
Universal Object Oriented Languages and Computer Algebra
通用面向对象语言使程序设计更加简单和高效。在文章中被认为是使用类似的方法在计算机代数的可能性。一个清晰而强大的通用语言是有用的,如果特定的问题没有实现在标准软件包,如REDUCE,MATHEMATICA等,如果使用内部程序设计语言的包看起来不是很有效。像LISP这样的函数式语言在代数和符号操作方面有一些优势和传统。函数式编程和面向对象编程并不是不兼容的。被认为是一个纯粹的功能和代数表达式的操作对象的模型的扩展。
1999-01-15 cs.PL
Have Object-Oriented Languages Missed a Trick with Class Function and its Subclasses?
本文指出面向对象语言缺乏面向对象意义上的 class Function 及其子类,通过在流行编程语言中实现此类子类进行实验性研究,探讨面向对象语言错失的这一机会。
2025-07-01 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
HDPython: A High Level Python Based Object-Oriented HDL Framework
提出了一种基于Python的高级硬件描述语言HDPython,它以Python为源语言,并将其转换为标准的VHDL语言。与其他从高级程序设计语言到硬件描述语言的转换器构建方法相比,这种新方法旨在整个过程中保持面向对象的范式。这种方法不是从Python中删除所有高级功能以使其成为HDL,而是相反。它试图展示如何在HDL中实现高级语言的某些功能,为用户提供高级编程的相应好处。
2023-01-26 cs.PL
Towards Interactive Object-Oriented Programming
为了表示交互式对象,我们提出了一个选择析取声明语句的形式S R,其中S;R是(过程或字段)声明语句类内。此语句具有以下语义:请求用户在创建该类的对象时从S和R中选择一个。此语句用于表示需要与用户交互的交互式对象。
2013-01-29 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
COOLIO: A Language Support Extension for the Classroom Object Oriented Language
COOL是一种面向对象的程序设计语言,用于在许多本科生和研究生课程中教授编译器设计。由于大多数学生不熟悉该语言,代码编辑器和IDE通常缺乏对COOL的支持,因此用COOL编写代码和测试程序对学生来说是一种负担,导致他们无法完全理解该语言和编译器的许多重要和高级功能。在这篇工具论文中,我们描述了COOLIO,一个在流行的VSCode IDE中支持COOL的扩展。COOLIO提供(i)通过词法分析和解析对COOL语言的语法突出显示支持,(ii)语义感知的自动完成功能,帮助学生编写更少的代码并减轻必须记住不熟悉的COOL语法和语法的负担,以及(iii)来自底层COOL解释器/编译器的相关反馈(例如,错误信息、键入信息)通过VSCode编辑器向学生提供调试帮助。我们相信,COOLIO将帮助学生享受编写COOL程序,从而学习和欣赏更先进的编译器概念。
2023-02-09 cs.PL
Comparative Analysis of Widely use Object-Oriented Languages
University of Management and Technology(管理与技术大学)
针对面向对象入门语言难以选择且缺乏统一评估方法的问题,本文提出一个依据技术与环境特征评估常用面向对象语言的综合比较框架。
2023-06-02 cs.AI cs.PL
Context-Oriented Programming: A Programming Paradigm for Autonomic Systems
动态软件适应性是自主计算所利用的核心特性之一。然而,开发在运行时间改变其行为以适应操作条件的软件是一项具有挑战性的任务。在文献中已经提出了几种方法来解决这个问题,在不同的和互补的抽象层次:软件体系结构,中间件和编程水平。我们专注于ad-hoc程序设计语言结构可能提供的支持,以支持动态自适应行为。我们介绍了面向上下文的程序设计语言,我们提出了一个框架,该框架的位置在MAPE-K自主循环支持的范例。我们讨论了使用面向上下文的程序设计语言,而不是其他主流方法的基础上,面向动态方面的程序设计语言的优势,并提出了一个案例研究,显示如何提出的编程风格自然适合动态适应的要求。最后,我们讨论了一些已知的问题,并概述了一些开放的研究挑战。
2012-03-30 cs.PL
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
Towards a Decoupled Context-Oriented Programming Language for the Internet of Things
易于编程的行为是物联网中大规模可重构部署的一个主要问题。这类设备通常需要将其行为的一部分具体化,例如传感,数据聚合或代码卸载。大多数现有的面向上下文的程序设计语言都将整个行为集成在同一个类或封闭层中。我们建议从决策过程中抽象和分离上下文跟踪,并使用基于事件的处理程序来互连它们。我们保持了一个非常简单的声明式和非分层的编程模型。我们通过定义Golo的扩展来说明,Golo是一种基于JVM的动态语言。
2015-07-30 cs.PL
Refinable Function : An Object-oriented Approach to Procedure Modularity
模块化是现代软件工程的基本方面,然而许多先进的模块化技术需要前瞻性的技术作为开发和操作过程的一部分。在本文中,我们提出了精炼功能,一个面向对象的方法,先进的基于语言的,对称模块化技术的过程。我们在概念上比较了可精炼函数与现有技术,以证实模块化的好处可以在没有编译器支持的情况下在成熟的面向对象语言中实现。介绍了函数的继承、封装和多态性等概念,将面向对象的思想引入到过程模块化中,并描述了在JavaScript中可精炼函数的设计和实现,以验证我们的方法在实际Web应用开发中的有效性。我们通过讨论在异步处理上应用模块化的关注点来介绍可精炼函数实现的实际方面。我们测试并实现了Refinable Function,以证实其与Web应用程序开发和产品线实现的相关性。
2021-09-14 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
Behavioural Types for Memory and Method Safety in a Core Object-Oriented Language
我们提出了一个基于类型的分析,确保内存安全和对象协议完成的Java类语言蒙戈。对象被标注了方法调用的可接受序列的用法、类似于类型状态的规范。该分析将使用检查与静态检查结合在一起,使用检查控制方法被调用的顺序,静态检查确定引用是否可能包含空值。该分析防止了空指针解引用和内存泄漏,并确保每个对象的预期使用协议得到遵守和完成。类型系统以类型检查器的形式实现。
2020-02-28 cs.PL
Pushdown Exception-Flow Analysis of Object-Oriented Programs
静态推理的存在和关于异常是具有挑战性的:异常恶化了众所周知的数据流和控制流分析之间的相互递归。最近开发的用于λ演算的下推控制流分析暗示了一种改进异常分析的方法:下推堆栈可以精确地匹配捕获和抛出,就像它匹配返回和调用一样。这项工作概括了下推控制流分析面向对象的程序和异常。异常的下推分析比下一个最好的分析Bravenboer和Smaragdakis的Doop提高了几个数量级的精度。通过将抽象的垃圾回收推广到面向对象的程序中,我们将分析时间减少了一半。我们评估我们的实现Dalvik字节码的标准基准以及几个Android应用程序。
2013-02-12 cs.PL
A Context-Oriented Extension of F#
面向上下文的程序设计语言为我们提供了原始的结构,以适应程序的行为取决于其操作环境,即上下文的演变。在以前的工作中,我们提出了ML_CoDa,一个面向上下文的语言,有两个组件:一个声明性的成分编程的上下文和一个功能的计算。本文描述了ML_CoDa作为F#扩展的实现。
2015-12-24 cs.PL
A Comparative Study of the Usability of Two Object-oriented Concurrent Programming Languages
并发性在通用计算中的重要性正在迅速增加,这是由于最近转向多核处理架构。因此,越来越多的开发人员不得不学习编写并发程序,这是一项即使对专家来说也很难的任务。因此,语言设计者们正在致力于使并发编程比使用传统线程库“更容易”的语言。然而,一种新语言比另一种语言更有用的说法不能由纯粹的理论考虑来支持,而需要实证研究。在本文中,我们提出了一个研究的设计,比较并发程序设计语言方面的理解和调试现有的程序和编写正确的新程序。这种研究的一个关键挑战是避免在培训阶段和解释参与者的解决方案时可能引入的偏见。我们通过使用自学材料和评估方案来解决这些问题,该方案暴露了校正器的任何主观决定,或者完全消除它们。我们应用我们的设计比较两个面向对象的语言的并发性,多线程Java和SCOOP(简单并发面向对象编程),在学术环境。我们得到的结果有利于SCOOP,即使研究参与者以前的Java线程的培训。
2010-11-28 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
Object-Oriented Modeling of Programming Paradigms
对于正确的应用程序,使用编程范式(如函数或逻辑编程)可以极大地提高软件开发的生产力。但是这些强大的范例都与外来的程序设计语言联系在一起,而软件开发的管理要求对单一语言进行标准化。这种困境可以通过以一种新的方式使用面向对象编程来解决。传统的分析方法是采用面向对象的建模方法。在新的方法中,分析确定了应用程序的理想范例;开发从范例的面向对象建模开始。在本文中,我们说明了新的方法,给出面向对象的建模和约束编程的例子。这些例子表明,不再需要在专用于它的语言中体现编程范式。
2006-11-09 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
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
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
An Object Oriented Approach For the Protection of Information Systems
我们提供了一个保护系统,利用封装,消息通信,接口功能来自一个面向对象的模型在以前的作品中描述。每个用户通过他的“USER”对象类型向系统表示他自己。识别程序适合每个人的需要。任何用户的对象和类型都标有个人签名,由系统独家提供和已知。管理员的权限仅限于备份过程。该系统对每个消息的访问进行验证,具有分区性、灵活性、适用性和心理可接受性等特点,是一个健壮的系统。
2020-05-18 cs.CR 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
ASDF: A Compiler for Qwerty, a Basis-Oriented Quantum Programming Language
本文介绍ASDF,一个基于MLIR的Qwerty语言编译器,通过高级量子IR从基底转换综合电路,生成OpenQASM 3或QIR,其容错资源成本与现有电路级编译器相当。
2025-01-22 cs.PL quant-ph
A Programming Language Oriented Approach to Computability
可计算性和复杂性领域是计算机科学的发源地。图灵、丘奇和克莱因都发展了形式主义,证明了他们所认为的“直观可计算”。然而,时代在变化,今天的(有抱负的)计算机科学家在构建自动机或编写函数方面不那么精通,他们更熟悉程序设计语言的世界。本文将尝试以更适合现代开发人员的形式介绍可计算性理论和复杂性的典型概念。它主要以\cite{jones}为基础,但也从其他来源获取输入,以提供示例、附加信息等。
2014-02-10 cs.LO cs.PL
Denotational Semantics of A User-Oriented, Domain-Specific Language
本文提出了一个领域特定的语言,命名为Pruel的形式化定义,以下的方法论提出的大卫施密特的语言开发。这种语言专用于编制协调网络实体的应用程序。它的目标开发人员是建筑管理和辅助生活等领域的专业人士,并希望利用网络实体来支持日常任务。Pingpruel有许多特性可以满足实体编排领域的需求。此外,Pingpruel提供了高级结构,使不一定具有编程技能的开发人员可以访问它。它已被非程序员用于开发许多应用程序。我们展示了如何面向用户的编程概念的Pruel的指称语义的Pruel表示。这个形式化的定义已经被用来推导出一个解释器,并提供了一个基础,原因Pruel程序。
2013-09-20 cs.PL cs.SE
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
Process-Oriented Parallel Programming with an Application to Data-Intensive Computing
我们介绍面向过程的编程作为一个自然的扩展面向对象的编程并行计算。它基于这样的观察:面向对象语言的每个类都可以实例化为一个进程,可以通过远程指针访问。进程指针的引入不需要语法扩展,用编程对象标识进程,并使进程能够通过执行远程方法简单地交换信息。面向过程的编程是一种高级语言,可以替代多线程、MPI和当前用于并行计算的许多其他语言、环境和工具。它只使用现有语言(如C++和Python)的最小语法扩展来实现自然的基于对象的并行性,因此有可能导致并行编程的广泛采用。我们实现了一个原型系统运行进程使用C++与MPI,并使用它来计算一个大型的三维傅立叶变换的计算机集群上建立的商品硬件组件。三维傅立叶变换是具有复杂数据访问模式的数据密集型应用程序的原型。面向进程的代码只有几百行,通过实现大规模并行和最大化硬件利用率来实现非常高的数据吞吐量。
2014-07-21 cs.DC cs.PL
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
Reasoning About a Service-oriented Programming Paradigm
本文介绍了一种新的分布式应用程序开发方法:面向服务的方法。这是一个概念文件的基础上,我们的经验,在开发一个理论和编程服务的语言。理论形式化和语言解释器都向我们展示了一种新的编程范式存在的证据。在本文中,我们说明了它的基本特征。
2009-06-22 cs.DC cs.PL
Object-oriented solutions
在本文中简要概述的动机,使用的数学思想,预形式化和假设,对象作为函子建设,“软”类型和概念的建设,案例研究的基础上可变域的概念,提取计算背景,和评估的例子。
2001-06-11 cs.DB cs.LO cs.PL
Mapping Objects to Persistent Predicates
Prolog逻辑程序设计在许多需要存储知识的系统中被广泛用于提供持久性。用于供应持久性的Prolog编程语言的一些实现具有与其他程序设计语言的双向接口,总体上具有面向对象的编程语言。目前,缺少用于系统开发的工具和框架,这些工具和框架以简单和敏捷的形式使用逻辑谓词持久性。更具体地说,目前需要一个面向对象和逻辑持久性提供程序,允许在主存中操作对象,并且该对象的持久性具有逻辑编程谓词方面。目前的工作介绍了一个面向对象和逻辑持久性提供者的支持对象的序言声明性映射的替代。所提出的替代方案包括逻辑编程谓词与面向对象方法的对应关系,其中对于逻辑编程的每个元素,一个面向对象的元素使其相互作用。逻辑程序设计谓词的面向对象表示提供了对组成知识的元素进行操作的便利。
2017-05-01 cs.LO cs.PL cs.SE
Soda: An Object-Oriented Functional Language for Specifying Human-Centered Problems
Umeå University(于默奥大学)
Soda是一种面向对象函数式语言,通过符号目标描述分析自然处理质量与数量,简化正确性检查,并借助工具以透明、低错误率方式描述以人为中心的问题。
2026-09-21 cs.AI 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