标签:#编程范式

共 67 篇文章

指令式編程

指令式編程();是一種描述電腦所需作出的行為的编程范型。幾乎所有電腦的硬體都是指令式工作;幾乎所有電腦的硬體都是能執行机器语言,而機器碼是使用指令式的風格來寫的。較高階的指令式编程语言使用變數和更複雜的語句,但仍依從相同的典範。菜譜和行動清單,雖非電腦程式,但與指令式編程有相似的風格:每步都是指令。因為指令式編程的基礎觀念,不但概念上比較熟悉,而且較容易具體表現於硬體,所以大部分的編程語言都是指令式的。 原理和基础 很多指令式编程语言(…

多重编程范型

多范型编程语言(),是一種可以支持超過一種編程范型的程式語言。「」这个词是由丹麥計算機科學家比雅尼·斯特劳斯特鲁普()博士在其著作中提出的,用于表述C++可以同时使用多种风格来写程序,比如面向对象和泛型编程。 两种模态的语言 可视化、数据流 LabVIEW 函数式、逻辑 *ALF 面向对象,函数式 Dylan Sather *Claire 函数式,可视化 *Spreadsheet 面向对象(基于类),可视化 *Lava 11种模态的编程…

文学编程

文学编程()是由高德纳提出的编程方法,希望能用來取代结构化编程范式。 正如高德纳所构想的那样,文学编程范式不同于传统的由计算机强加的编写程序的方式和顺序,而代之以让程序员用他们自己思维内在的逻辑和流程所要求的顺序开发程序。文学编程自由地表达逻辑,而且它用人类日常使用的语言写出来,就好像一篇文章一样,文章里包括用来隐藏抽象的巨集和传统的源代码。文学编程工具用来从文学源文件中获得两种表达方式,一种用于计算机进一步的编译和执行,称作“绕出”(…

非确定性编程

非确定性编程,是一种编程范型,它可以在程序的特定点(叫做选择点)上,指定各种可交替的程序流程。不像if…then语句,在这些交替者(alternative)的之间选择的方法,不能直接由编程者来指定;程序必须通过应用到所有选择点上的某种通用方法,在运行时间于这些交替者之间做出决定。编程者指定有限数目的,而程序此后必须在它们之间做出选择,(事实上“Choose”是非确定性算子的典型名字)。可以形成选择点的一个层级,具有着高层选择引出的包含其…

可微分编程

可微分编程是一种编程范型,在其中数值计算程序始终可通过自动微分来求导数。这允许了对程序中的参数的,通常通过梯度下降。可微分编程广泛用于各种领域,特别是科学计算和人工智能。各种尝试一般可归入两组之中: 基于静态、编译图的方式,比如TensorFlow 1、Theano和MXNet。它们意图允许良好的并易于伸缩成大系统,但是它们的静态本质,限制了交互性和能够轻易建立的程序类型,例如难于构建涉及循环或递归的那些程序,还有使得用户难以针对他们的…

概率编程

概率编程(PP:Probabilistic programming)是一种编程范型,在其中指定了概率模型并自动进行这些模型的推断。它代表了统一概率模型和传统通用编程的一种尝试,使前者更加容易并更广泛的应用。它可以用于建立系统帮助在面对不确定时作出决定。 用于概率编程的编程语言被称为“概率编程语言”(PPL)。 应用 概率推理已经广泛用于各种任务,比如预测股价、推荐电影、诊断计算机、检测网络入侵和图像检查。但是(部份由于计算能力的限制),…

面向特性编程

面向特性编程(@OP)是一种程序层面的标记技术。编程者可以给程序元素(例如类和方法)标记上特性(attribute),来指示它们包含特定于应用或特定于领域的语义。 简介 特性将一个应用的核心逻辑(或业务逻辑)同特定于应用或特定于领域的语义(比如日志和网页服务功能)分离开来。 例如,一些编程者可以定义“logging”特性并把它关联于一个方法,来指示这个方法应当实现一个日志功能,而其他编程者可以定义一个“web service”特性并把它…

管道 (软件)

管道(pipeline),本源是使用消息传递的进程间通信机制,它构成自链接起来的处理元素(进程、线程、协程和函数等),它们被安置为每个元素的输出都是下一个元素的输入;这个名字类比于物理上的管道运输。在连贯的元素之间,通常会提供一定数量的缓冲区。在管道中流动的信息,经常是记录、字节或位的流(stream),而管道的元素可以叫做。将元素连接成管道类似于。在软件工程中,称之为管道与过滤器设计模式。 概述 管道的概念是在Unix的发源地贝尔实验…

并发面向对象编程

并发面向对象编程是一种编程范式,它将面向对象编程(OOP)和并发性结合了起来。尽管很多编程语言,比如Java语言,将OOP结合于并发机制比如线程;而术语“并发面向对象编程”,主要指称的是其中对象自身是并发性的本原(primitive)的系统,比如将对象结合于演员模型的时候。 参见 外部链接 [https://web.archive.org/web/20131001200403/http://www.python.org/workshop…

面向进程编程

面向进程(process-oriented)编程,是一种编程范型,它将对数据结构的关切与对作用在其上的并发进程的关切分离开来。在这种情况下,数据结构典型的是持久的、复杂的和大规模的,是通用应用程序的主题,截然相反于在高产能应用(HPC)中所见的那种特殊数据集的特殊处理。这个模型允许建立部份的分享公共数据集的大规模应用。程序在功能上解构成建立并作用在逻辑上共享的数据上的并行进程。 这个范式最初在1980年代为并行计算机而发明,特别是INM…

自动编程

在计算机科学中,术语自动编程,称谓一种类型的计算机程序,它基于某种机制生成计算机程序,这允许人类编程者在更高的抽象层次上写代码。 在自动编程的严格定义上少有一致意见,很大程度上因为它的含义随着时间而改变。David Parnas在他的关于“自动编程”历史的出版研究中,指出在1940年代它描述手工处理打孔纸带的自动化。后来它指称高级语言如Fortran和ALGOL的转译。事实上,最老的可辨识为编译器的程序之一就叫作。Parnas的结论是“…

函数级编程

在计算机科学中,函数级(Function-level)编程,指称John Backus在他的将程序作为数学对象来研讨的著作中标识出的两种对立编程范型之一,另一种是值级(Value-level)编程。在Backus研究并出版他自己的函数级风格编程之时,他的提议在很大程度上被误解为支持传统的函数式编程。 概述 Backus在他的1977年图灵奖获奖演讲中,阐述了为何他认为在编程语言设计中需要切换到一种不同的哲学: 编程语言似乎遇到了麻烦。每…

面向堆栈编程

面向堆栈(stack-oriented)编程,或基于堆栈编程,是依赖于堆栈机器模型来操纵数据和传递参数的编程范型。一些编程语言适合这种描述,著名的有Forth、、 PostScript、BibTeX样式设计语言和很多汇编语言。 概述 面向堆栈语言运算于一个或多个堆栈之上,每个都充任不同用途。因此,用其他编程语言构造的程序,在面向堆栈系统中使用可能需要修改。进一步的说,一些面向堆栈语言运算,采用后缀表示法也称为逆波兰表示法,就是说,命令的…

数据驱动编程

在计算机编程中,数据驱动编程,是一种编程范型,在其中程序语句描述要匹配的数据,和对它需要做的处理,程序本身不定义选取数据的一序列文件操作步骤。数据驱动语言的标准例子是文本处理语言sed和AWK。在面向对象编程中,这种类型的设计有时被用于在构思一段软件期间定义类。 数据驱动编程语言 AWK Clojure ;邮件过滤语言 procmail 参见 事件驱动编程 引用 外部链接 https://homepage.cs.uri.edu/~the…

符号式编程

在计算机编程中,符号式(symbolic)编程,是在其中程序可以操纵它自己的公式和程序构件如同它们是普通数据一样的编程范式。 通过符号式编程,复杂(complex)的过程(process)可以被开发出来,用以通过组合(combine)更小的逻辑或功能单元来建造其他更错综复杂的(intricate)的过程。因此,这种程序可以有效的修改自身并表现出“学习”能力,这使得它们更加适合于人工智能、专家系统、自然语言处理和计算机游戏这样的应用。 支…

纯函数式编程

在计算机科学中,纯函数式编程通常指示一种编程范型,这是建造计算机程序的结构和元素的一种风格,就是将所有计算都当作数学函数的求值(evaluation)。纯函数式编程还可以定义为禁用变更并保持数据的不可变性。 纯函数式编程主要在于确保函数遵守函数式范型,只依赖于它们的实际参数,而不用管任何全局或局部的状态。 纯与非纯的区别 在纯与非纯函数式编程之间的确切区别是有争议的事情。 当一个程序使用了某些函数式编程概念的时候, 比如头等函数和高阶函…

阵列编程

在计算机科学中,阵列编程指称允许向作为整体的一组数值同时应用运算操作的一种解决方案。这种方案经常用于科学和工程上的各种场合(settings)。 支持阵列编程的现代编程语言(也叫做向量或多维语言),已经具体的工程设计为将在标量上的运算,推广为透明的适用于向量、矩阵和高维数组。其典型例子是APL/J语言、Fortran 90,其他例子还包括:、Cilk Plus、Julia、Mata、MATLAB、NumPy(Python语言扩展)、Oc…

数据流程编程

在程序设计中,数据流程编程是一种编程范型,它将程序建模为数据在运算(operation)之间流动的有向图,从而实现了数据流程原理和架构。数据流程编程语言,共享了纯函数式语言的某些特征,比如单赋值,并且开发它们的动因,通常是为了向更适合数值处理的语言,增加函数式编程概念。 历史 先驱的数据流程语言是BLODI(BLOck DIagram),它是John Larry Kelly, Jr.、Carol Lochbaum和专门开发的,用于采样数…

串接式编程语言

串接式(concatenative)编程语言,是无点的计算机编程语言,在其中所有表达式都指示为函数,而表达式的并列指示函数复合。串接式编程语言将常见于其他编程样式中的,替代为,作为建造子例程的缺省方法。 名称含义 串接式语言这个名词,最早在2001年提出的Joy语言中采用。在这门语言中,符号的串接的语法关系,被直接映射成函数的复合的语义关系上:“两个程序的串接指示这两个程序指示的函数的复合”。 例子 例如,在如下的应用式语言的运算操作序…

分区全局地址空间

在计算机科学中,分区全局地址空间(partitioned global address space:PGAS)是一种并行编程模型。在PGAS模型中,多个SPMD线程或进程分享出它们地址空间的一部份,从而共享出一个划分了分区的全局地址空间,对于每个线程或进程在其中都有对它是局部性的那一部份。 简介 PGAS模型试图将针对系统的如MPI那样的编程样式,和共享内存系统的数据参照语义二者的好处结合起来。PGAS模型相较分布式共享内存有所创新,共…