【问题标题】:Newbie teaching self python, what else should I be learning? [closed]新手自学python,我还应该学什么? [关闭]
【发布时间】:2009-04-30 07:08:06
【问题描述】:

我是编程新手。我有 1 个学期的计算机科学(我们使用 Java)。我在课程中获得了 A 并且能够完成分配的所有事情,但是我不确定我是否真的理解它。我忽略了文本并通过查看示例程序然后反复试验来学习。除了两个会 Java 或其他 OOP 语言的人之外,我都领先于全班。

我想学习 Python。我还将用我拥有的额外部件构建第二台 PC 并使用 linux。基本上,我想提高我对计算机的了解。这就是我的动力。

现在学习python有什么好的编程理论书籍有用吗?或者我应该阅读更多关于计算机如何在最低级别运行的信息?我认为我知道的不够多,无法提出我想要的问题。

我想为了简单起见,我在问我应该知道什么才能充分利用学习 python。这不是为了职业。这是出于一种想知道的愿望。我不再是计算机科学专业的学生(它也不会直接应用于我预期的职业。)

我不希望在“30 天”或“1 周”之内学习。所以,从一个非常基础的水平开始对我来说很好。

提前致谢。我进行了搜索,并没有完全找到我要找的东西。

更新:感谢所有伟大的建议。我在工作中发现了这个网站,但在我的家用电脑上找不到它,所以我现在才开始阅读。

【问题讨论】:

    标签: python theory


    【解决方案1】:

    我的建议始终是从高级抽象开始。您不需要知道逻辑门是如何工作的以及如何使用它们来构建 CPU —— 这是很酷的东西,但是一旦你搞砸了,它会让 很多 变得更有意义在更高的水平。因此,Python 是作为学习辅助工具的绝佳选择。

    How to Think Like A Computer Scientist: Learning With Python 可在 Internet 上找到,它是对使计算机运行的高级概念的极好介绍。它甚至是特定于 Python 的。

    如果您想让您的大脑由内而外,SICP 会做得很好。不过,我不推荐它作为第一篇文章;这很沉重。

    这两本书都是高水平的。他们不会教你任何有关内存结构或 CPU 实际功能等低级细节的知识,但无论如何我都会保留这些内容。

    D'A

    【讨论】:

    【解决方案2】:

    对于您问题的 Python 部分,我强烈推荐 Mark Pilgrim 的 http://www.diveintopython3.net/。这是免费的,而且结构很好。

    Python 是个不错的选择,你会玩得开心!

    【讨论】:

      【解决方案3】:

      http://www.pythonchallenge.com/

      我认为这个挑战非常适合接触主要的 Python 优势,并且有一个不错的论坛,每个级别都有很多有趣的 Python 线程。

      【讨论】:

        【解决方案4】:

        这在很大程度上取决于您学习 Python 的总体目标。您是将其视为学习第二语言还是更好地了解计算机以及如何有效地使用编程语言?

        从听起来你想更好地了解计算机并成为一名更好的程序员的情况来看。学习一门新的语言,比如 Python,在这方面可能对你没有帮助。如果您有兴趣,我仍然建议您学习 Python,但是一旦您学习了一种编程语言,学习一门新语言的大部分时间就是熟悉语法和数据类型(通常)。

        您曾提到您不确定是否理解所学课程中的材料。如果您觉得自己不了解基本概念(例如循环、类等),那么学习 Python 将有助于您理解编程,因为大多数书籍/指南都会重新审视这些概念(Learning Python,第 3 版应该对此有所帮助)。如果您了解这些概念,但不确定如何应用这些概念,那么我的建议是学习数据结构和常用算法(例如排序、搜索等)。

        就个人经验而言,我不知道如何将我从入门编程课中学到的知识应用到个人编程项目中。通过提供基于这些先前知识的算法/数据结构,从课堂上学习数据结构有助于巩固我以前学到的那些概念。这门课也让我对使用这些数据结构的问题有了不同的思考。

        要了解不同类型的数据结构,请参阅:http://en.wikipedia.org/wiki/List_of_data_structures。通常,每个数据结构都用于特定目的(例如,二叉搜索树适用于搜索已排序的信息)。不幸的是,我没有任何书籍推荐(我们班没有使用书籍)。谷歌搜索“数据结构”应该是一个很好的起点。

        数据结构也让我思考实现的效率如何。算法的“复杂性”决定了一段给定的代码运行多长时间。这样可以轻松比较其他实现并确定哪个更好。

        我还想评论说,在学习计算机概念时,最好的学习方法就是边做边学。一本书/一门课只能解释这么多,其余的你必须自己学习。每个人的学习方式都不同,而编程是一种获取您阅读的材料并以您最能理解的方式思考它的方式。

        我希望我回答了你的问题。在这一点上,你真的不需要担心底层硬件。这有助于了解您是否打算将其作为职业(您不是),或者想要针对您正在运行的硬件进行优化(在这种情况下,您不想使用 Python) . Python 是学习数据结构的好选择,因为它为您实现了很多数据结构,但了解它们的用途很重要。

        如果您还在上学,请参加数据结构课程,看看您的想法。如果你喜欢它,我建议重新考虑编程/CS 在你的职业生涯中的作用。你不必主修它,但考虑一个辅修或至少一个利用你正在学习的这些技能的职位。我这样说是因为尽管这不是你的专业,但你有兴趣了解计算机的工作原理并采取主动行动,例如学习 Python、构建自己的计算机和安装 Linux。

        如果您还有其他问题,请随时提出。祝你好运!

        【讨论】:

          【解决方案5】:

          Python 是一种高级语言,因此了解计算机如何在最低级别运行不会给您带来太多直接好处。

          不要误会我的意思 - 我坚信计算机的低级操作,例如汇编语言和硬件,是每个优秀程序员都应该熟悉的东西,因为它确实可以帮助您更有效地使用您使用的任何语言(高级或低级)进行编程。但在您获得相当多的经验之前,它不会对您的 Python 编码产生太大影响。如果您刚开始使用 Python,我建议您暂时远离计算机的低级操作并专注于 Python 的基础知识。一旦您对此感到满意,您就可以继续使用 C 之类的东西,然后开始研究一些较低级别的东西可能是合适的。

          至于你应该知道的……不多,我猜。 Python 是一门很棒的编程语言。它使简单的事情变得简单,但它足够丰富,可以让你按照自己的方式工作,直至达到高度的复杂性。我建议可能看一个教程;我碰巧知道的是on the Python website,但我并不是说它一定是最适合你的。 Google 搜索应该可以为您提供很多入门知识。

          【讨论】:

            【解决方案6】:

            几个月前,我开始使用 Python(作为我的第一门编程语言)。我会推荐Learning Python, by Mark Lutz 开始。但请记住,要学好,关键是要思想开放、有耐心、愿意努力工作并找出你不理解的东西。

            玩得开心!

            【讨论】:

              【解决方案7】:

              我建议看http://www.diveintopython.org/的在线书籍来学习python。

              至于 python 项目,我会尝试学习 Django 框架。它是用于构建 Web 应用程序的框架。他们有一个很棒的tutorial 可以开始使用它。这也可以让您体验在 Linux 机器上构建网络服务器。

              【讨论】:

              • 谢谢,对 Django 感到非常兴奋。
              【解决方案8】:

              增强我对计算机的了解

              嗯,你到底是什么意思? Python 或任何其他高级语言旨在隐藏所有令人讨厌的细节。这就是为什么它适合非专业人士(例如科学家)的原因之一。

              如果您想了解实际工作原理,您应该学习纯 C。但话又说回来,如果您不打算从事与 SC 相关的任何职业,那么它没有多大意义。学习一些更高级的算法和数据结构。这会让你变得更有趣、更有用,并且与平台和语言无关。

              【讨论】:

                【解决方案9】:

                简答:全部

                长答案:

                学习你的第一语言总是一个挑战,在你体验过 Java 之后,许多其他语言看起来会简单得多。也就是说,学习编程语言的真正挑战是学习何时使用特定语言——你可以在时机成熟时找到适合你选择的任何东西的合适文档。

                作为一个具体的开始,跳到维基百科并浏览他们的categorical list of programming languages,点击所有你听过的名字(以及任何其他吸引你眼球的名字),如果文章有代码示例,请给出一两分钟沉浸其中(当然,本文的其余部分会有所帮助)。这里的重点不是要掌握每一种语言(这(1)毫无意义,(2)不可能),而是要掌握现有的语言。对于任何一种语言,都有少数其他类似的语言,如果您至少阅读其中大多数类别中的一种语言,那么您将掌握相当大的编程领域。当一个新项目出现时,它让你想起了你发现的某种语言,你可以学习那种语言作为项目的一部分。这听起来可能需要做很多工作,但是在使用第五大语言之后,你就会完全数不清,只是在不知不觉中一直在学习新的语言。

                当您停止将一种语言作为您的母语时,您将能够从其他语言的示例中学习,即使您从未使用它们进行过编程。就个人而言,我只写了几个 Haskell 程序,但是能够阅读 Haskell 让我接触到了很多想法,我可以在更实用的 Scala 和 Python 程序中重复使用这些想法(哦,是的,在你之后学习 Python,浏览一下 Scala,你可能永远不会再使用 Java)

                即使找到最适合工作的语言也不是全部。在你的工具箱里有很多工具,你可以用你能用的最简单的语言编写项目的每一部分,从而在很短的时间内拼凑出令人惊叹的东西。这可能并不适合所有项目,但是,男孩,你能做一些令人印象深刻的演示吗?

                需要很多年才能达到没有编程语言完全陌生的地步(或者至少在一天以上的黑客攻击中是陌生的),但我认为这是一个非常健康和现实的长期计划。征服每个粗糙类别的代表性样本。祝你好运!

                【讨论】:

                  【解决方案10】:

                  由于 Python 不是我的第一语言,我发现 Python Cookbook 对学习很有帮助

                  1. Python 的能力
                  2. “pythonic”的惯用方式。

                  【讨论】:

                    【解决方案11】:

                    编程语言教学总是与学习时的陈词滥调联系在一起。 “编写程序来学习编程”。我也会提出同样的建议。

                    如果您打算从基础开始。这当然是最推荐的起点。它很长,但值得所有时间。 http://www.diveintopython.org/

                    因为您对 Java 有一定的了解,所以这对您来说可能会更好。 http://www.swaroopch.com/notes/Python。启动 python 2.x 或 3.0。我个人是 python 3 的粉丝。但对于初学者来说,可能很难获得示例和在线程序的参考。所以对你来说 2.x 可能会更好。但我把它留给你。

                    就像我开始“编写程序..”一样。你可以从这里开始。

                    1. http://www.spoj.pl/ - 一个编程挑战网站,您可以在其中选择各种主题,主要是算法,并拥有庞大的问题数据库。当然,编程语言的选择取决于您。
                    2. http://projecteuler.net/ - 一个数学问题的网站,在这里你只需要提交一个答案,这里允许作弊,所以可以随意借用别人的逻辑,但你可以自己写程序。

                    在你认为你已经足够熟练掌握python之后,你可以试试这本书python cookbookhttp://www.amazon.com/Python-Cookbook-Alex-Martelli/dp/0596007973的菜谱。

                    对于应用程序开发,在您认为可以处理之后,从wxPythonPyQt 开始。我个人会建议 PyQt。它响应迅速,速度快,开发周期不错,我用 WxPython 很久了,但是我写的几个程序,很久以前,感觉不太好。再一次,这取决于你。

                    【讨论】:

                      猜你喜欢
                      • 1970-01-01
                      • 2010-10-17
                      • 1970-01-01
                      • 1970-01-01
                      • 2015-12-05
                      • 2010-10-16
                      • 2016-09-14
                      • 1970-01-01
                      • 1970-01-01
                      相关资源
                      最近更新 更多