徽标
联盟百科
通讯
下载应用,请到 Google Play
新! 在您的Android™设备上下载联盟百科!
自由
比浏览器更快的访问!
 

Scheme

指数 Scheme

Scheme是一种函数式编程语言,是Lisp的两种主要方言之一(另一种为Common Lisp)。不同于Common Lisp,Scheme遵循極簡主義哲学,以一个小型语言核心作为标准,加上各种强力语言工具(语法糖)来扩展语言本身。 麻省理工學院與其他院校曾采用Scheme教授计算机科学入門課程。著名的入門教材《-zh-hans:计算机程序的构造和解释;zh-hant:電腦程式的構造和解釋-》(SICP)利用Scheme來解釋程序設計 。Scheme的廣泛受眾被視為一個主要優勢,然而不同實現之間的差異成為了它的一個劣勢。 Scheme最早由麻省理工學院的蓋伊·史提爾二世與傑拉德·傑伊·薩斯曼在1970年代發展出來,並由兩人發表的「λ論文集」推廣開來。 Scheme語言與λ演算關係十分密切。小寫字母「λ」是Scheme語言的標誌。 Scheme的哲学是:设计计算机语言不应该进行功能的堆砌,而应该尽可能减少弱点和限制,使剩下的功能显得必要。Scheme是第一個使用靜態作用域的Lisp方言,也是第一个引入“干净宏”和第一类续延的编程语言。.

86 关系: ALGOLAllegroArc加权平衡树动态语言反射式编程语言和平台列表名字解析 (程序设计)堆疊溢位头等函数字串流实化 (计算机科学)宣告式編程小蓋伊·史提爾尾调用巨集丹尼尔·福瑞得曼互递归彼得·兰丁依赖类型匿名函数傑拉德·傑伊·薩斯曼哈尔·阿伯尔森函數程式語言Cairo (繪圖)Chez SchemeChicken (Scheme)ClojureCommon Lisp程序设计方法程式語言歷史程式迴圈第一類物件简单通用网关接口编程语言列表编程范型無窮迴圈ECMAScriptEmacs LispEval音频编程语言列表静态单赋值形式预处理器高阶函数计算机科学家列表计算机程序的构造和解释迭代闭包 (计算机科学)肯特·代博维格链表脚本语言...自动机编程自循環直譯器递归递归 (计算机科学)GIMPGNU GuileGNU TeXmacsGnuCashGNU软件包列表Hello World程序样例ISWIMJava虚拟机JavaScriptLISPLuaMaclispMiniKanrenMIT应用开发者PsycoPythonR语言RustS-表达式ScalaShebangSpiderMonkeyTroffVimYacc控制流分析控制流程求值策略注释 (计算机语言)惰性求值数学置标语言教育编程语言列表 扩展索引 (36 更多) »

ALGOL

ALGOL,名稱源自演算法語言(ALGOrithmic Language)的縮寫,是一族指令式編程語言,發展於1950年代中期,對許多其它程式語言產生了重大影響。计算机协会在教科書及學術文章採用此語言做為描述演算法的標準語法超過三十年。 由大多數近代程式語言皆使用類似ALGOL的語法來看,ALGOL可與差不多同時期的FORTRAN、LISP及COBOL並列為四大最有影響力的高階語言。ALGOL被設計用來避免FORTRAN中一些已知的問題,最終引領了許多其它程式語言的興起,包括PL/I、Simula、BCPL、B、Pascal及C。 ALGOL引入了程式碼區間,並用begin⋯end來分隔。它是第一個利用詞法作用域實作巢狀函式的語言,也是第一個注重形式語言定義的語言,並在ALGOL 60報告中引入了巴科斯範式來作為設計語言形式文法的原則。 ALGOL主要有三種規格,以初次發表的年份命名:.

新!!: Scheme和ALGOL · 查看更多 »

Allegro

Allegro是一个特别针对于电子游戏的开发的自由软件程式库。 该库提供基本二维图形、图像操作、音效输出、MIDI音乐、输入、计时器,以及额外的寻路矩阵计算、UNICODE、文件系统管理、有限而建基於軟件的三维图形。 其版本4.0可以运行在DOS、Microsoft Windows、BeOS、Mac OS X、多种类Unix,程序只需要嵌入其API即可使用。该库还有独立的AmigaOS 4移植版。 该库使用C语言编写,适用于C或C++,其附带很多文档和实例。.

新!!: Scheme和Allegro · 查看更多 »

Arc

Arc是一種程式語言,LISP的之一,由保羅·格雷厄姆與羅伯特·泰潘·莫里斯設計,2008年釋出第一個正式版本。.

新!!: Scheme和Arc · 查看更多 »

加权平衡树

在计算机科学里面,加权平衡树(WBTs)是一种可以用来实现集合、字典(映射)和序列的平衡树。这些树结构在20世纪70年代被Nievergelt和Reingold作为有界限的自平衡树或BB树提出。让这些结构普及的是高德纳。 就像其他自平衡树一样,加权平衡树储存的账簿信息可以在树结构被插入和删除操作打乱时,通过平衡结点和操作树旋转来使树结构重新达到平衡。特别的地方是,加权平衡树的每个结点储存这个结点下子树的大小,并且这个结点左右子树的大小保持着某种内在联系。不同于AVL树(储存子树的高度)和红黑树(储存虚构的“颜色”位),加权平衡树储存记账信息的方式是对应用真正有用的属性:一棵树下元素的数量等于它的根的大小,然而这个根的大小是一个用来实现顺序统计树操作的有用数据,也就是说,可以得到一个大小为的集合下的最大元素或者决定一个顺序结构下一个元素的索引。 加权平衡树在函数程式语言社区下面非常受欢迎以及被用来实现MIT Scheme的集合和映射结构还有Haskell语言的实现。.

新!!: Scheme和加权平衡树 · 查看更多 »

动态语言

动态编程语言是高级程序设计语言的一个类别,在计算机科学领域已被广泛应用。它是一类在运行时可以改变其结构的语言:例如新的函数、对象、甚至代码可以被引进,已有的函数可以被删除或是其他结构上的变化。动态语言目前非常具有活力。众所周知的ECMAScript(JavaScript)便是一个动态语言,除此之外如PHP、Ruby、Python等也都属于动态语言,而C、C++等语言则不属于动态语言。 大部分动态语言都使用动态类型,但也有些不是。.

新!!: Scheme和动态语言 · 查看更多 »

反射式编程语言和平台列表

一般支持反射的编程语言和平台包括动态类型语言如Smalltalk,脚本语言如Perl、PHP、Python、VBScript和JavaScript,Maude system的重写逻辑。.

新!!: Scheme和反射式编程语言和平台列表 · 查看更多 »

名字解析 (程序设计)

计算机程序设计语言中, 名字解析是指把程序表达式中的标记(token)对应解析到程序成分(program components)。.

新!!: Scheme和名字解析 (程序设计) · 查看更多 »

堆疊溢位

--(stack overflow)在電腦科學中是指使用過多的記憶體时導致呼叫堆疊產生的溢位。堆疊溢位的產生是由於過多的函數呼叫,導致呼叫堆疊無法容納這些呼叫的返回地址,一般在遞迴中產生。堆疊溢位很可能由無限遞迴(Infinite recursion)產生,但也可能僅僅是過多的堆疊層級。 堆疊溢位在核心設計中尤其危險,因此很多入門核心設計教程建議使用者不要嘗試使用遞迴程式;而是基於安全和效能考量,改用迴圈處理問題。 在POSIX相容平台上,堆疊溢位通常會造成作業系統產生SIGSEGV訊號。.

新!!: Scheme和堆疊溢位 · 查看更多 »

头等函数

头等函数(first-class function)是指在程序设计语言中,函数被当作头等公民。这意味着,函数可以作为别的函数的参数、函数的返回值,赋值给变量或存储在数据结构中。 有人主张应包括支持匿名函数(函数字面量,function literals)。, by Michael Lee Scott, section 11.2 "Functional Programming".

新!!: Scheme和头等函数 · 查看更多 »

字串流

在電腦科學裡面,字串流(stream),又譯串流,這個詞有很多用法。所有這一些用法都是代表一個包含資料的序列。我們可以將字串流想做是一個允許資料一個接一個,而非將資料包作一整個,來進行處理的輸送帶,。.

新!!: Scheme和字串流 · 查看更多 »

实化 (计算机科学)

实化(reification)在计算机科学中是指把抽象的想法(idea)转化为明确的数据模型或程序设计语言创建的其他对象的过程。通过实化,以前是隐式的、未表示的、可能是不可表示的被显式形成可概念(逻辑或计算)操作的。非正式地,实化也常被称作在特定系统范围内把某些东西变为“头等公民”。 实化是概念分析与知识表示中最常用的技术。.

新!!: Scheme和实化 (计算机科学) · 查看更多 »

宣告式編程

宣告式編程(Declarative programming)是一種编程范式,与指令式編程相對立。它描述目標的性質,讓電腦明白目標,而非流程。声明式编程不用告诉电脑问题领域,从而避免随之而来的副作用。而指令式编程则需要用算法来明确的指出每一步该怎么做。 声明式编程通常被看做是形式逻辑的理论,把计算看做推导。声明式编程因大幅简化了并行计算的编写难度,自2009起备受关注。 声明式语言包括数据库查询语言(SQL,XQuery),正则表达式,逻辑编程,函数式编程和组态管理系统。 宣告式編程透過函數、推論規則或项重写(term-rewriting)規則,來描述變數之間的關係。它的語言執行器(編譯器或解释器)採用了一個固定的算法,以從這些關係產生結果。 宣告式編程語言通常用作解決人工智能和約束滿足問題。.

新!!: Scheme和宣告式編程 · 查看更多 »

小蓋伊·史提爾

小蓋伊·路易士·史提爾(Guy Lewis Steele Jr.,),綽號為The Great Quux,GLS,生於美國密蘇里州,計算機科學家,曾與理查德·斯托曼共同開發了Emacs,也是Scheme的共同作者,在程式語言方面有很大的貢獻。.

新!!: Scheme和小蓋伊·史提爾 · 查看更多 »

尾调用

在计算机学,尾调用是指一个函数里的最后一个动作是返回一个函数的调用结果的情形,即最后一步新调用的返回值直接被当前函数的返回结果。此时,该尾部调用位置被称为尾位置。尾调用中有一种重要而特殊的情形叫做尾递归。经过适当处理,尾递归形式的函数的运行效率可以被极大地优化。尾调用原则上都可以通过简化函数调用栈的结构而获得性能优化(称为“尾调用消除”),但是优化尾调用是否方便可行取决于运行环境对此类优化的支持程度如何。.

新!!: Scheme和尾调用 · 查看更多 »

巨集

,是一種批--量處理的稱謂。 计算机科学裡的宏是一种抽象(Abstraction),它根据一系列预定义的规则替换一定的文本模式。解释器或编译器在遇到宏时会自动进行这一模式替换。对于编译语言,宏展开在编译时发生,进行宏展开的工具常被称为宏展开器。宏这一术语也常常被用于许多类似的环境中,它们是源自宏展开的概念,这包括键盘宏和宏语言。绝大多数情况下,“宏”这个词的使用暗示着将小命令或动作转化为一系列指令。 宏的用途在于自动化频繁使用的序列或者是获得一种更强大的抽象能力。 计算机语言如C语言或汇编语言有简单的宏系统,由编译器或汇编器的预处理器实现。C语言的宏预处理器的工作只是简单的文本搜索和替换,使用附加的文本处理语言如M4,C程序员可以获得更精巧的宏。 Lisp类语言如Common Lisp和Scheme有更精巧的宏系统:宏的行为如同是函数对自身程序文本的变形,并且可以应用全部语言来表达这种变形。一个C宏可以定义一段语法的替换,然而一个Lisp的宏却可以控制一节代码的计算。 获得了控制代码的执行顺序(见惰性计算和非限制函数)的能力,使得新创建的语法结构与语言内建的语法结构不可区分。例如,一种Lisp方言有cond而没有if,就可以使用宏由前者定义后者。Lisp语法的去部主要扩展,比如面向对象的CLOS系统,可以由宏来定义。 MacroML有型别语法宏,一种有效的理解方式是把这种语法宏看作是多阶段计算。.

新!!: Scheme和巨集 · 查看更多 »

丹尼尔·福瑞得曼

丹尼尔·弗里德曼(Daniel Paul Friedman,生于1944年),在美国担任计算机科学教授,专攻程序语言研究领域,为该领域的权威。 1976年他和David Wise合作发表了影响深远的论文《Cons should not evaluate its arguments》 。 在接下来的八十年代,他转而研究Scheme语言,探讨了用宏来定义程序语言。他和其他几位作者合作发表了被至今仍广泛引用的论文,引入了干净的宏(Hygienic macro)的概念。和Haynes以及Wand, 他同时研究了连续对象本质、使用及约束可能性。 随后,他和 引入了λ演算,以及 Continuation和。 他们的工作催生了在经典逻辑和计算于连续实际扩展之间的语意和联系方面的研究。 弗里德曼博士是位多产的教科书作者。他的第一本著作《The Little Lisper》写于1974年,时至今日再版第四版了,书更名为《The Little Schemer》。在1990年代,他和撰写发布了另外三本little系列丛书,《The Little MLer》, 《The Seasoned Schemer》, 和《A Little Java, A Few Patterns》。 弗里德曼博士是《》的主要作者。这本书于1980年代出版,改变了程序语言领域的面貌,将重点从盘点各种程序语言转为通过解释器来研究程序语言的原则。今天这个领域的其他教科书都遵循此方向,只是用實作语意和类型理论代替了解释器。 和 《The Little LISPer》一样, 《Essentials of Programming Languages》长盛不衰,目前已为第三版。 最近,弗里德曼博士和Byrd、Kiselyov一起撰写《The Reasoned Schemer》,通过Scheme 语言的一个扩展来解释逻辑编程。 2015年,弗里德曼博士和Carl Eastlund出版了《The Little Prover》,并公开辅助证明程序“J-Bob”的源代码。.

新!!: Scheme和丹尼尔·福瑞得曼 · 查看更多 »

互递归

互递归是数学与计算机科学中一种递归,指两个数学或计算机对象如函数或数据类型互相定义。互递归在函數程式語言或某些问题域中非常常见,如,其中数据类型是自然地互相递归定义的。.

新!!: Scheme和互递归 · 查看更多 »

彼得·兰丁

彼得·约翰·兰丁(Peter John Landin,),英国计算机科学家。他最早提出阿隆佐·邱奇的λ演算可以被用作计算机程序语言的模型,而这后来成为了函数式编程和指称语义的基础。.

新!!: Scheme和彼得·兰丁 · 查看更多 »

依赖类型

在计算机科学和逻辑中,依赖类型(或依存类型,dependent type)是指依赖于值的类型,其理论同时包含了数学基础中的类型论和计算机编程中用以减少程序错误的类型系统两方面。在 Per Martin-Löf 的直觉类型论中,依赖类型可对应于谓词逻辑中的全称量词和存在量词;在依赖类型函数式编程语言如 ATS、Agda、Dependent ML、Epigram、F* 和 Idris 中,依赖类型系统通过极其丰富的类型表达能力使得程序规范得以借助类型的形式被检查,从而有效减少程序错误。 依赖类型的两个常见实例是依赖函数类型(又称依赖乘积类型、Π-类型)和依赖值对类型(又称依赖总和类型、Σ-类型)。一个依赖类型函数的返回值类型可以依赖于某个参数的具体值,而非仅仅参数的类型,例如,一个输入参数为整型值n的函数可能返回一个长度为n的数组;一个依赖类型值对中的第二个值可以依赖于第一个值,例如,依赖类型可表示这样的类型:它由一对整数组成,其中的第二个数总是大于第一个数。 依赖类型增加了类型系统的复杂度。由于确定两个依赖于值的类型的等价性需要涉及具体的计算,若允许在依赖类型中使用任意值的话,其类型检查将会成为不可判定问题;换言之,无法确保程序的类型检查一定会停机。 由于Curry-Howard同构揭示了程序语言的类型论与证明论的直觉逻辑之间的紧密关联性,以依赖类型系统为基础的编程语言大多同时也作为构造证明与可验证程序的辅助工具而存在,如 Coq 和 Agda(但并非所有证明辅助工具都以类型论为基础);近年来,一些以通用和系统编程为目的的编程语言被设计出来,如 Idris。 一些以证明辅助为主要目的的编程语言采用强函数式编程(total functional programming),这消除了停机问题,同时也意味着通过它们自身的核心语言无法实现任意无限递归,不是图灵完全的,如 Coq 和 Agda;另外一些依赖类型编程语言则是图灵完全的,如 Idris、由 ML 衍生而来的 ATS 和 由 F# 衍生而来的 F*。.

新!!: Scheme和依赖类型 · 查看更多 »

匿名函数

在计算机编程中,匿名函数(anonymous function)是指一类无需定义标识符(函数名)的函数或子程序,普遍存在于多种编程语言中。 1958年LISP首先采用匿名函数,自此之后,越来越多编程语言陆续采用,主流的编程语言如PHP和C++也在不久前采用。.

新!!: Scheme和匿名函数 · 查看更多 »

傑拉德·傑伊·薩斯曼

傑拉德·傑伊·薩斯曼(Gerald Jay Sussman,),生於美國,著名計算機科學家,現為麻省理工學院教授。他是自由軟體基金會的創始元老之一,現任理事。.

新!!: Scheme和傑拉德·傑伊·薩斯曼 · 查看更多 »

哈尔·阿伯尔森

哈尔·阿伯尔森(Hal Abelson,)是美国麻省理工學院电子工程和计算机科学部门的一名著名计算机科学教授,电气电子工程师学会院士, 创作共用,自由软件基金会,麻省理工网络开放课程,媒体实验室 Center for Mobile Learning,MIT App Inventor的创始领导人。.

新!!: Scheme和哈尔·阿伯尔森 · 查看更多 »

函數程式語言

函數式編程(functional programming)或称函数程序设计,又稱泛函編程,是一種編程典範,它將電腦運算視為數學上的函數計算,並且避免使用程序状态以及易变物件。函數程式語言最重要的基礎是λ演算(lambda calculus)。而且λ演算的函數可以接受函數當作輸入(引數)和輸出(傳出值)。 比起指令式編程,函數式編程更加強調程序执行的结果而非执行的过程,倡导利用若干简单的执行单元让计算结果不断渐进,逐层推导复杂的运算,而不是设计一个复杂的执行过程。.

新!!: Scheme和函數程式語言 · 查看更多 »

Cairo (繪圖)

Cairo是一個讓用於提供向量圖形繪圖的自由函式庫,cairo提供在多個背景下做2D的繪圖,進階的更可以使用硬體加速功能。 雖然cairo是使用C語言撰寫的,但是當使用cairo時,可以用許多其他種語言來使用,包括有C++、C#、Java、Python、Perl、Ruby、Scheme、Smalltalk以及許多種語言,cairo在GNU較寬鬆公共許可證與Mozilla公共许可证兩種授權條款下發行。.

新!!: Scheme和Cairo (繪圖) · 查看更多 »

Chez Scheme

Chez Scheme是一个专有的Scheme实现,由R. Kent Dybvig开发并于1985年首次发布。Chez Scheme可以将源代码编译为原生的机器代码,支持PowerPC、SPARC、x86和x86-64处理器架构,并提供了一个优秀的REPL环境。Chez Scheme自7.9.1版本开始支持R6RS。 Chez Scheme有一个窗口和图形软件包,称为 Scheme Widget Library,其支持可移植的SLIB库。 据几个基准测试,Chez Scheme是最快的可用的Scheme实现之一。 Chez Scheme 从9.4版本开始成为开源软件。 Petite Chez Scheme可以免费使用,而无需支付授权费用。.

新!!: Scheme和Chez Scheme · 查看更多 »

Chicken (Scheme)

Chicken是一个Scheme语言的编译器和解释器,能够将scheme代码编译成标准C代码。它基本上遵守R5RS标准并且提供了很多扩展。Chicken是一个采用BSD许可证的自由软件。.

新!!: Scheme和Chicken (Scheme) · 查看更多 »

Clojure

Clojure(發音類似"closure")是一套現代的Lisp語言的動態語言版。它是一个函数式多用途的语言。 Clojure可以執行於Java虛擬機,通用語言運行時以及JavaScript引擎之上。與其他Lisp一樣,Clojure認為同像性,同時擁有複雜的巨集。 Clojure最新的稳定版本是1.8,发布于2016年1月19日。第一个稳定版本1.0于2009年5月4日发布。 Clojure是一个在Eclipse公共许可证下发行的自由软件。目前其开发进程是社区主导的,在作者Rich Hickey以一个“终身的仁慈独裁者”的身份监督下进行。.

新!!: Scheme和Clojure · 查看更多 »

Common Lisp

Common Lisp,縮寫為CL(不是組合邏輯的縮寫)是Lisp編程語言的一種方言,由ANSI INCITS 226-1994(R2004)(前身為ANSI X3.226-1994(R1999)),所定義的語言規範標準。Common Lisp HyperSpec是源自於ANSI Common Lisp標準的網頁超連結版本。 CL語言是為標準化和改良Maclisp而開發的後繼者。到20世紀80年代初,幾個工作群組已經在設計MacLisp各種後繼者,例如:Lisp Machine Lisp(又名 ZetaLisp),Spice Lisp,NIL和S-1 Lisp。CL是為了標準化和擴展此前眾多的MacLisp分支而開發,它本身並非具體的實作,而是對語言設立標準的規範。有數個實作符合Common Lisp規範,其中包括自由和開源軟件,以及商業化產品。CL支援了結構化、函數式和物件導向編程等範式。相对于各种嵌入在特定产品中的语言,如Emacs Lisp和AutoLISP,Common Lisp是一種用途廣泛的编程语言。不同於很多早期Lisp,Common Lisp如同Scheme,其中的變量是預設為詞法作用域的。 身為一種動態編程語言,它有助於進化和增量的軟件開發,並將其迭代編譯成高效的執行程序。這種增量開發通常是互動持續地改善,而不需中斷執行中的應用程序。它還支援在後期的分析和優化階段添加可選的型別註記與轉型,使編譯器產生更有效率的代碼。例如在硬體和實作的支援範圍內,fixnum能保存一個未封裝整數,允許比大整數或任意精度類型更高效率的運算。同樣地,在每個模組或函數的基礎上可聲明優化,指示編譯器要編譯成哪一類型的安全級別。 CL包含了支援多分派和方法組合的物件系統,縮寫為CLOS,它通常以元物件(Metaobject)協定來實現。 CL藉由標準功能進行擴展,例如Lisp宏(编译时期程序自身完成的代码重排(compile-time code rearrangement accomplished by the program itself))和阅读器宏(赋予用户自定义的語法以扩展具特殊意义的符号(extension of syntax to give special meaning to characters reserved for users for this purpose))。 CL為Maclisp和约翰·麦卡锡的原創Lisp提供了一些向後兼容性。這允許較舊的Lisp軟件移植到Common Lisp之上。.

新!!: Scheme和Common Lisp · 查看更多 »

程序设计方法

《程序设计方法》(How to Design Programs, HtDP)是一本由MIT出版社出版的关于如何设计程序的教材。作者为Matthias Felleisen、Robert Bruce Findler、Matthew Flatt和Shriram Krishnamurthi。该书介绍了一种设计诀窍,从问题描述出发,通过六个步骤编写出完整的程序。 和另外一本名著《计算机程序的构造和解释》类似,《程序设计方法》使用Scheme语言。事实上,作者提供了专门为该书开发的程序设计环境,名为DrScheme。DrScheme提供了从初级到高级的一系列语言级别。 这本书的中文版由黄林鹏和朱崇恺翻译,人民邮电出版社出版。.

新!!: Scheme和程序设计方法 · 查看更多 »

程式語言歷史

這篇文章在探討程式語言在歷史上的主要發展。更詳細的事件發生年表,請參閱程式語言年表。.

新!!: Scheme和程式語言歷史 · 查看更多 »

程式迴圈

迴圈是計算機科學運算領域的用語,也是一種常見的控制流程。迴圈是一段在程式中只出現一次,但可能會連續執行多次的程式碼。迴圈中的程式碼會執行特定的次數,或者是執行到特定條件成立時結束迴圈,或者是針對某一集合中的所有項目都執行一次。 在一些函數程式語言(例如Haskell和Scheme)中會使用递归或不动点组合子來達到迴圈的效果,其中尾部递归是一種特別的递归,很容易轉換為迭代。.

新!!: Scheme和程式迴圈 · 查看更多 »

第一類物件

一類物件(First-class object)在電腦科學中指可以在執行期創造並作為參數傳遞給其他函數或存入一個變數的實體。將一個實體變為第一類物件的過程叫做「物件化」(Reification)。 「第一類物件」這一名稱最早由克里斯托弗·斯特雷奇在1960年代發明,原稱「第一類公民」(First-class citizen),意指函數可作為電腦語言中的第一類公民。英文中也稱「First-class entity」或「First-class value」。.

新!!: Scheme和第一類物件 · 查看更多 »

简单通用网关接口

单通用网关接口 (Simple Common Gateway Interface ,简称 SCGI) 是一种让应用程序与 HTTP 服务器交互的协议,作为 CGI 协议的替代。它类似于 FastCGI 但它被设计地更容易实现,且最重要的是,允许有很大延迟的 CGI 操作(如联系外部数据库)。.

新!!: Scheme和简单通用网关接口 · 查看更多 »

编程语言列表

此编程语言列表按字母顺序列出了知名编程语言,包括当前使用的和以前使用过的编程语言,BASIC的方言、深奥的编程语言和标记语言除外。.

新!!: Scheme和编程语言列表 · 查看更多 »

编程范型

编--程范型、编--程范式或程式--設計法(Programming paradigm),(範即模範、典範之意,範式即模式、方法),是一类典型的编程风格,是指从事软件工程的一类典型的风格(可以对照方法学)。如:函數式編程、程序編程、面向对象编程、指令式编程等等為不同的编程范型。 编程范型提供了(同时决定了)程序员对程序执行的看法。例如,在面向对象编程中,程序员认为程序是一系列相互作用的对象,而在函数式编程中一个程序会被看作是一个无状态的函数计算的序列。 正如软件工程中不同的群体会提倡不同的「方法学」一样,不同的编程语言也会提倡不同的「编程范型」。一些语言是专门为某个特定的范型设计的(如Smalltalk和Java支持面向对象编程,而Haskell和Scheme则支持函数式编程),同时还有另一些语言支持多种范型(如Ruby、Common Lisp、Python和Oz)。 很多编程范型已经被熟知他们禁止使用哪些技术,同时允许使用哪些。例如,纯粹的函数式编程不允许有副作用;结构化编程不允许使用goto。可能是因为这个原因,新的范型常常被那些习惯于较早的风格的人认为是教条主义或过分严格。然而,这样避免某些技术反而更加证明了关于程序正确性——或仅仅是理解它的行为——的法则,而不用限制程序语言的一般性。 编程范型和编程语言之间的关系可能十分复杂,由于一个编程语言可以支持多种范型。例如,C++设计时,支持过程化编程、面向对象编程以及泛型编程。然而,设计师和程序员们要考虑如何使用这些范型元素来构建一个程序。一个人可以用C++写出一个完全过程化的程序,另一个人也可以用C++写出一个纯粹的面向对象程序,甚至还有人可以写出杂揉了两种范型的程序。.

新!!: Scheme和编程范型 · 查看更多 »

無窮迴圈

無窮迴圈(infinite loop)或稱為无限循环,是指程式的控制流程一直在重複執行某一段程式碼,無法結束的情形,其原因可能是因為程式中的迴圈沒有設結束迴圈條件,或是結束迴圈的條件不可能成立等。在合作式多工(cooperative multitasking)的作業系統中,無窮迴圈會使系統沒有反應,若是先占式(preemptive)多工的系統中,無窮迴圈會用掉所有可用的處理器時間,不過可以由使用戶結束程序。無窮迴圈是造成系統假死機的原因之一,其他的可能原因包括死鎖或是記憶體區段錯誤。 忙碌等待迴圈是在外界特定條件時(例如有按鍵輸入)才會離開的迴圈,有時忙碌等待迴圈也被稱為是無窮迴圈,但此情形和上述的不太一様。忙碌等待迴圈可以藉由外界事件而結束迴圈,但上述的無窮迴圈是無法結束的。.

新!!: Scheme和無窮迴圈 · 查看更多 »

ECMAScript

ECMAScript是一种由Ecma国际(前身为欧洲计算机制造商协会)通过ECMA-262标准化的脚本程序设计语言。这种语言在万维网上应用广泛,它往往被称为JavaScript或JScript,但实际上后两者是ECMA-262标准的实现和扩展。.

新!!: Scheme和ECMAScript · 查看更多 »

Emacs Lisp

Emacs Lisp,一種直譯式的腳本語言,為LISP的方言之一,GNU Emacs與XEmacs文字編輯器都使用這個程式語言來扩展他們的功能。它的直譯器是以C語言來實作的。它受到Maclisp的影響很大,但是跟Common Lisp與Scheme有所不同。.

新!!: Scheme和Emacs Lisp · 查看更多 »

Eval

在一些程序语言中,eval 是一个把字符串当作表达式执行而返回一个结果的函数;在另一些之中,它执行多行的代码就好像它们被包括在其中,而不是包括 eval 的这一行。eval 的输入不一定是字符串;在支持句法抽象的语言(如 Lisp)中,eval 的输入将会由抽象句法形式组成。.

新!!: Scheme和Eval · 查看更多 »

音频编程语言列表

这是一个音频编程语言的列表,它们常用作声音制作、算法作曲以及声音合成。.

新!!: Scheme和音频编程语言列表 · 查看更多 »

静态单赋值形式

在編譯器的設計中,靜態單賦值形式(static single assignment form,通常簡寫為SSA form或是SSA)是中介碼(IR,intermediate representation)的特性,每個變數僅被賦值一次。在原始的IR中,已存在的變數可被分割成許多不同的版本,在許多教科書當中通常會將舊的變數名稱加上一個下標而成為新的變數名稱,以至於標明每個變數及其不同版本。在SSA,UD鏈(use-define chain,賦值代表define,使用變數代表use)是非常明確,而且每個僅包含單一元素。 SSA於1980年在IBM開始進行研究,它是由Ron Cytron、Jeanne Ferrante、Barry K. Rosen、Mark N. Wegman及F. Kenneth Zadeck所開發。 SSA同等於一個持續傳遞式樣(CPS,continuation-passing style)的子集(不包含非本地端控制流程。當CPS被使用在IR,前者就不會發生),所以任何最佳化及轉換,都會適用於CPS。當我們期待在C或是Fortran的編譯器中使用SSA時,CPS已被廣泛地使用在函數程式語言的編譯器中,像是Scheme、ML及Haskell。.

新!!: Scheme和静态单赋值形式 · 查看更多 »

预处理器

在计算机科学中,预处理器是程序中处理输入数据,产生能用来输入到其他程序的数据的程序。输出被称为输入数据预处理过的形式,常用在之后的程序比如编译器中。所作处理的数量和种类依赖于预处理器的类型,一些预处理器只能够执行相对简单的文本替换和巨集展开,而另一些则有着完全成熟的编程语言的能力。 一个来自计算机编程的常见的例子是在进行下一步编译之前,对源代码执行处理。在一些计算机语言(例如:C语言)中有一个叫做预处理的翻译阶段。.

新!!: Scheme和预处理器 · 查看更多 »

高阶函数

在数学和计算机科学中,高阶函数是至少满足下列一个条件的函数:.

新!!: Scheme和高阶函数 · 查看更多 »

计算机科学家列表

這一列表列出最著名的電腦科學家。.

新!!: Scheme和计算机科学家列表 · 查看更多 »

计算机程序的构造和解释

《计算机程序的构造和解释》(Structure and Interpretation of Computer Programs,SICP)是一本关于计算机程序设计的总体性观念的基礎教科书,由MIT press與McGraw-Hill共同出版行銷。作者是麻省理工学院的教授哈尔·阿伯尔森、傑拉德·傑伊·薩斯曼,此外傑拉德·傑伊·薩斯曼的妻子Julie Sussman也有參與本書的製作。封底的作者圖像是由其實驗室的同僚Nick Papadakis後製的合成照。 书中使用程序设计语言Lisp的方言Scheme来解释计算机科学的核心概念,包括抽象(abstraction),递归(recursion),直譯器(interpreters),以及(metalinguistic abstraction)。具體而微地由宏觀到微觀給出清楚地輪廓與脈絡。.

新!!: Scheme和计算机程序的构造和解释 · 查看更多 »

迭代

迭代是重复反馈过程的活动,其目的通常是为了接近并到达所需的目标或结果。每一次对过程的重复被称为一次“迭代”,而每一次迭代得到的结果会被用来作为下一次迭代的初始值。.

新!!: Scheme和迭代 · 查看更多 »

闭包 (计算机科学)

在计算机科学中,闭包(Closure),又稱词法闭包(Lexical Closure)或函數閉包(function closures),是引用了自由变量的函数。这个被引用的自由变量将和这个函数一同存在,即使已经离开了创造它的环境也不例外。所以,有另一种说法认为闭包是由函数和与其相关的引用环境组合而成的实体。闭包在运行时可以有多个实例,不同的引用环境和相同的函数组合可以产生不同的实例。 闭包的概念出现于60年代,最早实现闭包的程序语言是Scheme。之后,闭包被广泛使用于函数式编程语言如ML语言和LISP。很多命令式程序语言也开始支持闭包。 在一些语言中,在函数中可以(嵌套)定义另一个函数时,如果内部的函数引用了外部的函数的变量,则可能产生闭包。运行时,一旦外部的 函数被执行,一个闭包就形成了,闭包中包含了内部函数的代码,以及所需外部函数中的变量的引用。其中所引用的变量称作上值(upvalue)。 闭包一词经常和匿名函数混淆。这可能是因为两者经常同时使用,但是它们是不同的概念。.

新!!: Scheme和闭包 (计算机科学) · 查看更多 »

肯特·代博维格

肯特·代博维格博士(R.

新!!: Scheme和肯特·代博维格 · 查看更多 »

链表

链表(Linked list)是一种常见的基础数据结构,是一种线性表,但是并不会按线性的顺序存储数据,而是在每一个节点里存到下一个节点的指针(Pointer)。由于不必须按顺序存储,链表在插入的时候可以达到O(1)的复杂度,比另一种线性表顺序表快得多,但是查找一个节点或者访问特定编号的节点则需要O(n)的时间,而顺序表相应的时间复杂度分别是O(logn)和O(1)。 使用链表结构可以克服数组链表需要预先知道数据大小的缺点,链表结构可以充分利用计算机内存空间,实现灵活的内存动态管理。但是链表失去了数组随机读取的优点,同时链表由于增加了结点的指针域,空间开销比较大。 在计算机科学中,链表作为一种基础的数据结构可以用来生成其它类型的数据结构。链表通常由一连串节点组成,每个节点包含任意的实例数据(data fields)和一或两个用来指向上一个/或下一个节点的位置的链接("links")。链表最明显的好处就是,常规数组排列关联项目的方式可能不同于这些数据项目在记忆体或磁盘上顺序,数据的存取往往要在不同的排列顺序中转换。而链表是一种自我指示数据类型,因为它包含指向另一个相同类型的数据的指针(链接)。链表允许插入和移除表上任意位置上的节点,但是不允许随机存取。链表有很多种不同的类型:单向链表,双向链表以及循环链表。 链表可以在多种编程语言中实现。像Lisp和Scheme这样的语言的内建数据类型中就包含了链表的存取和操作。程序语言或面向对象语言,如C/C++和Java依靠易变工具来生成链表。.

新!!: Scheme和链表 · 查看更多 »

脚本语言

脚本语言(Scripting language)是为了缩短传统的「编写、编译、链接、运行」(edit-compile-link-run)过程而创建的计算机编程语言。早期的脚本语言经常被称为批处理语言或工作控制语言。一个脚本通常是解释运行而非编译。脚本語言通常都有簡單、易學、易用的特性,目的就是希望能讓程式設計師快速完成程式的編寫工作。而巨集語言則可視為脚本語言的分支,兩者也有實質上的相同之處。 虽然许多脚本语言都超越了计算机简单任务自动化的领域,成熟到可以编写精巧的程序,但仍然还是被称为脚本。几乎所有计算机系统的各个层次都有一种脚本语言。包括操作系统层,如计算机游戏,网络应用程序,字处理文档,网络软件等。在许多方面,高级编程语言和脚本语言之间互相交叉,二者之间没有明确的界限。.

新!!: Scheme和脚本语言 · 查看更多 »

自动机编程

自动机编程(Automata-based programming)是編程範式中的一種,是指程式或其中的部份是以有限狀態機(FSM)為模型的程式,有些程式則會用其他型式(也更複雜)的自動機為其模型。 有限狀態機編程(FSM-based programming)大致上等同於自动机编程,但有限狀態機編程專指以有限狀態機為模型的程式。 自动机编程有以下的二項特徵:.

新!!: Scheme和自动机编程 · 查看更多 »

自循環直譯器

自循環直譯器(Meta-circular evaluator)是元直譯器(Metainterpreter,或Self-interpreter)的一種。自循環直譯器不僅是在直譯語言中寫成(如Scheme的自循環直譯器是在Scheme中寫成),而且通過底層語言的功能來實現直譯語言的功能。因此,自循環直譯器不需擔心如何具體實現任何功能,而只需處理語言讀入與直譯,所以尤其適合作為教育用途。自循環直譯器一般在同像(即程式與資料為同一格式,如Lisp)的語言中出現。 自循環直譯器最早出現於約翰·麥卡錫的Lisp 1.5版定義,其中麥卡錫以Lisp語言的功能來描述Lisp的直譯規則。.

新!!: Scheme和自循環直譯器 · 查看更多 »

递归

递归(Recursion),又译为--,在数学与计算机科学中,是指在函数的定义中使用函数自身的方法。递归一词还较常用于描述以自相似方法重复事物的过程。例如,当两面镜子相互之间近似平行时,镜中嵌套的图像是以无限递归的形式出现的。也可以理解为自我复制的过程。.

新!!: Scheme和递归 · 查看更多 »

递归 (计算机科学)

遞迴(recursion)在電腦科學中是指一種通過重複將問題分解為同類的子問題而解決問題的方法。 遞迴式方法可以被用於解決很多的電腦科學問題,因此它是電腦科學中十分重要的一個概念。 絕大多數程式語言支援函式的自呼叫,在這些語言中函式可以通過呼叫自身來進行遞迴。計算理論可以證明遞迴的作用可以完全取代迴圈,因此在很多函數程式語言(如Scheme)中習慣用遞迴來實現迴圈。 電腦科學家尼克勞斯·維爾特如此描述遞迴:.

新!!: Scheme和递归 (计算机科学) · 查看更多 »

GIMP

GIMP(,名稱由GNU Image Manipulation Program(GNU图像处理程序)的首字母組成)是一個自由及開放原始碼的點陣圖圖像編輯器,用於图像照片润饰及編輯、自由繪圖、調整大小、裁剪、相片蒙太奇、裝換圖像格式以及其他專業任務。 GIMP始於1995年,使用GPLv3+,可运行於GNU/Linux、MS Windows、Mac OS X等平台,其原生文件格式的扩展名是.xcf。.

新!!: Scheme和GIMP · 查看更多 »

GNU Guile

GNU Guile 是 GNU 计划首选的扩展系统,是 Scheme 程序设计语言的一种实现,首个版本于1993年问世。 Guile 提供了“libguile”可将语言嵌入至其他程序并通过 C API 紧密的结合。同样的,新的类型和子程序的定义也可以通过 C API 扩展 Guile 自身。.

新!!: Scheme和GNU Guile · 查看更多 »

GNU TeXmacs

GNU TeXmacs 是一个自由的科学文本编辑器和 GNU 项目的排版组件。它吸收了 TeX 和 Emacs 的特点,尽管未使用这两者的代码。TeXmacs 使用 TeX 字体。它由 Joris van der Hoeven 开发和维护。该程序能够以所见即所得的用户界面创建结构化文档。用户可以自行创建新的文档样式。编辑器采用高质量的排版算法和 TeX 字体用于专业出版。.

新!!: Scheme和GNU TeXmacs · 查看更多 »

GnuCash

GnuCash是一套提供複式簿記系統的會計軟體。GnuCash起初是針對開發與Intuit, Inc.的應用程式Quicken相似的功能,但也有給中小型企業會計的特色。近期的開發專注在讓現今的桌上型電腦支援資料庫的需求。 GnuCash是GNU專案的一部分,可執行於Linux、FreeBSD、Solaris、Mac OS X與其他類Unix系統平台上。可用在 Microsoft Windows(2000或之後)的版本,始於2007年4月14日的2.1.x系列。 GnuCash主要以C語言寫成,一小部份則以Scheme。GnuCash釋出在GNU通用公共許可證之下,屬於自由軟體。.

新!!: Scheme和GnuCash · 查看更多 »

GNU软件包列表

此GNU软件包列表列出了由自由软件基金会作为GNU计划的一部分而开发或维护的重要软件包,GNU计划目的是开发完全由自由软件组成的类Unix计算机操作系统。其中许多的软件包与Linux内核一起构建了完整的计算机操作系统。.

新!!: Scheme和GNU软件包列表 · 查看更多 »

Hello World程序样例

以下是用不同语言写成的Hello World程序的列表:.

新!!: Scheme和Hello World程序样例 · 查看更多 »

ISWIM

ISWIM 是 Peter J. Landin 设计并描述于他在1966年于ACM通讯中出版的文章《The Next 700 Programming Languages》中的抽象计算机编程语言(或编程语言家族)。名称是如下首字母缩写“If you See What I Mean”。 尽管没有实现,它被证明为在编程语言特别是函数式编程语言开发中非常有影响力的语言,比如 SASL,Miranda,ML,Haskell 和它们的后继者。 ISWIM 是带有由加了语法糖的 lambda 演算组成的函数式核心的指令式语言,它增加了(i)可变变量和赋值,(ii)强力控制机制 — Landin 的 J 算子,它能够捕获当前的续体(Scheme 的 call/cc 算子是简化版本的 Landin 的 J 算子)。因为基于 lambda 演算,ISWIM 有高阶函数和词法辖域变量。 ISWIM 的操作语义是使用 Landin 的 SECD抽象机定义的,并且使用了传值调用因而是及早求值的。ISWIM 的目标之一就是看起来更像数学表示,所以 Landin 放弃了 ALGOL 的语句间分号和 begin...

新!!: Scheme和ISWIM · 查看更多 »

Java虚拟机

Java虛擬機(Java Virtual Machine,縮寫為JVM),一種能夠執行Java bytecode的虛擬機器,以堆疊結構機器來進行實做。最早由昇陽電腦所研發并实现第一个实现版本,是Java平臺的一部份,能夠執行以Java語言寫作的軟體程式。 Java虚拟机有自己完善的硬体架构,如处理器、堆栈、寄存器等,还具有相应的指令系统。JVM屏蔽了与具体操作系统平台相关的信息,使得Java程序只需生成在Java虚拟机上运行的目标代码(字节码),就可以在多种平台上不加修改地运行。通过对中央处理器(CPU)所执行的软件實作,实现能执行编译过的Java程序码(Applet与应用程式)。 作为一种编程语言的虚拟机,实际上不只是专用于Java语言,只要生成的编译文件符合JVM对载入编译文件格式要求,任何语言都可以由JVM编译运行。此外,除了甲骨文,也有其他开源或闭源的实现。.

新!!: Scheme和Java虚拟机 · 查看更多 »

JavaScript

JavaScript,一种高级编程语言,通过解释执行,是一门动态类型,面向对象(基于原型)的直譯語言。它已经由ECMA(欧洲电脑制造商协会)通过ECMAScript实现语言的标准化。它被世界上的绝大多数网站所使用,也被世界主流浏览器(Chrome、IE、Firefox、Safari、Opera)支持。JavaScript是一门基于原型、函数先行的语言,是一门多范式的语言,它支持面向对象编程,命令式编程,以及函数式编程。它提供语法来操控文本、数组、日期以及正则表达式等,不支持I/O,比如网络、存储和图形等,但这些都可以由它的宿主环境提供支持。 虽然JavaScript与Java这门语言不管是在名字上,或是在语法上都有很多相似性,但这两门编程语言从设计之初就有很大的不同,JavaScript的语言设计主要受到了Self(一种基于原型的编程语言)和Scheme(一门函数式编程语言)的影响。在语法结构上它又与C语言有很多相似(例如if条件语句、while循环、switch语句、do-while循环等)。 在客户端,JavaScript在传统意义上被实现为一种解释语言,但在最近,它已经可以被即时编译(JIT)执行。随着最新的HTML5和CSS3语言标准的推行它还可用于游戏、桌面和移动应用程序的开发和在服务器端网络环境运行,如Node.js。.

新!!: Scheme和JavaScript · 查看更多 »

LISP

LISP是具有悠久歷史的計算機編程語言家族,有獨特和完全括號的前綴符號表示法。起源於西元1958年,是現今第二悠久而仍廣泛使用的高階編程語言。只有FORTRAN編程語言比它更早一年。LISP編程語族已經演變出許多種方言。現代最著名的通用編程語種是Common Lisp和Scheme。 LISP最初創建時受到阿隆佐·邱奇的lambda演算的影響,用來作為計算機程序實用的數學表達。因為是早期的高階編程語言之一,它很快成為人工智能研究中最受歡迎的編程語言。在計算機科學領域,LISP開創了許多先驅概念,包括:.

新!!: Scheme和LISP · 查看更多 »

Lua

Lua()程序设计语言是一个简洁、轻量、可扩展的脚本语言,Lua在葡萄牙语中的意思是月亮。.

新!!: Scheme和Lua · 查看更多 »

Maclisp

Maclisp,或拼為MACLISP,Lisp程式語言的方言之一。它由Lisp 1.5版發展而成,最早起源自1960年代麻省理工學院的MAC計劃(Project MAC),並因此得名。它主要是由理查德·格林布拉特(Richard Greenblatt)在PDP-6上發展出來,之後由約翰·懷特(John L. White)負責維持與持續發展。在1970年代開始,在PDP-6 上,Lisp又發展出其他分支,如BBN Lisp,為了區分,它開始被稱呼為Maclisp。.

新!!: Scheme和Maclisp · 查看更多 »

MiniKanren

miniKanren是一类关系型编程语言。miniKanren可以通过给定的关系表达式和计算结果来反向推导,找出符合条件的输入变量的取值组合。程序员可以通过加入关系表达式对输入变量和计算结果添加约束条件。miniKanren通过“搜索树”的办法来搜索所有可能的输入变量。如果搜索空间非常大而且符合条件的结果不存在,miniKanren的搜索有可能永远也不会停止。 evalo是一个用miniKanren写的程序,evalo是以关系表达式为输入和输出的程序。在miniKanren中调用evalo的方法是:(evalo q q)。evalo具有自产生程式的功能。 Dan Friedman的“The Reasoned Schemer”一书使用miniKanren来介绍关系型编程。该书还提供了miniKanren在Scheme语言上的一个完整实现。该实现的核心代码的长度仅仅只有两页纸。miniKanren的Scheme实现的设计目的是容易理解,修改并扩展。 目前,Haskell, Racket, Ruby, Clojure以及Python中有miniKanren的具体实现。其中最典型的实现是Scheme的版本。Clojure语言里的core.logic也是受到miniKanren启发。 "Kanren"这个词来自于日语“関連”,即“关联”。.

新!!: Scheme和MiniKanren · 查看更多 »

MIT应用开发者

Android應用開發者(App Inventor)是起先由Google提供的應用軟體,现在由麻省理工學院維護及營運。 它可以让任何熟悉或不熟悉程序设计的人来创造基于Android操作系统的应用软件。它使用图形化界面,非常类似于Scratch語言和StarLogo TNG用户界面。用户可以拖放图形对象来创造一个运行在安卓系统上的应用,它就可以在许多手机设备上运行。 應用開發者團隊是由哈尔·阿伯尔森和馬克·弗里德曼領導。.

新!!: Scheme和MIT应用开发者 · 查看更多 »

Psyco

Psyco 是 Python 语言的一个扩展模块,可以即时对程序代码进行专业的算法优化,可以在一定程度上提高程序的执行速度,尤其是在程序中有大量循环操作时。最早被 Armin Rigo 开发,后来由 Christian Tismer 维护并继续完善。 Psyco 可以在 32位元 的 GNU/Linux、BSD、Mac OS X、Microsoft Windows 平台上运行。Psyco 使用 C語言 编写,只针对32位元平台进行了编码。目前开发工作已经停止,由 PyPy 所接替,同时 PyPy 也提供针对 64位元 系统的支持。Psyco 可以在 Python解释器 编译代码时自动优化,将其使用C实现,并针对循环操作进行一些特殊的优化。经过这些优化,程序的性能将会得到提升,在跨平台环境下尤为明显。.

新!!: Scheme和Psyco · 查看更多 »

Python

Python( ),是一种广泛使用的高级编程语言,属于通用型编程语言,由吉多·范罗苏姆创造,第一版发布于1991年。可以視之為一種改良(加入一些其他程式語言的優點,如物件導向)的LISP。作为一种解释型语言,Python的设计哲学强调代码的可读性和简洁的语法(尤其是使用空格缩进划分代码块,而非使用大括号或者关键词)。相比於C++或Java,Python让开发者能够用更少的代码表达想法。不管是小型还是大型程序,该语言都试图让程序的结构清晰明了。 与Scheme、Ruby、Perl、Tcl等动态类型编程语言一样,Python拥有动态类型系统和垃圾回收功能,能够自动管理内存使用,并且支持多种编程范式,包括面向对象、命令式、函数式和过程式编程。其本身拥有一个巨大而广泛的标准库。 Python 解释器本身几乎可以在所有的操作系统中运行。Python的正式直譯器CPython是用C语言编写的、是一個由社群驱动的自由软件,目前由Python软件基金会管理。.

新!!: Scheme和Python · 查看更多 »

R语言

R语言,一種自由軟體程式語言與操作環境,主要用于统计分析、绘图、数据挖掘。R本來是由來自新西蘭奧克蘭大學的罗斯·伊哈卡和罗伯特·杰特曼開發(也因此稱為R),現在由“R開發核心團隊”負責開發。R基于S语言的一个GNU計劃项目,所以也可以当作S语言的一种实现,通常用S语言编写的代码都可以不作修改的在R环境下运行。R的語法是來自Scheme。 R的原始碼可自由下載使用,亦有已編譯的執行檔版本可以下載,可在多种平台下运行,包括UNIX(也包括FreeBSD和Linux)、Windows和MacOS。R主要是以命令行操作,同時有人開發了幾種圖形用戶界面。.

新!!: Scheme和R语言 · 查看更多 »

Rust

Rust是一个由Mozilla主导开发的通用、编译型编程语言。它的设计准则为“安全,并发,实用”,支持函数式,并发式,程序式以及面向对象的编程风格。 Rust 語言原本是 Mozilla 員工 Graydon Hoare 的私人計畫,而 Mozilla 於 2009 年開始贊助這個計畫,並且在 2010 年首次揭露了它的存在。也在同一年,它的編譯器原始碼開始由原本的 OCaml 語言轉移到用 Rust 語言,進行 bootstrapping 工作,稱做 rustc,並於 2011 年實際完成.

新!!: Scheme和Rust · 查看更多 »

S-表达式

所谓“S-表达式/運算式”(S-expression)或“sexp”(其中“S”代表“符号的”),是指一种以人类可读的文本形式表达半结构化数据的约定。S-表达式可能以其在Lisp家族的编程语言中的使用而为人所知。其他应用则见于由Lisp衍生的语言,如,以及如IMAP之类通信协议中作为标记出现和约翰·麦卡锡的。语法细节和所支持的数据类型虽因语言而异,但这些语言间最通用的特性则是使用S-表达式作为括号化的前缀表示法(有时亦作剑桥波兰表示法)。.

新!!: Scheme和S-表达式 · 查看更多 »

Scala

Scala()是一门多范式的编程语言,设计初衷是要整合面向对象编程和函数式编程的各种特性。.

新!!: Scheme和Scala · 查看更多 »

Shebang

在计算机科学中,Shebang(也称为 Hashbang )是一个由井号和叹号构成的字符序列 #! ,其出现在文本文件的第一行的前两个字符。 在文件中存在 Shebang 的情况下,类 Unix 操作系统的程序载入器会分析 Shebang 后的内容,将这些内容作为解释器指令,并调用该指令,并将载有 Shebang 的文件路径作为该解释器的参数。 例如,以指令 开头的文件在执行时会实际调用 /bin/sh 程序(通常是 Bourne shell 或兼容的 shell,例如 bash、dash 等)来执行。这行内容也是 shell 脚本的标准起始行。 由于 # 符号在许多脚本语言中都是注释标识符,Shebang 的内容会被这些脚本解释器自动忽略。 在 # 字符不是注释标识符的语言中,例如 Scheme,解释器也可能忽略以 #! 开头的首行内容,以提供与 Shebang 的兼容性。 "Shebang" 或者说 "Hashbang" 的名字有时也被当做 Ajax 应用程序中的 分段标识符,用于浏览器的状态保存;Google 网站站长中心提到,以叹号开头的分段标识符(即...url#!state...

新!!: Scheme和Shebang · 查看更多 »

SpiderMonkey

SpiderMonkey是世界上第一款JavaScript引擎,由前网景公司的布兰登·艾克設計,後期由Mozilla基金会維護,以開放原始碼發佈。目前為Mozilla Firefox網頁瀏覽器所使用的JavaScript引擎,並也被嵌入到其他許多環境,例如GNOME 3桌面。.

新!!: Scheme和SpiderMonkey · 查看更多 »

Troff

troff是一个由AT&T为Unix开发的文字处理软件。.

新!!: Scheme和Troff · 查看更多 »

Vim

Vim是从vi发展出来的一个文本编辑器。其代码补完、编译及错误跳转等方便编程的功能特别丰富,在程序员中被广泛使用。和Emacs并列成为类Unix系统用户最喜欢的编辑器。 Vim的第一个版本由布萊姆·米勒在1991年发布。最初的简称是Vi IMitation,随着功能的不断增加,正式名称改成了Vi IMproved。现在是在开放源代码方式下发行的自由软件。.

新!!: Scheme和Vim · 查看更多 »

Yacc

yacc(Yet Another Compiler Compiler),是Unix/Linux上一个用来生成编译器的编译器(编译器代码生成器)。yacc生成的编译器主要是用C語言寫成的语法解析器(Parser),需要与词法解析器Lex一起使用,再把兩部份產生出來的C程序一併編譯。yacc本來只在Unix系統上才有,但現時已普遍移植往Windows及其他平台。 yacc的输入是巴科斯范式(BNF)表达的语法规则以及语法规约的处理代码,Yacc输出的是基于表驱动的编译器,包含输入的语法规约的处理代码部分。 yacc是开发编译器的一个有用的工具,采用LALR(1)语法分析方法。 yacc最初由AT&T的Steven C. Johnson为Unix操作系统开发,后来一些兼容的程序如Berkeley Yacc,GNU bison,MKS yacc和Abraxas yacc陆续出现。它们都在原先基础上做了少许改进或者增加,但是基本概念是相同的。 由于所产生的解析器需要词法分析器配合,因此Yacc经常和词法分析器的产生器——一般就是Lex——联合使用。IEEE POSIX P1003.2标准定义了Lex和Yacc的功能和需求。.

新!!: Scheme和Yacc · 查看更多 »

控制流分析

控制流分析(Control flow analysis)簡稱CFA,是一種確認程式控制流程的靜態代碼分析技術。控制流程會以來表示。對於函數程式語言及物件導向程式設計,CFA都是指計算控制流程的演算法。 控制流分析一詞最早是由Neil D. Jones及Olin Shivers開始使用。 對於像是Scheme之類有高階函數的程式語言,不一定可以會程式中直接看出函數呼叫的目標,例如以下的程式片段 根據上述程式無法確認程序f是指什麼,此情形下的控制流分析需考慮何時會執行此程式碼,及當時的傳入值。 抽象釋義、約束補償及型別系統都可以用來進行控制流分析。.

新!!: Scheme和控制流分析 · 查看更多 »

控制流程

控制流程(也稱為流程控制)是電腦運算領域的用語,意指在程式執行時,個別的指令(或是陳述、子程序)執行或求值的順序。不論是在宣告式程式語言或是函數程式語言中,都有類似的概念。 在宣告式的程式語言中,流程控制指令是指會改變程式執行順序的指令,可能是執行不同位置的指令,或是在二段(或多段)程式中選擇一個執行。 不同的程式語言所提供的流程控制指令也會隨之不同,但一般可以分為以下四種:.

新!!: Scheme和控制流程 · 查看更多 »

求值策略

在计算机科学中,求值策略(Evaluation strategy)是确定编程语言中表达式的求值的一组(通常确定性的)规则。重点典型的位于函数或算子上——求值策略定义何时和以何种次序求值给函数的实际参数,什么时候把它们代换入函数,和代换以何种形式发生。经常使用用来研究函数的形式系统λ演算来建模求值策略,这里它们通常叫做归约策略。求值策略分为两大基本类,严格的和非严格的,基于如何处理给函数的实际参数。一个语言可以组合多种求值策略;例如C++组合了传值调用和传引用调用。多数语言对布尔表达式和if语句使用某种形式的非严格求值。.

新!!: Scheme和求值策略 · 查看更多 »

注释 (计算机语言)

在计算机语言中,注释是计算机语言的一个重要组成部分,用于在源代码中解释代码的功用,可以增强程序的可读性,可维护性,或者用于在源代码中处理不需运行的代码段,来调试程序的功能执行。 注释在随源代码进入预处理器或编译器处理后会被移除,不会在目标代码中保留其相关信息。.

新!!: Scheme和注释 (计算机语言) · 查看更多 »

惰性求值

在程式語言理論中,惰性求值(Lazy Evaluation),又譯為惰性计算、懒惰求值,也稱為傳需求調用(call-by-need),是一个计算机编程中的一个概念,它的目的是要最小化计算机要做的工作。它有两个相关而又有区别的含意,可以表示为“延迟求值”和“最小化求值”,本条目专注前者,后者请参见最小化计算条目。除可以得到性能的提升外,惰性计算的最重要的好处是它可以构造一个无限的数据类型。 惰性求值的相反是及早求值,这是一个大多数编程语言所拥有的普通计算方式。.

新!!: Scheme和惰性求值 · 查看更多 »

数学置标语言

数学标记语言(Mathematical Markup Language,MathML),是一种基于XML的标准,用来描述数学符号和公式。它的目标是把数学公式集成到万维网和其他文档中。从2015年开始,MathML成为了HTML5的一部分和ISO标准。 由于数学符号和公式的结构复杂且符号与符号之间存在多种逻辑关系,MathML的格式十分繁琐。因此,大多数人都不会去手写MathML,而是利用其它的工具来编写,其中包括TeX到MathML的转换器。.

新!!: Scheme和数学置标语言 · 查看更多 »

教育编程语言列表

教育编程语言是一个教育性质的程序设计语言,是一种主要设计于用来学习的工具,是与用于编写真实环境下的应用程序编程语言不大相同的一种编程语言。.

新!!: Scheme和教育编程语言列表 · 查看更多 »

重定向到这里:

Scheme语言

传出传入
嘿!我们在Facebook上吧! »