Logo (程序语言)
Logo是一种计算机程式设计语言,在1966年由西摩爾·派普特和Wally Feurzeig设计,设计Logo的初衷是为了向儿童教授计算机编程技能。Logo一词源自希腊语邏各斯(logos)。
![]() Logo输出例子 | |
多范型: 函数式, 教育, 过程式, 反射式 | |
语言家族 | Lisp |
設計者 | Wally Feurzeig, Seymour Papert, Cynthia Solomon |
實作者 | Bolt, Beranek and Newman |
1967年 | |
型態系統 | 动态 |
主要實作產品 | |
UCBLogo, 很多其他实现 | |
衍生副語言 | |
StarLogo, NetLogo, AppleLogo | |
啟發語言 | |
Lisp | |
影響語言 | |
AgentSheets, NetLogo, Smalltalk, Etoys, Scratch, Microsoft Small Basic, KTurtle, REBOL, Boxer |
Logo的原型来自另一个计算机语言LISP,派普特修改了LISP的语法使其更易于阅读。Logo常被称作没有括号的Lisp。
Logo是一种直譯語言,和其他语言不同的是,它内置一套海龟绘图(Turtle Graphics)系统,通过向海龟发送命令,用户可以直观地学习程序的运行过程,因此很适于儿童学习。它亦適合用作數學教學。
Logo继承了Lisp的「表」的概念,所以在函数处理等方面拥有强大的能力,因此Logo不仅是初学者学习程序设计的良药,更是有特殊需求的计算机科学家的好帮手。
海龟绘图
海龟绘图使得Logo用户可以通过简单的编程创作出丰富多彩的视觉效果或图案。假想一只带着画笔的海龟可以接受简单的命令,例如向前走100步,或者左转30度。通过对这只海龟发送命令,可以让它绘制出较为复杂的图形,例如正方形,三角形,圆等。
海龟的移动相对于它本身所在的位置。例如,命令"左90"意味着让海龟左转90度,学生可以站在海龟的角度来思考它将如何执行命令,这使得程序设计更加形象化,也更易于理解。
程式实例
初学者可以不需要任何程式设计的知识而直接向海龟发送命令。学习海龟作图将会让用户懂得一些关于几何学方面的知识。而一旦掌握了海龟作图的基础之后,引入程式设计的概念也变得更加容易。下面看一些例子: 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直譯器列表
- Turtleacademy又叫海龟学院,免费学编程。
- Berkeley Logo 页面存档备份,存于又叫UCBLogo,用C寫成,可運行於多個平台。
- MSWLogo有良好的GUI、詳盡的說明文件,運行於Windows,建基於Berkeley Logo,由Borland C++寫成。它支援三維圖像、聲響、鍵盤等多個功能。
- StarLogo
- NetLogo 页面存档备份,存于
- Comenius Logo
- rLogo可於瀏覽器上執行(需Java)
- CLogo可用中文為指令(需要Java)
- Galapago 页面存档备份,存于用Java寫成
- ProLOGO 页面存档备份,存于用Prolog寫成,可用意大利語為指令
- PyLogo 页面存档备份,存于用Python寫成
- SharpLOGO用C#寫成
- XLogo 页面存档备份,存于用Objective-C寫成,運行於Mac
- Logo++ 页面存档备份,存于可說是一種精簡化的Logo,主要的分別在於沒有了Logo的即時回應(interactive)、去掉了不少語法。
- 更多資料可見於PyLogo網站中的Other Logos