一个新手学习C和Scheme会同时被认为是不好的做法吗?

时间:2010-08-07 18:59:27

标签: c scheme

过去一年(?),我一直在使用C语言,直到现在才提前两个月,我决定更认真地对待我的学习。在语言的某些方面我觉得很舒服,但我知道按照任何人的说法,我仍然被认为是业余爱好者,并且还有很多东西需要学习。

最近,我没有听到任何关于在不同范例中采用一种方法有助于获得视角的好处,所以我想也许尝试学习另一种语言只会对我弱势的领域有所帮助。一般来说,C语言和可能的编程概念。

SICP被认为是每个程序员应该根据stackoverflow和大量amazon评论评论阅读的最有影响力的书籍之一,所以我自然选择了它 - 最近刚刚购买了精装本。我很高兴能够学到一些急需的经验,但我唯一担心的是,对于早期阶段的人来说,这是否会成为一个问题,因为我尝试用不同的范例学习两种语言立刻。我希望学习Scheme并且本书中的概念将帮助我以不同的方式思考C语言,而不是让我感到困惑。

任何洞察力都会很棒 - 无论是继续使用这两种语言,还是选择另一种语言来帮助我的C或暂时放弃第二种语言。我只需要一位经验丰富的人就此事进行见解。

8 个答案:

答案 0 :(得分:8)

学习两者将使您对两种语言的优点和缺点有很好的理解,以及两种截然不同的解决问题的方法。

玩得开心!

答案 1 :(得分:2)

我想你会没事的。它类似于同时学习数学和化学,大多数人管理得很好。 (除了那些不懂数学和化学,并加入文科的人;))

答案 2 :(得分:2)

如果您不熟悉编程,我建议您先从HTDP开始。是的,它是基于计划的,并侧重于递归,但其目标是为您提供一个框架,用于解决通常适用的问题。一开始看起来很无聊,告诉你你认为自己已经知道的东西,但不要撇去。他们用来处理问题的严谨方法很容易从方案和递归中转移出来,并且是一般的有用工具。

没有理由不同时学习这两种语言。它们是完全不同的,你不会感到困惑。如果你有时间只学习一个,C可能更普遍有用,但它们(按现代标准)都是非常简单的语言,因此学习这两个语言应该不是问题。

答案 3 :(得分:2)

大多数学术环境(大学,特别是)希望您同时处理多种新语言。 (并且现在几乎没有“仍然在学校”的早期阶段。)每个科目都将在有利于该科目的特征方面拥有自己的首选语言,每个教师都将拥有自己的首选语言,而且,他们老师,所以你只需处理它:)

只要你能将它们分开,那么语言本身并不是重要的部分。而是关注那种语言的作用以及你可以用它做什么。

回到我的学校,很容易告诉老人的新生。前者会谈论他们所知道的语言,后者会谈论他们使用过的设计和抽象概念。

请记住,语言只是一种工具。开发应该更加与语言无关,更多地关注手头的工作,只需使用正确的工具来完成这项工作。

答案 4 :(得分:2)

我不同意其他一些答案。这不同于同时研究两个不同的主题:你在C或Scheme中生成相同的输出(一个有用的计算机程序),但你以不同的方式进行研究。大学可能让学生同时使用不同的语言上课,但理论上,这些课程是由一个有思想的部门策划的,该部门试图避免让学生感到困惑。

虽然同时可以同时学习C和Scheme,但它们可能会对你不起作用。我建议您按照自己的意愿进行操作,但只要您遇到粗略的补丁,您可能需要考虑一次关注一个。如果您不熟悉编程,请关注HtDP。如果您对编程感到满意并希望学习C语 - 这是一个很好的目标! - 然后你可以专注于你用C编写程序的方法。关键是你首先要学习如何编写程序,然后你可以专注于学习特定的语言。

答案 5 :(得分:1)

学习编程语言与学习任何其他语言没什么不同。如果你可以同时处理学习西班牙语和法语,你可以处理C和Scheme。

答案 6 :(得分:0)

熟悉C和Scheme的另一个原因是几乎所有Scheme实现都提供了外部函数接口(FFI)。您可以在Scheme(或其他一些Lisp)中快速构建产品原型,然后您可能会发现需要优化代码的某些部分以提高速度。您可以在C中重写该部分,并使用FFI从Scheme调用快速C函数。或者您可能需要使用Scheme连接某些库(GUI,数据库等)。您的C专业知识与FFI相结合将为您提供帮助。

答案 7 :(得分:0)

学习C使我成为更好的Scheme程序员,反之亦然。在与Scheme和Common Lisp共度数年后,我花了一年的时间专门用C编程。当我回到Scheme时,表达自己要容易得多,因为我知道机器擅长的东西; C帮助我培养了很好的算法意识。在进入C之前了解Scheme允许我在学习标准习语时开发某些非标准习语。我认为既然这两种方式完全不同,而且它们都有自己的优势,它们是掌握的两种最佳语言。