Osheep

时光不回头,当下最重要。

编程趣谈01 | 程序猿与二进制

前言

今天在蚂蚁私塾的班长群里讨论逻辑推理题,不知怎么就聊到编程这回事儿了。最近调侃程序猿的段子有点多,弄得我都有点不好意思说自己也是了。

《编程趣谈01 | 程序猿与二进制》

魔咒?

严格的说,我算半路出家,除了大学有一门选修课《C语言编程》之外,我对编程一无所知。工作后,由于专业的需要才开始学习编程。解释这些,就当是学艺不精的一个借口好啦。

正因为这种非科班出生,我一直用自己的方法去理解编程。我一直有个想法,把自己的这些体会写出来,说不定能找到同类,也说不定会有人喜欢呢。

言归正传,先说说程序猿吧

程序猿也可以叫软件工程师,是不是瞬间要觉得高大上一点了。如果把一个系统按硬件和软件划分的话,软件部分就是程序猿的世界了。

软件的分类非常的复杂,一时半会儿说不清楚。但有一点可以肯定的是,这和修电脑没有半毛钱关系。修电脑只是个借口,你懂的。在电脑城会修电脑的人一大把呢,而且保证很专业。

这让我想起了每次回老家的一件尴尬事。在我们那儿大学生是个稀罕物,每次春节回家总有人找我讨要对联。当我说毛笔字写得不好时,他们会露出非常惊讶的表情,然后悻悻而去。

只能说现在社会分工越来越明显,好比开车的不见得会修车,女孩子不见得会下厨一个道理。

从另一个角度讲,其实我们每个人都是程序猿。在手机上设置闹钟是编程,使用excel公式编辑也是编程。在影片《黑客帝国》里,甚至每个人都成了程序的一部分。

神奇的二进制

说编程一定绕不开二进制这个东东,“ 世界上有10种人,懂二进制和不懂的……”,不懂的后面有答案哦。

编程和二进制的关系链是这样的:编程语言=〉机器语言=〉二进制指令=〉硬件电路动作。无论多么牛逼的编程语言,最终都要转换成二进制指令去驱动电路。

《编程趣谈01 | 程序猿与二进制》

二进制与电路

我们小学开始学数学都是用的十进制,据说起源于十个手指头,理论上任意进制都是可以玩的,只是一个习惯问题。无论什么进制都是为了用有限的符号表示信息的变化。

进制越高每个符号的信息量越大,比如十六进制的“A”用十进制表示就是“10”,二进制表示就成了“ 1010”。前面那个段子中就是说的二进制中的10,就等于十进制的2。

但无论多么牛逼的计算机系统,包括现在英特尔正在研发的人工智能芯片,在最最底层一定是用二进制交流的。也许有人会问,为什么不用十进制呢,这样和人的理解一致了,多好啊!

什么是大道至简,我想二进制就是很好的诠释。越高的进制对计算机来说意味着越复杂的电路。二进制用最简单的门电路就能解决,高低电平正好表征两种状态“1”、“0”,对应着门电路的开和关。

想象一下,我们编程发出的所有指令,最终都会转换成无数的“1”、“0”,然后电脑去控制门电路的开和关。这无数的开和关的组合操作,构建了当今世界最伟大的计算世界,无论多么骄傲的公司概莫能外。是不是很神奇?

随着科技的进步,是否会有其他进制的计算系统产生呢?

一切皆有可能,毕竟高进制的运算效率更高,因为单次操作携带的信息量更丰富。从需求层面来讲有可能的,但也会面临一些问题需要解决。

例如电路的复杂度会增高,对电路的工艺要求会更高。我们用敲击的轻重来表示零和一的话,不会觉得有难度。但要你敲击出轻、较轻、较重、重四种状态,并让对方能够感知出来难度就非常大了。

在程序的世界里,光是二进制就已经很奇妙了。只要用心去感受,它也可以是一门艺术。它并不需要每个人去深入的理解,但去感知一下它的魅力一定会让你受益。

点赞