在C或其他编译器语言之前学习Python是一个好主意吗?

Dre*_*ane 12 c python swig python-sip

现在我正在通过麻省理工学院的OpenCourseWare计算机科学课程的介绍.作为本课程的一部分,我正在学习Python语言.

我已经阅读了很多关于学习C的好处的事情.在我深入研究Python之前,我想知道我是否会因为首先学习Python而受到阻碍或帮助.

你认为我会从Python中养成任何坏习惯或类似的东西吗?

编辑:由于问题的主观性质,已更改为社区Wiki.

我很感谢第一个问题的所有重要答案.我真的被答案/评论的诚意所震撼.谢谢,很多人!

Pet*_*ell 21

在37年的上帝工作中,我知道有多少种语言,我可以告诉你,用Python工作可以让你几乎完全专注于使算法正确而不用担心细节.在我的生命中,我写了大约300-400,000行C,唯一可以忍受的方法就是创建我自己的OO环境.

C有它的用途,但是现在它们或者要么a)让你接近一块硬件,或者b)处理一个非常紧凑的循环.如果您需要它,请查看SWIG或SIP等工具,将您的C集成到Python中.

  • 如果你需要编写一个接近HW和/或具有非常紧凑的循环的Python扩展,那么Cython现在值得考虑.开源库需要C,而不是Python扩展,内核工作,一些实时嵌入式系统等. (4认同)
  • +1:经过30多年的其他语言编程,给我带来了气体和过早的吝啬,我喜欢Python. (2认同)

mjv*_*mjv 10

由于历史原因,C是许多程序员的第一语言,特别是上一代的程序员.然而,他们中的许多人(包括在这一代人中),在学习C之前,首先学习了一种或几种其他语言,通常是具有更高抽象水平的语言(Basic,LISP,Pascal,仅举几例).

我是后者(即C不是我的"原生"语言,虽然我很早就掌握了大会),我很相信与C语言认真"巡回"相关许多好处尽管如此,作为一个实际问题,我们中的许多人永远不会用这种语言编写任何后果.这就是说,我没有看到让C成为你的第一语言的任何令人信服的理由,或者任何以某种方式掌握Python(或Prolog或......)会在某种程度上影响未来十年的编程能力的任何暗示......

所以我的建议是:享受Python,接受它!
当你对编程有所了解时,请务必在某个时候学习C语言.它在包括编译器编写和/或操作系统的课程中尤其相关,并且如所述,在许多其他方面相关.你会看到除了可能的"表面"/语法陷阱之外(这些问题一直发生,至少对我来说,当我学习一门新语言或切换回我的一种旧语言,在接触到其他东西之后虽然),你应该没有C的问题,至少没有与你学习其他语言相关的问题.

  • @Peter Rowel:意见问题:-)对于自我引导教育而言,C的"必要条件"不如CS中的正式大学课程那么明显,因为后者将在操作系统和操作系统方面使用C语言. /或编译器设计(BTW,这两个主题都不可能是_direct_实际使用的潜在CS专业人士,但他们都非常有价值的教育经验).然而,就像学习拉丁语或古希腊语为更好的多语言学习一样,学习C和/或LISP有益于一个人的编程技巧. (2认同)

gre*_*eye 6

我不是专家程序员,但根据我的理解和使用,Python是一种非常简单和强大的语言,可以让你做任何你需要的事情.

使用C,您可以更好地控制正在发生的事情,这也意味着您必须自己编写所有这些细节,而在Python中有人为您完成了这些细节,您可以选择适用于几乎所有不同情况的选项.

因为C较低级别(更接近机器的实际工作方式),它被编译为更接近CPU所需的机器代码,而Python(更高级别的语言)最终不会那么快.

我认为从Python到C的转换痛苦将更像是"为什么我必须做所有这些?在python中,我将在一行中完成!"


Tim*_*ost 6

我只能提供学习C将使您更多地欣赏 Python和其他动态类型语言.我经常对熟练使用PHP的人说同样的话.两者的创造都划伤了一些严重的痒.不,它不像"当我年纪的时候,我在雪地里行走300英里到学校"这样的事情.

能够为变量赋值并让变量只是"自我调整"以存储您所提供的内容对于那些花费大量时间在多种体系结构上使用C的人来说,这是一项了不起的成就.

另外,在C中编写某种类型的多线程服务会让你真正体会到Python的可移植性.

还有其他充分的理由,力量,"更接近金属",理解内存管理以及学习编译器和优化.但是,我怀疑,第一件让你感到高兴的是更高层次的语言.

免责声明:我大多使用C.