@
djoiwhud 虽然少儿编程几乎全是扯蛋,你说的也挺扯蛋的。
首先理解编程跟理解 Scratch 是两回事。Scratch 就没几个实操上的能作为典型的可编程要素,撑死只能教一些编程能做什么,而不是编程是什么;理解这个对理解编程也没帮助(编程能做什么根本不用通过理解编程就能想明白)。
其次什么叫“真理解”?你如何设计测试来检验的?
你甚至都没给出你期望的基准答案。如果预期是 a=b, b=c => a ? c 这种填空,正确答案是 = ,那 9 岁小孩不太可能做不到。这东西就是个智商题,要理解含义也就是一年级下二年级上的水平,即便正经通常是三年级教的。
如果你想要小学生讲清楚什么叫“关系”那就是强人所难了。这至少要求他们要把二元关系从无到有发明一遍,而没经过系统训练做不到。这跟心理学倒没什么“关系”,做得到大半是数学史上留名的人物。
反正我 7 岁时就知道=,在没提示的情况下分析明白等价关系大概用了 7 年。但是明白为什么等价类是“类”(而不保证是集合),又至少浪费了 3 年。人冯诺依曼 8 岁还口胡微积分呢,人比人气死人,你劳什子心理学只管事后诸葛亮观察放养炼丹的结果而不是预测积极干预的上限,是真没排面的。
历史也证明了,教育学和心理学都救不了新数学运动的失败。
@
ThomsKim 不选择“市面上比较流行的图形化编程”做得对,因为基本就是智商税。“培养兴趣”而不是教育解决问题的实际方法,从来就是人口红利下筛人的借口,连兴趣要投入资源就已经输了。
不过,我不觉得有谁能在理解清楚递归(不止是函数的递归调用)前真正理解清楚 for 这种 tail recursion 复杂语法糖;而理解 if 也够呛,因为大多数语言中 if 就是个 non-strict evaluation 的 special form ,只能当特例强行死记硬背(毕竟基础不好教 Church boolean 太不现实)。——不管天赋如何。
相比之下,不会用 if 和 for 写代码不是什么大不了的事。