Logo (程序语言)
Logo是一种计算机程式设计语言,在1966年由西摩尔·派普特和Wally Feurzeig设计[2],Logo一词源自希腊语逻各斯(logos)。Logo是一种直译语言,和其他语言不同的是,它内置一套海龟绘图(Turtle Graphics)系统[3],通过向海龟发送命令,用户可以直观地学习程序的运行过程,因此很适于初学者特别是儿童学习程序设计。
编程范型 | 多范型: 函数式, 教育, 过程式, 反射式 |
---|---|
语言家族 | 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[4],派普特修改了LISP的语法使其更易于阅读。Logo常被称作没有括号的Lisp。Logo继承了Lisp的“表”的概念,所以在函数处理等方面拥有强大的能力,也是有特殊需求的计算机科学家的好帮手[5]。
海龟绘图
编辑海龟绘图使得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[6],用C写成,可运行于多个平台。
- MSWLogo,有良好的GUI、详尽的说明文件,运行于Windows,建基于Berkeley Logo,由Borland C++写成。它支援三维图像、声响、键盘等多个功能[7]。
- 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)、去掉了不少语法。
引用
编辑- ^ Pietrocola, Giorgio. Tartapelago. Maecla. 2005 [2021-05-30]. (原始内容存档于2021-02-11).
- ^ 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).
- ^ Logo Foundation. el.media.mit.edu. [2011-04-07]. (原始内容存档于2011-07-21).
- ^ CSLS Vol 1, Preface .pxvi, Harvey 1997
- ^ 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.
- ^ Berkeley Logo (页面存档备份,存于互联网档案馆)
- ^ MSWLogo
- ^ StarLogo
- ^ NetLogo (页面存档备份,存于互联网档案馆)
- ^ Comenius Logo
- ^ rLogo
- ^ CLogo
- ^ Galapago (页面存档备份,存于互联网档案馆)
- ^ ProLOGO (页面存档备份,存于互联网档案馆)
- ^ PyLogo (页面存档备份,存于互联网档案馆)
- ^ SharpLOGO
- ^ XLogo (页面存档备份,存于互联网档案馆)
- ^ 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 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.