BrainFuck适合作为少儿编程语言吗?

2024-11-19 阅读 70
更新于 2024年11月22日
Em......你这个标签,那我觉得很合适( ͡° ͜ʖ ͡°)
正经的回答:Brainfuck并不适合作为正儿八经的编程语言学习。
虽然Brainfuck因其特别简单的语法结构——单字符指令,在语法的学习上来说可以称得上是非常简单。而其运行时模型就是一个内存加上一个指针,就像控制着一个小人在一条直线上走路一样。
字符含义>指针加一<指针减一+指针所指字节的值加一-指针所指字节的值减一.输出指针所指字节内容(ASCII码),向指针所指的字节输入内容(ASCII码)[若指针所指字节的值为零,则向后跳转,跳转到其对应的]的下一个指令处]若指针所指字节的值不为零,则向前跳转,跳转到其对应的[的下一个指令处任何一个学过C语言的都能用下面这个对应关系快速看懂这几个操作符是做什么的。
BrainfuckC>++ptr;<--ptr;+++*ptr;---*ptr;.putchar(*ptr);,*ptr = getchar();[while (*ptr) {]}(以上表格取自维基百科https://zh.wikipedia.org/wiki/Brainfuck)
但也正因其指令太简单了,使得即使数值计算和指针移动上需要编写冗长的代码,单纯给一个内存单元设置一个数值就需要进行至少大量的自增/自减运算。
比方说你要给一个在当前单元上设置数值10,那么最简单的写法是++++++++++ 。
即使撇开重复指令这个问题(部分扩展Brainfuck语言允许进行指令压缩的写法,如+10就能表示上述指令),但即便如此,这个语言也没有子过程的定义,使得代码的复用变得麻烦,需要依赖大量的复制粘贴操作来实现功能复用。
而最重要的问题是,该语言难以阅读,这也是为什么这个语言被命名为Brainfuck最根本的原因。
比如下面这是一个打印“Hello World!”的代码,你能看懂吗:
++++++++++[>+++++++>++++++++++>+++>+<<<<-]>++.>+.+++++++..+++.>++.<<+++++++++++++++.>.+++.------.--------.>+.>.而这个性质对教学来说是毁灭性的,无法阅读,就几乎等于无法学习。当然了,肯定会有人说可以加注释,加换行等等,这些当然都可以增加阅读性,但如果你每句话都需要通过增加注释才能方便阅读,何不直接找个阅读性更好的语言来学习呢,例如像《Human Resource Machine》(官方中文名是《程序员升职记》)就比Brainfuck好多了。也还有些别的编程游戏也是做的很有趣味的,例如《LightBot》,这个在手机、平板上也能玩。
如果真要把Brainfuck往少儿编程的方向做的话,或许考虑同样做成《Human Resource Machine》这样的风格能增加一些趣味性,倒是有那么一点可能可以发展少儿编程吧。
《Human Resource Machine》 Steam商店页面图片题主如果确实是想让弟弟学少儿编程,那还是报Scratch那些吧。因为现在铺天盖地都是这种培训,资源可能比较多。而且更重要的,对于家长来说,甭管这玩意学了有没有用,但这些培训机构真是在给你带孩子啊(悲)。
其实我自己最近就在做一个基于Brainfuck的游戏,不过大概率不会适合孩子玩,风格定位大概类似A=B,而且风格会更复古一些。
以防读者不知道《A=B》是什么,这里发个《A=B》的Steam商店页面:
不得不说,其实很多难以阅读的语言如果以解密的方式去看待是挺有趣的。
下面是我正在开发中的游戏画面(仅为开发画面,不代表最终品质):
00:21我这个的话做好Demo应该会免费放上去http://itch.io的,至于会不会有后续就再说了。
其实http://itch.io上有挺多不错的Brainfuck作品,其中最有名的应该是brainiac by 0x72。但是内容都太少了,几个题目就做完了。而Steam上也有一个Brainfuck的游戏来着,名字也直接了当叫Brainfuck:https://store.steampowered.com/app/933970/Brainfuck/,界面还挺好看的,但就是TMD有恶性Bug,属于是核心功能都没做好,而且开发者也并没有做任何的回应和更新,应该是弃了。
从这个英文名,就不想让孩子去学。。。
你都知道Brainfuck了,想必你肯定知道他绝对不适合少儿学习(