一文看懂编程的本质,程序员有前途么?( 二 )


语言是人类思维的文字表现 。有的人语言条理清晰 , 有的人杂乱无章 , 难以一概而论 , 其中所包含的信息量也不一致 。我们从小学就接受语文训练 , 反复练习每句中心词是什么?段意是什么?中心思想是什么?这种训练就是帮助我们建立起语言所包含语义的逻辑性 , 才能保证对方能够顺利地接受信息所包含的语义 。
我们所训练的这种表达就是一种算法 , 大家可以试着想象一下你周围的人算法处理能力 , 有的人啰哩啰嗦说不清楚 , 有的人词义准确、逻辑清晰、言简意赅、没有废话 , 这种人对这件事情的算法能力就很强 。
如何衡量一段文字所包含的信息量呢?前苏联科学家柯尔莫洛夫提出了信息量度量的新方法:除了基于组合和基于概率方法之外 , 他提出了基于最短程序长度的信息量度量方法 。算法信息论的代表 。

一文看懂编程的本质,程序员有前途么?

文章插图
柯尔莫洛夫发明了算法信息论
例如我们说:3.1415926..........和说一个pai“
一文看懂编程的本质,程序员有前途么?

文章插图
”在本质上是一样的 。
后面大家有机会可以深入了解熵这个概念 , 算法就是逆熵操作 , 算法的效率就是算法逆熵的能力大小 。
2、算法=控制+逻辑
英国计算机大师Robert Kowalski
他发明了逻辑编程 , 他的学生研制了Prolog的编译器 。我们把公式代入:
一文看懂编程的本质,程序员有前途么?

文章插图
 
控制就是指程序将按照什么样的流程和顺序进行计算 。
顺序有简单的 , 也有非常复杂的 。例如人机交互的流程就比较复杂:
一文看懂编程的本质,程序员有前途么?

文章插图
复杂的控制过程
【一文看懂编程的本质,程序员有前途么?】控制就是指程序的计算步骤 , 先算什么 , 后算什么 , 如何跳转 , 如何回退 。
逻辑就是指数据结构按照什么规律如何相互影响 。
当翻开欧几里的《几何原本》这本书时 , 所有人都会立刻产生仰慕感 。这本距今2000多年前的书从定义出发 , 点、线、面逐步推进 , 明确了本书涉及到的公设 , 明确了其中的公理(不言自明的道理) , 然后就将我们初高中所学几何知识几乎一网打尽 。
一文看懂编程的本质,程序员有前途么?

文章插图
你的几何应该没有2500年前的欧几里得好
是的 , 我们初中、高中学的几何学就是典型的逻辑 。
1879年 , 德国科学家弗雷格出版了《概念文字》一书 , 这本书的副标题是”一种模仿算数语言构造的纯思维的形式语言” 。弗雷格的语言对于我们来说就很熟悉了 , 我们在大学数学中用到的很多符号 , 如存在
一文看懂编程的本质,程序员有前途么?

文章插图
 , 任意等符号
一文看懂编程的本质,程序员有前途么?

文章插图
 , 都是源自于这本书 。
傅雷格奠定了逻辑学的基础 , 罗素等人完善了命题逻辑和一阶逻辑 , 再往后冯诺依曼、图灵、邱奇、麦卡锡、巴克斯等人发明了计算机 。是的 , 这些人都是与世无双的逻辑学家 , 确切地说是数理逻辑学家 。
一文看懂编程的本质,程序员有前途么?

文章插图
数理逻辑发展简史
编程的本质是把人的思想变成计算机可执行的机器代码 。
程序员工作的本质是什么?说到这里 , 很不幸 , 应该你已经猜到了?
程序员的工作性质的本质是翻译 , 把人类的思想需求翻译成机器可执行的代码 。任何高级语言都是用来表达思想的 。高级语言都会被翻译成机器语言 , 驱动计算机去执行 。
一文看懂编程的本质,程序员有前途么?

文章插图
程序员的本质
因此 , 你可以认识到软件的世界中有两个实质性的内容:思想和机器语言 。思想是我们希望计算机做什么?当前软件从业者:从业务人员、项目经理、架构师、程序员、测试人员、实施人员 , 他们都有一个共同的工作性质:翻译 。就是把思想翻译成机器语言 。


推荐阅读