《程序分析方法》——1.2 程序设计语言的发展趋势

简介: 本节书摘来自华章计算机《程序分析方法》一书中的第1章,第1.2节,作者:刘磊等著, 更多章节内容可以访问云栖社区“华章计算机”公众号查看。

1.2 程序设计语言的发展趋势

  Turbo Pascal编译器的主要编写者以及.NET框架、Delphi和C#之父——Anders Hejlsberg认为,相对于近几十年来计算机硬件的飞速发展,程序语言的改进不是很明显,主要的原因在于人们更关注“工具”、“框架”或“开发方法”的变革和创新,而忽略了语言的改进。程序设计离不开程序设计语言,程序设计语言与“工具”、“框架”或“开发方法”等一样,都对生产力有着重要影响。
  Anders认为,在过去几十年的编程历史中,程序语言的抽象级别不断提高,人们都在努力让程序语言更有表现力,这意味着人们可以用更少的代码完成更多的工作。Anders还认为,这样的趋势还会继续保持下去,人们将看到抽象级别越来越高的语言。另外,程序语言往往倾向于构建在现有的工具上,而不会从头写起,因为每次从头开始的代价实在太高。
  在Anders心目中,影响力较大的发展趋势主要有三种,它们分别是“声明式编程”、“动态语言”以及多核环境下的“并行编程”。此外,随着语言的发展,原本常用的“面向对象”语言、“函数式语言”或“动态语言”等边界也会变得越来越模糊,因此,“多范式”程序设计语言也是一个越发明显的发展趋势。
  目前常见的编程语言都是“命令式”(Imperative)的,如C#、Java或C++等。这些语言的代码更多关注的是计算任务是如何完成的(How),只要按部就班地一步步地执行写好的代码,就能实现最初的目标。所谓“声明式”(Declarative)语言的代码更多关注的是计算任务是什么(What),函数式语言就属于“声明式”语言,由于“声明式”更能凸显执行目标,也更便于进行任务分解,提高代码的并行化程度,因此,让代码包含更多的“What”,而不是“How”,是编程语言的发展趋势之一。
  传统的程序设计语言都是“静态语言”,即程序的结构是固定的,程序在运行前先要经过编译,以找出程序中存在的编译错误,修改错误后再重新编译,直至没有编译错误才可以运行程序。“动态语言”是指程序在运行时可以改变其结构:引进新的函数、删除已有函数等。动态语言不区分“编译时间”(compile-time)和“运行时间”(runtime-time),动态语言的执行相对于静态语言会慢一些,也没有类型安全的概念。常见的动态语言有JavaScript、Python、Ruby、LISP等。Anders认为,静态语言和动态语言各有优势,未来的发展趋势将是二者的有机融合,而不是谁取代谁。
  多核处理器以其高性能、低功耗优势正逐步取代传统的单核处理器而成为市场的主流。随着应用需求的扩大和技术的不断进步,多核必将展示出其强大的性能优势。多核处理器的出现也对程序设计语言提出新的挑战,首先是思维方式的改变,传统的并发思维,是在单CPU上执行多个逻辑任务,使用旧有的分时方式或时间片模型来执行多个任务。与此不同的是,多核处理器的每个CPU上集成了多个计算核心,多核处理器上的并发是将一个逻辑任务放在该CPU的多个计算核心上执行,这必将改变人们编写程序的方式,同时也意味着程序语言或者API要有办法来分解任务,能够把它分成多个小任务后独立执行,而传统编程语言不需要关注这些。

相关文章
|
10月前
|
分布式计算 并行计算 调度
基于HPC场景的集群任务调度系统LSF/SGE/Slurm/PBS
在HPC场景中,集群任务调度系统是资源管理和作业调度的核心工具。LSF、SGE、Slurm和PBS是主流调度系统。LSF适合大规模企业级集群,提供高可靠性和混合云支持;SGE为经典开源系统,适用于中小规模集群;Slurm成为HPC领域事实标准,支持多架构和容器化;PBS兼具商业和开源版本,擅长拓扑感知调度。选型建议:超大规模科研用Slurm,企业生产环境用LSF/PBS Pro,混合云需求选LSF/PBS Pro,传统小型集群用SGE/Slurm。当前趋势显示Slurm在TOP500系统中占比超60%,而商业系统在金融、制造等领域保持优势。
2023 32
|
9月前
|
安全 Unix Linux
VMware Workstation 17.6.3 发布下载,现在完全免费无论个人还是商业用途
VMware Workstation 17.6.3 发布下载,现在完全免费无论个人还是商业用途
82120 65
|
Java jenkins 持续交付
Jenkins全局工具配置(JDK、Maven、Maven插件)
Jenkins全局工具配置(JDK、Maven、Maven插件)
1241 0
|
存储 安全 Linux
VMware安装CentOS7
【11月更文挑战第11天】本文详细介绍了在 VMware 中安装 CentOS 7 的步骤,包括准备工作、创建虚拟机、配置虚拟机硬件和安装 CentOS 7。具体步骤涵盖下载 CentOS 7 镜像文件、安装 VMware 软件、创建和配置虚拟机硬件、启动虚拟机并进行安装设置,最终完成 CentOS 7 的安装。在安装过程中,需注意合理设置磁盘分区、软件选择和网络配置,以确保系统的性能和功能满足需求。
1161 0
|
机器学习/深度学习 人工智能 数据挖掘
【机器学习】贝叶斯统计中,“先验概率”和“后验概率”的区别?
【5月更文挑战第11天】【机器学习】贝叶斯统计中,“先验概率”和“后验概率”的区别?
|
JSON 小程序 JavaScript
超详细微信小程序开发学习笔记,看完你也可以动手做微信小程序项目
这篇文章是一份全面的微信小程序开发学习笔记,涵盖了从小程序介绍、环境搭建、项目创建、开发者工具使用、文件结构、配置文件、模板语法、事件绑定、样式规范、组件使用、自定义组件开发到小程序生命周期管理等多个方面的详细教程和指南。
|
运维 关系型数据库 数据库
如何在阿里云快速启动Stable Diffusion轻松玩转AI绘画
阿里云计算巢提供了Stable Diffusion快速部署及下载自定义模型功能,使用者不需要自己下载代码,不需要自己安装复杂的依赖,不需要了解Git、Python、Docker等技术,只需要在控制台图形界面点击几下鼠标就可以快速启动Stable Diffusion服务进行绘画,非技术同学也能轻松搞定。
5617 9
如何在阿里云快速启动Stable Diffusion轻松玩转AI绘画
|
编解码 Oracle 关系型数据库
【VNC】修改VNC分辨率大小
【VNC】修改VNC分辨率大小 VNC的分辨率过小有可能导致图形化界面操作过程中遇到“确认键或取消键”无法点击,分辨率过高又可能导致低分辨率客户端显示器无法显示。
24457 1
【蓝桥杯】1434:回文数字—>三种判断回文的方法(上)
【蓝桥杯】1434:回文数字—>三种判断回文的方法
324 0