【实验】用 elisp 教编程

我没接触过 parinfer

有考虑过,但我自己入门的时候,特别不喜欢数学性强的习题(例如 sicp 上的很多题), 让我“爽”到的,是那种写完了就能用的:比如我进行文本编辑时,发现经常想要跳到下一个空行,于是就基于 search-forward-regexp 写一个小命令来实现 —— 这种写出来之后我会特高兴。

基于此,我这次的教学实验会尽量避免数学题。

嗯,我之前考量过挺长时间,筛掉了不少方案,最终剩下了两个:一是 HTML/CSS/JavaScript 入门,二是 elisp 入门。最终选了 elisp,是因为我觉得 JavaScript 的语法比较“乱”,而我的策略是尽量降低入门难度,从而尽量减轻学习者 burn out 的可能性。所以想先通过 elisp 把变量、循环、函数……这些概念学会,再教 HTML/CSS/JavaScript

多谢。我之前基本是跟着 emacs 自带的 elisp intro 走,后来发现太多 emacs 独有的东西了。我的策略是尽量降低入门难度,从而尽量减轻学习者 burn out 的可能性,学太多 emacs 的东西会分神,所以这两天从 elisp intro 跳出来了,自己重新设计了教学计划和习题。

SICP 和 A Little Schemer 我觉得对初学者而言有些难,而且很多东西也应用不到其他编程语言上,我只挑了一些内容出来讲。

不好意思,没看懂。什么是指令模式?还有什么是『给每一行结尾加个句号,把手操作一比一写成代码就 OK 了』?是说 kmacro 转成 command 吗?

1 个赞

我觉得教编程思想要少涉及emacs的api,把elisp当作存粹的编程语言,教一些基本的语法和算法思路。

1 个赞

写得很透彻啊!

有点儿看 量子物理史话 的感觉

其实,如果你考虑学完之后应用到其他编程语言上的话,其实 Lisp 系本身就不是什么好选择。怎么说,现在主流的语言还都是命令式的思考方式;而 Lisp 或多或少带点函数式的思路。Lisp 世界的 OOP 和「主流」的 OOP 差别也是很大。就不说语言特性上的差别,第一眼的语法,就和其他语言差得太多了。另外,elisp 的绝大多数代码,跟其他编程工作中写的代码类似吗?如果说学其神而不是学其形,确实有效;但是这样的话,The Little Schemer 绝对是一个优秀的学习资料了。

1 个赞

我投scheme的R5RS一票,语法就50页不到的pdf,而且在Emacs中写,体验和写elisp也差不多。最近刚开始学elisp,感觉变量作用域各种千奇百怪,非常恐怖。

1 个赞

好些经典的 Lisp 入门书确实如你所言,例如 SICP 讲了好久才到 side effect。但 elisp 似乎挺命令式的,因为很多都是编辑命令,总是要输出点儿什么东西,也就有了 side effect。

OO 的话,我还没想好,因为觉得不算入门一定要学的东西,或者也可以留到 JavaScript 中教。

操作:移动光标到行结束,输入句号,一比一翻译成代码:

(goto-char (line-end-position))
(insert ".")
3 个赞

目前我比较困扰的是,怎么教英文不够好的人

1 个赞

请问,他读几年级,还是你被长辈逼得

已经毕业了,教着玩

更新 2020/04/16

之前我都是开 zoom 基本上即兴讲(因为之前主要是跟着 elisp intro 走,不需要太多准备),后来发现这样:1. 有时候因为我自己没想明白而耗费时间 2. 常常一节课两三个小时,不利于课后复习。

所以想到,可以就各 topic 分别录小段的视频,这样1. 讲得太差的话可以重录,2. 时长较短方便复习。

试了一下:【肉山编程入门课 2020年4月】1.4.1 把函数做为参数传递, apply, funcall_哔哩哔哩_bilibili

  • 大家有什么建议请尽管讲
  • 我平时很少写 lisp,所没太优化过编辑操作,大家看到哪里有提升空间的还望指点下啊
5 个赞

赞赞赞,行动派。

看了下视频,建议讲解时需要的用例提前敲一下,防止在讲解过程中再debug。还有就是可以说明一下reduce和mapcar的区别和使用场景,感觉讲解的不是很清晰。总之就是建议提前准备的内容要再细致一点,落实到文本,包括概念的理解,对比,用例的实现,总结提取本质的东西。这样在录制视频的时候更能条理清晰。这是我的理解。

另外,留练习的思路很棒,声音很好听,小伙子长得也不错。 :dog:

2 个赞

字号调大些,我眼神不好看起来费劲。可以用 C-x C-+ 调大。

多谢你的建议哈。

这次纯粹只是验证一下想法,相当于 prototyping,所以并没做充分的准备,如果实验结果尚可的话,我是有想法迭代打磨出一套『编程入门课』视频的 —— 这是为什么视频标题上有注明“2020年4月”。


只是有一点我还没想好,就是要不要在讲解过程中 debug:通常课程中好像不大会有,但我有时候又觉得『展示一段代码实际上是如何写出来的』也是教学的一部分,比如我自己,就挺喜欢看 Handmade Hero (直播从头写游戏的全过程)。

另外单纯从 emacs 的角度讲,网上有不少『展示某个特定的编辑功能』的视频,当然很有用,但我很希望也能看到『用 emacs 进行真实编程』的视频 —— 其实早期的 Handmade Hero 就是这样,我常常想如果能看到 @manateelazycat / @redguardtoo 这些高手的同类型视频就完美了。

1 个赞