计算机和金融是当下最火的专业,可能没有之一。只要能学理工科的家庭,没有哪个家长不会问一句,“我娃能学计算机么?”
关于这个问题,我找了我一位好朋友——董老师,新加坡国立计算机毕业,最早的AI弄潮儿,来分享一下他的观点。
#01.适合的才是最好的
在我求学的时代,计算机一点都不热门。不火到什么程度呢?我高中的计算机老师曾经是计算机博士,并且曾在当时一个很有名的研究所研究AI相关的技术,但因为当时互联网泡沫破裂失业了没事干,才当了计算机老师。我的高中选课——数学、计算机、物理和中文时政,堪称奇葩,奇葩到全校只有两个人这么选。
但我还是一头扎进了计算机的世界,因为真的喜欢。
在我读小学的时候,我就开始学编程,我计算机的启蒙老师是我的邻居,他也是我们学校的计算机老师。
计算机让我着迷的第一点,是让我理解了计算机和逻辑之间的关系。当时,我用basic语言编程,让计算机帮我解奥数题,这种数字金字塔的题目,可以写一个loop,让计算机去跑,就可以得到答案。我就觉得做这个事情很爽。
第二,计算机让我学会系统性地去思考问题。
初中的时候,我迷上了Flash(经历过那个年代的家长应该还有印象那遍布大街小巷的Flash MV,小品作品,小游戏)。我印象最深的是用Flash动画去模拟雪花飘落的样子。
这时候,我突然发现,简单的操作——图像形变、位移、运动、插关键帧不足以支撑我的需求,我需要复制这个object(雪花)去全屏展示,雪花出现的时候还不能有遮挡,有一系列的判断条件……那个时候我才理解,原来编程和flash是能够产出系统性成果的,它是一个project,你需要解决其中很多小细节、小问题,而不只是解决一道题那么简单,你要开始debug,不断反复去纠错,最终才能呈现出一个美丽的圣诞雪景。
这些都非常让我着迷,所以,学计算机是我的命中注定。那我也希望,每一个孩子都能找到自己的destiny,找到自己的热爱,找到能让自己滔滔不绝的领域,而这也是名校最看重的部分。
苏格拉底说,“教育不是灌输,而是点燃火焰”,我期待带着我对知识的热情,点燃每一团火焰。
#02.数学+跨界+管理
想要学好计算机,可以在这个领域发展得好,有三个层次。
第一,你要学好数学,不然只是编码民工,在AI飞速发展的今天,很容易被淘汰。
为什么数学是基础学科,对计算机重要?我们看几个例子。
高等数学有一个部分叫linear programming(线性规划),简单来说,就是求局部最优解。这个数学思想,帮我们构建编程的逻辑,“统筹规划”让程序能够高效地、合适宜地达到某个效果,比如说运行得更快、内存更小。所以,编程的本质可以抽象为一个数学问题。
我们再看看,离散数学。很多算法其实都是跟离散数学里面的图论有关,比如最短距离——从某顶点出发,沿图中所示的边到达另一顶点所经过的路径中,各边上权值之和最小的一条路径叫做最短路径。
这个是信息奥赛里面特别喜欢考的一个问题,动不动就有只奶牛,因为某些莫名其妙的原因要最快地从草地这头到草地那头(笑)。
计算机另一个发展方向是数字媒体(声音和图像)。包括像我们现在天天使用的抖音和现在很火的自动驾驶,其中都离不开在图像与声音领域的突破。媒体信息的发展经历了两个不同的阶段:
最早是模拟信号,它的工作原理可以参考留声机,唱片上有一圈圈高低不平的凹槽,唱针沿着凹槽移动,唱针的振动被传递到唱臂的末端,唱臂将这些微小的机械振动转换为电信号。这些电信号被放大并通过扬声器转换为声音,从而重现原始录音。但因为通过空气传播以及机械结构的限制,声音的保真效果并不好。
随着技术的进步,我们用电子电路来控制、描述每一个离散点,在控制的过程中,我们需要用准确的数字标注声音的音节、音高、音长。
但一段音乐信号或电磁波信号可能包含多种频率成分,它们叠加在一起形成了复杂的波形。我们需要通过傅里叶变化,将复杂波分解为一系列简单波的叠加。每个简单波对应于特定频率的正弦波或余弦波,其振幅和相位由傅里叶变换的结果确定。
这种分解和重建的过程在信号处理、图像分析、通信技术等领域有着广泛的应用。
数学跟计算机有千丝万缕的关系。即便是现在模块化程度这么高,并且接下来的语言发展会更模块化,但数学之于计算机,仍然十分重要,数学不好的人是没有办法在计算机领域有很深的造诣的。
第二,你要学计算机,你就不能仅仅学习计算机。
想要走在AI浪潮与计算机领域的前列,仅仅会编程是远远不够的,跨界几乎成为了计算机领域的标配。
例如在AI技术中,有一个专门的领域叫做“自然语言处理(Natural language processing,简称NLP)”,这个领域就需要涉及到另一个专业——“汉语言词汇学”。汉语言词汇学是语言学很小众的一个分支,指的是怎么去构成词汇,我们叫“lexicon”。
举个例子,“蝴蝶”中的“蝴”字是没有意义的,它不能在任何情况下独立成词,那它就不是表意短语,而“蝴蝶”中的“蝶”其实就是“蝴蝶”的缩写。我们遇到的一些词,它可能是偏正短语、复合短语,也可能是一些常见的缩略形式。这些词就需要更细节地去拆分,每个词它的定位、它的特点以及它在整个语句中的地位。
而这些都构成了AI的底层逻辑,也就是“自然语言处理”。你需要让机器人听得懂别人说话,不管是中文还是英文都会有相似的问题。
还要注重应用,区块链技术在金融上的应用,对于计算机领域,并不是一个非常新的技术,但是这个应用很有新意。
▲中心化记账就意味着只有一个人有权利去记账(左图),而且这个账本不透明,不公开,一旦这个中心出现问题,如被篡改、被破坏,整个系统就会面临危机乃至崩溃。去中心化(右图)就是让所有参与方都平等地拥有保存账本的权力,也就是分布式记账。
第三,想要不在底层岗位徘徊,你需要更强的管理能力,这就是为什么专业领导力同样非常重要的原因。
“35岁焦虑”是现在互联网程序员最大的痛点,指的是自己作为一个底层程序员,如果没有在35岁走上管理岗或者晋升为领域或者行业专家,那自己就很有可能是下一波裁员潮中的一员。所以,仅仅停留在能高效地编程已经远远不足以应付这个日益变化的社会。那我们可以向上拓展的方向有哪些呢?
底层程序员很重要的一个向上发展方向是架构师。架构师的核心能力是拆分和解决问题的能力。写代码只是非常基础的问题,你要解决的是——代码结构问题、模块耦合问题、数据存储与传输问题,乃至到工期问题、管理问题、代码如何review等等问题不一而足,这些内容在大学的software engineering课程中会涉猎到一小部分,但更多的是自己在成长中去实践与摸索,最终形成自己的核心竞争力。
高中阶段,学生只会接触到最基础的计算机信息,比如CPU的工作原理、数据类型、数据结构、基础算法,再学一些抽象的概念,比如刚才说的面向对象编程等等。所以很多时候老师们会互相调侃说高中计算机的非编程部分更像是一个文科,他需要学生去背、去记忆,知识的考查方式也比较传统,远不如想象中的那么有趣。但是一旦打好基础,那后续学习中的算法与逻辑的学习,会起到如虎添翼、事半功倍的作用。
无论什么学科,从出分的角度来说,学生最重要的是要理解上课、写作业、复习这个知识闭环。
很多同学难以出分是因为没有弄懂如何学习,尤其是如何高效地利用每个学习阶段的核心任务。
首先,上课认真听讲永远是最好的起点,也是开启优质学习的第一步(当然,如果你已经养成了预习的习惯,那可以带着问题去听课,可以事半功倍)。在课上,不论是快速获取新知识,还是对不懂不确定的问题进行提问,都是最高效最快捷的,通过对老师授课内容的整理,记录下来一套符合自己学习习惯的笔记,可以让后续的复习过程更加轻松。
▲老师数学课笔记板书展示
其次,正确的对待作业在学习闭环中的作用。很多同学认为作业就是无尽地给自己加任务,是某种累赘,是落后的教育手段的代表。但这些同学没有意识到的是,作业本身并不是压力,而是某种检测机制,他在学习这个闭环中起到了至关重要的作用。
一个学生可以通过对作业的完成时间,完成状况进行反思,来理解自己对作业涉及的章节的理解程度,作业完成的越快,说明自己掌握得越好,那后续复习时这一章应该安排的时间以及复习的压力也应该越低。
如果作业完成得很慢,那说明一定是没有找到合适的方法或者知识点仍有漏洞,那我们再去请教老师也更有的放矢,更节约时间。所以作业不能敷衍了事,不论作业做得好坏,都应该收获应得的效果。
最后,复习是完成这个学习闭环的最终落脚点。他是对学习的一次循环式的总结与提升的过程。当经过了课上知识的消化与吸收,作业中有针对性的练习后,我们可以将这些内容沉淀下来,变成一套只属于自己的方法论和笔记库,里面可以包含只有自己看得懂的符号和逻辑,也包含自己曾经的错题和反思,但最终的目的都是为了让自己可以结构性地掌握这个学科的完整知识,为了让自己可以更好地解决考试中不同的题型。