背景:19世纪的德国考古学家海因里希·斯利曼当然以他成功地探索和挖掘特洛伊城而闻名(这是荷马伊利亚特特洛伊的一个实际考古遗址)。
然而,他同样以成为令人惊讶的语言学习者而闻名--在两年的时间里,他学会了流利的荷兰语、英语、法语、西班牙语、意大利语和葡萄牙语,后来又学了七门,包括现代和古希腊语。
他最著名的方法之一是比较一篇已知的课文,例如用一种流利的语言写一本书,用一种你想学的语言把一本书翻译得很好,然后并行地读一遍。(各种来源引用Schliemann所用的书作为“圣经”,或者,如上面所述的,是一本小说)。
现在,关于实际的问题。
是否有人使用(或听说)相当于Schliemann的方法来学习一种新的编程语言?,例如,不要以参考资料和教程为基础,而是采用一组比较全面的程序,这些程序已知在两种语言中都有实现类似/相同算法的高质量代码,并通过比较它们来学习。
我好奇的是,要么是个人应用这种方法的经验,要么是对某些已发表的东西的引用,或者是是否存在可用于这种方法的代码库?
让我思考这个想法的是Euler项目和我在C++、Perl和Lisp中看到的一些代码片段。
发布于 2010-02-18 00:37:52
Rosetta码可能是有用的。引用该网站的资料:
罗塞塔代码是一个编程切口网站。其想法是以尽可能多的不同语言提出相同任务的解决方案,展示语言是如何相似和不同的,并帮助一个人在一种方法中解决另一种问题。Rosetta代码目前有372个任务,涵盖197种语言,尽管我们没有(也不可能)有每种语言的每项任务的解决方案。
发布于 2010-02-18 00:19:39
我认为Schliemann的方法效果很差,因为创建一种新的编程语言的要点之一是引入新的话语对象和转移控制的新方法。在Schliemann比较两种文本的方法中,语篇的对象总是相同的,只有用来谈论它们的语言是不同的。
如果所讨论的语言非常相似,Schliemann的方法可能有其用途。假设您了解Java,并且希望学习C#,反之亦然。或者改变OCaml/F#/SML系列中的语言。但在大多数情况下,我怀疑Schliemann的方法会弊大于利。
发布于 2010-02-17 17:33:45
在一种语言中实现某事的最佳方式不太可能在另一种语言中遵循相同的模式。因此,很难找到对应点。采用这种方法可能会教会您如何使用您正在学习的语言进行糟糕的编程--看看以Java作为第一编程语言的人用C++编写的所有糟糕的类似Java的代码。
编辑:代码中的典型java:
string * s = new string;而不是采用C++方式:
string s;https://stackoverflow.com/questions/2282928
复制相似问题