Logo (程序语言)

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

Logo
MSWLogo海龟绘图示例gif动画[1]
多范型: 函数式, 教育, 过程式, 反射式
语言家族Lisp
設計者Wally Feurzeig, Seymour Papert, Cynthia Solomon
實作者Bolt, Beranek and Newman
1967年1967
当前版本
  • 3.6.4 (2023年2月7日;穩定版本;Android)[2]
型態系統动态
主要實作產品
UCBLogo, 很多其他实现
衍生副語言
StarLogo, NetLogo, AppleLogo
啟發語言
Lisp
影響語言
AgentSheets, NetLogo, Smalltalk, Etoys, Scratch, Microsoft Small Basic, KTurtle, REBOL, Boxer

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

海龟绘图

绘图海龟

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

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

程式实例

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

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

由于输入的语句都是重复的,可以用重复语句简化为:

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,又叫Berkeley Logo[7],用C寫成,可運行於多個平台。
  • MSWLogo,有良好的GUI、詳盡的說明文件,運行於Windows,建基於Berkeley Logo,由Borland C++寫成。它支援三維圖像、聲響、鍵盤等多個功能[8]
  • StarLogo[9]
  • NetLogo[10]
  • Comenius Logo[11]
  • rLogo[12],可於瀏覽器上執行(需Java
  • CLogo[13],可用中文為指令(需要Java
  • Galapago[14],用Java寫成
  • ProLOGO[15],用Prolog寫成,可用意大利語為指令
  • PyLogo[16],用Python寫成
  • SharpLOGO[17],用C#寫成
  • XLogo[18],用Objective-C寫成,運行於Mac
  • Logo++[19],可說是一種精簡化的Logo,主要的分別在於沒有了Logo的即時回應(interactive)、去掉了不少語法。

引用

  1. Pietrocola, Giorgio. . Maecla. 2005 [2021-05-30]. (原始内容存档于2021-02-11).
  2. . 2023年2月7日 [2023年4月14日].
  3. Abelson, Hal; Goodman, Nat; Rudolph, Lee. . Artificial Intelligence Lab, Massachusetts Institute of Technology. December 1974 [August 28, 2016]. hdl:1721.1/6226. (原始内容存档于September 11, 2016).
  4. . el.media.mit.edu. [2011-04-07]. (原始内容存档于2011-07-21).
  5. CSLS Vol 1, Preface .pxvi, Harvey 1997
  6. 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.
  7. Berkeley Logo 页面存档备份,存于
  8. MSWLogo
  9. StarLogo
  10. NetLogo 页面存档备份,存于
  11. Comenius Logo
  12. rLogo
  13. CLogo
  14. Galapago 页面存档备份,存于
  15. ProLOGO 页面存档备份,存于
  16. PyLogo 页面存档备份,存于
  17. SharpLOGO
  18. XLogo 页面存档备份,存于
  19. Logo++ 页面存档备份,存于

延伸阅读

  • The Great Logo Adventure, Jim Muller, Doone Publications ISBN 0-9651934-6-2; now out of print; downloadable free of charge in pdf form from The MSWLogo website, along with the freeware MSWLogo program
  • To Artificial Intelligence (1976)页面存档备份,存于) Early AI textbook where Logo is used extensively. (Using the Edinburgh University dialect, AI2LOGO)
  • Turtle Geometry页面存档备份,存于) Abelson and diSessa
  • Children Designers, Idit Harel Caperton, Ablex Publishing Corporation ISBN 0893917885. Available online页面存档备份,存于
  • Learning With Logo, Daniel Watt, McGraw Hill, ISBN 0-07-068570-3. Available Through Amazon
  • Teaching With Logo: Building Blocks For Learning, Molly Watt and Daniel Watt, Addison Wesley (now Pearson) 1986, ISBN 0-201-08112-1 Available through Amazon

外部链接

维基共享资源上的相关多媒体资源:Logo
維基教科書中的相關電子:en:Logo Programming

This article is issued from Wikipedia. The text is licensed under Creative Commons - Attribution - Sharealike. Additional terms may apply for the media files.