你了解过编程吗?
不了解也没关系。尝试把下面这段代码,复制到你电脑浏览器的控制台当中(快捷键Ctrl Shift J调出来),按回车键,看看会有什么结果:
a = "I";
b = "love";
c = "you";
d = "me";
x = 2 ;
if (x > 1)
{a ' ' b ' ' c}
else
{c ' ' b ' ' d};
然后把x=2的数值,改成x=1,看看又会有什么结果?
这段代码很简单,即便你没有学过编程,只需要懂一点英文,也知道什么意思,即x大于1的话,就显示a b c的赋值结果;否则x小于1,就显示c b d的赋值结果。中间加上这个‘’符号,只是为了空一格而已。
很容易是不是?但是想要了解这段代码,还是需要你运用一些思考能力的,而这个过程,就是对大脑的一种锻炼。
大脑的机制,是用进废退的。你越不去磨炼它,它就越容易变得迟钝。
随着年纪的增长,我们对于事物思考的反应速度,或许没有以前年轻的时候那么快。但是并不代表,我们不再聪明,或者学不了任何东西。
相反,以前很多你不理解的东西,说不定现在的你就更容易理解。
就拿我自己举例子。我以前读书的时候,自学了adobe after effect(简称AE)这个软件,以为做一些小动画,没什么难度。
刚开始确实是这个样子的。
然而随着我学习的深入,到后面居然发现,想要做出更好、更灵动的效果,你就不得不去学习AE当中的表达式(expression)。而表达式的核心,则是基于JavaScript这种编程语言,即上面代码运用的语言。
当年我尝试去学习这种表达式了,但很不幸,我看不懂,也不理解这种编程语言,最终只能放弃,一直没有进步。
十几年过去了,现在因为疫情关系,公司要进行业务调整,我需要教导那些原本只会剪辑的新员工,掌握入门的AE技巧。为了避免我无法在这些小年轻面前“装C”,我只好硬着头皮,私底下重新去学习JavaScript这门语言。
好家伙,不看不知道,一看下去,以前很多不明白的概念,我居然好像一点一点就打通了。以前通过复制黏贴去运用的代码,现在我也知道它们背后的原理了。
作为一个将近四十岁的人,这个年纪去学习编程,从我本专业心理学的角度来看,我居然感受到学习编程的好处!
我相信这种好处,对于大多数人来说,都是值得拥有的。今天就来说说这个话题。
为什么要学习编程?我不是编程高手,也不是从事编程方面的行业,只是出于“装C”的工作需要,而去自学JavaScript这门语言。
尽管这门语言,在众多的编程语言当中,算是比较容易上手的。但是不管是哪一种语言,它都可以锻炼到我们的大脑,改善我们的认知能力。
正如乔布斯所说:“这个国家的每个人都应该学习如何编程,因为它教会了你如何思考。”
当然,他说的“这个国家”指的是美国,而且美国实在有太多反智的人,尤其是政客,他这样苦口婆心地给出这个建议,也确实没有问题。
而对于我们普通人来说,学习编程,会让我们的大脑得到很多方面的锻炼。
1980年,编程语言LOGO(另一种编程语言)的联合创始人、麻省理工学院数学家 Seymour Papert出版了开创性著作《Mindstorms: Children, Computers and Powerful Ideas》。
Papert声称,编程为孩子们提供了学习和思考的新机会。一系列关于编程的认知影响的研究尽管表明,Papert的说法存在某方面的漏洞,但其他研究,如“计算机编程对认知结果的影响”,以及在麻省理工学院等机构进行的研究,编程对认知发展是有益的。
所谓“认知发展”,心理学给出的定义是“人类获取、组织和学习使用知识的方式”。
在心理学中,认知发展的重点往往只放在童年。然而,认知发展会持续到青春期和成年期。它涉及获取语言和知识、思考、记忆、决策、解决问题和探索。
可以看得出,其中的认知能力包括:
思维能力,即涉及操纵信息,并与推理、决策和解决问题有关。
知识发展能力,即加的知识等同于更好的口语、阅读、听力和推理能力。建立知识库对于人的编码和检索新信息很重要,这会使得他们能够学习新材料。
记忆力发展,即你的外显记忆、工作记忆和内隐记忆共同组成的记忆能力。
感知能力,即你运用视觉、听觉、触觉、味觉和嗅觉,使用这些感知技能来衡量空间关系,区分图形和地面,并发展手眼协调的能力。
所有的这些能力,都会提升你在探索和解决问题时的能力水平,而学习编程,则可以起到这样的作用。
因为大脑像一块肌肉,我们需要锻炼它,才能保持大脑的活力。而保持大脑年轻的一种方法是学习一项新技能,做一些以前从未做过的具有挑战性的心理活动,可以使大脑变得敏锐。
当我们学习一种新的编程技能——比如 Python、C#、Java,或其他编程之外的复杂活动,比如数码摄影和手工制作——我们的大脑会在每次练习时形成新的神经连接,同时加强现有的神经连接。
最终,我们的认知能力就会逐步得到提升。
学习编程能教会你什么?从现实的角度来说,学习编程,比起从事其他工作,确实能让你赚到更多的钱。
只是,现在的企业或公司,已经不满足于单一技能型的人才,它们比以往任何时候都更需要多技能型的员工。如果你具备领导力、沟通能力、团队合作能力以及其他软技能,你的竞争力就比其他人强很多。
当然,你未必需要通过学习编程去赚钱,如果你有足够好的工作和收入的情况下。但我依然建议你学一学,这不仅会增加你在未来的竞争能力,同时也可以提升你个人的综合能力。
因为并不是数学天才,才适合去学习编程。更准确地说,你需要一种合乎逻辑的方法和解决问题的能力。正如学习金字塔原理的表达结构,可以强化你的沟通表达能力一样,编程结构也能够强化你解决问题的能力。
它教你将问题分解成可实现的块,并非常精确地思考。因为编程的思维模式是“自上而下”的。先定义顶层的问题,然后再逐步解决下面一个又一个的子问题,从而最终把问题解决。
这种方法被称为“逐步求精法”(stepwise refinement),一旦你掌握了这些基础知识,它就会为创造性思维打开巨大的潜力。
最重要的是,这些思维方式,可以应用到我们的现实生活当中。
毕竟,编程是一件从设想到实现之间,需要你付出一定的精力的事情。你需要反复试验,来验证自己的设想。
在编程中,你会从犯过一次的错误中了解更多,下次尽量不要犯错。所以你会学到,不会因为害怕错误或失败,而停止尝试,因为你最终总能够以逻辑思维的方式解决问题。
也就是说,编程可以让你懂得分析错误,以及如何解决它们。
另外,编程会让你变得更有创造力。
程序员以非常结构化的方式思考,而不是直接看大图而忽略最小的细节。程序员,当他们遇到要解决的问题时,他们不会立即开始编写代码。他们所要做的就是将其分解为可行的部分,然后继续进行。
是的,先把问题分解成可行的部分,然后逐步解决。
当你学习如何编程时,你就会养成这种习惯。你以结构化的形式解决问题,这意味着,你逐渐对大脑进行编程,将每个问题分解成碎片,以便更好地理解它。
然后,你开始以合乎逻辑的方式思考,这为你提供了比以前更多的创造性解决方案。
除此之外,编程会让你养成一种更简洁的思考方式。当你把一个设想编写出来之后,你会发现,其实很多步骤都可以省略的,你无需编写得这么繁琐。
把复杂的问题简洁化,就是一种可行的编程思维。例如你学习口才的时候,刚开始没必要把所有的表达技巧都学会。你只需要精简到当前困扰着你的问题,然后学习解决这个问题的表达技巧,如“不懂说一大段话”,学习这个技巧就行了。
这种思维,可以让你集中思考重点,而不会被其他繁琐的东西影响到自己的思考。
当然,学习编程的另一个好处,就是教会你如何坚持。
程序员的生活是“反复试验、错误和重复”的生活。他们被训练成逻辑思考的习惯。通过这种方式,他们可以为遇到的任何问题想出更好的解决方案。
当你学习编程时,你会开始根据解决方案来看待问题。你的大脑开始像那样运作。当你在学习编程后遇到问题时,你会开始设想解决问题的可能方法。你甚至可以预见到一些好的结果。
不管这个问题看起来多么困难,你都会下定决心无论如何都要采取行动。你将自己转变为以解决方案为导向的个人。
再者,由于程序员必须从逻辑上思考问题,一旦你开始学习如何编码,你就不会放弃日常生活中的其他困难情况。你开始一遍又一遍地尝试。你变得有耐心,因为你知道总会有解决办法。
你知道,这些问题只是需要你更多的努力,就像你创建一个程序、运行它、调试它几次以达到完美的解决方案一样。
这种思维模式,不是会让你的生活变得越来越好吗?你整个人也会从中变得越来越优秀。
编程不仅以非常技术性的方式教会你知识,而且在现实生活中也是如此。它教会你如何在生活和工作中,做出的每一个决定时,都能保持乐观和勇敢。
而这,正是我们大多数人都需要的特质。学习编程,任何时候都不怕迟。