4

很难找到一个似乎适合我的问题的标签,但我希望这能起到作用。

无论如何,我想学习编程,我目前正在学习超过 10 周的 Python 编程课程。我现在是第 5 周,我觉得除了语法之外我学到的东西不多。

我已经尝试学习编程,因为我现在不知道 10 年了,而且我总是在一两周内学会语法,但在那之后我就会陷入困境并放弃。好吧,这次我不想放弃,所以我会在这里问。

作为程序员,我如何学会思考?不管我读了多少教程,他们教的只是语法,而语法是最简单的部分。如果我学到了一件事,那就是你不能只用语法来编程。

编程语言并不重要,因为正如我所说,我很快就掌握了语法,而且我几乎玩过大多数编程语言。

那么,是否有任何教程或文章,甚至书籍可以贯穿制作程序的思考过程?

我认为最能教给我的将是您详细了解制作程序的过程。不像那些你做一千个小程序的书,而是深入了解一个程序的制作。///编辑谢谢大家,你们真的帮了大忙,我想我可以从这里继续!

4

5 回答 5

5

Congratulations to learning the syntax! As you know the syntax, you can read real programs that other people have written. You can try out modifying them. As you gain experience reading and modifying programs, you will be able to write your own.

As Eric S. Raymond wrote:

You can learn language features — bits of knowledge — from books, but the mind-set that makes that knowledge into living skill can be learned only by practice and apprenticeship. What will do it is (a) reading code and (b) writing code.

http://www.catb.org/~esr/faqs/hacker-howto.html#skills1

于 2013-11-03T11:47:38.487 回答
2

有趣的是,您已经确定了我所见过的每门编程课程都简单地认为是给定的东西。像程序员一样思考。本质上你要么做要么不做,如果你不做,你仍然可以编程,但这不是自然的。事情是很多人可以并且可以做到,但没有意识到他们是。

暂时忘记语法。

假设您正在清理一个带有三个架子的厨房橱柜,并且您不想最终不得不清洁橱柜中的所有物品。所以你清空橱柜,从底部开始(从顶部做会弄乱下面的东西),然后从顶部架子向下清洁(否则你会把垃圾扫到下面新清理的架子上)。如果你能这样想,你就可以成为一名程序员。

有些人比其他人更快地找到解决方案,但成为程序员的真正诀窍是语法和语义只是用特定编程语言表达解决方案所需的噪音。

首先获得解决方案,然后以您选择的语言实施。最终可能会有更好的用那种语言表达它的方法,但先试着用一种你觉得自然的“语言”表达它,然后再翻译。希望这可以帮助

于 2013-11-03T12:32:43.100 回答
1

一个很有趣的问题,尤其是对我作为老师的我来说。

编程本身并不难。这与人类做事的方式非常不同——这就是你必须习惯的。永远记住:计算机是愚蠢的。它无法猜出你想告诉它什么。你总是要告诉每一步。它不像写一本食谱(尽管这是一个常见的比较)——在食谱中,你可以假设任何正在阅读它的人都可以填补你可能留下的小空白。电脑不行。
对我来说,有两件事很重要。

首先,也是最重要的一个:练习。这都是关于练习的。我从来没有读过任何关于编程的书,尤其是没有教程。这对我来说都是尝试和错误。看了代码,尝试理解,尝试复制和修改。边干边学。当然,这可能不是每个人都喜欢的学习方式——但是查看他人的代码并理解它(不是试图理解——阅读、复制和调试它,直到你这样做)是学习新技术的最佳方式。

第二件事是:不要凭直觉思考——坚持只逻辑思考。我经历过很多人阅读代码,并没有完全理解它,然后说“好吧,我知道它应该做什么,所以那里的那些行似乎是这样做的”。这对学习编程没有任何好处。该代码仅执行那里所写的内容。一步步。如果您看不到这将如何解决,那么代码很可能没有按照您的想法进行。
编写代码也是如此。在开发程序时,您要做的第一件事就是它应该做什么。但这是一种非程序形式 - 你的 midn 在程序上不起作用。它直观地工作。在人类的头脑中,一切都是关于想法和原型的。没有精确的算法,我们的头脑还不够强大,无法如此准确地完成所有事情。所以下一步是构建你的想法。把它分成小部分。比再次拆分那些。然后再次。直到您有很多简单的任务可以在几个步骤中完成(通常最多 10-20 步!)。为了不失去大局,制作图表,或者至少做一些笔记,说明所有这些小步骤最终应该如何协同工作。请记住:您的大脑将无法一次将整个大事情以程序方式整合在一起。至少我的不是;) 最后一部分是写下每一步。而不是将它们组装在一起。你完成了。恭喜。

于 2013-11-03T11:49:43.867 回答
1

当一个人开始学习编程时,语言语法是一个合乎逻辑的起点。它使初出茅庐的程序员能够在将运行的代码中正确地表达他们的想法和公式。但是,正如您正确指出的那样,语法在编程的“更大方案”中意义不大。

我不知道您阅读的教程涵盖了“更大的方案”,我想不出任何具体的教程或书籍。但是,我建议您找一个可以教您有关数据结构的资源。如果你不熟悉这个概念,数据结构是计算机科学中一个非常基础的话题。该主题来自以下问题:“一个人如何在时间和内存使用方面有效地处理、存储和访问信息?”

对于许多大学计算机科学专业的学生来说,数据结构方面的课程将是他们在介绍像您所描述的那样的介绍之后的第二门课程,并且通常是真正的计算机科学开始的地方。此外,数据结构将为您提供一个值得继续学习算法的基础,这是计算机科学中一个更重要的概念,它涉及如何以一种合乎逻辑的、逐步的,最重要的是,可重现和可扩展的方式解决问题.

再一次,我很抱歉没有任何链接,但我希望我已经为您提供了一些主题来启动一些谷歌或亚马逊搜索。祝您对 CS 的自学追求好运!

于 2013-11-03T11:52:56.177 回答
0

您必须有一个目标或目标为自己制定一个项目,计划并去做。您将在途中学习负载,如果您遇到困难,请发布一个问题。:) 我知道从书籍、视频和在线教程中学习很容易,但是一旦你开始自己创造东西,你就会越来越擅长创造东西,因此你会成为上帝 :) 我的意思是程序员.

于 2013-11-03T11:49:42.817 回答