编程的世界充满套路

在上一篇文章中,我思考了套路对个人成长的意义和两个我认为对总结套路有价值的方法。在写作过程中我突然发现编程的世界充满套路,如果你沿着这样的思维去学习编程,或许会理顺你的思路,加速你的学习过程。谨以此文分享给有兴趣的朋友。

函数是最小的套路

学过编程的朋友都知道函数的概念。那为什么要函数呢?就是因为这部分的功能需要经常使用,那干脆就写成一个函数把这部分的功能统一起来让整个程序使用。这样就不需要每次使用这个功能的时候,再从头编写代码了。

比如c语言中最基本的输出函数printf。如果没有这个函数,那所有人都需要点用系统调用syscall来和操作系统打交道才能在屏幕上输出字符。这么一说,你会不会觉得很懵?什么操作系统?什么系统调用?这都是啥?然后我告诉你一个更郁闷的事情。那就是在不同的操作系统上,系统调用会不同,参数传递也会不同。也就是说原本printf这么一个简单的函数,需要手动写的话需要在每个不同的操作系统上都实现一遍。当然现在这个步骤都已经由前人总结好了套路,你直接使用就可以了。

为了让大家有直观的印象,我把使用了printf这个套路,和不使用printf这个套路的代码贴出来,让大家自行感受。

使用printf函数的例子

printf

直接调用系统调用的样子

syscall

这就是函数作为程序中最小套路的例子。

库是高层次的套路

有了函数还不够,之后又产生了库的概念。比如说网络的库,文件读写的库,json处理的库等等等。因为实际使用过程中并不满足于某些简单的功能,比如字符输出,更希望能够直接映射到实际的工作甚至是现实世界中。

这里举个计算机网络编程的栗子。对计算机网络有一定了解的朋友可能听说过计算机网络的五层模型(从这点看,计算机网络是彻底的小套路到大套路。)。简单来讲,当我们访问一个网页的时候大致要经过这么几层的网络协议:http, tcp,ip。也就是我们从浏览器上输入http开头的一个网址,要经过好几层的网络转换才能让我们真正获得一个页面,而最终显示在屏幕上。

networkinternal_1_1.JPG

再回到刚才的情形,如果每个程序员都需要从ip层编写网络应用,那估计我们现在都没有淘宝用,更吃不到各种外卖了。之所以现在有这么丰富的互联网应用,得益于现在有各种网络协议的库。所以程序员只需要专注在http层,按照协议制作出http的报文,扔给库函数,就可以得到反馈了。不需要关心报文如何发送,如何与下层协议交互,更不需要了解转过了多少路由器,是通过哪个运营商,哪个数据中心,最后就能获得结果。一切变得如此轻松~

当你再凑近一些去看,有意思的是某个库可能是另一个库的依赖。比如处理json的库为了处理json文件,就会依赖文件读写的库而不是自己重新编写文件读写部分的函数。你看,这个是不是可以看作是一层层套路往上叠加?设计良好的底层架构,能够让人从复杂的底层事务上脱离出来,从而有更多精力去实现更有价值的应用?

我想,这种层层嵌套,各自发展,小套路到大套路的发展模式,对计算机产业蓬勃发展的有着不可磨灭的作用。

不同语言框架体现了不同的套路思维

我们再往深层次看,一种编程语言或者一种框架体现了一种套路的思维。

如果对某些语言有一定的理解,大家或许听说,js是用来写网页的,python用来处理大数据的,c用来写操作系统的,java用来写后端的。

当然这些分类不是完全准确的,只是大家在业界有基本的这么一个共识。而为什么会形成这样的一个现状,个人分析的原因是每种语言抽象的套路不同。比如虽然用c语言也可以写服务器,处理json,但是很少人会这么做。是因为c语言在这些层次上的套路没有,或者没有别的语言好用。如果偏要这么做,就得从头写起,显然就比使用现成的套路要麻烦和耗时。

另外不同的框架使用的套路也体现了不同抽象思维角度和层次。

比如最近我在上新大的js入门,其中徐高阳老师就比较了jquery和vue两个js库的使用和理念。而vue之所以现在这么流行这么好用,是因为jquery依然使用旧有的dom方式抽象页面,而vue直接将页面的元素绑定在了一个对象上,而后者更适合于人的直觉思维。这种抽象层次上角度上的不同导致最终形式的不同非常值得玩味。感觉已经和最近流行的认知差距,降维打击有共通之处了。

一不小心把代码读出了哲学的味道。

对大家有什么帮助

计算机程序是我认为最为严谨的套路集合,更是人类思维方式的结晶。因为机器没法说谎,其运行结果必然是程序严格执行的产物。

那说了这么多,对大家有什么帮助呢?尤其是对学习编程的朋友有什么帮助呢?

从套路层次的角度去学习

每个人的大脑容量是有限的,处理事务,接收新知识的能力也是有限的。我在怎样保持你的鸡血状态一文中也提到了,当我们遇到比较庞大的事务时,容易觉得超出了自己的能力范围而把自己吓跑。这点倒是和计算机运行有点类似,程序如果需要太多内存就会导致死机。那我提出的解决方法就是,不断拆分。把复杂的,庞大的问题拆解成小的能够处理的问题。

那转换到计算机编程学习,既然我们知道了函数,库,甚至是语言是不同层次上的套路抽象,那么我们在学习的时候,就可以顺着这些套路的抽象层次去学习,而不是一锅端。

比如我们学习json文件处理,那么就可以简单得把问题拆解成

  • 文件读写
  • json格式处理

文件读写是一个学习内容,格式处理是另一个内容。当两者都学习完了,合成一起则是一个完整的内容。这么讲大家可能觉得太简单了,我不说都会这么做。那我点出一个有些同学容易忽略的问题。

比如在文件读写中,很多人会同时去学习文件目录结构。原本文件读写学习,主要内容应该关注在如何读或者写指定文件的内容。可能是因为第一次在程序中认识到“指定文件”这个概念,比如上一层目录,上上一层目录,根目录,用户根目录,这些如何在代码中表示。对有经验的系统使用者,这些也不是问题。但是对一直使用图形界面,刚开始使用命令行使用程序操作文件的同学,这些概念可能就是陌生的。如果能够意识到“文件目录结构”和“文件读写函数使用”是两个不同的概念,那就可以使用我说的分解套路层次去逐个击破,而不是让自己陷在两个新概念同时学习但无法理解的情形中。

多插一句,这种思维在程序设计和调试中处处存在

好了,我这次的套路讲完了,希望大家能够掌握分层的套路,快速跨过初期的困惑,进而享受编程过程带来的思维乐趣。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 213,928评论 6 493
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 91,192评论 3 387
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 159,468评论 0 349
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 57,186评论 1 286
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 66,295评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,374评论 1 292
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,403评论 3 412
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,186评论 0 269
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,610评论 1 306
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,906评论 2 328
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,075评论 1 341
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,755评论 4 337
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,393评论 3 320
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,079评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,313评论 1 267
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,934评论 2 365
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,963评论 2 351

推荐阅读更多精彩内容