nanoka111 发表于 2021-8-7 00:03

Logo语言回顾

本帖最后由 nanoka111 于 2021-8-17 20:27 编辑

因为前一阵子的启示,在此计划做一次这样的回顾。
知道Logo这种编程语言的坛友估计都是年龄很大接触电脑非常早的那种了,熟悉的知道这种语言的作用就是控制一只“海龟”在屏幕上作画。
通过网上查阅的资料后发现,Logo语言的原型是最早在60年代提出的一种计算机绘图方式——海龟绘图(Turtle graphics),就是模拟控制一只海龟在平面直角坐标系上爬行,通过海龟的爬行轨迹来实现绘图。这种绘图方式虽说不太符合计算机的显示规则,但更容易被没接触过计算机的人理解,所以更适合让儿童或初学者以此来学习编程。在Python语言里也加入了这种绘图方式的指令,大约是这种方式比较近期的应用了,其他听说还推出过绘图仪。
这种绘图方式的核心语句就4句:FORWARD、BACK、LEFT、RIGHT,其他的都属于辅助语句而已。

最早的Logo是MIT Logo,更确切说是Terrapin/Krell Logo。国内对这个版本应该多是通过中华学习机接触到的,里面内置固化了1.1版。事实上这个版本从2.0开始在语句指令上做了很多更新和改进,但当前大部分教材是基于1.0版写的,如果想要怀旧的化建议只用1.x版。
Apple Logo,更确切说是LCSI Logo,相对Terrapin/Krell Logo在语句指令上做了很多改进,使之更符合其他编程语言的使用习惯。事实上这个版本不止在Apple II上有,后来还推出了PC版,相对PC的使用习惯添加了一些指令。国内早年的微机课上所学的就是这个版本,大约是国内另一批接触到Logo语言的人了。
再就是TI Logo,也就是在得州仪器的电脑TI-99/4里使用的一种Logo,这个版本估计国内几乎没人接触过。这种Logo的最大特点就是用通常的方式只支持整数运算,但却可以通过一种名叫“小妖”(Sprite)的方式来实现动画效果。如果接触过FC上的F-BASIC就会明白,这些也都是F-BASIC具备的特性,只不过TI Logo却支持用点阵的方式来自定义“小妖”,但F-BASIC却只能使用系统内置的几个“小妖”。忽然觉得任天堂当年怎么不去做F-Logo……
还有就是当年“裕兴电脑”里内置的Logo,不得不说这个Logo是个残废,语句指令大约是沿用自Terrapin/Krell Logo,也有少量改动,原版很多指令和特性在此无法使用。如果想怀旧一下的化,这个绝不推荐。

最后贴一张简单的作品,是用Terrapin/Krell Logo来画的,以后如果有兴趣或许还会来点更复杂的。



u96 发表于 2021-8-7 00:15

小学教过。

找蟹男 发表于 2021-8-7 00:22

b0207191 发表于 2021-8-7 00:23

本帖最后由 b0207191 于 2021-8-7 00:27 编辑

画图作为小孩计算机入门是很合适的,我觉得比一开始就学校basic或者c好多了,

Turtle Geometry (豆瓣) (douban.com)

V5Style 发表于 2021-8-7 00:42

上小学时见过一个DOS版的LOGO和一个图标是紫色三角形的Windows版的LOGO,不知道这两个具体是哪个版本。

大江户战士 发表于 2021-8-7 00:49

pigbayspy 发表于 2021-8-7 00:56

小学学过

—— 来自 HONOR NTH-AN00, Android 11上的 S1Next-鹅版 v2.4.4.1

shishkebab 发表于 2021-8-7 00:59

小学画出过紫荆花(照着课本代码)

aithinkso 发表于 2021-8-7 01:00

小学教材上见过,没学,估计老师也不懂

—— 来自 Xiaomi Redmi K30 5G, Android 11上的 S1Next-鹅版 v2.4.4.1

sd4002991 发表于 2021-8-7 02:03

小学微机课学过,那时候微机室都是dos电脑。后来学校换电脑了,就没学这个了

—— 来自 OnePlus HD1900, Android 11上的 S1Next-鹅版 v2.4.4.1

seducer0719 发表于 2021-8-7 02:57

编程启蒙……当时已经是windows系统了,学的是带gui的logo
当时照着书可以做一个特别复杂的五角星……

亚瑟邓特 发表于 2021-8-7 07:43

小学学过

—— 来自 Xiaomi MI 6, Android 9上的 S1Next-鹅版 v2.4.4.1

win8 发表于 2021-8-7 07:52

没用过,感觉还不如g代码?

Aeroblast 发表于 2021-8-7 08:28

小学学过。现在接触东西多了,很怀疑它跟机床、CAD的关系。现代的SVG里也考path来规定复杂轨迹,没什么不符合显示规则的吧。

hein 发表于 2021-8-7 09:40

这东西每人一张5寸盘,要统考的,磁盘坏了就哭哭哦。

小时候可以写简单地图形游戏。

bbn 发表于 2021-8-7 09:46

本帖最后由 bbn 于 2021-8-7 10:08 编辑

DOS上常用的是 PC LOGO。

搜索了一下,这里介绍了一些现有的版本:

https://el.media.mit.edu/logo-foundation/resources/software_hardware.html

play_plug 发表于 2021-8-7 18:11

logo主要问题对数学要求的起点有点高,小学生要补很多内容,这是我入门语言,导致我后来对编程没什么好感。
初中GW basic,还行
大学学了c,才发现,当时logo那一套画图确实很难。
啊,最后学的生物。。。

fat 发表于 2021-8-7 19:00

小学学过。当时还在纸上猛算五角星的角度,但因为没有基础知识,自然是想不通。

家里蹲废柴 发表于 2021-8-7 20:06

小学学过+1
考试要求画一个飞碟。

lvcha 发表于 2021-8-7 20:49

攻守俱其土肉狐 发表于 2021-8-7 22:24

小学学过

marsquake 发表于 2021-8-7 23:29

小学386机器上学过,可以循环画花

lanslort 发表于 2021-8-8 02:49

小学学过,还有计算机竞赛,不过对数学要求确实有点高,啥都不懂的情况下要求画曲线弧线啥的,结果就只能硬背。记得还有递归啥的当时根本听不懂,后来重新学写代码的时候才知道究竟是什么

citrus 发表于 2021-8-8 04:08

小学学的是Basic,还是某种学习机上类似被Dijkstra讥讽为“glorified assembly”的dartmouth Basic,有指令内存、数据内存、没有函数只能参数手动入栈然后跳转subroutine,等等后来学了CSAPP后感觉非常魔幻

当时别家的小孩有学logo的,看他的教材序言里还把logo吹得神乎其神。但自己实际学了几下,觉得“卧槽什么玩意儿完全学不进去”,就作罢了

bestwood 发表于 2021-8-8 10:04

小学的微机课想想非常硬核,硬件软件基础知识和发展史、打字练习、logo语言、DOS操作、win3.2操作(学了两节课就升级系统了)、win95操作、DOS版wps操作(好像没学几节课)、画图写字板等Windows程序基本操作、office三件套(最后考试让用ppt做个用到超链接的语文课件),还要在学这些的间隙打游戏

天气姐姐 发表于 2021-8-8 12:13

我们初中电脑课学的是vb,不过只给上过2节课,高中电脑课学的是vfp,只上了一学期,那时候是2001年那块,学电脑主流是flash和网页三件套,好多有条件的同学都自学flash了。

—— 来自 vivo V1981A, Android 11上的 S1Next-鹅版 v2.4.4.1

HellMaster 发表于 2021-8-8 19:20

我当年市少年宫用的是appleII的LOGO

nanoka111 发表于 2021-8-8 19:22

楼里有人提到了五角星角度的问题,这个其实只要有平面几何知识就能轻易算出来,方法就是先做一个正五边形,在里面做一个内接五角星后来进行计算,具体算法在此就不赘述了。
这种算法还可以扩展成做出任意角的“星”出来,程序看起来很简单,但是用这个却能画出非常复杂的图形出来:

这里展示的就是用Terrapin/Krell Logo来实现的源码,顶楼给出了一个实例。我后来还用VB、Java等编程语言实现这样的功能,这是用Python的海龟绘图实现的源码:
import turtle
turtle.speed(1)
def ninjastar(l, n, k):
    i=0
    while(i<n):
      turtle.forward(l)
      turtle.right(360*k/n)
      i+=1
    return
ninjastar(200,18,7)

nanoka111 发表于 2021-8-8 20:08

在这里贴一些旧作吧,这些其实是我自学一本Logo书的作业解答,当时用的是PC版的LCSI Logo。
因为我的学校开微机课的时候已经用的是Windows系统了,所以我这些都是自学,代码都还留着,但现在也没时间重整了。

b0207191 发表于 2021-8-8 23:04

昨晚搜索了下linux下目前logo都需要x window?否则就报错



File "/root/.pyenv/versions/3.7.0/lib/python3.7/tkinter/__init__.py", line 36, in <module>
    import _tkinter # If this fails your Python may not be configured for Tk
ModuleNotFoundError: No module named '_tkinter'

riin 发表于 2021-8-9 01:07

小惠儿 发表于 2021-8-9 10:45

小学学过。
页: [1]
查看完整版本: Logo语言回顾