赚钱云上赚兼职软件(潘爱民:计算机程序的演进——我的程序人生三十年)

【CSDN编者按】编程三十多年的大神潘爱民,从学生时代的兴趣进入计算机世界。先后经历北大教研、微软亚洲研究院体系研究、盛大、阿里产业研发,走上创业之路,创作系统软件研发、落地场景应用指令集。《新程序员004》,一起走进潘爱民的程序人生,从中可以一窥计算机程序三十年来的演变,也可以从他的视角透视未来十年的发展。展望未来,潘爱民表示,中国写代码的人数将在两到三年内达到顶峰,一种基于中文的编程语言将会诞生。

作者|潘爱民编辑|唐

出品| 《新程序员》编辑部

我第一次接触计算机程序是在1985年。虽然只是一些娃娃机上的基础程序,但我还是感受到了编程的乐趣,煞费苦心地写出了各种花哨的程序。在过去的30年里,计算机程序已经成为我的一种思维方式。无论是应用层的功能,系统层的能力,还是背后的数据处理逻辑,都被转化成了机器指令。

我有幸充分体验了从PC时代,到互联网的兴起和发展,到移动互联网,再到万物互联时代和产业数字化的发展过程。这三十年不仅是软件技术和行业的发展期,也是我个人的职业生涯和程序人生。本文介绍的是我认知中计算机程序的演变,只是对30年程序生命的总结。

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

潘爱民(1999年在北京大学工作期间摄)

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

软件栈 —— 从源代码到机器指令

一般来说,计算机程序是指软件的代码部分。软件涵盖的内容要多得多,比如数据、文档,甚至硬件(比如加密狗),可能还有相应的服务。计算机程序指的是一组指令,其指示计算机或具有信息处理能力的其他设备执行各种动作。计算机既可以是机器指令的形式(二进制数0和1的序列,人很难解释),也可以是人编写的原始代码的形式(通常由程序员解释和维护)。

随着软件技术在过去三十年的发展,我们可以从编程和运行的方式来看这些变化。有一些典型的方式:

1. 代码直译执行

在编程的早期,程序员根据机器执行指令的想法来控制机器。最典型的程序是用C语言编写的,几乎每一行代码都可以对应一个指令序列,甚至汇编指令(机器指令的字符描述)也可以直接嵌入C语言源代码。

2. 代码解释执行

原始代码被解释为中间抽象语言描述,然后进一步转换成机器语言来执行。基于Java语言“一次编写,随处运行”的哲学思想,用Java语言编写的程序自然具有跨平台的特点。程序员面对的是一个抽象的计算环境,在编写的Java代码如何执行的中间有一个间接层。

3. 虚拟机和容器化

程序员写的代码最后由机器上的CPU执行。随着计算机硬件能力的增加,一台机器可以被虚拟化成多台计算机。编译或解释的机器代码被进一步映射成指令序列。随着云计算的发展和普及,这种方案已经成为主流。它是容器虚拟机的一种轻量级形式,其思想本质上是一样的。

4. 前后端分离

数据展示由Web技术完成,后端处理由合适的编程语言完成。它们通过符合Web标准的API相互通信。前端分离的核心思想是将可视化和用户交互部分分离,而不是与业务逻辑耦合。

上述四种方式中,前三种侧重于计算机程序被引入同一台机器上的一个或多个中间层,导致源代码在到达物理CPU之前被多次解释或映射;第四种方法是从跨机器的角度将可视化和用户交互与业务逻辑(尤其是数据处理)分离。这些变化与软件行业的发展密切相关。以下几点值得一提。

从源代码到相应的机器指令,路径越来越不清晰。在物理机环境中,源代码与CPU之间隔着一层或多层;在云计算环境中,程序员甚至不知道代码是如何物理执行的。这种趋势导致程序调试和性能优化更加复杂和困难。

程序运行时,业务功能的代码路径变长,甚至分布到不同的计算环境。触发业务逻辑的地方和处理业务逻辑的地方可能会跨越执行环境甚至网络。这就对程序员的复合能力提出了更高的要求,单一技术栈的程序员会面临很大的挑战。

这些编程方法是集成的,有各自的适应场景。随着互联网的不断发展及其对各行业的渗透,混合编程已经成为软件行业的主流。对于软件开发者来说,需要深度和广度齐头并进:所谓深度,是指对源代码逐级执行到下一个层次的理解;所谓广度,是指对执行链从一个执行环境到另一个执行环境的迁移过程的理解。

技术进步是产业发展的内在动力,云计算得益于硬件的巨大进步和虚拟化技术的成熟。反过来,行业的发展导致了软件从业者的大规模扩张。中国有数百万程序员,即使按照某些统计方法。

主题测试文章,只做测试使用。发布者:徐浪老师,转转请注明出处:https://www.yuyanwz.com/116693

(0)
上一篇 2022年7月26日 上午8:36
下一篇 2022年7月26日 上午8:38

相关推荐