
对我而言,编程一直是对大型假设提出质疑。 作为所谓的最终用户 ,我理所当然地认为编程的内部工作原理以及这种技术的转变如何决定我生命的最后十年(以某种方式)。 谁决定对我们应该如何使用互联网的方式和意图发表意见? 只是该死的光辉在正念者的努力上。
学习编程是关于学习教机器做什么。 面向细节,耐心,野心和实践是编程的支柱,至少从一开始,至少对于我自己而言。 从我的经验中,我了解到实践在编程领域中是完美的。 [请参阅Scalfani的So So Want Want to a Functional Programmer ]。
关于练习的事情是不能通过盲目的重复来完成。 就其本身而言,它必须是有意为之的-每个练习都应该有一个目的-必须考虑到每个阶段都具有故意的后果。 正确地进行这种系统的练习,可以在执行任何活动(尤其是编程)时产生丰硕的成果。 [请参阅James Clear的《故意练习的初学者指南 》。 从这种意义上讲,编程不仅是对概念的认真练习,而且还涉及手指在键盘上乱窜的记忆。
这并不是说没有实践就无法掌握这些概念,而是说这不是最佳实践 。 我知道自己为这个错误感到自豪。 一个人可以拥有所有编程方面的概念知识,但是如果没有实际的系统实践,很容易粗心大意地忽略小错误并错过掌握技术的主要机会。
本着回到质疑我前面提到的那些非常大的假设的精神,理解对假设的质疑过程以解决我们对该假设的无知至关重要。 以艾萨克·牛顿(Isaac Newton)在发现 (轻微踩踏)重力时具有启发性的时刻为例。 历史那一刻到底发生了什么? 当我们同意牛顿决定质疑整个世界 (从此轻而易举)视为理所当然的假设时,答案就会被简单地理解-当事物从地面掉落时,它们就会掉落到地面。
质疑假设的整个过程实际上都是关于解决问题的过程。 我们意识到某事发生了,因此我们决定问,那件事是如何发生的? 为什么会发生? 有哪些先决条件? 有什么后果? 潜在的力量是什么? 上帝存在吗? (糟糕,对此感到抱歉)。 因此,为了解决假设背后的问题,我们必须首先了解该问题。 然后,我们必须制定解决此问题的计划。 我们必须问自己,存在什么技术来了解这种情况。 谁可能以前走过这条路,等等等等。 这是假想的白日梦的科学部分-或更普遍地称为“科学方法”! 然后,我们充满信心和好奇心地执行该计划,然后回头看看我们已经走了多远,并且展望了我们还需要走多远。 [请参阅Polya的问题解决技术 ]。
要将其与牛顿关于苹果的故事联系起来,似乎他必须提出一个基本问题似乎是合理的-为什么那该死的苹果掉下来而不是掉下来,还是掉到右边或左边? 他了解了问题及其参数。 然后,他制定并实施了一项计划,在对试错的科学询问中使用时间和距离,得出了整个9.8m /s²爵士乐。 然后回头看一下牛顿如何理解重力的整个过程,我们都可以假设 (!)在工业化前/启蒙后时代等等,物理学的发展和转变中如何使用量化重力的思想。
因此,以类似的解决问题的方式,编程是关于质疑假设的过程。 我们必须问自己关于编程的简单问题。 没有绝对必要的起点。 程序设计是一个广阔的世界,尚待充分衡量。 如果您发现自己感到沮丧,只需问问原因,然后花8个小时来了解与您正在从事的项目无关的事情。 但是学习的过程将使您成为一名杰出的程序员,木匠,音乐家或其他您想要的东西。