如何作为程序员思考?

时间:2013-11-03 11:30:26

标签: programming-languages

很难找到一个似乎符合我问题的标签,但我希望这能完成这项工作。

无论如何,我想学习编程,我目前正在参加一个超过10周的python编程课程。我现在已经进入第五周了,我觉得自己没有学到更多的语法。

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

我如何学习作为程序员思考?无论我阅读了多少教程,他们所教授的只是语法,语法是最简单的部分。如果有一件事我已经学会了,那就是你无法单独使用语法进行编程。

编程语言并不重要,因为正如我所说,我非常快速地学习语法,而且我几乎使用过大多数编程语言。

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

我认为最能教会我的是那些你完成制作程序的过程。不像那些你制作了一千个小程序的书,而是对制作一个程序的深入了解。 ///编辑 谢谢你们,你们是一个真正的帮助,我想我可以从这里继续!

5 个答案:

答案 0 :(得分:5)

恭喜学习语法!如您所知,语法可以阅读其他人编写的真实程序。您可以尝试修改它们。随着您获得阅读和修改程序的经验,您将能够自己编写。

正如Eric S. Raymond所写:

  

你可以从书本中学习语言特征 - 知识点,但是只有通过练习和学徒才能学会将知识转化为生活技能的思维方式。它将做的是(a)阅读代码和(b)编写代码。

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

答案 1 :(得分:2)

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

忘记一点语法。

假设您正在清理带有三个搁板的厨房橱柜,而您希望这样做而不必清理橱柜中的所有物品。 所以你从底部开始清空橱柜(从顶部开始将它弄乱下面的东西)然后你从顶部架子上清理下来(另一方面你要将垃圾清扫到下面新清洁的架子上)。 如果你能这样想,你就可以成为一名程序员。

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

首先获得解决方案,然后以您选择的语言实施。最终可能会有更好的方式用这种语言来表达它,但首先要用一种对你来说很自然的“语言”来表达它,然后翻译。 希望这有帮助

答案 2 :(得分:1)

这是一个非常有趣的问题,特别是作为老师的我。

编程本身并不困难。它与人类的行为方式截然不同 - 这就是你必须习惯的东西。永远记住:电脑是愚蠢的。它无法猜测你想告诉它的是什么。你总是要告诉每一步。这不是(虽然这是一个常见的比较),比如写一本食谱 - 在食谱中你可以假设谁正在阅读它可以填补你可能留下的小空白。电脑不能。
对我来说,这是两件很重要的事情。

首先,很可能是更重要的一个:练习。这都是关于练习的。我从来没有读过任何关于编程的书,特别是没有教程。这对我来说都是尝试和错误。看着代码,试图理解它,试图复制和修改。边干边学。当然,这可能并不是每个人学习事物的首选方式 - 但是从其他人那里查看代码并理解它(不是为了理解 - 阅读,复制和去除它直到你做)是学习新技术的最简单方法。

第二件事是:不要直觉地思考 - 只坚持逻辑思维。我经历过许多人阅读代码,不完全理解它然后再说“好吧,我知道它应该做什么,所以那些线路似乎在某种程度上这样做”。这对学习编程没有任何好处。代码只完成了那里写的内容。一步步。如果你没有看到它会如何运作,那么很可能代码并没有按照你的想法去做 编写代码同样如此。开发程序时,你在midn的第一件事就是应该做的事情。但这是一种非程序性的形式 - 你的midn在程序上不起作用。它直观地工作。在人类中,它完全是关于想法和原型的。没有确切的算法,我们的思想不够强大,无法做到如此准确。那么下一步就是构建你的想法。将它分成小部分。比再拆分那些。然后再次。直到你有许多简单的任务可以在少数(通常最多10-20步)的步骤中完成。不要忽略大局,制作图表,或者至少说一些关于所有这些小步骤最终应该如何协同工作的注释。请记住:你的大脑无法立即以程序化的方式将整个大事物整合在一起。至少我的不是;) 最后一部分是写下每一步。比将它们组装在一起。而且你已经完成了。祝贺。

答案 3 :(得分:1)

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

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

对于大学里的许多CS学生来说,数学结构很重的课程将是他们在你所描述的课程之后的第二门课程,通常是真正的计算机科学开始的地方。此外,数据结构将为您提供一个值得继续研究算法的基础,这是计算机科学中一个更为重要的概念,它涉及如何在逻辑上,逐步解决问题,以及最重要的是,可重复和可扩展的方式。

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

答案 4 :(得分:0)

你必须有一个目标或目标为自己制定一个项目,计划并去做。你将在路上学习负载,如果你遇到困难,那么只需发一个问题。 :)我知道从书本,视频和在线教程中学习都很容易,但是一旦你自己开始创作,你就会越来越好地创造东西,从而成为一个神:)我的意思是程序员