Logo (程序设计语言)

维基百科,自由的百科全书
(重定向自Logo程序设计语言
跳转到导航 跳转到搜索
Logo
File:Tartapelago RosaGrandi 06.gif
MSWLogo英语MSWLogo海龟绘图示例gif动画[1]
编程范型多范型: 函数式, 教育, 过程式, 反射式
语言家族Lisp
设计者Wally Feurzeig英语Wally Feurzeig, Seymour Papert, Cynthia Solomon英语Cynthia Solomon
实现者Bolt, Beranek and Newman
发行时间1967年,​59年前​(1967
当前版本
    Module:EditAtWikidata第29行Lua错误:attempt to index field 'wikibase' (a nil value)
    类型系统动态
    网站{{URL|example.com|可选的显示文本}}Module:EditAtWikidata第29行Lua错误:attempt to index field 'wikibase' (a nil value)
    主要实现产品
    UCBLogo英语UCBLogo, 很多其他实现
    派生副语言
    StarLogo英语StarLogo, NetLogo, AppleLogo
    受影响于
    Lisp
    影响语言
    AgentSheets英语AgentSheets, NetLogo, Smalltalk, Etoys英语Etoys (programming language), Scratch, Microsoft Small Basic, KTurtle, REBOL, Boxer

    Logo是一种计算机程序设计语言,在1966年由西摩尔·派普特和Wally Feurzeig设计[2],Logo一词源自希腊语逻各斯(logos)。Logo是一种解释型语言,和其他语言不同的是,它内置一套海龟绘图(Turtle Graphics)系统[3],通过向海龟发送命令,用户可以直观地学习程序的运行过程,因此很适于初学者特别是儿童学习程序设计。

    Logo的原型来自另一个计算机语言LISP[4],派普特修改了LISP的语法使其更易于阅读。Logo常被称作没有括号的Lisp。Logo继承了Lisp的“表”的概念,所以在函数处理等方面拥有强大的能力,也是有特殊需求的计算机科学家的好帮手[5]

    海龟绘图[编辑]

    File:Turtle draw.jpg
    绘图海龟英语Turtle (robot)
    File:FMSLogoFalenadiPietrocola.jpg
    蛾 (分形曲线)由FMSLogo 的乌龟绘制

    海龟绘图使得Logo用户可以通过简单的编程创作出丰富多彩的视觉效果或图案。假想一只带着画笔的海龟可以接受简单的命令,例如向前走100步,或者左转30度。通过对这只海龟发送命令,可以让它绘制出较为复杂的图形,例如正方形、三角形、圆等。

    海龟的移动相对于它本身所在的位置。例如,命令LT 90意味着让海龟左转90度,站在海龟的角度来思考它将如何执行命令,使得程序设计更加形象化,也更易于理解。

    程序实例[编辑]

    设计Logo的初衷是为了向儿童教授计算机编程技能。它亦适合用作数学教学。初学者可以不需要任何程序设计的知识而直接向海龟发送命令。学习海龟作图将会让用户懂得一些关于几何学方面的知识。而一旦掌握了海龟作图的基础之后,引入程序设计的概念也变得更加容易。下面看一个画一个正方形的例子:

    FD 100
    LT 90
    FD 100
    LT 90
    FD 100
    LT 90
    FD 100
    LT 90
    

    FD是前进,LT是左转。由于输入的语句都是重复的,可以用重复语句简化为:

    REPEAT 4 [FD 100 LEFT 90]
    

    上面两段程序得到的结果相同,由于第一个程序几乎都是重复代码,因此我们用REPEAT让Logo重复同样的命令4次,同时还使用了命令的缩写。为了重复使用上述代码,我们可以用TO …… END定义过程:

    TO CHAIR 
      REPEAT 4 [FD 100 RT 90] FD 200 
    END
    

    一旦定义了CHAIR过程,就可以直接使用调用它得到结果,为了使得这个过程更加通用化,我们传递一个边长参数:

    TO CHAIR :long
      REPEAT 4 [FD :long RT 90]
      FD :long*2
    END
    CHAIR 100
    

    从简单地发送绘图命令,到定义一个通用的绘制多边形的过程,用户不但掌握了程序设计上的一些基本思想(传递参数、重复等),而且对几何学上正多边形的理解也加深了。

    多代理建模语言[编辑]

    Logo的方言NetLogo、StarLogo进一步深化了Logo的海龟绘图概念,可以产生出成百上千个独立的海龟(被称为代理)来模拟诸如物理生物社会等复杂系统。建模者可以对众多海龟并行发送指令,来观察微观个体行为与个体之间相互影响产生的宏观样式之间的联系。

    LOGO解释器列表[编辑]

    • UCBLogo英语UCBLogo,又叫Berkeley Logo[6],用C语言写成,可运行于多个平台。
    • MSWLogo英语MSWLogo,有良好的GUI、详尽的帮助文档,运行于Windows,建基于Berkeley Logo,由Borland C++写成。它支持三维图像、声响、键盘等多个功能[7]
    • StarLogo英语StarLogo[8]
    • NetLogo[9]
    • Comenius Logo[10]
    • rLogo[11],可于浏览器上执行(需Java
    • CLogo[12],可用中文为指令(需要Java
    • Galapago[13],用Java写成
    • ProLOGO[14],用Prolog写成,可用意大利语为指令
    • PyLogo[15],用Python写成
    • SharpLOGO[16],用C#写成
    • XLogo[17],用Objective-C写成,运行于macOS
    • Logo++[18],可说是一种精简化的Logo,主要的分别在于没有了Logo的即时回应(interactive)、去掉了不少语法。

    引用[编辑]

    1. ^ Pietrocola, Giorgio. Tartapelago. Maecla. 2005 [2021-05-30]. (原始内容存档于2021-02-11). 
    2. ^ Abelson, Hal; Goodman, Nat; Rudolph, Lee. Logo Manual. Artificial Intelligence Lab, Massachusetts Institute of Technology. December 1974 [August 28, 2016]. hdl:1721.1/6226. (原始内容存档于September 11, 2016). 
    3. ^ Logo Foundation. el.media.mit.edu. [2011-04-07]. (原始内容存档于2011-07-21). 
    4. ^ CSLS Vol 1, Preface .pxvi, Harvey 1997
    5. ^ Computer Science Logo Style, Brian Harvey, MIT Press (3 volumes) ISBN 0-262-58148-5, ISBN 0-262-58149-3, ISBN 0-262-58150-7. Available online 互联网档案馆存档,存档日期2013-07-04.
    6. ^ Berkeley Logo (UCBLogo). people.eecs.berkeley.edu. [2025-01-15]. (原始内容存档于2025-02-03). 
    7. ^ MSWLogo, An Educational programming language. softronix.com. [2025-01-15]. (原始内容存档于2025-01-03). 
    8. ^ StarLogo on the Web. MIT. [2025-01-15]. (原始内容存档于2006-11-15). 
    9. ^ NetLogo Home Page. ccl.northwestern.edu. [2025-01-15]. (原始内容存档于2011-04-08). 
    10. ^ Kalas, Ivan. Comenius Logo. www.input.sk. [2025-01-15]. (原始内容存档于2004-06-03). 
    11. ^ rLogo Home Page. www.embry.com. [2025-01-15]. (原始内容存档于2008-05-09). 
    12. ^ CLogo簡介. plum.yuntech.edu.tw. [2025-01-15]. (原始内容存档于2012-12-22). 
    13. ^ hexidec codex : Java : Galapago. www.hexidec.com. [2025-01-15]. (原始内容存档于2024-12-14). 
    14. ^ ProLOGO - LOGO in Prolog. [2025-01-15]. (原始内容存档于2018-05-26). 
    15. ^ PyLogo. pylogo.sourceforge.net. [2025-01-15]. (原始内容存档于2024-11-27). 
    16. ^ SharpLogo. SourceForge. 2013-03-19 [2025-01-15]. (原始内容存档于2025-01-23) (English). 
    17. ^ XLogo - A Logo learning and drawing application built for Mac OS X. xlogo.sourceforge.net. [2025-01-15]. (原始内容存档于2023-12-12). 
    18. ^ WELCOME To Logo++ Website !!!. clpp.sourceforge.net. [2025-01-15]. (原始内容存档于2024-07-22). 

    延伸阅读[编辑]

    外部链接[编辑]