为基于Logo的新语言选择语法



我正在构建一个由LogoWR (Tutle Graphics)的web端口组成的项目,但我想对语法进行一些更改,例如变量的命名方式。

原始:

:variable
新:

#number_variable
$text_variable
:indistinct (Can be number or text or other)

目标是训练儿童(大约10到14岁)使用变量。它还应该教他们类型转换(以及使用不同的变量类型),但是要用"物理视图"——总是显式地进行类型转换。我想要像$text = text(#number)这样的东西,这样用户就可以在不看到变量声明的情况下查看变量的类型。

问题是,在你看来,孩子们遵守这些规则是不是太难了?

这在很大程度上取决于孩子是谁以及他们所处的阶段。

初级程序员应该与类型隔离。在没有这种复杂性的情况下,有很多具有挑战性的东西需要学习。Logo是优秀的,因为它鼓励思维模式,如可编程性和问题分解,很早就有具体的结果。我相信你比我更清楚这件事。

在许多方面,除非孩子们已经掌握了基础知识,并且需要接受相当复杂的编程挑战,否则

类型是不必要的。专业程序员使用的许多语言(Python、Ruby等)都有类型化的值,但没有类型化的变量,并且它可以很好地解决他们领域内的问题。就我个人而言,我觉得把数字转换成字符串再转换成字符串比其他任何事情都更烦人。

如果您确实需要类型化变量和类型转换,我会避免使用看起来像普通函数的东西。还要考虑转换可能触发异常(或某种错误)。我想我更喜欢带有默认值的显式转换函数,或者as语法。

$text = Text.convert(#number, "?")
$text = #number as Text

它带我回到Basic的早期方言,非常痛苦。

最新更新