如何像计算机科学家一样思考?(女生篇)

Mr.C/文

子曰:“知者不惑,仁者不忧,勇者不惧。”

  • 前言


《穷爸爸,富爸爸》里面有句话是这样说的:“对于受过良好教育的爸爸,工作的稳定就是一切;而对于富爸爸来说,不断学习才是一切。”
许多时候,我们的恐惧并非来自所恐惧的事物,而是来自我们自己的未知,想克服某种恐惧,我想最好的解决方法是主动去适应,也就是人们常说的,走出舒适区

随着近二十年计算机界的蓬勃发展,继而导致了某个新品种程序猿的大量"繁殖",如果你身边也有该品种的存在,并且你想和他们可以有职业上的交流,或者想要套得猿心,懂得猿类之间术语,读此系列文,事可成矣。

  • 如何走上编程之路?



本文的目的是让你知道如何像一个计算机科学家那样思(da)考(kai)问(nao)题(dong),这个脑洞的打开方式结合了数学、工程和自然科学三个学科的最优特性。比如说:

  • 很数学的方式:计算机科学家们[1]使用一套标准符号去表示他们的idea(计算机领域也会涉及到很多计算,比如图像处理中的线性数学、数据挖掘中的统计学、概率学等)。
  • 很工程的方式:计算机科学家们同样需要设计一些组件,并把它们组合成一个系统,在组合的过程中还需要权衡各种方案带来的利弊。
  • 很科学家的方式:计算机科学家们同样会去观察一个复杂的系统,并且会做出一些假设,通过实验区验证是否可行。

计算机科学家最重要的一项技能是 “解决问题能力”,问题解决能力意味着你需要拥有以下三项技能点:

  • 知道问题在哪里(犹如当年霍去病打匈奴,你要打败敌人,首先得知道敌人在哪)
  • 能够制定出解决问题的方案(作战计划)
  • 并且可以清晰、正确地实现方案(战场上的排兵布阵)

当然,想在计算机领域有所成就,除了需要拥有以上三点问题基本解决技能外,掌握编程技能是必不可少的。
如果你觉得你拥有以上技能点,那么就可以开始上路啦(T^T)~~~ 对,就是那条传说中的 编程之路

On one level, you will be learning to program, a useful skill by itself. On another level, you will use programming as a means to an end. As we go along, that end will become clearer.

  • 编程之路之—— 算法


如果说 解决问题方式 是计算机科学最重要的部分,那么就是在解决问题中所创造出来的解决方案可以说是重中之重,这里的解决方案,我们便称之为 算法

算法是一连串解决问题的招式,比如我们想从A点到B点,那我们选择的方式可以有 自己开车、坐地铁、坐公交或者打Uber(当然,如果你是数年前的本山大叔,还可以坐直升飞机),这里的方式就是我们解决 “从A点到B点” 这个问题的的“算法”,由此可见一个好的算法和一个差的算法,虽然同样可以解决问题,但是他们之间的效率却可能相差上百倍(这就是一个好的程序员顶得上十个普通程序员的说法来源之一)。

算法是理论上的解决方案,而实际上对算法的实现需要依赖于具体的编程语言,“编程语言是一种工具”(我想这句话每个读计算机的孩子都有听伟大的老师们讲过吧?)。

事实也确是如此,编程语言就好比你选择了Uber后打到的是一辆奥迪还是一辆奥拓,算法在某种程度上决定了我们解决某个问题的速度等级,但编程语言(前提是对不同计算机语言同样熟悉的情况下,不包括语言学习时间成本)只是影响我们到达目的地的舒适度。

** 所以,算法很重要。**

  • 编程之路之——程序


按照维基百科的说法:程序(英语:procedure),指特定的一系列动作、行动或操作,而这些活动、动作或操作必须被运行于相同方式以为了在相同环境下恒常得出相同的结果(例如紧急应变程序)。不太精确地说,程序可以指一序列的活动作业步骤决断计算工序,当它们保证依照严格规定的顺序发生时即产生所述的后果、产品或局面。一个程序通常引致一个改变。

其实,看完维基百科的中文解释后,作为几乎天天跟程序打交道的我也是一脸蒙圈的...

这样子会吓走一大批妹纸的,对,怪你囖,维基百科君。
其实程序我们可以这样理解,它分为5个部分:

  • 输入
  • 输出
  • 数学和逻辑语句
  • 判断语句
  • 循环

~ 别走吖!我还没解释完呢,不要看到这个5个名词就看不下去了好不好?

我们可以把这五个过程对应为我们平时撩女(男)神的过程,在计算机执行的程序就好比我们的撩妹(汉)过程:

程序组成部分 计算机 撩妹(汉)过程
输入 键盘/文件(*通常从文件获取,比如我们在Windows下常看到的.exe **)/网络外设 对女(男)神发自内心(或身体)的期盼
数学逻辑 与、或、非逻辑是否成立 女(男)神当天的心情是否适合date?(如:只要Ta 6级考试通过或者你找到了一家好吃的餐厅:可Date,称之为或。 需要Ta 6级考试通过并且你已经找到了一家好吃的餐厅才可Date,称之为与。没有人约Ta的时候你才可Date得到,称之为非 ,可怜T_T。
条件判断语句 if语句 你今天是否已经达到了约对方的条件?达到则可执行 下一步:拿起手机,给Ta发微信或者打电话啦~~
循环语句 while或for语句 如果被女(男)神拒绝了午餐,是否继续重复约晚餐?如果晚餐还被拒绝了,是否重复约明天早餐? 如此反复...称之为循环矣。
输出 图像显示或者发送某些数据到设备上 这里的输出,当然是,要不要准备好Date完之后的事宜啦。
  • 是不是很简单?
  • 是不是很简单?

  • 是不是很简单?
    假设计算机是我们的身体,那么程序就是运行在我们身上的思考过程。
    我们身体 所观、所闻、所触 就相当于计算机中键盘或者鼠标的 输入,而我们在获取外界的信息后再大脑内部经过的思考过程,就相当于 程序在进行 数学与逻辑运算、条件判断以及是否循环的过程,而最终我们的 所行 以及 所想 就是我们大脑在执行程序后的输出。

  • 编程之路之——Bug & Debug


什么是bug? bug正常翻译为中文的意思为:虫子。

那为什么我们程序上的错误会被称为Bug呢?

因为... 它第一次出现真的是因为一只Bug:
据说,1947年9月9日,一只小飞蛾钻进了计算机电路里,导致系统无法工作,一位名叫格蕾丝·赫柏的人把飞蛾拍死在工作日志上(见图),写道:就是这个 bug(虫子),害我们今天的工作无法完成——于是,bug一词成了电脑系统程序的专业术语,形容那些系统中的缺陷或问题。

世界第一个Bug记录

我相信Bug这个词大家并不难理解,不过我还是以 幽默、易懂、充满趣味 的方式再讲一遍吧!

A点到B点 为例,Bug 我们可以理解为是在我们从A点到B点过程中出现的各种意外,比如:

  • 接单的Uber司机突然被交警抓了(此时Debug方法为重新下单)
  • 走路过去B点的时候突然下起大雨 (此时Debug方法为等雨停或买把伞)
  • 比如本山大叔因为太过高调而... (此时Debug方法为:不~ 这不是bug,这是特性!)

以** 追女(男)神** 为例,Bug 我们可以理解为我们在约会过程中各种小插曲,比如:

  • 对方因为打游戏或者煲韩剧通宵并且关机 (此时Debug方法为,等~)
  • 对方因为心情不好而不想和你说话,并扔了一只狗 (此时Debug方法为,等~)
  • 对方因为另一个人而放了你飞机 (此时Debug方法为...

所以,Bug 和 Debug就是一个出现问题和解决问题的过程。
如果你一直听到你的程序员朋友说他一直在加班调Bug,你不需惊讶,因为在我们的生活中我们自己不也是一直处于出现问题和解决问题的过程中么?
我们属于大自然创造出的奇迹,而计算机只是我们人类所创造出来的物品,那么,连我们人类本身都一直出现问题的话,程序它,一直有Bug,又有什么不正常呢?
而且,计算机科学家们正在 创造着我们的计算机世界,创造者们在创造过程中不断修正错误,也就没有什么不正常的了,所以, 请善待你身边一直加班改Bug的 猿类。

  • 结语


本话题也将以系列文的方式推出,本章先以 幽默、易懂、充满趣味(捂脸) 的方式介绍 算法、程序以及Bug 三个计算机界基本法概念,望喜欢。

本文部分内容译自一本关于Python开源书籍 How to Think Like a Computer Scientist,感谢!


  1. 其实计算机科学家和软件工程师(程序猿)是有差别的,计算机科学家偏向于计算机理论,而软件工程师会更偏向于计算机应用,一般来说,"大多数的后者" 应用 "少数的前者"所研究出来的理论至现实世界中。所以他们之间的语言和方法,是共通的。

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

推荐阅读更多精彩内容

  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 171,800评论 25 707
  • 本文把程序员所需掌握的关键知识总结为三大类19个关键概念,然后给出了掌握每个关键概念所需的入门书籍,必读书籍,以及...
    dle_oxio阅读 11,091评论 6 244
  • 一、需求场景: 二、Keepalived 简要介绍 Keepalived 是一种高性能的服务器高可用或热备解决方案...
    会跳舞的机器人阅读 16,388评论 10 48
  • 在图书馆几千本书中挑挑拣拣最终选择这本书的原因我想大概是有两个。 一是,今年我和基友计划在2020年去日本旅行,需...
    南如阅读 721评论 2 1
  • 上周六中午和同学在人广附近的广西北路吃饭的时候,路过一家包子店。听同学说,这家店的港式流沙包是上海的人气美食。当时...
    上官若蓝阅读 431评论 0 0