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

ISWIM

指数 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...

19 关系: ACM通讯ALGOLALGOL 60及早求值函數程式語言米兰达类型推论编程语言高阶函数越位规则HaskellLISPML语言Peter J. LandinSASLSchemeSECD抽象机指令式編程惰性求值

ACM通讯

ACM通讯(Communications of the ACM,CACM)是计算机协会面向所有会员发行的一种杂志,于1957年创建。该杂志是最久远最受尊敬的计算机出版物之一。.

新!!: ISWIM和ACM通讯 · 查看更多 »

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主要有三種規格,以初次發表的年份命名:.

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

ALGOL 60

ALGOL 60(源自ALGOrithmic Language 1960的縮寫),一種程式語言,是ALGOL語言家族中的成員之一。根據ALGOL 58的基礎,它在1960年被創造,並影響到其後的CPL、BCPL、B語言、Pascal、Simula、C語言,在程式語言中有著很大的影響力。 它的後繼者是ALGOL 68與ALGOL W。.

新!!: ISWIM和ALGOL 60 · 查看更多 »

及早求值

及早求值(eager evaluation),又譯热情求值,也被稱為貪婪求值(greedy evaluation)或严格求值,是多数传统编程语言的求值策略。 在热情求值中,表达式在它被约束到变量的时候就立即求值。这在简单编程语言中作为低层策略是更有效率的,因为不需要建造和管理表示未求值的表达式的中介数据结构。 热情求值的优点在于节省内存和提高执行速度,比如下面的 Basic 代码: 因为第一行代码 x.

新!!: ISWIM和及早求值 · 查看更多 »

函數程式語言

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

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

米兰达

米兰达可以指:.

新!!: ISWIM和米兰达 · 查看更多 »

类型推论

类型推论、型別推斷、或隐含类型,是指编程语言在编译期中能够自动推导出值的数据类型的能力,它是一些强静态类型语言的特性。一般而言,函数式编程语言也具有此特性。自动推断类型的能力让很多编程任务变得容易,让程序员可以忽略类型标注的同时仍然允许类型检查。 具有类型推论的语言有:Rust, Haskell, Cayenne, Clean, ML, OCaml, Epigram, Scala, Nemerle, D, Chrome,Visual Basic 2008和 Boo。计划支持类型推论的有 Fortress, Vala, C# 3.0, C++11和Perl 6。 显式的转换到另一种数据类型叫做“强制”。.

新!!: ISWIM和类型推论 · 查看更多 »

编程语言

编程语言(programming language),是用来定义计算机程序的形式語言。它是一种被标准化的交流技巧,用来向计算机发出指令。一种计算机语言让程序员能够准确地定义计算机所需要使用的数据,并精确地定义在不同情况下所应当采取的行动。 最早的编程语言是在電腦發明之前產生的,當時是用來控制及自動演奏鋼琴的動作。在電腦領域已發明了上千不同的编程語言,而且每年仍有新的编程語言誕生。很多编程語言需要用指令方式說明計算的程序,而有些编程語言則屬於宣告式編程,說明需要的結果,而不說明如何計算。 编程语言的描述一般可以分為及語義。語法是說明編程語言中,哪些符號或文字的組合方式是正確的,語義則是對於編程的解釋。有些語言是用規格文件定義,例如C語言的規格文件也是ISO標準中一部份,2011年後的版本為ISO/IEC 9899:2011,而其他55語言(像Perl)有一份主要的文件,視為是。.

新!!: ISWIM和编程语言 · 查看更多 »

高阶函数

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

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

越位规则

越位規則(Off-side rule)是指程式語言中,用縮排來表示的範圍。這名詞是來自Peter J. Landin,是足球中越位(offside)的雙關語。.

新!!: ISWIM和越位规则 · 查看更多 »

Haskell

Haskell()是一种标准化的,通用的纯函數程式語言,有非限定性语义和强静态类型。它的命名源自美国逻辑学家哈斯凱爾·加里,他在数理逻辑方面上的工作使得函数式编程语言有了广泛的基础。在Haskell中,“函数是第一類物件”。作为一门函數程式語言,主要控制结构是函数。Haskell语言是1990年在编程语言Miranda的基础上标准化的,并且以λ演算为基础发展而来。这也是为什么Haskell语言以希腊字母「λ」(Lambda)作为自己的标志。Haskell具有“证明即程序、命题为类型”的特征, with 2 sections by William Craig, see paragraph 9E。.

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

LISP

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

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

ML语言

ML是一个通用的函數式編程语言,它是由爱丁堡大学的Robin Milner及他人在二十世纪七十年代晚期开发的。它的语法是从ISWIM得到的灵感。作为元语言的ML是为了帮助在LCF定理证明机中寻找证明策略而构想出来的。(之前的元语言是pplambda,它联合了一阶逻辑演算和有类型的多态的λ演算)。它使用了Hindley-Milner类型推论算法来推测大多数值的类型,而不需要四处使用注解。 ML一般被归为非纯函数式编程语言,因为它允许副作用和指令式编程。这一点和纯函数式编程语言——例如Haskell——很不一样。 ML特性包括:傳值呼叫(Call by value)的求值策略,一级函数,带有垃圾收集的自动内存管理,参数多态,静态数据类型,类型推论,代数数据类型,模式匹配和异常处理。 不像Haskell,ML使用及早求值,也就是说所有的子表达式总是被求值。导致的一个结果是你不能使用无穷表。然而,惰性求值产生的无穷表可以通过使用匿名函数来模拟。 今天在ML家族中有好几种语言:两种主要的方言是Standard ML和Caml,其他的包括F#-针对Microsoft.NET平台的开放研究项目。ML中的思想影响了众多的语言,例如Haskell,Cyclone和Nemerle。 ML的实力大多被用于语言设计和操作(编译器、分析器、定理证明机),但是它作为通用语言也被用于生化,金融系统,和宗谱数据库,一个P2P的客户/服务器程序等等。.

新!!: ISWIM和ML语言 · 查看更多 »

Peter J. Landin

#重定向 彼得·兰丁.

新!!: ISWIM和Peter J. Landin · 查看更多 »

SASL

#重定向 简单认证与安全层.

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

Scheme

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

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

SECD抽象机

SECD 机是非常有影响的意图作为函数式编程语言编译器目标的虚拟机。SECD 分别是这个机器的内部寄存器的名字的首字母:Stack, Environment, Code, Dump。这些寄存器指向在内存中链表。 这种机器最初明确设计用来计算 lambda 演算表达式。最初 Peter J. Landin 在1963年把它作为他的 ISWIM编程语言定义的一部分描述。Landin 出版的描述非常抽象,(象一种操作语义那样)留下很多实现选择开放着。所以 SECD 机经常以更具体的形式出现,比如 Peter Henderson 的 Lispkit Lisp 编译器,它自1980年开始发行。此后它已经被用做多个其他实验编译器的目标。 在1989年在卡尔加里大学的研究者制作了这种机器的一个硬件实现。.

新!!: ISWIM和SECD抽象机 · 查看更多 »

指令式編程

指令式編程(Imperative programming),是一種描述電腦所需作出的行為的編程典範。幾乎所有電腦的硬體工作都是指令式的;幾乎所有電腦的硬體都是設計來執行機器碼,使用指令式的風格來寫的。較高階的指令式編程語言使用變數和更複雜的語句,但仍依從相同的典範。菜譜和行動清單,雖非電腦程式,但與指令式編程有相似的風格:每步都是指令,有形的世界控制情況。因為指令式編程的基礎觀念,不但概念上比較熟悉,而且較容易具體表現於硬體,所以大部分的編程語言都是指令式的。 大部分的高级语言都支援四種基本的語句:.

新!!: ISWIM和指令式編程 · 查看更多 »

惰性求值

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

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

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