类比的危险之如何「转码」

本文是我在长毛象上对象友「如何转码」这个问题的回复。为了快速介绍各种概念,我将写代码类比成学语言。但我知道类比是危险的,因为大量的类比并不精准,最后变成了误导。但类比又是有效的:

Analogy is the shortcut to new concepts – Yocson

原文如下:

从语言学习的角度类比,我认为算法和数据结构是语法(区别于编程语言的语法),有了这个知识可以组织句子以及表达意思。而编程语言们的语法则是词汇和短句,不同的编程语言是不同方言,表达形式不一样(我过度简化了)。有了语法和词汇,基本上你可以讲话了。听力和阅读是看懂别人代码的能力,口语和写作是写代码运行代码的能力。

但是有这些是不够的。你在实际的生活中还需要学习一些社交用语、商务用语、公文写作、古文写作等等。操作系统、数据库、编译器这些知识可能只有特殊工种才会用到,就像只有中文系才需要熟练掌握文言文,实际生活中没人真的会使用。再比如只有公务员需要熟练掌握一样申论写作,只有宰相才需要写青辞。追星学的日语和研究日本文学学的日语可能也大相径庭。 前端后端以及AI程序员说的都是不同的专业语言,各有侧重。

另外,语言也有好坏之分,YYDS 是一个词,永远的神也是一个词。如果把程序写得更好更优美更易懂是个很大的话题,这里面包括文本表达上(易读性,正确性,结构性),另外还有更深层次的是这句话内容的信息量和有效性(程序跑得快不快,需要多少硬件资源),好比为了表达同一个意思,有人用成语说完,有人写了一篇垃圾小作文。初期可以不用掌握,但是也很重要。

回到从哪开始学的问题,就跟学外语一样,我觉得可以写着一本经典的语法书(算法,数据结构)快速过一下,不求甚解地读。再然后是挑一门编程语言学词汇和短语(编程语言的语法),有的语言难学,有的语言简单,看个人需求来选,很多人说建议Python入门但是我觉得存疑,比如有人觉得俄语(C++)特别难但是他就是喜欢俄国文学,那么让他学一门简单的别国语言没有意义。同时如果你只是喜欢文学,哪国文学不重要,这时候会出现有些国家的文学特别强势,比如前端的世界里 Javascript 占据主导地位。

有了语法和词汇,可以和语伴聊天在提升熟练度。编程比较好的是你不需要一个真人来教你说话或者检测你说得对不对。你可以去Leetcode刷题,它相当于提供了许多对话场景,你需要使用正确的语言说出正确的话,Leetcode会告诉你说的对不对。它甚至一定程序说得是否有效(时间复杂度和空间复杂度)。我建议尽快能进入到和语伴交流这一步。

最后,语言学习最好的动力就是你有实际的需求,比如为了追星而学日语。你可以直接跳过所有语言和词汇学习,直接开始肝爱豆的资源,自然而言就学会了。

我建议你在学习基础知识的同时,选择一个 Project 做,比如说做一个图书管理系统,会涉及网页、数据库等等知识,做着做着你也会学到很多知识,而且学起来会更有动力,因为目标更明确。做 Project 学知识还有好处,就像追星学日语,爱豆今天演了一个大河剧,那么你瞬间变成战国历史专家,各种梗和典故熟稔于心。这是正规学语言达不到的效果。

最后能在程序员就业市场提高区分度的就是对不同梗和语言的熟悉程度。

我与我周旋久——三种慢性病 【2021】我要快乐
Your browser is out-of-date!

Update your browser to view this website correctly. Update my browser now

×