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

    xiaoxiao2021-07-16  208

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


    最新回复(0)