25

众所周知,不同的人对不同的编程范式有不同的能力(例如,有些人在学习非过程语言,尤其是函数式语言方面有困难。有些人在理解指针方面有困难 - 请参阅 Joel Spolsky 的博客以了解这一点。有些人难以掌握递归)。

我最近阅读了一项研究,该研究着眼于某人的母语语法如何影响他们学习数学的速度。现在找不到那篇文章,但快速谷歌搜索找到了这个参考。

这让我想知道某人的母语文化或第一语言是否会影响他们对各种编程范式的能力。我对积极的影响更加好奇——例如,一些使某人更容易/更快地学习特定范式的特征,例如非常面向递归的母语语法。

需要明确的是,我正在寻找文化/语言语法如何影响同一个人对各种范式的能力之间的差异,而不是它如何影响不同人之间对编程的整体能力。

重要提示:我感兴趣的唯一答案要么是对科学研究的引用,要么是来自非常熟悉特定文化/语言的人的个人观察,包括他们自己的经验。

例如,除非您说中文或与大量以中文为母语的程序员广泛合作,否则我对您认为中文作为您的第一语言如何影响任何事情的看法不感兴趣。

我同意您的猜测不是基于科学研究,但请务必提供您对观察的合理原因的推理。

我对抨击文化不感兴趣(任何此类赞扬都将被删除或标记为删除)。

我对文化建设也不是特别感兴趣——我们都知道莱纳斯来自芬兰,俄罗斯方块是在俄罗斯写的,拉里沃尔是美国人。任何文化/国家都可以在任何学科中产生聪明的头脑。我对平均值感兴趣。

4

5 回答 5

29

免责声明:在我开始编程之前,我是一名文化人类学家,所以你知道我会在这里一马当先。

显然,一个人的历史会影响他们对任何特定任务的能力,但我认为这与一个人的语言的结构或语法关系不大,而是与该语言所在文化的特定物质条件有关。说。

例如,60 年代的一对人类学家走访了非洲的各个社区,测试了人们对各种视错觉的敏感性。这是一个经典的:

替代文字

在这种错觉中,底线看起来更长,因为连接它的斜线使它看起来在远处偏离。

这些人类学家发现,在许多非洲文化中,这种错觉根本不起作用——人们认为线条的长度相同。通过完善他们的研究,他们发现唯一容易受到这种错觉影响的人是在城市环境中长大的人。他们假设这种错觉不适用于来自偏远丛林环境的人,因为这些人很少或根本没有使用直角和在很远的距离看东西的经验。

我的观点是,即使你成功地发现了程序员的母语和他们在编程某些方面的能力之间的相关性,你也不能确定这种相关性不是虚假的。例如,您可能认为亚洲人往往是不好的司机,您甚至可以通过统计数据证明这一点。但是,如果您随后得出结论,“糟糕的驾驶”是亚洲人的某种基本特征,那么您将忽略一个事实,即亚洲人更有可能来自亚洲,因此驾驶汽车的经验要少得多(甚至汽车里),而比西方人(尤其是美国人)长大。

对于编程,我们可能会认为一种特定的语言会抑制编程能力,而没有注意到使用该语言的社会使用计算机的机会要少得多,因此使用该语言长大的人似乎没有多少编程理解某些编程概念的能力或能力。

简而言之,我不太相信语言会抑制任何人特别理解任何事物的能力。人类的思维过于灵活和适应能力太强,以至于无法做到这一点。

于 2009-09-23T00:01:34.197 回答
5

这似乎类似于 Sapir-Whorf 假设——一种语言的便利性会影响人们对某些主题进行思考的难易程度,或者用维基百科文章的话来说:

“语言相对性原理(也称为 Sapir-Whorf 假说)是这样一种观点,即不同语言固有的不同文化概念和类别会影响经验世界的认知分类,从而使不同语言的说话者思考和行为不同因为这些。”

http://en.wikipedia.org/wiki/Linguistic_relativity

虽然这里似乎没有明确的信息,但讨论似乎与问题相关,也许值得进一步探索。

于 2009-09-23T13:17:58.080 回答
5

只是一些随意的想法。我认为这种影响通常非常微弱,大部分时间都可以忽略,但它们确实存在,有时它们可​​以让我们感受到它们。

例如,在中文语法中,我们并不能完全区分复数和单数形式,但我认为我们中国人在理解 Perl 中的标量和数组的概念时不会有任何明显的困难。原因可能是这样的:虽然我们通常不需要特定的后缀或形式上的变化来指示某事物是单数还是复数,但我们确实有复数和单数的概念,并且我们主要依靠上下文来区分它们。在语法方面,中文的上下文可能比那些属于印欧语系的语言更重要。有时我们会省略很多已经提到过的东西,有时我们只是假设这些东西可以被听众隐含地很好地理解。无论哪种情况,我们都不会 不需要那些不定冠词和定冠词(a、an、the)或诸如 that、which 和 who 之类的关系代词,以表明它们是第一次被提及还是再次被提及。也许这就是为什么我对 Perl 的默认变量 "$". print; chomp; split; all act on $,这从未被提及过。但这是相当主观的。

我认为中文比印欧语言更具有含蓄和模糊的特点。例如,我们从不注意主语动词的一致性,也从不使用动词变位来表示时态。这可能意味着中国人倾向于使用一种不太合乎逻辑的思维方式。我的一位老师曾经用一个例子试图概括(或过度概括)中国非逻辑思维方式和美国逻辑思维方式之间的差异。

如果美国版的吵架应该是这样的:

“我可以舔你。” “不,你不能。” “我可以。” “不,你不能。” “我可以。” “你不能。” “能!” “不能!”</p>

中文版(翻译成英文)是这样的:

我可以舔你。你怎么敢!如果我敢呢?那你试试。尝试?嗯,你拭目以待。等着瞧?我不害怕。不怕?好的。你不逃。谁跑了?来舔

好吧,我同意中国人的思维方式与其他国家的思维方式可能存在一些差异,但这个例子看起来像一个刻板印象,因为中国人可能很容易转向使用美国版本。回到这个问题,我认为语言和文化确实可能会以某种方式影响程序员的学习过程,但这种影响绝对不会明显。也许是因为你所接触的文化让你对习惯某种编程语言、递归或其他什么的一些概念感到有点不舒服,但时间会解决它。

于 2010-04-06T08:29:00.723 回答
4

我最近阅读了一项研究,该研究着眼于某人的母语语法如何影响他们学习数学的速度。...重要提示:我感兴趣的唯一答案是对科学研究的引用,或者来自非常熟悉特定文化/语言的人的个人观察,包括他们自己的经验。

我在开始编程之前学了很多数学(足以算作“非常熟悉”),而 IMO 编程相对容易:更具体。

有时我想知道了解一种以上的人类语言是否有益:如果你只会一种语言,那么你可能会认为“猫”和“狗”这两个词是值,即猫和狗对象的同义词;但是如果你精通一种以上的语言,那么“cat”和“dog”就会变成指针:因为例如法语单词“chat”和“chien”指的是/指向与“cat”和“相同的对象”狗”,因此很明显,单词和对象之间存在区别。

令人失望的是,您发布问题时没有链接到启发它的文章。我想到了“反向波兰符号”,想知道这是否是原始研究中考虑的“语法”中的那种差异。

于 2009-09-23T00:18:48.077 回答
3

您引用的参考资料似乎建立在这样一个假设上,即使它更容易有助于学习。在我的理解中,有一个反作用:没有足够的挑战,你就学得不够。

有理论/研究(任何有联系的人?)语言的发展对扩大大脑皮层产生了至关重要的压力,从而“使我们成为人类”。(用非常达尔文主义的话来说:更多的灰质 ==> 更好的语言能力 ==> 更好的团队合作 ==> 作为一个群体更好的生存)。因此,语言复杂性对学习并不全是坏事。

(我唯一的资格是成为The Frontal Cortex博客的热心追随者,所以对此持保留态度。)


在德语中,我们有一个奇怪的数字顺序:10^0 和 10^1 位置互换,但其他位置是正常的(例如 25 是“五和二十”,125 是“一百五和二十”)。有人声称这使学习数字变得更加困难,因此德语应该采用更直观的顺序。

这对在您的脑海中进行加法有很大帮助-至少如果您保持在 100 或 200 以下-您可以先添加 10^0 位置并已经说出来/写下来,同时考虑到 10 的任何进位^1 个位置。

(这不会持续 10^2,我想无论如何都会由大多数人以书面形式完成)


另外:抽象。有些语言没有从对象中抽象出数字,“两个椰子”和“两个剑齿虎”不共享一个共同的“两个”词/概念。这样的语言可能对发展数学技能非常不利。在这里,语言中的抽象(分离数字和对象)很重要。

一般来说,我会说语言对塑造发展中的思想有很强的影响,我认为没有理由不将其扩展到文化。

当然,什么是“正确的复杂性”仍然是开放的——具体的语言特征是什么,以及如何影响总体改进与精英的建立(即“提高有天赋的技能,同时阻碍其他人”)。

有趣的问题,毫无疑问 - 期待其他答复。

于 2009-09-23T12:49:56.707 回答