潘爱民:计算机程序的演进——我的程序人生三十年

【CSDN 编者按】大神潘爱民 , 编程三十余年 , 从学生时代兴趣出发进入计算机世界 , 经历过北大教学科研、微软亚研系统研究 , 盛大、阿里的工业研发 , 走上创业之路 , 创立指令集进行系统软件的研发及落地场景应用 。 《 新程序员004 》 , 一起走进 潘爱民的程序人生 , 从中可以一窥过去三十年计算机程序的演进 , 也可以通过他的视角 , 看透未来十年的发展 。 面向未来 , 潘爱民说 , 在中国写代码的人数将在两到三年后达到高峰 , 更将诞生基于中文的编程语言 。
作者 | 潘爱民 责编 | 唐小引
出品 | 《 新程序员 》编辑部
我在 1985 年第一次接触到计算机程序 , 尽管那只是娃娃机上的一些作业型的 BASIC 程序 , 但我依然感受到了编程的乐趣 , 并且乐此不疲地编写各种花样程序 。 三十多年过去 , 计算机程序于我而言已经成为一种思考方式 , 无论是应用层的功能 , 还是系统层的能力 , 或者是背后的数据处理逻辑 , 都转化成了机器的指令 。
我有幸完整地经历了从 PC 时代 , 到互联网的兴起与发展 , 再到移动互联网 , 又到万物互联时代和产业数字化的发展历程 。 这三十多年 , 既是软件技术和产业的发展期 , 也是我个人的职业生涯和程序人生 。 本文介绍我认知中的计算机程序的演进 , 正好是程序人生三十年的一篇小结 。
潘爱民:计算机程序的演进——我的程序人生三十年
文章图片

潘爱民(摄于 1999 年北大工作期间)
软件栈 —— 从源代码到机器指令
通常而言 , 计算机程序是指软件中的代码部分 。 软件涵盖的内容要多得多 , 比如还包括数据、文档 , 甚至有硬件(比如加密狗) , 还可能有相应的服务等 。 计算机程序则是指一组指示计算机或其他具有信息处理能力的装置执行各种动作的指令 。 计算机程序既可以是机器指令的形式(由二进制数 0 和 1 构成的序列 , 人难以解读) , 也可以是人编写的原始代码的形式(通常由程序员来解读和维护) 。
过去三十多年软件技术的发展 , 可以从程序编写方式和运行方式来看待其中的变化 。 典型的有以下一些方式:
1. 代码直译执行
早期的程序编写方式是 , 程序员按照机器执行指令的思路来控制一台机器 。 最典型的是用 C 语言来编写程序 , 几乎每一行代码都可以对应到一个指令序列 , 甚至可以在 C 语言源代码中直接嵌入汇编指令(机器指令的字符描述方式) 。
2. 代码解释执行
原始的代码被解释成一种中间抽象语言描述 , 再进一步转换成机器语言被执行 。 以 Java 语言的哲学思想“一次编写 , 到处运行(Write once, run anywhere.)”为基础 , 用 Java 语言编写的程序天然具有跨平台特性 。 程序员面对的是一个抽象的计算环境 , 所编写的 Java 代码是如何被执行的 , 这中间有一个间接层 。
3. 虚拟机和容器化
程序员编写的代码最终由机器上的 CPU 来执行 , 随着计算机硬件能力越来越强 , 一台机器可以被虚拟成多台计算机 。 源代码被编译或者解释出来的机器代码 , 又进一步被映射成一个指令序列 。 云计算的发展和普及让这种程序运行方式变成了主流 。 容器是虚拟机的一种轻量形式 , 其思想本质上是一致的 。
4. 前后端分离
数据显示用 Web 技术来完成 , 后端处理用合适的编程语言来完成 , 两者之间通过符合 Web 标准的 API 进行通信 。 将可视化和用户交互部分单独划出来 , 而不是跟业务逻辑耦合在一起 , 这是前后端分离的核心思想 。

特别声明:本站内容均来自网友提供或互联网,仅供参考,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。