python lisp_随笔:code.org与python,FoxDot,Lisp
随便写点,保持更新。
夏令营给学生讲python,结合code.org课程。
code.org中课程3和4内容比较类似,但是课程3不涉及变量内容,课程4则涉及了变量,函数等相对更加复杂的内容。
考虑到学生基础薄弱,直接讲解python上手难度比较大,所以让学生先闯关,了解顺序执行、循环、判断、函数以及在循环中使用函数、有参数的函数等内容,然后再对照已经编写的代码块,编写程序。如下图所示:
image.png
学生掌握了turtle基本命令之后,对照下面图形化的程序翻译成python代码。学习书法先临摹,这样看上去很浪费时间,但是大部分同学对于程序的掌握效果比较好。
在涉及到变量的时候,图形化中直接拖拽,但是python中,学生容易把变量名和字符串混淆,写出
length = 20fd('length')这样的代码,其实,在极客战记计算机科学2/3中学生也会犯类似的错误,对于变量的含义理解不够准确,一是确实比较难,相对抽象,二是讲解的不够清晰,但是对照图形化程序,学生在理解起来的障碍小了许多。
image.png
这个程序是六年级的小朋友写的,当然这个小朋友有信息学奥赛的基础。其他同学话费时间也都能做出来,有几个关卡,学生因为事先闯关了,写python代码比我快的多。几个高中生还能举一反三,写出不同的程序,思路很快,表示很欣慰。而且学生下课不想走,不再是因为玩儿游戏,而是想写程序(也可能是因为新的教室有空调)。
image.png
学生做出来也会玩儿的比较开心。
image.png
小家伙开学五年级,我本来打算让他画右侧的三个三角形,结果他嵌套了3个for循环,把整个图形画出来了。
image.png
image.png
未知图形。
然后,让所有学生,自己写出每关对应的python代码,比较顺利。
image.png
今天还熟悉了live coding,对于基于FoxDot的音乐编程有了初步的了解,SuperCollider是当前免费音乐编程软件的基础,SuperCollider本身语法会晦涩,但是基于python包装的FoxDot则非常简单易用,对SuperCollider中的各种函数进行了非常好的包装,体现了python作为函数语言的优势,如《流畅的python》一书中详细介绍的,python自定义的数据类型可以跟系统自带的数据类型有相同的操作,因为在横向上,python定义了一系列的模式方法,可以让自定义的数据类型,拥有跟内置类型完全相同的操作,len、str以及加减乘除、遍历等操作,可以方便的通过魔术方法实现,所以FoxDot为自定义的数据类型player对象,借用原来的位操作符>>>,实现了简洁到极点的代码,还用到了Python中列表的一些特性。
image.png
比如任意自定义的数据类型,只要定义了__bool__方法,就可以用bool()方法返回bool()方法返回True或者False,自己实现相关的逻辑;再比如,只要定义了__len__方法,就可以用内置的len()方法返回数据的长度,《流畅的Python》中用的是纸牌的例子。
再次想到lisp语言,lisp语言非常神奇,是数学家发明的编程语言,虽然我们说编程的基础是数学,但是现在很多编程语言是工程师发明的,很多语言,核心很简单,库非常多,非常强大,像是用拖拉机发动机驱动航天飞机,比如Fortain,而lisp,核心就很强大,也很容易扩展,就像欧式几何,用几条简单的公理就可以扩展出整个系统,自己造轮子非常容易,自由度非常大,造轮子非常的方便,具体可以参考《黑客与画家》一书。
image.png
python中有很多借鉴lisp的特性,但是连lisp的缺点也借鉴了。python中定义加减乘除灯运算符、函数的语法是不同的,而在lisp中,运算符、函数的定义语法是相同的,比如:
(+ 1 2)(add 1 2)+号是运算符,add是自定义的加法函数,形式高度统一,非常方便的,一层层的构建函数,构建不同层次的抽象,底层的语言构建上层语言,然后用上层语言构建更加抽象的语言,就像是,c到python库,到python代码,到图形化等等,反正这些东西了解一下是非常有意思的,看来自己还不是真的了解,因为说的并不透彻。
我们教学的时候,用图形化,其实屏蔽了很多细节,随着教学的展开,逐渐的把更多的细节暴露给学生,比如上面随机颜色的实现,然后是python,大部分学生,学到turtle就够用了,但是,也许还有同学会深入到tkinter,深入到tcl语言,深入到c语言和操作系统,这时候,他可能已经是计算机专业的学生了。
下笔千言离题万里。
python lisp_随笔:code.org与python,FoxDot,Lisp相关推荐
- vscode python插件_黄哥Python:VS Code 10个Python 插件
转载自https://medium.com/issuehunt/10-visual-studio-code-extensions-for-python-development-de0be51bbeed ...
- visual studio code Python终端运行_黄哥Python:VS Code 10个Python 插件
转载自 https://medium.com/issuehunt/10-visual-studio-code-extensions-for-python-development-de0be51bbee ...
- vscode开发python使用教程_在VS Code上搭建Python开发环境的方法
web-based installer 在线安装 executable installer exe安装 embeddable zip file 内嵌版本 3.在VS Code里安装 python 插件 ...
- 微软 python_微软推出 Pylance,改善 VS Code 中的 Python 体验
微软宣布推出一种新的 Python 语言服务器,名为 Pylance,其可利用语言服务器协议与 VS Code 进行通信.Pylance 这个名字是对 Monty Python 的 Lancelot ...
- jupyter notebook python插件_VS Code Python 将支持 Jupyter Notebook
9 月 21 日,在 PyCon China 2019 上,来自微软开发工具事业部的资深研发工程师韩骏宣布了一项 VS Code Python 的全新功能:Visual Studio Code Pyt ...
- 微软推出 Pylance,改善 VS Code 中的 Python 体验
源自:编程派 微软宣布推出一种新的 Python 语言服务器,名为 Pylance,其可利用语言服务器协议与 VS Code 进行通信.Pylance 这个名字是对 Monty Python 的 La ...
- visual studio code Python终端运行_VS Code 6 月 Python 扩展更新
优质文章,第一时间送达! 微软发布了 6 月的 Visual Studio Code Python 扩展更新,此版本除了解决 53 个问题外,还开发了新功能,例如逐行运行和启动页面. 逐行运行(Run ...
- 在visual studio code中配置python以及解决中文乱码问题
安装好 visual stuido code (下面简称 " VSC ")后,要想使用它运行调试 python 代码还需要做一些工作以解决下列问题: 搭建 python 环境 pr ...
- github怎么搜索开源的代码_5.2.PYTHON开发利器之使用VS Code+GitHub进行python开源项目开发...
上一节介绍了使用vscode+Git进行python程序版本控制,详见5.1.PYTHON开发利器之使用VS Code+Git进行python程序版本控制 0.前言 GitHub是目前最大的开源代码托 ...
- vscode配置python2和python3_VS Code中配置python版本以及Python多版本
VS Code中配置python版本 VS Code十分方便配置python的版本: 可以选在在本地setting.json或者全局setting.json文件中配置: python.pythonPa ...
最新文章
- 在Intelij IDEA中修改maven为国内镜像(阿里)
- jsp页面修改成html页面
- Apriori算法简介及实现(python)
- Jedis的Spring配置
- C#之foreach语句
- linux源码文件名,Linux中文件名解析处理源码分析
- 马斯克的星链计划对互联网有哪些影响?
- 重装 Windows 7 系统后电脑出现乱码怎么办
- Kotlin — 使用IDEA运行第一个Kotlin程序,打印“Hello World”!
- 把Unity的jdk环境添加到环境变量
- 阿里巴巴Java性能调优实战(2021华山版)
- Python实现读写txt文件的方法
- java使用itextpdf生成 pdf (支持table)分页
- STM8L的LCD接口详解及驱动程序
- 7-5 厘米换算英尺英寸
- 动图ps在html不动,教你如何用ps把动态图片加到静态图片上
- 软件测试 | 测试开发 | Git分支管理搞定在线合并和本地合并
- 分布式数据库技术金融应用规范3项标准出炉,巨杉数据库参与制定
- 拼多多校招内推编程题1 最大乘积
- 如火如荼的「云原生」,你了解多少?