以上四种方式 , 前三种侧重于计算机程序在同一台机器上被引入了一个或者多个中间层 , 导致源代码被多次解释或映射才到达物理 CPU;第四种方式则是从横向跨机器的角度将可视化和用户交互部分与业务逻辑(特别是数据处理)解耦 。 这些变化与软件产业的发展息息相关 。 下面几点值得一提 。
- 从源代码到对应的机器指令 , 路径越来越不清晰 。 在物理机器环境下 , 源代码与 CPU 之间隔了一层或多层;在云计算环境下 , 程序员甚至完全不知道物理上代码是如何被执行的 。 这种变化趋势导致了程序调试和性能优化变得更加复杂和困难 。
- 当程序运行时 , 业务功能的代码路径变长 , 甚至分布到不同的计算环境中 。 一个业务逻辑被触发的地点 , 与它被处理的地点 , 之间可能跨了执行环境 , 甚至跨了网络 。 这对于程序员的复合能力要求更高 , 单一技术栈的程序员将面临很大的挑战 。
- 这些编程方式是融合的 , 有各自的适应场景 。 随着互联网络的不断发展 , 并深入到各个产业中 , 混合编程方式已经成为软件行业的主流 。 对于软件开发人员 , 我们需要在深度和广度上并进:所谓深度 , 是指对源代码往下一层递进执行的理解;所谓广度 , 是指对执行链从一个执行环境到另一个执行环境迁移过程的理解 。
- 技术的进步是产业发展的内在动力 , 云计算得益于硬件的极大进步以及虚拟化技术的成熟 。 反过来 , 产业的发展又带动了软件从业人员的大规模扩大 。 中国的程序员有数百万 , 甚至按有的统计途径达到了上千万 。 这些编程方式的发展与软件产业的效率有极大的关系 。 新的软件技术进步 , 有可能成倍地提高产业效率 , 进而又可能导致大量的从业人员需要进行技术变迁 。
文章图片
研究生期间在宿舍写代码
在我职业生涯的前半段 , 我一直信奉“用二进制的方式来理解程序或系统” , 为每一个功能或任务都揣摩底层的指令序列 。 随着程序或系统的复杂性增加、云计算及前后端分离模式的普及 , 我们越来越无法做到精细化地用二进制方式来理解它们了 。 在这种情况下 , 对软件架构的把握变得越来越重要 , 机缘巧合之下我实现了从系统程序员到软件架构师的升级 。
网络 —— 无处不在的连接
网络的发展改变了我们的生活 , 这是过去将近三十年人类社会最大的变化之一 。 网络也同样改变了计算机程序的运行方式 , 甚至改变了编程的思想 。 我们首先看一下网络本身的演变:
- 初期的网络是在机房环境或者办公环境中使用的 , 网络的物理形态非常直观 , 因为大多数情况下每台机器都拖着一根线 。 常用的网络功能都通过专门的应用程序来完成 , 比如电子邮件程序、浏览器、文件传输工具等 。 网络功能的程序编写属于高级编程技术 。
特别声明:本站内容均来自网友提供或互联网,仅供参考,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
