跳转到内容

Logo (程序设计语言)

本页使用了标题或全文手工转换
维基百科,自由的百科全书
Logo
编程范型多范型: 函数式, 教育, 过程式, 反射式
语言家族Lisp
設計者Wally Feurzeig(英语:Wally Feurzeig), Seymour Papert, Cynthia Solomon(英语:Cynthia Solomon)
實作者Bolt, Beranek and Newman
发行时间1967年,​59年前​(1967)
類型系統动态
主要實作產品
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设计[1],Logo一词源自希腊语邏各斯(logos)。Logo是一种直譯語言,和其他语言不同的是,它内置一套海龟绘图(Turtle Graphics)系统[2],通过向海龟发送命令,用户可以直观地学习程序的运行过程,因此很适于初学者特别是儿童学习程序设计。

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

海龟绘图

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

引用

[编辑]
  1. ^ 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). 
  2. ^ Logo Foundation. el.media.mit.edu. [2011-04-07]. (原始内容存档于2011-07-21). 
  3. ^ CSLS Vol 1, Preface .pxvi, Harvey 1997
  4. ^ 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.
  5. ^ Berkeley Logo (UCBLogo). people.eecs.berkeley.edu. [2025-01-15]. (原始内容存档于2025-02-03). 
  6. ^ MSWLogo, An Educational programming language. softronix.com. [2025-01-15]. (原始内容存档于2025-01-03). 
  7. ^ StarLogo on the Web. MIT. [2025-01-15]. (原始内容存档于2006-11-15). 
  8. ^ NetLogo Home Page. ccl.northwestern.edu. [2025-01-15]. (原始内容存档于2011-04-08). 
  9. ^ Kalas, Ivan. Comenius Logo. www.input.sk. [2025-01-15]. (原始内容存档于2004-06-03). 
  10. ^ rLogo Home Page. www.embry.com. [2025-01-15]. (原始内容存档于2008-05-09). 
  11. ^ CLogo簡介. plum.yuntech.edu.tw. [2025-01-15]. (原始内容存档于2012-12-22). 
  12. ^ hexidec codex : Java : Galapago. www.hexidec.com. [2025-01-15]. (原始内容存档于2024-12-14). 
  13. ^ ProLOGO - LOGO in Prolog. [2025-01-15]. (原始内容存档于2018-05-26). 
  14. ^ PyLogo. pylogo.sourceforge.net. [2025-01-15]. (原始内容存档于2024-11-27). 
  15. ^ SharpLogo. SourceForge. 2013-03-19 [2025-01-15]. (原始内容存档于2025-01-23) (英语). 
  16. ^ XLogo - A Logo learning and drawing application built for Mac OS X. xlogo.sourceforge.net. [2025-01-15]. (原始内容存档于2023-12-12). 
  17. ^ WELCOME To Logo++ Website !!!. clpp.sourceforge.net. [2025-01-15]. (原始内容存档于2024-07-22). 

延伸阅读

[编辑]

外部链接

[编辑]