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


我有机会在之江实验室建设一个大计算装置 , 称为智能计算数字反应堆 , 其旨在搭建一个大计算平台 。 该数字反应堆可以聚合多种异构算力资源 , 并通过一些计算框架或者算法库 , 为各种应用(包括科学发现、数字经济、工业仿真等 , 称为应用反应堆)提供统一的计算平台 。 可以想象 , 一旦有了这样的计算设施 , 将人工智能算法与各个领域模型结合起来 , 在局部领域超越人类智能将会成为一种发展模式 。
可视化和用户交互 —— 从 GUI 到数字孪生
在应用软件开发工程中 , 可视化和用户交互部分往往会占据相当大的比例 。 写这部分程序逻辑的工程师往往比较受欢迎 , 因为他们可以快速搭建出一些看得见效果的程序 。 在当前如火如荼的产业数字化形势下 , 除了数据工程师 , 可能最受欢迎的就是做可视化和用户交互开发的工程师了 。 在过去三十年中 , 主流的用户交互和可视化软件技术有过几次变迁:

  • 原生的 GUI(来自于操作系统的支持)
在 1990 年代早期 , 编写用户界面往往要直接面对操作系统提供的 API 。 为了做出好看又整齐有美感的图形界面 , 程序员不仅要熟悉操作系统的窗口管理和图形 API , 还要精通计算机图形学 , 甚至还需要懂色彩美学 。 更要紧的是 , 程序的交互界面部分的代码量极大 , 并且这些代码对于硬件显示器和操作系统版本的兼容性非常不友好 。
  • 应用编程框架中的 GUI
通过应用编程框架来实现图形用户界面 , 可以有效地解决直接在原生 GUI 基础上编写交互界面逻辑的不足 , 因此从 1990 年代中后期开始诞生了很多应用编程框架 , 最为经典的当属微软的 MFC 应用编程框架 , 以及跨平台支持的 Qt 。 Java 环境提供了用户交互和可视化支持 , .NET 也提供了强大的图形用户界面开发功能 。
  • 图形界面交互引擎
对于用户界面动态性要求高的应用程序 , 譬如它们的数据是动态的 , 或者表单是动态可配置的 , 它们倾向于内置一个图形界面交互引擎 , 从而将可视化界面的渲染效果和交互事件的处理流程控制在自己的程序内部 。 比较典型的渲染和交互引擎是 Apple 支持的 WebKit 引擎(其前身是 KHTML)、Adobe 的 Flash 引擎 , 以及 Google 的 Chromium 浏览器引擎(源自 WebKit 和 V8 引擎) 。 当 Adobe Flash 还在如日中天(2010 年)的时候 , 业界曾经引发过 Flash 和 HTML5 哪个是未来的争论 。
  • B/S 架构
经过多年的发展 , 可视化和用户交互逐渐趋向于标准化——HTML+CSS+Java , 这正是前文提到的前后端分离的基础 。 前提是每个前端环境都有 Web 浏览器(Browser) , 前端逻辑运行在浏览器中 , 它们通过 HTTP 或 HTTPS 协议与后端(Server)进行通信 。 这种架构与云计算的服务器虚拟化完美地切合起来 。 应用程序可以部署在云上 , 用户只需通过一个浏览器 , 就可以在任何联网的地方看到程序运行的结果 , 并且进行交互 。
图形用户界面的技术演进经历了“单机图形显示优化——图形用户界面标准化——图形用户界面前后端分离”这一过程 , 主流的可视化交互界面开发形式在往高效率方向发展 , 架构也趋向合理 。 然而 , 这些开发方式并非简单的替代关系 , 每一种方式在今天的产业环境中 , 也仍然有它适用的软硬件环境 。
在 PC 互联网时期 , 可视化和用户交互技术侧重于渲染性能和响应及时性的不断提升;在移动互联网时期 , 除了性能要求以外 , 动态性是一项更为侧重的需求 , 很多应用程序中的页面内容和交互逻辑需要方便地定制;而到了产业互联网时期 , 可视化和用户交互又有了新的需求和趋势 , 以下两方面的发展值得特别提一下:

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