<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="zh">
	<id>https://arolstar52-zhtest.hf.space/index.php?action=history&amp;feed=atom&amp;title=CLU</id>
	<title>CLU - 版本历史</title>
	<link rel="self" type="application/atom+xml" href="https://arolstar52-zhtest.hf.space/index.php?action=history&amp;feed=atom&amp;title=CLU"/>
	<link rel="alternate" type="text/html" href="https://arolstar52-zhtest.hf.space/index.php?title=CLU&amp;action=history"/>
	<updated>2026-07-13T15:06:44Z</updated>
	<subtitle>本wiki上该页面的版本历史</subtitle>
	<generator>MediaWiki 1.43.9</generator>
	<entry>
		<id>https://arolstar52-zhtest.hf.space/index.php?title=CLU&amp;diff=2777061&amp;oldid=prev</id>
		<title>2025年12月26日 (五) 17:13 imported&gt;ExultantEditor</title>
		<link rel="alternate" type="text/html" href="https://arolstar52-zhtest.hf.space/index.php?title=CLU&amp;diff=2777061&amp;oldid=prev"/>
		<updated>2025-12-26T17:13:07Z</updated>

		<summary type="html">&lt;p&gt;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;新页面&lt;/b&gt;&lt;/p&gt;&lt;div&gt;{{Infobox programming language&lt;br /&gt;
|name = CLU&lt;br /&gt;
|logo =&lt;br /&gt;
|paradigm = [[编程范型|多范型]]: [[面向对象程序设计|面向对象]], [[过程式编程|过程式]]&lt;br /&gt;
|released = {{Start date and age|1975}}&lt;br /&gt;
|designer = [[芭芭拉·利斯科夫]]和她的学生&lt;br /&gt;
|developer = [[麻省理工学院]]&lt;br /&gt;
|latest release version = Native CLU 1.5 ([[SPARC]], [[VAX]]) / {{Start date and age|1989|05|26}}&amp;lt;ref name=&amp;quot;Native&amp;quot;&amp;gt;{{cite web |url=http://pmg.csail.mit.edu/~dcurtis/clu/ |title=CLU home page |website=Programming Methodology Group, Computer Science and Artificial Intelligence Laboratory |publisher=Massachusetts Institute of Technology |first=Dorothy |last=Curtis |date=2009-11-06 |accessdate=2016-05-26 |archive-date=2016-06-02 |archive-url=https://web.archive.org/web/20160602050527/http://pmg.csail.mit.edu/~dcurtis/clu/ |dead-url=no }}&amp;lt;/ref&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
Portable CLU / {{Start date and age|2009|11|06}}&amp;lt;ref name=&amp;quot;Portable&amp;quot;&amp;gt;{{cite web |url=ftp://ftp.lcs.mit.edu/pub/pclu |title=Index of /pub/pclu |website=Programming Methodology Group, Computer Science and Artificial Intelligence Laboratory |publisher=Massachusetts Institute of Technology |first=Dorothy |last=Curtis |date=2009-11-06 |accessdate=2016-05-26}}&amp;lt;/ref&amp;gt;&lt;br /&gt;
|latest release date = &lt;br /&gt;
|typing = [[强类型]]&lt;br /&gt;
|website = {{URL|www.pmg.lcs.mit.edu/CLU.html}}&lt;br /&gt;
|implementations = Native CLU&amp;lt;ref name=&amp;quot;Native&amp;quot; /&amp;gt;, Portable CLU&amp;lt;ref name=&amp;quot;Portable&amp;quot; /&amp;gt;, clu2c&amp;lt;ref name=&amp;quot;clu2c&amp;quot;&amp;gt;{{cite web |url=http://woodsheep.jp/clu2c.html |title=clu2c |website=clu2c |publisher=woodsheep.jp |first=Tetsu |last=Ushijima |date=&amp;lt;!--Likely embedded in downloadable target or zip files.--&amp;gt; |accessdate=2016-05-26 |archive-date=2016-03-04 |archive-url=https://web.archive.org/web/20160304223619/http://woodsheep.jp/clu2c.html |dead-url=no }}&amp;lt;/ref&amp;gt;&lt;br /&gt;
|dialects =&lt;br /&gt;
|influenced by = [[ALGOL 60]], [[Lisp]]&amp;lt;ref&amp;gt;{{cite web|title=A history of CLU|author=[[Barbara Liskov]]|url=https://pmg.csail.mit.edu/ftp.lcs.mit.edu/pub/pclu/CLU/3.Documents/clu-history.PDF|year=1992|quote=CLU looks like an Algol-like language, but its semantics is like that of Lisp: CLU objects reside in an object universe (or heap), and a variable just identifies (or refers to) an object. We decided early on to have objects in the heap, although we had numerous discussions about the cost of garbage collection. This decision greatly simplified the data abstraction mechanism ……. A language that allocates objects only on the stack is not sufficiently expressive; the heap is needed for objects whose sizes must change and for objects whose lifetime exceeds that of the procedure that creates them. …… Therefore, the choice is: just heap, or both. ……&amp;lt;br /&amp;gt;One unusual aspect of CLU is that our procedures have no free (global) variables ……. The view of procedures in CLU is similar to that in Lisp: CLU procedures are not nested (except that there can be local procedures within a cluster) but instead are defined at the &amp;quot;top&amp;quot; level, and can be called from any other module. In Lisp such procedures can have free variables that are scoped dynamically, a well-known source of confusion.|access-date=2022-04-27|archive-date=2021-11-05|archive-url=https://web.archive.org/web/20211105133631/https://pmg.csail.mit.edu/ftp.lcs.mit.edu/pub/pclu/CLU/3.Documents/clu-history.PDF}}&amp;lt;/ref&amp;gt;, [[Simula]]&amp;lt;ref&amp;gt;{{cite web|title=A history of CLU|author=[[Barbara Liskov]]|url=https://pmg.csail.mit.edu/ftp.lcs.mit.edu/pub/pclu/CLU/3.Documents/clu-history.PDF|year=1992|quote=Programming languages that existed when the concept of data abstraction arose did not support abstract data types, but some languages contained constructs that were precursors of this notion. …… The mechanism that matched the best was the class mechanism of Simula 67. A Simula class groups a set of procedures with some variables. A class can be instantiated to provide an object containing its own copies of the variables; the class contains code that initializes these variables at instantiation time. However, Simula classes did not enforce encapsulation ……, and Simula was lacking several other features needed to support data abstraction, …….|access-date=2022-04-27|archive-date=2021-11-05|archive-url=https://web.archive.org/web/20211105133631/https://pmg.csail.mit.edu/ftp.lcs.mit.edu/pub/pclu/CLU/3.Documents/clu-history.PDF}}&amp;lt;/ref&amp;gt;&lt;br /&gt;
|influenced = [[Ada]], [[Argus (编程语言)|Argus]], [[C++]], [[Lua]], [[Python]]&amp;lt;ref name=&amp;quot;effbot-call-by-object&amp;quot;&amp;gt;{{cite web |url=http://effbot.org/zone/call-by-object.htm |title=Call By Object |work=effbot.org |last=Lundh |first=Fredrik |quote=replace &amp;quot;CLU&amp;quot; with &amp;quot;Python&amp;quot;, &amp;quot;record&amp;quot; with &amp;quot;instance&amp;quot;, and &amp;quot;procedure&amp;quot; with &amp;quot;function or method&amp;quot;, and you get a pretty accurate description of Python&amp;#039;s object model. |accessdate=21 November 2017 |archive-date=2019-11-23 |archive-url=https://web.archive.org/web/20191123043655/http://effbot.org/zone/call-by-object.htm |dead-url=yes }}&amp;lt;/ref&amp;gt;, [[Ruby]], {{le|Sather}}, [[Swift (程式語言)|Swift]]&amp;lt;ref name=&amp;quot;lattner2014&amp;quot;&amp;gt;{{cite web |url=http://nondot.org/sabre/ |title=Chris Lattner&amp;#039;s Homepage |last=Lattner |first=Chris |date=2014-06-03 |accessdate=2014-06-03 |publisher=Chris Lattner |quote=The Swift language is the product of tireless effort from a team of language experts, documentation gurus, compiler optimization ninjas, and an incredibly important internal dogfooding group who provided feedback to help refine and battle-test ideas. Of course, it also greatly benefited from the experiences hard-won by many other languages in the field, drawing ideas from Objective-C, Rust, Haskell, Ruby, Python, C#, CLU, and far too many others to list. |archive-date=2018-12-25 |archive-url=https://web.archive.org/web/20181225175312/http://nondot.org/sabre/ |dead-url=no }}&amp;lt;/ref&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;CLU&amp;#039;&amp;#039;&amp;#039;是一门[[编程语言]]，由[[芭芭拉·利斯科夫]]和她的学生在1974年到1975年于[[麻省理工学院]]（MIT）创造。虽然它没有被广泛使用，但它引入了[[抽象数据类型]]&amp;lt;ref&amp;gt;{{Cite book |doi= 10.1145/800233.807045 |chapter= Programming with abstract data types |title= Proceedings of the ACM SIGPLAN symposium on Very high level languages |pages= 50–59 |year= 1974 |last1= Liskov |first1= Barbara |authorlink1= Barbara Liskov |last2= Zilles |first2= Stephen |ref= harv}}&amp;lt;/ref&amp;gt;，和许多现在广泛使用的特性，而被视为[[面向对象编程]]发展的重要一步。&lt;br /&gt;
&lt;br /&gt;
主要贡献还包括：[[求值策略#传共享对象调用|传共享调用]]、[[迭代器]]、多值返回（[[并行赋值]]形式）、[[参数化类型]]和[[可变类型]]。值得注意的是它使用了具有[[构造器]]和[[方法 (计算机科学)|方法]]的[[类 (计算机科学)|类]]，但没有[[继承 (计算机科学)|继承]]。&lt;br /&gt;
&lt;br /&gt;
== 聚类 ==&lt;br /&gt;
CLU的语法基于了[[ALGOL]]，这是当时多数新语言设计的起点。关键增补是“[[聚类]]”（cluster）概念，它是CLU的类型扩展系统和语言名字的根源（CLUster）&amp;lt;ref name=Liskov1977&amp;gt;{{Cite journal |url= https://web.eecs.umich.edu/~weimerw/2011-6610/reading/liskov-clu-abstraction.pdf |last1= Liskov |first1= B. |author-link1= Barbara Liskov |last2= Snyder |first2= A. |last3= Atkinson |first3= R. |last4= Schaffert |first4= C. |title= Abstraction mechanisms in CLU |doi= 10.1145/359763.359789 |journal= [[Communications of the ACM]] |volume= 20 |issue= 8 |pages= 564–576 |date= August 1977 |access-date= 2021-03-09 |archive-date= 2021-08-09 |archive-url= https://web.archive.org/web/20210809090353/https://web.eecs.umich.edu/~weimerw/2011-6610/reading/liskov-clu-abstraction.pdf }}&amp;lt;/ref&amp;gt;。聚类一般对应于面向对象语言中“类”（class）的概念。例如，下面是CLU用来实现[[复数 (数学)|复数]]的语法：&lt;br /&gt;
 complex_number = &amp;lt;span style=&amp;quot;color:green;font-weight: bold;&amp;quot;&amp;gt;cluster&amp;lt;/span&amp;gt; &amp;lt;span style=&amp;quot;color:green;font-weight: bold;&amp;quot;&amp;gt;is&amp;lt;/span&amp;gt; add, subtract, multiply, ...&lt;br /&gt;
     rep = &amp;lt;span style=&amp;quot;color:green;font-weight: bold;&amp;quot;&amp;gt;record&amp;lt;/span&amp;gt; [ real_part: &amp;lt;span style=&amp;quot;color:brown;&amp;quot;&amp;gt;real&amp;lt;/span&amp;gt;, imag_part: &amp;lt;span style=&amp;quot;color:brown;&amp;quot;&amp;gt;real&amp;lt;/span&amp;gt; ]&lt;br /&gt;
     add = &amp;lt;span style=&amp;quot;color:green;font-weight: bold;&amp;quot;&amp;gt;proc&amp;lt;/span&amp;gt; ... &amp;lt;span style=&amp;quot;color:green;font-weight: bold;&amp;quot;&amp;gt;end&amp;lt;/span&amp;gt; add;&lt;br /&gt;
     subtract = &amp;lt;span style=&amp;quot;color:green;font-weight: bold;&amp;quot;&amp;gt;proc&amp;lt;/span&amp;gt; ... &amp;lt;span style=&amp;quot;color:green;font-weight: bold;&amp;quot;&amp;gt;end&amp;lt;/span&amp;gt; subtract;&lt;br /&gt;
     multiply = &amp;lt;span style=&amp;quot;color:green;font-weight: bold;&amp;quot;&amp;gt;proc&amp;lt;/span&amp;gt; ... &amp;lt;span style=&amp;quot;color:green;font-weight: bold;&amp;quot;&amp;gt;end&amp;lt;/span&amp;gt; multiply;&lt;br /&gt;
     ...&lt;br /&gt;
 &amp;lt;span style=&amp;quot;color:green;font-weight: bold;&amp;quot;&amp;gt;end&amp;lt;/span&amp;gt; complex_number;&lt;br /&gt;
&lt;br /&gt;
聚类是一个模块，它封装了除了那些在&amp;lt;code&amp;gt;is&amp;lt;/code&amp;gt;子句中显式命名的成员之外的所有成员。这些成员对应于现在面向对象语言中一个类的公开成员。聚类还定义了可以在聚类之外引用名字的一个类型（在这个案例中是&amp;lt;code&amp;gt;complex_number&amp;lt;/code&amp;gt;），但是它的表示类型（这里的&amp;lt;code&amp;gt;rep&amp;lt;/code&amp;gt;）对于外部客户是隐藏的。&lt;br /&gt;
&lt;br /&gt;
聚类名字是全局的，不提供名字空间机制来组织聚类，也不允许它们在其他聚类内部被“局部”创建。&lt;br /&gt;
&lt;br /&gt;
CLU不进行[[类型转换|隐式类型转换]]。在聚类中，显式类型转换&amp;lt;code&amp;gt;up&amp;lt;/code&amp;gt;和&amp;lt;code&amp;gt;down&amp;lt;/code&amp;gt;在[[抽象类型]]和表示之间进行变更。有一个全体类型&amp;lt;code&amp;gt;any&amp;lt;/code&amp;gt;，和一个过程&amp;lt;code&amp;gt;force[]&amp;lt;/code&amp;gt;来检查一个对象是否是一个特定类型。对象可以是可变的或不可变的，后者是基础类型，比如整数、布尔值、字符和字符串&amp;lt;ref name=Liskov1977/&amp;gt;。&lt;br /&gt;
&lt;br /&gt;
== 其他特征 ==&lt;br /&gt;
CLU类型系统的另一个关键特征是[[迭代器]]，它一个接一个的按顺序的从一个[[集合 (计算机科学)|搜集]]返回对象&amp;lt;ref name=Liskov1977 /&amp;gt;。迭代器提供了一致的[[应用编程接口]]（API），而不管所用于的是什么数据。因此针对&amp;lt;code&amp;gt;complex_number&amp;lt;/code&amp;gt;搜集的迭代器，与针对&amp;lt;code&amp;gt;integer&amp;lt;/code&amp;gt;数组的迭代器，可以互换使用。CLU迭代器的显著特征是它们被实现为[[协程]]，每个值都是通过&amp;lt;code&amp;gt;yield&amp;lt;/code&amp;gt;语句提供给调用者的。像CLU中这样的迭代器，现在是很多现代语言比如[[C♯|C#]]、[[Ruby]]和[[Python]]的常见特征，然而它们近来经常被称为[[生成器 (计算机编程)|生成器]]。下面是迭代器的例子：&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;span style=&amp;quot;color:darkcyan;&amp;quot;&amp;gt;% 产生从1到n的奇数&amp;lt;/span&amp;gt;&lt;br /&gt;
 odds = &amp;lt;span style=&amp;quot;color:green;font-weight: bold;&amp;quot;&amp;gt;iter&amp;lt;/span&amp;gt;(n:&amp;lt;span style=&amp;quot;color:brown;&amp;quot;&amp;gt;int&amp;lt;/span&amp;gt;) &amp;lt;span style=&amp;quot;color:green;font-weight: bold;&amp;quot;&amp;gt;yields&amp;lt;/span&amp;gt; &amp;lt;span style=&amp;quot;color:brown;&amp;quot;&amp;gt;int&amp;lt;/span&amp;gt;&lt;br /&gt;
     i:&amp;lt;span style=&amp;quot;color:brown;&amp;quot;&amp;gt;int&amp;lt;/span&amp;gt;&lt;br /&gt;
     i = 1&lt;br /&gt;
     &amp;lt;span style=&amp;quot;color:green;font-weight: bold;&amp;quot;&amp;gt;while&amp;lt;/span&amp;gt; i &amp;lt; n &amp;lt;span style=&amp;quot;color:green;font-weight: bold;&amp;quot;&amp;gt;do&amp;lt;/span&amp;gt;&lt;br /&gt;
         &amp;lt;span style=&amp;quot;color:green;font-weight: bold;&amp;quot;&amp;gt;yield&amp;lt;/span&amp;gt; i&lt;br /&gt;
         i := i + 2&lt;br /&gt;
     &amp;lt;span style=&amp;quot;color:green;font-weight: bold;&amp;quot;&amp;gt;end&amp;lt;/span&amp;gt;&lt;br /&gt;
 &amp;lt;span style=&amp;quot;color:green;font-weight: bold;&amp;quot;&amp;gt;end&amp;lt;/span&amp;gt; odds  &lt;br /&gt;
 &amp;lt;span&amp;gt; &amp;lt;/span&amp;gt;&lt;br /&gt;
 &amp;lt;span style=&amp;quot;color:green;font-weight: bold;&amp;quot;&amp;gt;for&amp;lt;/span&amp;gt; i:&amp;lt;span style=&amp;quot;color:brown;&amp;quot;&amp;gt;int&amp;lt;/span&amp;gt; &amp;lt;span style=&amp;quot;color:green;font-weight: bold;&amp;quot;&amp;gt;in&amp;lt;/span&amp;gt; odds(13) &amp;lt;span style=&amp;quot;color:green;font-weight: bold;&amp;quot;&amp;gt;do&amp;lt;/span&amp;gt;&lt;br /&gt;
     print int$unparse(i) || &amp;quot;\n&amp;quot;&lt;br /&gt;
 &amp;lt;span style=&amp;quot;color:green;font-weight: bold;&amp;quot;&amp;gt;end&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
CLU还包括了[[例外处理 (编程)|异常处理]]，它参考了在其他语言中的各种尝试；异常使用&amp;lt;code&amp;gt;signal&amp;lt;/code&amp;gt;引发，并通过&amp;lt;code&amp;gt;except&amp;lt;/code&amp;gt;处理。不同于具有异常处理的多数其他语言，异常不会被隐式的沿着[[调用栈|调用链]]重新发起。不同之处还有，在CLU中异常被当作是正常执行流程的一部份，并作为“正常”而有效的一种类型安全的方式，用来退出循环或从函数返回；这种方式下，“除非”其他条件适用，可以直接指定返回值。既未捕获也未显式的重新发起的异常，被立即转换成特殊失败异常，这典型的会终止程序。&lt;br /&gt;
&lt;br /&gt;
CLU经常被引证为具有类型安全的[[可变类型]]的第一个语言，在这里叫作&amp;lt;code&amp;gt;oneof&amp;lt;/code&amp;gt;，早于[[ML语言|ML]]语言拥有的叫做[[代数数据类型]]的[[标签联合]]。&lt;br /&gt;
&lt;br /&gt;
CLU中最后一个显著特征是[[并行赋值]]（多赋值），这里多于一个变量可以出现在[[赋值语句|赋值]]算符的左侧。例如，书写&amp;lt;code&amp;gt;x,y := y,x&amp;lt;/code&amp;gt;将交换&amp;lt;code&amp;gt;x&amp;lt;/code&amp;gt;和&amp;lt;code&amp;gt;y&amp;lt;/code&amp;gt;的值。以相同的方式，函数可以返回多个值，比如&amp;lt;code&amp;gt;x,y,z := f(t)&amp;lt;/code&amp;gt;。并行赋值（但未包括多返回值），在CLU之前已经出现在[[CPL (程式语言)|CPL]]（1963年）之中，叫作“同时赋值”&amp;lt;ref&amp;gt;{{cite journal |first1= D. W. |last1= Barron |first2= J. N. |last2= Buxton |first3= D. F. |last3= Hartley |first4= E. |last4= Nixon |first5= C. |last5= Strachey |title= The main features of CPL |journal= Computer Journal |volume= 6 |issue= 2 |pages= 134–143 |date= 1963 |url= http://comjnl.oxfordjournals.org/cgi/reprint/6/2/134 |doi= 10.1093/comjnl/6.2.134 |access-date= 2021-03-09 |archive-date= 2012-07-07 |archive-url= https://archive.today/20120707200431/http://comjnl.oxfordjournals.org/cgi/reprint/6/2/134 }}&amp;lt;/ref&amp;gt;，然而确是CLU使之流行，并被引证为对后来语言中出现的并行赋值有直接的影响。&lt;br /&gt;
&lt;br /&gt;
在CLU程序中所有对象都存活在堆中，而内存管理是自动化的。&lt;br /&gt;
&lt;br /&gt;
CLU支持[[泛型编程|参数化类型]]的用户定义数据抽象。它是提供类型安全限定的参数化类型的第一个语言，它使用&amp;lt;code&amp;gt;where&amp;lt;/code&amp;gt;子句结构，来表达在实际类型实际参数上的约束。&lt;br /&gt;
&lt;br /&gt;
== 影响 ==&lt;br /&gt;
CLU和[[Ada]]是[[C++]]的[[模板 (C++)|模板]]的主要启发者&amp;lt;ref name=&amp;quot;Stroustrup&amp;quot;&amp;gt;{{cite web | first=Bjarne | last=Stroustrup | title=The C++ Programming Language (Third Edition and Special Edition) | url=http://www.stroustrup.com/ | work=Bjarne Stroustrup&amp;#039;s homepage | date=2004-09-08 | accessdate=2020-09-21 | archive-date=2019-05-14 | archive-url=https://web.archive.org/web/20190514123147/http://www.stroustrup.com/ | dead-url=no }}&amp;lt;/ref&amp;gt;。&lt;br /&gt;
&lt;br /&gt;
CLU的异常处理机制影响了后来的语言如[[C++]]和[[Java]]&amp;lt;ref&amp;gt;{{cite web |url=http://www.mindview.net/Etc/Discussions/CheckedExceptions |archive-url=https://web.archive.org/web/20020405175011/http://www.mindview.net/Etc/Discussions/CheckedExceptions |archive-date=2002-04-05 |title=Bruce Eckel&amp;#039;s MindView, Inc: Does Java need Checked Exceptions? |publisher=Mindview.net |accessdate=2011-12-15 |dead-url=yes }}&amp;lt;/ref&amp;gt;。&lt;br /&gt;
&lt;br /&gt;
{{le|Sather}}、[[Python]]和[[C♯|C#]]所包含的[[迭代器]]，最早出现在CLU中。&lt;br /&gt;
&lt;br /&gt;
[[Perl]]和[[Lua]]采用的多赋值和从函数调用返回多个值来自CLU&amp;lt;ref&amp;gt;{{Cite book |last1= Ierusalimschy |first1= R. |last2= De Figueiredo |first2= L. H. |last3= Celes |first3= W. |doi= 10.1145/1238844.1238846 |chapter= The evolution of Lua |title= Proceedings of the third ACM SIGPLAN conference on History of programming languages – HOPL III |pages= 2-1–2-26 |year= 2007 |isbn= 978-1-59593-766-7 |url= http://www.lua.org/doc/hopl.pdf |access-date= 2020-09-21 |archive-date= 2020-08-17 |archive-url= https://web.archive.org/web/20200817041936/https://www.lua.org/doc/hopl.pdf |dead-url= no }}&amp;lt;/ref&amp;gt;。&lt;br /&gt;
&lt;br /&gt;
[[Python]]和[[Ruby]]从它引入了[[求值策略#传共享对象调用|传共享调用]]、&amp;lt;code&amp;gt;yield&amp;lt;/code&amp;gt;语句&amp;lt;ref name=&amp;quot;Appfolio&amp;quot;&amp;gt;{{cite web |url=https://engineering.appfolio.com/appfolio-engineering/2019/7/3/rubys-roots-and-matzs-leadership |title=Ruby&amp;#039;s Roots and Matz&amp;#039;s Leadership |website=Appfolio Engineering |quote=Matz feels that blocks are the greatest invention of Ruby (I agree.) He got the idea from a 1970s language called CLU from MIT, which called them &amp;#039;iterators&amp;#039;... |date=2019-11-08 |accessdate=2019-11-15 |archive-date=2019-11-14 |archive-url=https://web.archive.org/web/20191114183754/https://engineering.appfolio.com/appfolio-engineering/2019/7/3/rubys-roots-and-matzs-leadership |dead-url=no }}&amp;lt;/ref&amp;gt;和多赋值&amp;lt;ref&amp;gt;{{Cite web|title=Functional Programming HOWTO — Python 3.8.3 documentation|url=https://docs.python.org/3/howto/functional.html|website=docs.python.org|access-date=2020-05-25|archive-date=2012-10-24|archive-url=https://web.archive.org/web/20121024163217/http://docs.python.org/howto/functional.html|dead-url=no}}&amp;lt;/ref&amp;gt;。&lt;br /&gt;
&lt;br /&gt;
== 参考资料 ==&lt;br /&gt;
{{Reflist|2}}&lt;br /&gt;
&lt;br /&gt;
== 外部链接 ==&lt;br /&gt;
* {{Official website|www.pmg.lcs.mit.edu/CLU.html}}&lt;br /&gt;
* [https://pmg.csail.mit.edu/ftp.lcs.mit.edu/pub/pclu/CLU/3.Documents/clu-history.PDF A History of CLU] {{Wayback|url=https://pmg.csail.mit.edu/ftp.lcs.mit.edu/pub/pclu/CLU/3.Documents/clu-history.PDF |date=20211105133631 }} (pdf)&lt;br /&gt;
* [http://woodsheep.jp/clu2c.html clu2c]{{Wayback|url=http://woodsheep.jp/clu2c.html |date=20161221103210 }}: a program to compile CLU code to [[C语言|C]]&lt;br /&gt;
* [http://cgibin.erols.com/ziring/cgi-bin/cep/cep.pl?_key=CLU Dictionary of Programming Languages]{{Wayback|url=http://cgibin.erols.com/ziring/cgi-bin/cep/cep.pl?_key=CLU |date=20060314172855 }}&lt;br /&gt;
* [http://99-bottles-of-beer.net/language-clu-133.html CLU]{{Wayback|url=http://99-bottles-of-beer.net/language-clu-133.html |date=20070928030256 }} comparison at &amp;#039;99 bottles of beer&amp;#039; multi-language demo algorithm site&lt;br /&gt;
{{-}}&lt;br /&gt;
{{程序设计语言}}&lt;br /&gt;
&lt;br /&gt;
[[Category:学术的编程语言]]&lt;br /&gt;
[[Category:过程式编程语言]]&lt;br /&gt;
[[Category:基于类的编程语言]]&lt;br /&gt;
[[Category:1975年建立的程式語言]]&lt;/div&gt;</summary>
		<author><name>imported&gt;ExultantEditor</name></author>
	</entry>
</feed>