非专业coding教程2:与机器对话

在很多人眼中,电脑是一个很厉害的存在:它可以帮你统计大量的数字,可以给你提供大量的信息,可以把遥远距离的信息展现在你的面前,可以做各种人类无法做到的事情。

很聪明很神奇对不对!~才怪啦!

在你面前的这个电脑,在拥有软件之前,就只是一堆电路板混合物。但是它有个很重要的特点:它拥有记录信息以及操控信息的能力。想象一下,电脑就像一个富豪家出生的孩子,身边是各种跑车游艇直升机。但是它什么都不懂,这些东西对它来说就一点用都没有。人类中的程序员,便是教会它知识的人,教会这个富二代怎么一步一步启动它的跑车:插钥匙,开引擎,挂档踩油门,呼!~

电脑是个听话的学生,它可以把学到的知识记得很牢,所作所为都是所学到的知识的反映。所以说,你面对的不是一台单纯的电脑,里面保存着数不尽的人类的思想,你所遇到的,都是人类思想的映射。信息保存在硬盘里,嗯,你可以拆开硬盘看看人类的思想长什么样。(骗你的。)

在现实生活中,人类用语言表达自己的思想,不同国家地区的人使用不同的语言。为了方便不同语言的人的交流,我们使用一些国际通用的语言,比如说英语。一个意大利人可以用英语跟日本人交谈,当他们这么做的时候,实际上是

1. 意大利人把自己的想法翻译成英语,

2. 日本人听到英语,把这段信息翻译成日语并加以理解。

你好,歪果仁

人类跟电脑的交谈也是差不多一样的方式,可能比较复杂点。

初中或者高中的计算机课,希望你们在联机打游戏刷网站发呆之余,还能记得老师讲过,电脑的信息是二进制存储的。也就是说,电脑只认得“10101001010101001”这样的语言。所以程序员与电脑的对话类似于下图:

“帮我计算1+1等于几”

注:这幅图中间的“云朵”,其实包括了很多“层次”在里面。

在最开始的时候,那时候的程序员还被叫做计算机科学家(大概吧),他们是“直接”跟计算机进行对话的。嗯,你没有看错,就是直接写101100100110这样子,这便是机器语言。那时候的编程是通过在纸条上戳洞来完成的,大概是遇到0就戳一个洞吧,最终的程序的样子就是:

程序员需要灵活的双手——来戳洞……

可想而知,写出来的东西不仅别人看不懂,他们自己其实也看不懂啦。之前说过的,程序员就是千方百计想着偷懒的人,这么难懂的机器语言当然没人想继续用。而一般来说,抓到规律的东西就可以用自动化的机制来代替人工。机器语言便是非常有规律的东西,于是科学家们在那之上,又创造了一门语言:汇编语言。有了汇编语言,科学家们就可以用比较易懂的方式来控制电脑了。比如说要电脑计算1+1,那么步骤大概是这样的(二进制数是乱写的,各位看官别当真):

在存储器上写个1                                                  1000110010010110

在存储器上再写个 1                                             1101001001001010

放到加法器上加起来                                             1101010101101111

由于每个步骤都对应着一串固定的二进制指令,所以可以很方便地进行映射。负责这项工作的程序就叫做汇编程序。好了,有了汇编语言,科学家们就可以告诉电脑把大象放进冰箱要怎么做了,只要把步骤想好告诉电脑就行了。

但是懒惰的科学家还是觉得这不够:为什么我只是想算一算1+1等于几,但是我却需要控制电脑一步一步去完成,而且,计算1+1这个过程是固定的,为什么不继续用自动化的东西来完成?于是在汇编语言之后,科学家们有创造了一种更高级的语言,而且懒得取名了,直接称为高级语言。从此以后,科学家们只需要写“1+1” 就可以自动转变成0和1的长串,传输给电脑让它去计算了。完成这个转变过程的程序,叫做编译器。编程,也变成了难度少了很多的工作,随着计算机进入寻常百姓家,写程序的人再也不只是科学家了,专业写程序玩家,被称之为程序员。

有一个重点需要注意。机器语言是跟计算机本身相关的,汇编语言也是跟计算机的工作原理相关的,当前我们使用的电脑的基本原理跟设计都是差不多的,所以机器语言、汇编语言也是固定那样子。但是高级语言因为不用在乎具体硬件细节,可以更关注于表达思想,而人类思想百花齐放,所以高级语言也有很多种。

我在大学的时候一开始学的是一种叫C++的语言,后来转向Java。然后很多人都会说C或者C++是“面向过程”的语言,Java是“面向对象”的语言。直到毕业之后还有人问我,到底什么是“面向对象”编程。那时候我想了一下,说,其实这是一种思维方式,一种编程里面的世界观。

很高深对不对~~~

由于高级语言可以直接表达编程人员的思想,人类的思维方式千差万别,人类的世界观更是不尽相同,于是便有了各种各样形式各异的编程语言了。其目的,就是为了贴合思维方式,从而可以方便地把想法转换为代码。如果你认真学过不同的人类语言,你就会发现不同人类语言中也包含着不同文化不同国家的人的不同的思想。作为一个例子,所谓的“面向对象”编程,其思维方式就是认为问题里出现的“东西”,都可以抽象成一个一个的“对象”,通过这样的抽象,把问题简单化,模型化。相对的,另一种编程模型,“面向过程”编程,则是认为问题都可以分解为一个一个的步骤,所谓的解决问题,就是想好每个步骤按部就班地完成。

以上是我个人的理解,偏颇之处,我才不管啦!

下一节课,我们开始拿起枪,扛起炮,正式写代码!

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

推荐阅读更多精彩内容