《程序分析方法》——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要有办法来分解任务,能够把它分成多个小任务后独立执行,而传统编程语言不需要关注这些。

相关文章
|
3月前
|
存储 移动开发 搜索推荐
利用C语言实现十大经典排序算法的方法
利用C语言实现十大经典排序算法的方法
26 1
|
9月前
|
C语言
【C语言】从水仙花构建思维
【C语言】从水仙花构建思维
39 0
【C语言】从水仙花构建思维
|
10月前
|
C语言 容器
(用0基础的思维让你理解数组)初识C语言(0基础开始)四
(用0基础的思维让你理解数组)初识C语言(0基础开始)四
54 0
|
10月前
|
Serverless C语言
(用0基础的思维让你理解函数)初识C语言(0基础开始)三
(用0基础的思维让你理解函数)初识C语言(0基础开始)三
43 0
|
C++ Python
深度之眼(九)——python函数--面向过程的编程(下)
深度之眼(九)——python函数--面向过程的编程(下)
深度之眼(九)——python函数--面向过程的编程(下)
|
机器学习/深度学习 Python
深度之眼(九)——python函数--面向过程的编程(上)
深度之眼(九)——python函数--面向过程的编程(上)
深度之眼(九)——python函数--面向过程的编程(上)
|
C语言
【C语言学习者必会的题目集锦1】巩固基础,稳步提高
【C语言学习者必会的题目集锦1】巩固基础,稳步提高
85 0
【C语言学习者必会的题目集锦1】巩固基础,稳步提高
|
机器学习/深度学习 Java
Java面向对象程序设计综合练习3(程序填空题)
Java面向对象程序设计综合练习3(程序填空题)
105 0
Java面向对象程序设计综合练习3(程序填空题)
|
人工智能 Java C++
Java面向对象程序设计综合练习1(程序填空题)
Java面向对象程序设计综合练习1(程序填空题)
327 0
Java面向对象程序设计综合练习1(程序填空题)
|
Java
Java面向对象程序设计综合练习1(填空题)
Java面向对象程序设计综合练习1(填空题)
121 0