Concept-Oriented Programming
面向对象编程(OOP)的目的是通过将对象的表示和访问机制隐藏在原语引用中来描述对象的结构和行为。在这篇文章中,我们描述了一种方法,称为面向概念的编程(COP),它侧重于建模参考,假设他们也拥有应用程序特定的结构和行为占了很大一部分,甚至大部分的整体程序的复杂性。COP中的引用是完全合法的,并获得与对象相同的地位,而函数则分布在对象和引用之间。为了支持这种设计,我们引入了一个新的编程结构,称为概念,它概括了传统的类和概念包含关系概括类继承。COP的主要优点是它允许程序员描述任何程序的两个方面:显式使用的对象函数和具有横切性质的引用的中间功能,并在对象访问期间在幕后隐式执行。
2010-09-26 cs.PL
ECLiPSe - from LP to CLP
ECLiPSe是一个基于Prolog的编程系统,旨在开发和部署约束编程应用程序。它也用于教学组合问题解决的大多数方面,例如问题建模,约束规划,数学规划和搜索技术。它使用扩展的Prolog作为其高级建模和控制语言,辅以几个约束求解器库,第三方求解器接口,集成开发环境和嵌入主机环境的接口。本文讨论了语言扩展,实现方面,组件和工具,我们认为相关的方式从逻辑编程约束逻辑编程。
2010-12-20 cs.PL
An Approach to Programming Based on Concepts
在本文中,我们描述了一种新的编程方法,它概括了面向对象的编程。它基于使用一种新的编程构造,称为概念,它概括了类。概念被定义为一对两个类:一个引用类和一个对象类。每个概念都有一个父概念,父概念是使用包含关系泛化继承指定的。我们描述了几个重要的机制,如引用解析,上下文栈,对偶方法和生命周期管理,继承和多态性。这种编程方法被定位为一种新的编程范式,因此我们制定了它的主要原则和规则。
2007-12-30 cs.PL
Concept-Oriented Programming: References, Classes and Inheritance Revisited
面向概念编程(COP)的主要目标是描述对象是如何表示和访问的。它使引用(对象位置)成为程序的第一类元素,负责许多难以通过对象建模的重要功能。COP通过引入一个新的构造、概念和一个新的关系、包含,重新思考并概括了类和继承等面向对象的主要概念。一个优点是,仅使用几个基本概念,我们就能够描述目前属于不同编程范式的许多一般思维模式:建模对象层次结构(基于原型的编程),父方法优先于子方法(Beta中的内部方法),模块化横切关注点(面向方面的编程),价值取向(函数式编程)。由于COP仍然向后兼容面向对象编程,它可以被看作是一个前景的发展方向,一个简单而自然的统一编程模型。
2014-09-13 cs.PL cs.SE
Certified Semantics for Relational Programming
我们提出了一个正式的研究语义的关系程序设计语言miniKanren。首先,我们制定了一个指称语义,它对应于最小Herbrand模型的明确逻辑程序。其次,我们提出了操作语义模型的交织,miniKanren实现的显着特点,并证明了其可靠性和完整性w.r.t.指称语义。我们的开发是由Coq规范,从其中可以提取一个参考解释器的支持。我们还从我们的主要结果证明语义(和参考解释器)SLD决议削减和证明其可靠性。
2020-09-16 cs.PL
SimPLoID: Harnessing probabilistic logic programming for infectious disease epidemiology
本文提出基于ProbLog的流行病学建模框架SimPLoID,融合仓室模型与网络建模,并提供面向非编程研究人员的领域特定语言,实现传染病动态的灵活紧凑表达。
2023-12-01 cs.PL cs.SI
Smoothly Navigating between Functional Reactive Programming and Actors
我们正式定义了一个优雅的多范式统一的功能反应式编程,演员系统,面向对象编程。这就实现了一种直观的声明式编程,在保持安全性的同时获得了并发性的强大功能。我们使用对象和引用功能来突出和驯服命令式功能:引用功能跟踪别名和可变性,对象功能跟踪I/O。形式上,我们的类型系统限制了不纯代码的范围、影响和交互。- 作用域:输入为纯的表达式将表现出确定性。- 影响:避免了数据竞争和同步问题。参与者非确定性行为的唯一方法是根据消息传递顺序改变其状态。- 相互作用:信号提供了命令式代码和函数式代码之间的功能边界,防止不纯代码使函数假设无效。
2021-01-08 cs.PL
Simple Reference Immutability for System F-sub
本文在混合语言背景下,将引用不可变性扩展至System F-sub,构建F-sub-M演算,并证明其满足健全性和不可变性安全属性。
2023-07-11 cs.PL
Indirect Object Representation and Access by Means of Concepts
本文描述了一种程序设计语言中的间接对象表示和访问(ORA)机制。该机制是基于使用一个新的编程结构,这是被称为概念。概念由一个对象类和一个引用类组成,它们都有自己的字段和方法。对象类是OOP中定义的传统类,其实例通过引用传递。引用类的对象是通过值传递的,并且旨在表示对象。引用类用于描述对象如何通过为其标识符和自定义访问过程提供自定义格式来表示和访问。这种使用概念而不是类的编程方法被称为面向概念的编程。它概括了OOP,它的主要优点是它允许程序员不仅描述目标对象的功能,而且描述在访问对象时在后台执行的中间函数。
2007-12-30 cs.PL
Indexed realizability for bounded-time programming with references and type fixpoints
隐式复杂性领域最近产生了几种有界复杂性程序设计语言。这种语言允许精确地实现属于某个复杂类的函数。我们在这里提出了一个实现语义的高阶函数语言的基础上的线性逻辑称为LAL的复杂性类PTIME的特点的片段。这种语言的特点是递归类型和高阶存储。我们的可实现性是基于双正交性,步进索引,而且是定量的。这最后一个功能,使我们不仅可以得到一个语义证明的终止,但也给类型化程序终止所需的计算步骤的数量上的界限。
2012-06-21 cs.LO cs.PL
Reference Capabilities for Safe Parallel Array Programming
数组是一种基本的数据结构,它提供了一种有效的方法来存储和检索内存中连续的非稀疏数据。由于现代存储层次结构的设计,阵列对于许多内存密集型应用程序的性能非常重要:连续存储有助于空间局部性和预测访问模式,从而实现预取。大型数组上的操作通常很适合并行化,例如fork-join风格的分治排序算法。为了使阵列上的并行操作具有确定性,必须保证数据竞争自由。对于原始数据数组上的操作,通过协调访问来获得数据竞争自由,以便没有两个线程对相同的数组索引进行操作。然而,由于别名,这对于非原语数组是不够的:访问单独的数组元素可能会返回指向同一对象或重叠结构的指针。引用能力在过去已经成功地用于静态地保证面向对象程序中没有数据竞争。本文介绍了引用功能的第一个扩展--称为数组功能--它支持对原始值和非原始值的数组进行并发和并行操作。除了元素访问之外,数组功能还支持数组的抽象操作、将数组逻辑拆分为子数组以及合并子数组。这些操作允许表达广泛的数组用例。本文介绍了阵列能力设计空间,并展示了它如何应用于许多阵列用例。核心思想是形式化的,并在一个简单的微积分中得到了证明,同时证明了具有数组功能的良好类型的程序是没有数据竞争的。
2019-08-05 cs.PL
Modelling Recursion and Probabilistic Choice in Guarded Type Theory
本文在守护类型论中利用高阶归纳类型和守护递归建模带概率选择与递归类型的语言,并建立操作与指称语义间的关系以支持充分性和上下文等价推理。
2024-10-24 cs.LO cs.PL
Furthering Baseline Core Lucid Standard Specification in the Context of the History of Lucid, Intensional Programming, and Context-Aware Computing
这项工作是多方面的。本文回顾了Lucid程序设计语言的历史文献、它的方言、内涵逻辑、内涵编程、实现系统、面向上下文和上下文感知计算等,为融合的Core Lucid标准编程模型提供了一个上下文框架。我们正在设计一个标准规范的基线Lucid虚拟机的一般执行的Lucid程序。由此产生的Core Lucid语言将继承GIPL(1999-2013)和TransLucid(2008-2013)的泛化尝试的属性,以便所有未来和最近的Lucid实现系统遵循。我们还在当地研究小组中开展这项工作,以促进更深入的合作,为学生提供最近和历史书目清单以及参考手册和阅读清单。我们成立了一个(目前是非正式的)SIGLUCID小组来跟踪这个标准和历史记录,最终的长期目标是通过迭代修订,使这项工作成为一本书或参考主题的百科全书,也许是RFC。我们先从这一组音符开始。
2013-10-21 cs.PL
Contents of COMP6411 Summer 2010 Final Reports on Comparative Studies of Programming Languages
本索引涵盖了加拿大蒙特利尔康考迪亚大学2010年夏季COMP6411课程的课堂笔记和期末课程项目报告,4个团队对程序设计语言的比较研究,试图比较一组通用标准及其对大约10种不同程序设计语言的适用性,其中5种语言选择由教师提供,5种由每个团队选择,每个学生单独比较10种语言中的两种,然后团队对所有语言进行总结综合。10种语言。他们的研究结果张贴在这里,以供进一步参考,比较研究和分析。
2014-04-19 cs.PL
Effectful Programming in Declarative Languages with an Emphasis on Non-Determinism: Applications and Formal Reasoning
本文研究了有效的声明式编程,强调非确定性作为一种效果。一方面,我们对使用非确定性作为底层实现思想来开发应用程序感兴趣。我们讨论两个应用程序使用功能逻辑程序设计语言咖喱。这些实现的关键思想是利用Curry所采用的非确定性和非严格性的相互作用。第一个应用程序调查排序算法参数化的比较功能。通过对这些排序函数应用一个非确定性谓词,我们得到一个置换枚举函数。我们将Curry中的实现与Haskell中的实现进行比较,后者使用一元接口来建模非确定性。我们在这项工作中讨论的另一个应用程序是概率编程库。我们不是将分布建模为事件和概率对的列表,而是使用Curry内置的非确定性来建模分布。在这两种情况下,我们观察到非确定性和非严格性的组合比使用列表来建模非确定性的实现更有优势。另一方面,我们提出了一个想法,有效的声明式程序设计语言的形式推理。为了从简单的效果开始,我们首先专注于对功能子集进行建模。也就是说,利息的效果是总体性的和非总体性的。然后,我们观察到,这两种效果的一般方案模型可以概括为捕捉广泛的影响。显然,下一步是将这一思想应用于模型非确定性。更准确地说,我们实现了Curry的非确定性模型:具有调用时间选择的非严格非确定性。因此,我们最后讨论了为什么目前的表示模型调用的名称,而不是库里的调用的需要语义,并给出了一个展望的想法来解决这个问题。
2020-06-02 cs.PL
Grammar-Aware Literate Generative Mathematical Programming with Compiler-in-the-Loop
Business School, University of Edinburgh(爱丁堡大学商学院);Insight Centre for Data Analytics, University College Cork(科克大学数据分析研究所)
提出 SyntAGM 系统,通过迭代生成-编译-评估-修正循环,利用编译器反馈和 LLM 对齐判断,生成可读的代数建模语言优化模型,实现成本与质量的更优权衡。
2026-05-28 cs.AI cs.PL
Probabilistic Programming with CuPPL
概率程序设计语言(Probability Programming Languages,PPL)是机器学习中的一个强大工具,它允许简洁地表达高度表达性的生成模型。它们将由语言实现的复杂推理算法与表达性建模语言相结合,该语言允许用户将任何可计算函数实现为生成模型。这种语言通常在现有的高级程序设计语言之上实现,并且不使用硬件加速器。确实存在使用加速器的PPL,但是为了这样做,限制了语言的表达能力。在本文中,我们提出了一种为CPU和GPU生成高效代码的语言和工具链。该语言在风格上是函数式的,工具链构建在LLVM之上。我们的实现在CPU上使用无限的延续来执行推理,并在GPU上使用自定义CUDA代码。与CPU上的其他最先进方法相比,我们在一套PPL工作负载中获得了显着的速度提升。此外,我们的编译器还可以生成在CUDA GPU上运行的高效代码。
2020-10-16 cs.PL
Modelling and Verifying an Object-Oriented Concurrency Model in GROOVE
SCOOP是一种编程模型和语言,允许在高抽象级别上进行并发编程。过去已经提出了几种验证SCOOP程序的方法,但是没有一种方法直接在源代码上操作而不进行修改或注释。我们提出了一个全自动的方法来验证(一个子集)SCOOP程序翻译为基于图形的模型。首先,我们提出了一个基于图变换的SCOOP语义。我们提出了一个实现的模型在国家的最先进的模型检查器GROOVE,它可以用来模拟程序和验证并发性和一致性属性,如死锁发生的不可能性或没有后置条件违反。其次,我们提出了一个翻译工具,SCOOP程序代码上运行,并生成输入的模型。我们通过案例研究的形式检查了一些程序来评估我们的方法。
2015-05-20 cs.LO cs.PL cs.SE
Fashionable Modelling with Flux
Julia Computing, Inc.(朱莉娅计算公司);University College London(伦敦大学学院);Birla Institute of Technology and Science(比尔拉科学技术学院);National Institute of Technology(国家技术学院);Indian Institute of Technology(印度理工学院)
近年来,机器学习作为一门学科受到了令人难以置信的关注,这在很大程度上是由于新理论的完美风暴,卓越的工具,以及对其能力的新兴趣。我们在本文中提出了一个名为Flux的框架,它展示了如何进一步完善机器学习的核心思想,建立在Julia程序设计语言的基础上,可以产生一个简单,易于修改和高性能的环境。我们详细介绍了Flux作为可微分编程框架的基本原理,给出了在Flux中实现的模型示例,以显示许多有助于其易用性和高生产力的语言和框架级功能,显示用于实现Flux核心的加速和性能的内部编译器技术,最后概述Flux适合的更大生态系统。
2018-11-10 cs.LG cs.PL
Full abstraction for nominal general references
游戏语义学已经在制定具有高阶过程和广泛的计算效果的语言的完全抽象语义方面取得了相当大的成功。最近,名义游戏已经提出了建模功能语言的名称。这些都是普通的,有状态的游戏投在理论的名义集开发的皮茨和Gabbay。在这里,我们采取名义游戏更进一步,通过开发一个完全抽象的语义语言与名义的一般参考。
2009-09-11 cs.LO cs.PL
Proceedings Combined 21st International Workshop on Expressiveness in Concurrency and 11th Workshop on Structural Operational Semantics
本卷包含2014年9月1日在意大利罗马举行的第21届并发表达性国际研讨会和第11届结构操作语义研讨会(EXPRESS/SOS 2014)的会议记录,作为CONCUR 2014的附属研讨会,第25届并发理论国际会议。EXPRESS研讨会旨在汇集对各种形式系统和语义概念的表达感兴趣的研究人员,特别是在并发领域。传统上,他们的重点是比较编程概念(如并发、函数、命令、逻辑和面向对象编程)和计算的数学模型(如进程代数、Petri网、事件结构、模态逻辑和重写系统)之间的相对表达能力。自1994年以来,EXPRESS系列研讨会已经成功举办,多年来,这一重点已经得到广泛的理解。SOS研讨会的目的是成为一个论坛的研究人员,学生和从业人员感兴趣的新发展,未来的调查方向,在结构操作语义领域。SOS研讨会系列的具体目标之一是在从事SOS理论和实践工作的并发和程序设计语言社区之间建立协同作用。SOS在其他领域的应用报告也非常受欢迎,包括:生物系统的建模和分析,计算机系统编程的安全性,嵌入式系统的建模和分析,中间件和协调语言的规范,程序设计语言语义和实现,静态分析软件和硬件验证,以及特定领域语言和基于模型的工程的语义。
2014-08-06 cs.LO cs.PL
Proceedings Combined 20th International Workshop on Expressiveness in Concurrency and 10th Workshop on Structural Operational Semantics
本卷包含2013年8月26日在阿根廷布宜诺斯艾利斯举行的第20届并发表达性国际研讨会和第10届结构操作语义研讨会(EXPRESS/SOS 2013)的会议记录,作为CONCUR 2013的附属研讨会,第24届并发理论国际会议。EXPRESS研讨会旨在汇集对各种形式系统和语义概念的表达感兴趣的研究人员,特别是在并发领域。传统上,他们的重点是编程概念(例如并发、函数式、命令式、逻辑和面向对象编程)之间的比较以及计算数学模型(例如进程代数、Petri网、事件结构、模态逻辑和重写系统)之间的比较。基于它们的相对表达能力。自1994年以来,EXPRESS系列研讨会已经成功举办,多年来,这一重点已经得到广泛的理解。SOS研讨会的目的是成为一个论坛的研究人员,学生和从业人员感兴趣的新发展,未来的调查方向,在结构操作语义领域。SOS研讨会系列的具体目标之一是在从事SOS理论和实践工作的并发和程序设计语言社区之间建立协同作用。SOS在其他领域的应用报告也非常受欢迎,包括:生物系统的建模和分析,计算机系统编程的安全性,嵌入式系统的建模和分析,中间件和协调语言的规范,程序设计语言语义和实现,静态分析软件和硬件验证,以及特定领域语言和基于模型的工程的语义。
2013-07-26 cs.LO cs.PL
Deployable probabilistic programming
PUB+
我们提出了一个适合作为生产软件系统的一部分部署的概率编程设施的设计准则。作为一个参考实现,我们介绍Infergo,一个概率编程工具去,一个现代程序设计语言的选择服务器端软件开发。我们认为,一个类似的概率编程设施可以添加到大多数现代通用程序设计语言。概率编程能够通过基于数据的概率推理来自动调整程序参数和算法决策。为了便于增加概率编程能力,其他程序设计语言,我们分享实施的选择和技术,在开发的Infergo。我们说明了适用性的Infergo的各种用例的案例研究,并评估Infergo的性能在几个基准,比较Infergo专用的推理为中心的概率编程框架。
2019-06-20 cs.AI cs.LG cs.PL
Probabilistic unifying relations for modelling epistemic and aleatoric uncertainty: semantics and automated reasoning with theorem proving
University of York(约克大学)
本文提出概率统一关系(ProbURel)框架,基于统一编程理论形式化概率编程的语法与语义,扩展子分布与超分布处理构造性语义,并在Isabelle/HOL中机械化以支持定理证明自动推理。
2024-09-26 cs.LG cs.LO cs.PL
PanGu-Coder: Program Synthesis with Function-Level Language Modeling
Huawei Noah’s Ark Lab(华为诺亚方舟实验室);Huawei Cloud(华为云)
我们提出了PanGu-Coder,一个预训练的解码器的语言模型,采用PanGu-Alpha架构的文本到代码生成,即程序设计语言解决方案的合成给出了一个自然语言的问题描述。我们使用两阶段策略训练PanGu-Coder:第一阶段使用因果语言建模(CLM)对原始程序设计语言数据进行预训练,而第二阶段使用因果语言建模和掩蔽语言建模(MLM)训练目标的组合,专注于文本到代码生成的下游任务,并对松散策划的自然语言程序定义和代码函数进行训练。最后,我们讨论PanGu-Coder-FT,它是微调的竞争性编程问题和代码的组合与持续集成测试。我们评估PanGu-Coder,重点是它是否生成功能正确的程序,并证明它比类似大小的模型(如CodeX)具有相同或更好的性能,同时参加较小的上下文窗口和较少的数据训练。
2022-07-22 cs.AI cs.CL cs.LG