Logo (程序语言)

Logo
MSWLogo英语MSWLogo海龟绘图示例gif动画[1]
编程范型多范型: 函数式, 教育, 过程式, 反射式
语言家族Lisp
設計者Wally Feurzeig英语Wally Feurzeig, Seymour Papert, Cynthia Solomon英语Cynthia Solomon
實作者Bolt, Beranek and Newman
发行时间1967年,​57年前​(1967
当前版本
  • 3.6.4 (2023年2月7日;穩定版本;Android)[2]
編輯維基數據鏈接
型態系統动态
主要實作產品
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设计[3],Logo一词源自希腊语邏各斯(logos)。Logo是一种直譯語言,和其他语言不同的是,它内置一套海龟绘图(Turtle Graphics)系统[4],通过向海龟发送命令,用户可以直观地学习程序的运行过程,因此很适于初学者特别是儿童学习程序设计。

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

海龟绘图

绘图海龟英语Turtle (robot)

海龟绘图使得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英语UCBLogo,又叫Berkeley Logo[7],用C寫成,可運行於多個平台。
  • MSWLogo英语MSWLogo,有良好的GUI、詳盡的說明文件,運行於Windows,建基於Berkeley Logo,由Borland C++寫成。它支援三維圖像、聲響、鍵盤等多個功能[8]
  • StarLogo英语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寫成,運行於macOS
  • Logo++[19],可說是一種精簡化的Logo,主要的分別在於沒有了Logo的即時回應(interactive)、去掉了不少語法。

引用

  1. ^ Pietrocola, Giorgio. Tartapelago. Maecla. 2005 [2021-05-30]. (原始内容存档于2021-02-11). 
  2. ^ Android: Version 3.6.4 Updated on Feb 7, 2023. 2023年2月7日 [2023年4月14日]. 
  3. ^ 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). 
  4. ^ Logo Foundation. 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
  • 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.
特征
 
对象系统
  • Common Lisp对象系统(CLOS)
  • CommonLoops英语CommonLoops
  • Flavors英语Flavors (programming language)
实现英语Programming language implementation
Common
Lisp
  • Allegro Common Lisp英语Allegro Common Lisp
  • Armed Bear Common Lisp英语Armed Bear Common Lisp(ABCL)
  • CLISP
  • Clozure CL
  • CMU Common Lisp(CMUCL)
  • Corman Common Lisp英语Corman Common Lisp
  • Embeddable Common Lisp(ECL)
  • GNU Common Lisp(GCL)
  • LispWorks英语LispWorks
  • Macintosh Common Lisp英语Macintosh Common Lisp
  • Mocl英语Mocl
  • Poplog英语Poplog
  • Steel Bank Common Lisp(SBCL)
  • Symbolics Common Lisp英语Genera (operating system)
  • Bigloo英语Bigloo
  • Chez Scheme
  • Chicken
  • Gambit
  • Gauche英语Gauche (Scheme implementation)
  • GNU Guile
  • Ikarus英语Ikarus (Scheme implementation)
  • IronScheme英语IronScheme
  • JScheme
  • Kawa英语Kawa (Scheme implementation)
  • Larceny
  • MIT/GNU Scheme
  • Racket
  • RScheme英语RScheme
  • Scheme 48
  • SCM
  • SIOD
  • STklos英语STklos
  • TinyScheme
  • Ypsilon英语Ypsilon (Scheme implementation)
  • OpenLisp英语OpenLisp
  • Easy-ISLisp
未标准化
 
  • Arc
  • AutoLISP
  • BBN LISP
  • Clojure
  • Dylan
  • Emacs Lisp
  • EuLisp英语EuLisp
  • Franz Lisp
  • GOAL英语Game Oriented Assembly Lisp
  • Hy
  • Interlisp英语Interlisp
  • 知识工程环境英语Knowledge Engineering Environment
  • LispKit
  • *Lisp英语*Lisp
  • Le Lisp
  • LFE英语LFE (programming language)
  • Lisp Machine Lisp英语Lisp Machine Lisp
  • Maclisp
  • MDL英语MDL (programming language)
  • MLisp英语MLisp
  • MultiLisp英语MultiLisp
  • newLISP
  • NIL英语NIL (programming language)
  • PC-LISP英语PC-LISP
  • PicoLisp
  • Portable Standard Lisp英语Portable Standard Lisp
  • RPL英语RPL (programming language)
  • S-1 Lisp英语S-1 Lisp
  • SKILL
  • Spice Lisp英语Spice Lisp
  • T英语T (programming language)
  • Zetalisp英语Zetalisp
Logo
  • MSWLogo英语MSWLogo
  • NetLogo
  • StarLogo英语StarLogo
  • UCBLogo英语UCBLogo
  • Common Lisp界面管理器英语Common Lisp Interface Manager
  • McCLIM英语McCLIM
  • Genera英语Genera (operating system)
  • Scsh英语Scsh
  • Lisp机器
  • TI Explorer英语TI Explorer
  • Space-cadet键盘英语Space-cadet keyboard
实践
社群
技术标准
  • Scheme实现要求英语Scheme Requests for Implementation
  • Common Lisp HyperSpec英语Common Lisp HyperSpec
  • X3J13英语X3J13
教育
图书
教程
  • ProgramByDesign英语ProgramByDesign
组织
商业
  • 苹果公司
  • BBN
  • Harlequin英语Harlequin (software company)
  • Lucid Inc.英语Lucid Inc.
  • Symbolics英语Symbolics
  • Xanalys英语Xanalys
教育
人士
 
Common
Lisp
  • Scott Fahlman英语Scott Fahlman
  • Richard P. Gabriel英语Richard P. Gabriel
  • Philip Greenspun英语Philip Greenspun
  • David A. Moon英语David A. Moon
  • Kent Pitman英语Kent Pitman
  • Guy L. Steele Jr.
  • Daniel Weinreb英语Daniel Weinreb
Logo
  • 分类 语言
  • 分类 家族
  • 列表级条目 列表英语List of Lisp-family programming languages

范型
过程式
面向对象
多范型
函数式
逻辑式
脚本语言
动态语言
Shell语言
ECMA-262
特定平台
.NET
JVM
特定领域
科学计算
GPU计算
  • Cg/HLSL
  • GLSL
  • Brook英语BrookGPU
  • OpenCL
  • CUDA/PTX英语Parallel Thread Execution
  • Futhark
  • SPIR-V英语Standard Portable Intermediate Representation
数据查询
可视化
传媒设计
 
其它
  • 分类 目录
  • 列表级条目 列表
  • 历史
  • 比较英语Comparison of programming languages
  • 时间线英语Timeline of programming languages