Logo (程序设计语言)

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

Logo的原型来自另一个计算机语言LISPCSLS Vol 1, Preface .pxvi, Harvey 1997，派普特修改了LISP的语法使其更易于阅读。Logo常被称作没有括号的Lisp。Logo继承了Lisp的「表」的概念，所以在函数处理等方面拥有强大的能力，也是有特殊需求的计算机科学家的好帮手Computer Science Logo Style, Brian Harvey, MIT Press (3 volumes) , , . Available online 。

 海龟绘图 

海龟绘图使得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直譯器列表 

 ，又叫Berkeley Logo，用C语言寫成，可運行於多個平台。
 ，有良好的GUI、詳盡的說明文件，運行於Windows，建基於Berkeley Logo，由Borland C++寫成。它支援三維圖像、聲響、鍵盤等多個功能。

 NetLogo
 Comenius Logo
 rLogo，可於瀏覽器上執行（需Java）
 CLogo，可用中文為指令（需要Java）
 Galapago，用Java寫成
 ProLOGO，用Prolog寫成，可用意大利語為指令
 PyLogo，用Python寫成
 SharpLOGO，用C#寫成
 XLogo，用Objective-C寫成，運行於macOS
 Logo++，可說是一種精簡化的Logo，主要的分別在於沒有了Logo的即時回應（interactive）、去掉了不少語法。

引用

延伸阅读

 The Great Logo Adventure, Jim Muller, Doone Publications ; 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 . Available online 
 Learning With Logo, Daniel Watt, McGraw Hill, . Available Through Amazon
 Teaching With Logo: Building Blocks For Learning, Molly Watt and Daniel Watt, Addison Wesley (now Pearson) 1986,  Available through Amazon

外部链接

 Logo Interpreter 
 papert: logo in your browser 
 Online PHP-based Logo Interpreter 
 MachineLab TurtleSphere (MaLT)  Online LOGO Interprepter with 3D graphics using three.js javascript library. 
 Vlad Tudor's Free Online Logo Interpreter using HTML5, CSS3 and JQuery 
 TurtleAcademy (Learn Logo for free) 
 XLogo4Schools  is a revised version of XLogo
XLogoOnline  is a modern, browser-based programming environment for the primary school. The programming language is a subset of the XLogo dialect. In addition to the online version, offline versions are available for Windows, macOS and Linux.
 DR Logo at CPCWiki 
 WIN-LOGO 3.0  of a German Author in English and German language
 POOL is a compiled LOGO dialect
 QLogo 
 Digitool, producers of ObjectLOGO
 turtleSpaces  is an OpenGL re-implementation and broad extension of Apple (LCSI) Logo II intended for making 3D models, animations and games. It is currently available for Windows, macOS and Linux.

Category:动态类型编程语言
Category:特定领域语言
Category:自由教育軟件
Category:函数式编程语言
Category:LISP程式語言家族
Category:Logo程式語言家族
Category:1967年建立的程式語言