<?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=ALGOL_W</id>
	<title>ALGOL W - 版本历史</title>
	<link rel="self" type="application/atom+xml" href="https://arolstar52-zhtest.hf.space/index.php?action=history&amp;feed=atom&amp;title=ALGOL_W"/>
	<link rel="alternate" type="text/html" href="https://arolstar52-zhtest.hf.space/index.php?title=ALGOL_W&amp;action=history"/>
	<updated>2026-07-17T09:03:17Z</updated>
	<subtitle>在这个wiki上该页的修订历史</subtitle>
	<generator>MediaWiki 1.43.9</generator>
	<entry>
		<id>https://arolstar52-zhtest.hf.space/index.php?title=ALGOL_W&amp;diff=910210&amp;oldid=prev</id>
		<title>imported&gt;ExultantEditor 来自 2025年12月26日 (五) 16:45</title>
		<link rel="alternate" type="text/html" href="https://arolstar52-zhtest.hf.space/index.php?title=ALGOL_W&amp;diff=910210&amp;oldid=prev"/>
		<updated>2025-12-26T16:45:22Z</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                   = ALGOL W&lt;br /&gt;
 | paradigm               = [[编程范型|多范型]]：[[过程式编程|过程式]], [[指令式編程|指令式]], [[结构化编程|结构化]]&lt;br /&gt;
| family = [[ALGOL]]&lt;br /&gt;
| designers = [[Niklaus Wirth]], [[Tony Hoare]]&lt;br /&gt;
| released = {{Start date and age|1966}}&lt;br /&gt;
| typing = [[静态类型|静态]], [[强类型]]&lt;br /&gt;
| scope = [[作用域|词法]]&lt;br /&gt;
| programming language = [[PL360]]&lt;br /&gt;
| platform = [[IBM System/360]]&lt;br /&gt;
 | influenced by          = [[ALGOL 60]], [[ALGOL X]]&lt;br /&gt;
 | influenced             = [[Pascal語言|Pascal]], [[Modula-2]]&lt;br /&gt;
}}&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;ALGOL W&amp;#039;&amp;#039;&amp;#039;，一種[[程式語言]]，為[[ALGOL]]家族的一份子。它基於[[尼克勞斯·維爾特]]與[[東尼·霍爾]]在{{le|IFIP Working Group 2.1}}針對[[ALGOL X]]所提出的草案而設計，希望能作為[[ALGOL 60]]的後繼者&amp;lt;ref name=&amp;quot;Wirth&amp;quot;&amp;gt;{{cite journal |last1=Wirth |first1=Niklaus |author1-link=Niklaus Wirth |last2=Hoare |first2=C. A. R. |author2-link=Tony Hoare |date=June 1966 |title=A contribution to the development of ALGOL |url=https://dl.acm.org/doi/10.1145/365696.365702 |journal=Communications of the ACM |volume=9 |issue=6 |pages=413–432 |doi=10.1145/365696.365702 |s2cid=11901135 |via=[[Association for Computing Machinery]] |access-date=2020-10-07|doi-access=free }}&amp;lt;/ref&amp;gt;。經過小幅度的修改&amp;lt;ref&amp;gt;{{cite web|url=https://dl.acm.org/doi/10.5555/1061073.1061079|author= Niklaus Wirth|year=1966|title=Additional notes on &amp;quot;A Contribution to the Development of ALGOL|publisher=ALGOL Bulletin, Number 24 pp. 13 - 17}}&amp;lt;/ref&amp;gt;，在[[史丹福大學]]，[[尼克勞斯·維爾特]]利用[[IBM System/360]]機器，以[[PL360]]實作出第一版的ALGOL W&amp;lt;ref name=&amp;quot;Stanford&amp;quot;&amp;gt;{{cite report |last1=Bauer |first1=Henry R. |last2=Becker |first2=Sheldon I. |last3=Graham |first3=Susan L. |last4=Forsythe |first4=George E. |last5=Satterthwaite |first5=Edwin H. |date=March 1968 |title=Technical Report Number: CS-TR-68-89 |url=http://www-db.stanford.edu/TR/CS-TR-68-89.html |website=Computer Science Department |publisher=Stanford University}} (Various documents for Stanford&amp;#039;s 1972 implementation of ALGOL W; this report includes the &amp;#039;&amp;#039;ALGOL W Language Description&amp;#039;&amp;#039;.&amp;lt;/ref&amp;gt;&amp;lt;ref name=&amp;quot;TR71-230&amp;quot;&amp;gt;{{cite web |last1=Sites |first1=Richard |title=ALGOL W Reference Manual |url=http://i.stanford.edu/pub/cstr/reports/cs/tr/71/230/CS-TR-71-230.pdf |website=i.stanford.edu |publisher=Stanford University |access-date=24 July 2022}}&amp;lt;/ref&amp;gt;。&lt;br /&gt;
&lt;br /&gt;
ALGOL W是原本ALGOL 60的相对简单的升级，它增加了[[字符串]]、位串、[[复数 (数学)|复数]]、到[[记录]][[数据类型]]的[[参照|引用]]，和[[求值策略#传复件-恢复调用|传结果调用]]的[[参数 (计算机科学)|参数]]传递，介入了&amp;lt;code&amp;gt;while&amp;lt;/code&amp;gt;语句，将&amp;lt;code&amp;gt;switch&amp;lt;/code&amp;gt;替代为&amp;lt;code&amp;gt;case&amp;lt;/code&amp;gt;语句，并在总体上的紧实了这门语言。它的[[編譯器]]是用[[尼克勞斯·維爾特]]所設計的[[PL360]]組語所寫成&amp;lt;ref&amp;gt;{{Cite web |url=http://bitsavers.trailing-edge.com/pdf/stanford/cs_techReports/STAN-CS-71-215_PL360_Revised_A_Programming_Language_For_The_IBM_360_May71.pdf |title=PL360(REVISED) A PROGRAMMING LANGUAGE FOR THE IBM 360. |accessdate=2020-05-16 |archive-date=2016-03-04 |archive-url=https://web.archive.org/web/20160304073807/http://bitsavers.trailing-edge.com/pdf/stanford/cs_techReports/STAN-CS-71-215_PL360_Revised_A_Programming_Language_For_The_IBM_360_May71.pdf |dead-url=no }}&amp;lt;/ref&amp;gt;。&lt;br /&gt;
&lt;br /&gt;
== 语法和语义 ==&lt;br /&gt;
ALGOL W的{{le|语法 (编程语言)|Syntax (programming languages)|语法}}建造在[[EBCDIC]][[字符编码]]集的子集之上。在[[ALGOL 60]]中，保留字是独立的词法项目，但是在ALGOL W中它们只是字符序列，而不需要被{{le|索绕 (语法)|Stropping (syntax)|索绕}}起来。保留字和标识符由空格分隔&amp;lt;ref name=&amp;quot;Stanford&amp;quot;/&amp;gt;。在这种方式下，ALGOL W的语法类似于[[Pascal语言|Pascal]]和后来的语言。&lt;br /&gt;
&lt;br /&gt;
《ALGOL W语言描述》&amp;lt;ref name=&amp;quot;description&amp;quot;&amp;gt;{{cite report |last1=Bauer |first1=Henry R. |last2=Becker |first2=Sheldon I. |last3=Graham |first3=Susan L. |last4=Satterthwaite |first4=Edwin H. |last5=Sites |first5=Richard L. |date=June 1972 |title=ALGOL W Language Description |url=https://www.algol60.org/docsW/algolw.pdf}}&amp;lt;/ref&amp;gt;，采用了类似于[[巴科斯范式|巴科斯-诺尔范式]]（BNF）的{{le|附缀文法|affix grammar}}定义了ALGOL W。这种[[形式文法]]是{{le|van Wijngaarden文法|Van Wijngaarden grammar}}的先驱&amp;lt;ref name=&amp;quot;Wirth&amp;quot;/&amp;gt;&amp;lt;ref&amp;gt;{{cite report |last=van Wijngaarden |first=Adriaan |author1-link=Adriaan van Wijngaarden |date=22 October 1965 |title=Orthogonal Design and Description of a Formal Language: MR76 |url=http://web.eah-jena.de/~kleine/history/languages/VanWijngaarden-MR76.pdf |publisher=Mathematical Centre |place=[[Amsterdam]], Netherlands |via=Ernst-Abbe-Hochschule [[Jena]], University of Applied Sciences, Germany |access-date=2020-10-07 |archive-date=29 October 2019 |archive-url=https://web.archive.org/web/20191029151436/http://web.eah-jena.de/%7Ekleine/history/languages/VanWijngaarden-MR76.pdf |url-status=dead }}&amp;lt;/ref&amp;gt;。&lt;br /&gt;
&lt;br /&gt;
大量的ALGOL W语义是在文法上定义的&amp;lt;ref name=&amp;quot;description&amp;quot;/&amp;gt;：&lt;br /&gt;
* 标识符由它们在当前[[作用域]]内的定义来区分。例如，&amp;lt;code&amp;gt;⟨procedure identifier⟩&amp;lt;/code&amp;gt;是由过程声明定义的标识符，&amp;lt;code&amp;gt;⟨label identifier⟩&amp;lt;/code&amp;gt;是用作[[goto]]标签的标识符。&lt;br /&gt;
* [[变量 (计算机科学)|变量]]和{{le|表达式 (计算机科学)|Expression (computer science)|表达式}}的[[类型系统|类型]]通过附缀来的表示。例如，&amp;lt;code&amp;gt;⟨τ function identifier⟩&amp;lt;/code&amp;gt;是针对返回类型&amp;lt;code&amp;gt;τ&amp;lt;/code&amp;gt;的值的函数的一个语法实体，如果这个标识符已经在当前作用域内被声明为整数函数，那么它被展开为&amp;lt;code&amp;gt;⟨integer function identifier⟩&amp;lt;/code&amp;gt;。&lt;br /&gt;
* 类型错误是文法错误。例如，&amp;lt;code&amp;gt;⟨integer expression⟩ / ⟨integer expression⟩&amp;lt;/code&amp;gt;和&amp;lt;code&amp;gt;⟨real expression⟩ / ⟨real expression⟩&amp;lt;/code&amp;gt;是表示表达式的有效而不同的语法实体，但是&amp;lt;code&amp;gt;⟨real expression⟩ DIV ⟨integer expression⟩&amp;lt;/code&amp;gt;（即在浮点值上进行整数除法）是无效的语法实体。&lt;br /&gt;
&lt;br /&gt;
== 例子 ==&lt;br /&gt;
&lt;br /&gt;
下面例子展示ALGOL W的[[记录]]类型设施：&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;pascal&amp;quot;&amp;gt;&lt;br /&gt;
RECORD PERSON (&lt;br /&gt;
    STRING(20) NAME; &lt;br /&gt;
    INTEGER AGE; &lt;br /&gt;
    LOGICAL MALE; &lt;br /&gt;
    REFERENCE(PERSON) FATHER, MOTHER, YOUNGESTOFFSPRING, ELDERSIBLING&lt;br /&gt;
);&lt;br /&gt;
&lt;br /&gt;
REFERENCE(PERSON) PROCEDURE YOUNGESTUNCLE (REFERENCE(PERSON) R);&lt;br /&gt;
BEGIN&lt;br /&gt;
    REFERENCE(PERSON) P, M;&lt;br /&gt;
    P := YOUNGESTOFFSPRING(FATHER(FATHER(R)));&lt;br /&gt;
    WHILE (P ¬= NULL) AND (¬ MALE(P)) OR (P = FATHER(R)) DO&lt;br /&gt;
        P := ELDERSIBLING(P);&lt;br /&gt;
    M := YOUNGESTOFFSPRING(MOTHER(MOTHER(R)));&lt;br /&gt;
    WHILE (M ¬= NULL) AND (¬ MALE(M)) DO&lt;br /&gt;
        M := ELDERSIBLING(M);&lt;br /&gt;
    IF P = NULL THEN &lt;br /&gt;
        M &lt;br /&gt;
    ELSE IF M = NULL THEN &lt;br /&gt;
        P &lt;br /&gt;
    ELSE &lt;br /&gt;
        IF AGE(P) &amp;lt; AGE(M) THEN P ELSE M&lt;br /&gt;
END&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== 引用 ==&lt;br /&gt;
{{Reflist|2}}&lt;br /&gt;
&lt;br /&gt;
== 外部链接 ==&lt;br /&gt;
*[https://web.archive.org/web/20100523150449/http://www.jampan.co.nz/~glyn/ aw2c] – ALGOL W compiler for [[Linux]]&lt;br /&gt;
*[https://tiddly-pom.com/~glyn/ awe]{{Wayback|url=https://tiddly-pom.com/~glyn/ |date=20171004061610 }} – aw2c updated version&lt;br /&gt;
*[https://everything2.com/title/Algol+W?searchy=search ALGOL W @ Everything2] {{Wayback|url=https://everything2.com/title/Algol+W?searchy=search |date=20210224233423 }} – informal but detailed description of the language by a former user, with sidebars extolling ALGOL W over [[Pascal語言|Pascal]] as an educational programming language&lt;br /&gt;
*[http://bitsavers.org/pdf/stanford/listing/Algol_W_Listing_Nov69.pdf 1969 ALGOL W compiler listing]{{Wayback|url=http://bitsavers.org/pdf/stanford/listing/Algol_W_Listing_Nov69.pdf |date=20190926180336 }} at bitsavers.org&lt;br /&gt;
* The Michigan Terminal System Manuals, Volume 16: [http://bitsavers.org/pdf/univOfMichigan/mts/volumes/MTSVol16-ALGOLWInMTS-Sep1980.pdf ALGOL W in MTS]{{Wayback|url=http://bitsavers.org/pdf/univOfMichigan/mts/volumes/MTSVol16-ALGOLWInMTS-Sep1980.pdf |date=20110814225737 }}&lt;br /&gt;
*[http://www.algol60.org/15algolwlego.htm Algol W materials]{{Wayback|url=http://www.algol60.org/15algolwlego.htm |date=20200218175656 }} More than 200 Algol W programs and documentation&lt;br /&gt;
&lt;br /&gt;
{{Authority control}}&lt;br /&gt;
{{ALGOL programming}}&lt;br /&gt;
[[Category:过程式编程语言]]&lt;br /&gt;
[[Category:ALGOL程式語言家族]]&lt;br /&gt;
[[Category:1966年建立的程式語言]]&lt;/div&gt;</summary>
		<author><name>imported&gt;ExultantEditor</name></author>
	</entry>
</feed>