当您似乎无法理解编程的特定部分时该怎么办?[关闭]


11

我一直在学习新的语言,用多种语言为非常基本的程序编写代码,然后上课。我读过书,文章,课程,视频,随便你怎么说,但是我似乎无法掌握某些东西。

例如,我从不了解指针-它们擅长什么。(问题的一部分-不需要使用“指针”重新标记...)


但是,我的问题不是指针是做什么的,而是我如何理解这样的事情?如果在阅读有关编程的某些部分的书或文章后,我不理解,该怎么办?用某种编程功能编写代码肯定会有所帮助,但是实际上并不能帮助理解那么多。理论部分对理解很重要。


11
我希望我能理解为什么人们很难理解指针。该名称给出了我需要的所有说明。
ChaosPandion

1
某些Computer Architecture 101课程有助于理解指针。...以及其他所有内容。
ZJR 2012年

6
问题不完全是关于指针的问题,而是一个普遍的问题,但是谢谢。
Bugster 2012年

2
我不认为让他想起一个自己承认的问题的例子会帮助他一点点地启蒙...做得足够多了,但是这会阻止他因为害怕被打折而寻求帮助。一连串的小气和书呆子的答案,以及对评论的贬低。
haylem 2012年

4
@FrustratedWithFormsDesigner:我认为“我如何学习”。这是一个有效且有价值的问题。
haylem 2012年

Answers:


22

如果您在理解抽象概念时遇到麻烦,只需向下一层。如果您无法在C中获得指针,请进入程序集级别。还有问题吗?了解有关硬件的所有信息,一直到逻辑门。


2
+1:为我工作。在开始编写PDP-10汇编语言之前,我在使用ALGOL中的指针时遇到了麻烦。
凯文·克莱恩

2
有趣的主意。尽管我会指出,以汇编语言编写和运行程序实在是太过分了。我认为,在此级别上无需超出基本理解的范围。但是,嘿,如果那是您想要做的,那么您将拥有更多的力量!
布莱恩·菲尔德

1
@George Bailey,是的,对于任何实际的装配体和实际的硬件来说,它可能都有点过高。这就是为什么MIX周围有其他类似的玩具架构的原因。对于硬件部分,它是相同的-有许多简单的玩具CPU内核需要研究。
SK-logic

+1:有趣的想法并且肯定有可能奏效,但是(重新使用OP的示例案例)从C入门级降至ASM入门级对于初学者来说可能是一条漫长而艰难的道路,可能会采取比课程/项目/其他人预期的时间更多。这也可能使动机不强的人疏远(这可能不是OP的情况,但是从更高的角度来看,这将阻止许多参加CS课并需要了解这一点但不会对CS本身感到讨厌的学生) 。但从长远来看,绝对是个好主意。
haylem 2012年

好吧,我的计算机科学学位涵盖了计算机体系结构。我们了解了逻辑门,并在逻辑仿真器中将它们组合在一起,以构建加法器,ALU,并最终构建了非常简单的RISC CPU。我们还用MIPS汇编语言编写了简单的程序。这是计算机科学学士学位所必需的,并且并不是真正的“除草”课程之一,因此我认为这不是最重要的事情。
亚当·贾斯基维奇

17

短期增量学习生命周期

  1. 尝试无法理解的概念。
  2. 尝试实现一些说明概念的东西。
  3. 尝试在白板上绘制概念(如果适用)
  4. 谈它通过与别人谁理解的概念。
  5. 尝试向此人解释您了解的内容(有时有助于查看光线)。
  6. 从1 重新开始直到您最终可以向处于状态1的人解释它,并让他们得到它。

附加步骤

要谨慎使用。

  • 搜索其他阅读和学习材料
    • 在线(热门搜索引擎和Wikipedia是好朋友),
    • 在图书馆(不要小看书,还有去那里读书的人),
    • 您的系统上(捆绑的文件和文档工具通常疏远在第一,但一段时间后,你最好转到哥们:学会发现你在找什么在他们如man -kapropos等...)
  • 尝试使用概念阅读一些代码 ...
  • ...并通过调试器逐步执行代码

这些都是偷偷摸摸的,因为您需要重新评估自己以确保您做对了。有经验的人进行直接指导通常会更好,当然,您可以通过重新实现刚刚学到的知识来自己验证所学知识(然后尝试将其进一步推进并学习基于此的更高层次的概念其中之一,例如指针的链接列表)。

学分:Nupul(用于图表)


2
+1!我可以补充一说-在交谈之前,尝试尝试“白板化”(或在与某人交谈时将白板放在方便的地方:)
博士

1
+1表示“使用调试器逐步执行代码”。我已经通过简单的调试工具了解了许多概念...
funkymushroom

@Nupul:很好的建议,补充。
haylem 2012年

@funkymushroom:确实,尽管我会说通常您不是真的这样学习这个概念。但是,当雾雾就在您的眼前时,它确实有助于“消除雾气”,而您根本看不到碎片融为一体,因为您过于专注于某件事或头脑被炸了。我发现理解一般算法问题比一般概念更有帮助。
haylem 2012年

与白板交谈为我做了。
彼得

5

以我的经验,这全都与输入和反馈有关。您希望以尽可能多的形式获得输入,并尽快对错误进行反馈。

根据我的经验,我的CS学位非常枯燥,非常正式,并且在教授任何编程方面一文不值。我每周参加两到三个讲座,如果您听不懂,那就差不多了-讲师还有另外一堂课要教,并且不能四处寻求帮助。而且,很可能有人会以某种方式理解它,而他会以某种方式教它,就是这样,所以如果您不喜欢他,就永远不会得到它。更糟糕的是,由于他可能了解十亿其他相关概念,因此他很可能会根据其他概念来构架,这很可能超出您的理解范围,甚至根本就没有课程内容。

我去了Stack Overflow,并在C ++聊天频道中提问,并在五分钟内得到了五种不同的解释。他们都是专门为我量身定制的,也是我遇到的确切问题,因此,其中一个人为我而回家并得到我也就不足为奇了。从多位专家的实时反馈中可以学到的信息的速度大大超过了从干纸来源获得的信息。

因此,理想情况下,休息一下,然后您会发现一群志趣相投的人,他们之间没有什么可做的,可以与他们聊天。顺便说一句,Stack Overflow是获得此类高质量高速个人反馈的绝佳场所。


3

书籍,朋友和阅读有据可查的代码绝对是好的来源。实践是唯一的学习方法:尝试编写小型单元测试。例如,对于指针编写处理字符串的代码:反转字符串,反转字符串中的每个单词,测试回文,用数字替换字母...

在stackexchange上提问...;>


2

实践使完美!(反正更好)。只要继续尝试并尝试使用尽可能多的不同来源和感觉即可:

资料来源:书籍,互联网,用户组,朋友,视频学习,使用允许您测试一点点“点点”代码的网站,例如 jsfiddle(主要是html),
Rubular(Ruby表达式),用于尝试sql的
SQlzoo,用于javascript的
jslint
代码垫适用于多种语言。

要记住抽象的事物,请考虑使用免疫组学-医生会使用它们!

将自己视为终身学习者,保持谦虚,就可以走得更远。


1
为“练习” +1。但是助记符,嗯。他们是一个非常不足的拐杖,永远无法取代,也永远不能取代理解。实际上,它们标志着缺乏理解。之所以说“医生使用它们”,是因为他们被迫在很短的时间内学到太多无关的事实。我们正在慢慢地认识到我们对医生的教育很糟糕,例如,美国正在完全改变其教育模式。助记符不是解决方案,它们是问题的一部分。如果发现自己正在使用它们,您将无法理解。
康拉德·鲁道夫2012年

1

您必须将焦点更改一段时间,而不是5分钟。或5个小时...我的意思是像1天的时间却没有看那个代码....

如果您现在必须了解它...向朋友寻求帮助或在这里=)


1

IT部门其他所有人都在做什么。

我使用搜索引擎来查找我不了解的相关概念,直到我可以重新访问我最初想了解的主题。

您可能还不太了解堆栈,堆,自动变量,C ++编译过程,汇编,托管内存与非托管内存。

这些和其他与指针相关的概念的更多清晰度可能会清除一切。


1

没有确定主题的快速方法。您的成功取决于您在学习中带来多少环境。您会很幸运地找到能够以您的观点进行解释的人。像图灵机一样,任何人都可以学习别人所知道的东西,而挫败是自然而然的坚持和接受。

我记得指针给我带来的巨大困难。直到一个非常耐心的家伙向我解释了它,就好像我是一个完全明白我的白痴一样。有时候就是这样。


1

这是学与教中常见的问题。正如其他人所说,没有确定的方法可以解决此问题。这是一个基本事实,因为我们的大脑以微妙而关键的方式进行了不同的布线,因此我们所有人都学到了不同的东西。

学习产生新的神经元联系。在不深入研究神经科学(我几乎一无所知)的情况下,建立新的联系需要针对不同的人以不同的方式接触一个概念。尝试多种角度,阅读/收听/观看不同的说明。实践!

如果那不起作用,则将问题搁置一旁:您可能只是错过了难题的另一部分,一旦获得,它就会使原始问题显而易见。

你知道这些啊哈!片刻?这是您的大脑刚刚建立新连接的时候。这就是学习的过程。

顺带一提,任何一位好老师都知道这一点。技术写作指南经常指出,每个概念至少应解释两次,使用不同的词(也许在它们之间加上一些文字)。如果您注意的话,您将能够发现所有优秀的科学作家都遵循这一规则。

las,太多的老师忽略了它,只解释了一次。即使他们成功地用一个很好的隐喻找到了一个优雅的解释,但这还远远不够。


0
  1. 阅读任何相关文档,并向Google提出疑问。

  2. 尝试编写代码示例,看看它们做什么。

  3. 尝试在调试中执行代码,并逐步观察它。

  4. 如果您仍然不了解某些行为,请亲自或在这样的网站中询问某人。如果您尝试了以上所有方法,则应该拥有构成一个好问题的所有要素。不要害羞:)

我认为这几乎是其他所有人所做的。


0

继续研究和学习。我在编程的其他各个方面都遇到了同样的问题。但是与他人交谈和阅读文章最终会导致“ AHA”时刻。通常,这是其他一些Blog帖子或SO回答,它们提供了我可以关注的信息。

基本上,请继续寻找并耐心等待谅解。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.