大脑语法

让我们融合编程和散文

我对编程语言着迷。 不只是与我互动以完成工作的人。 我涉猎了很多,并且被动地关注了更多语法的更新。

您可能会争辩说语法并不像语义那么重要,而支持语言的整个生态系统也是如此。 这些是公正的观察结果,但对我而言,语法是烟雾,不仅表明火的存在,而且还表明燃烧的是哪种材料。

许多语言都是为解决特定类型的问题而设计的,然后随着受欢迎程度的提高,喜欢它的人希望它解决越来越多的问题。 但是,在语法上表达这些第一个问题时,很容易揭示出最初的意图。

我发现以其他语法表示时,有些问题更容易理解。 我将通过将人脑想象为工作记忆非常有限的计算机来试图解析一个语句的含义来证明这一点。

以下摘自史蒂文·平克(Steven Pinker)的《风格感》

我严重怀疑,试图修改宪法是否会在实际水平上起作用。 从理想的角度来看,宪法修正策略可能更有价值

在阅读此解析器时,我的头脑中必须将第一句话的概念保留在变量实际 级别上 ,声明新的期望级别 ,然后对两者进行比较以找出它们的共同点推论通用性是否切实可行,以及它是否是有价值的追求。

Pinker还提供了另一种句子:

我怀疑试图修改宪法实际上会成功,但是渴望实现宪法可能是有价值的

在这里,我只需要一个变量,这个概念已经被合并,并且我可以轻松地处理它是否实用以及是否有价值。

重要的是,这里的值不是第二句话的简洁性,而是它为我节省了宝贵的内存空间来考虑所有这些含义的事实,因此为我节省了一些时间。

您应该可以从该示例中看到,当语法被设计为可用来理解宪法修正案的概念时,我的想法要容易得多。

现在,想象一下我向后工作。 首先阅读第二篇文章可以使我立即理解第一篇文章。 我有一个缓存的结果集,我知道它是否可行,我知道它是否有价值,现在我可以用自己喜欢的任何方式来表示这些信息; 例如在第一段中的表示方式。

这种逻辑也适用于学习编程中的新概念。 让我以回调为例。 如果我是第一次向人们介绍这个概念,那么我当然不想在Swift中显示示例:

这里有很多事情可以吸引我们的注意力,使我们的学习者不知道回调是什么以及回调是做什么的,就像我必须在参数(结果:String)-> Void和 {s的定义中定义函数类型的方式一样。在…}中作为匿名函数。

但是,仅查看用javascript实现的此解决方案,就可以准确地告诉我们回调的作用:

在这里,匿名函数的定义与标准函数定义几乎完全相同,因此仅查看一下它就知道它是什么以及它做什么。 在回调的末尾,我们也没有奇怪的输入,好像来自lisp的东西试图用短矛刺穿Visual Basic中的东西。

不要以为我说JavaScript是一种很好的教学语言。 我认为这取决于您要教的内容,人们可能会制作出令人毛骨悚然的JavaScript,尽管对样式有很多强烈的意见,但没有设定的标准,这可能就是为什么大学更喜欢Python的原因,因为Python具有自己的禅。

鸭类输入法也有其自身的问题,当涉及到多态性时,这是很糟糕的,因为它减轻了记住接口到大脑的需求,正如我前面所说的,它限制了它可以容纳的变量数量。 我宁愿让某个人完成编写接口的工作,并让他们在甚至编译他们忘记实现一个方法的程序之前就知道它们,而不是遇到运行时错误,因为他们必须手动记住他们需要实现的每个方法。

不同的语法通常可以更好地表示不同的问题,并且学习一些Scala可能有助于您更好地利用C#中的那些收集方法。 一点点JavaScript,可能会让您更好地了解Alamofire想要达到的目标。

如果您探索了其他语言,则在使用lambda进入Java和C#之前会先使用过。 地图/减少? 旧消息。 演员? 那些字面上比我大。 两次阅读同一本书,可能会揭示您错过的微小细节,但新的想法来自阅读其他内容。