c716@139.com

4006644012

…本网站正在建设中

如有不便,请谅解

想成功,91调研就要调研。

计算机语言发展简史:探索编程语言的演变逻辑
来源:www.91diaoyan.com | 作者:91diaoyan | 发布时间: 119天前 | 231 次浏览 | 分享到:
据不完全统计,现在有超过2500种有文档资料的计算机语言,每种语言都有它出生、存在、消亡的理由,想了解其中的奥秘就要先理清楚计算机技术发展史。

回顾编程语言史,据91调研不完全统计,现在有超过2500种有文档资料的计算机语言,很吓人!其中比较热门的就有这么多——Basic,C,C++,C#,CSS, Fortran, Go, HTML, Java, JavaScript, Lisp, Lua, VC++,R,Object C, Pascal,Delphi, Perl, PHP, PostScript, Python, Ruby, Scala, SQL, Swift, VBA, VB.NET, Verilog, VHDL, Visual Basic……这简直是多的没法说!这么大江湖,每种语言都有它出生、存在、消亡的理由,想了解其中的奥秘就要先理清楚计算机技术发展史。


1) 计算机技术演进过程

自从1946年世界上第一台电子计算机问世,人类和机器的交流方式成为了主要研究方向,从业者孜孜不倦的追求更有效、更简便的编程语言。伴随着计算机硬件技术的飞速发展,对编程语言的要求也日益严格。在过去的几十年,大量的编程语言为了满足不同领域的编程要求和软件功能,经历了被修改,被取代,被发展等过程,最终发展成了现在编程语言的多样化。尽管人们多次试图寻找一个能够适应所有编程环境的通用语言,但是却没有一次成功。91调研认为,就像我们人类的语言一样,多样性将长期存在。针对要解决的问题,选择一门正确的语言成为从业者的必修课。

计算机技术演进过程


2) 编程语言的演进

①机器语言

计算机的硬件作为一种电路元件,它的输出和输入只能是有电(开)或者没电(关),所以计算机传递的数据是由“0”和“1”组成的二进制数,这是计算机语言的本质。计算机发明之初,人们只能编写"0”“1”这样的二进制数字串去控制电脑。直观上看,机器语言十分晦涩难懂,其中的含义往往要通过查表才能理解,也很难找到程序的错误。尤其需要修改已经完成的程序更是无从下手。而且,机器语言的程序为特定机器而编制,因此一种机型编制的机器语言无法移植到另一种机型的机器上运行。所以机器语言的移植性较差。但由于机器语言完美适配特定型号的计算机,故而运行效率远远高过其他语言。机器语言,也就是第一代编程语言。

②汇编语言

为了便于编写,计算机软件开发者采用了一些助记符号来表示机器语言,这些带有助记符号的低级语言与机器语言类似,能够控制计算机的执行。由于汇编语言包含助记符号,以这些语言编写程序要比直接用机器语言写程序简单。也正是由于包含了助记符号,这种语言编写的程序不能被计算机直接执行,需要翻译成机器语言后才可被计算机执行。

上世纪五十年代末开始使用的第二代语言就是各种形式的汇编语言。由于汇编语言随机器而异,与机器语言很相似,所以以汇编语言写程序仍很困难,而且移植性也极差。

③高级语言

二十世纪五十年代中期以来,人们相继创造了各种面向算法、面向处理过程,与机器指令系统无关的比较高级的语言,这就是自上世纪六十年代开始使用的第三代语言,称为高级语言。

编程语言的演进


2023年4月TIOBE编程排行榜

TIOBE是“the importance of being earnest”的缩写。下表是前20名编程语言名称。


Python

Python是一种跨平台的计算机程序设计语言,主要运用于Web应用开发、自动化运维、人工智能领域、网路爬虫、科学计算、游戏开发等。

C

C语言是一门面向过程的、抽象化的通用程序设计语言,广泛应用于底层开发。

Java

Java是一门面向对象编程语言涵盖了Web应用程序、移动应用程序、桌面应用程序、游戏开发和数据库编程等多个领域。

C++

C++ 是一种静态类型的、编译式的编程语言,支持过程化编程、面向对象编程和泛型编程。被认为是一种中级语言,它综合了高级语言和低级语言的特点。

C#

C#是微软公司发布的一种由C和C++衍生出来的面向对象的编程语言、运行于.NET Framework和.NET Core(完全开源,跨平台)之上的高级程序设计语言

Visual Basic

Visual Basic(简称VB)是Microsoft开发的一种面向对象编程语言。可快速、轻松地创建类型安全的.NET应用。

JavaScript

JavaScript(简称“JS”)是一种具有函数优先的轻量级,解释型或即时编译型的编程语言。虽然它是作为开发Web页面的脚本语言而出名,但是它也被用到了很多非浏览器环境中。

Assembly 

language

汇编语言(Assembly Language)是任何一种用于电子计算机、微处理器、微控制器或其他可编程器件的低级语言,亦称为符号语言。用助记符代替机器指令的操作码,用地址符号或标号代替指令或操作数的地址。

SQL

结构化查询语言(Structured Query Language)简称SQL,是一种特殊目的的编程语言,是一种数据库查询和设计语言,用于存取数据以及查询、更新和管理关系数据库系统。

PHP

PHP(PHP: Hypertext Preprocessor)即“超文本预处理器”,是在服务器端执行的脚本语言,尤其适用于Web开发并可嵌入HTML中。

R

R是用于统计分析、绘图的语言和操作环境。R是属于GNU系统的一个自由、免费、源代码开放的软件,它是一个用于统计计算和统计制图的优秀工具。

Delphi(Objedt Pascal)

Delphi 是以Object Pascal 语言为基础的可视化开发工具,Object Pascal 是一种高级编译语言,建立于free pascal 和turbo pascal 之上,支持结构化和面向对象编程。

Go

Go(又称 Golang)是 Google开发的一种静态强类型、编译型语言,高度支持并发性。Go 语言语法与C相近,它也像 C++和 Java 一样快。

Swift

Swift,苹果于2014年WWDC苹果开发者大会发布的新开发语言,可与Objective-C共同运行于macOS和iOS平台,用于搭建基于苹果平台的应用程序。是一门更现代化的编程语言,可以面向协议编程、函数式编程、面向对象编程。

Ruby

Ruby,一种简单快捷的面向对象脚本语言,在20世纪90年代由日本人松本行弘(Yukihiro Matsumoto)开发,遵守GPL协议和Ruby License。源于Perl和Lisp两类语言。

Objective-C

Objective-C是扩充C的面向对象编程语言。它主要使用于Mac OS X和GNUstep这两个使用OpenStep标准的系统,它的流行归功于iPhone的成功,编写iPhone应用程序的主要编程语言是Objective-C。

Perl

Perl语言是脚本语言,也能进行面向对象的编程。专门用于文本处理。全称是Practical Extraction Report Language,翻译成中文就是实用报表提取语言。

Lua

Lua 是一个小巧的嵌入式脚本语言,由标准C编写而成,几乎在所有操作系统和平台上都可以编译,运行。

MATLAB

MATLAB (Matrix Laboratory)是一个用于科学研究与工程应用分析和设计的商业化算术运算软件,优势主要体现在以矩阵计算为核心的科学计算与仿真上,由美国新墨西哥大学的数学教授 Cleve Moler 开发。

COBOL

COBOL语言,是一种面向过程的高级程序设计语言,主要用于数据处理,是国际上应用最广泛的一种高级语言。COBOL是英文Common Business-Oriented Language的缩写,原意是面向商业的通用语言。


热门编程语言的特点


编程语言

学习内容

语言本质

解决问题

适用岗位

C

指针、内存、数据类型

理解计算机系统结构

性能

系统底层开发

Java

对象、跨平台、运行时

理解主客体关系

跨平台

网络后台及APP开发

C++

对象、多态、继承

理解主客体关系

大规模程序

应用类特定方向

VB/NC

对象、按钮、文本框

理解交互逻辑

桌面交互

不确定

Python

编程逻辑、第三方库

理解问题求解

各类问题

大数据/人工智能等

 

高级语言接近于自然语言,使用与自然语言语法接近的自封闭词法体系。多数独立于计算机。用高级语言编写的程序,不是直接的机器码,因此不能直接执行,需要有“转换器”把它们转换成机器语言形式的可执行程序,才能为计算机系统所执行。


3) 编程语言的执行方式

编译执行是将整个程序的源代码一次性转换成机器语言的过程。一次性转换好之后不再需要源代码(类似英文名著的翻译,翻译成中文后直接出版就行了)。采用编译执行的编程语言是静态语言,例如:C、C++、Golang等。静态语言优点:编译过程没有时间限制,优化更充分,执行速度更快。编译后程序可以在同系列系统中直接执行,不需要执行环境。


 编程语言的执行方式-编译执行

 

解释执行将程序的源代码逐条转换成机器语言的同时逐条运行的过程。每次程序运行时随翻译随执行(类似英语的同声传译)。采用解释执行的编程语言是动态语言,例如:JavaScript、PHP、Python等。脚本语言一般用在主程序的某个环节中,需要扩展某个功能时主程序一调用就运行,返回结果就结束了,这类语言一般为解释性语言。动态语言优点:执行过程需要源代码,程序维护更灵活通过在不同系统中配置执行环境,可以实现源代码的跨平台执行。


编程语言的执行方式-解释执行


还有一种更白话的举例:编译执行就像吃家常菜,菜在厨房做熟后,上桌直接吃。解释执行就像吃火锅,上桌的都是生的,需要边涮边吃。



有人把Java归为编译执行语言,也有人把Java归为介于编译型语言和解释型语言之间。因为编译型语言如C、C++,代码是直接编译成机器码执行,但是不同的平台(x86、ARM等)CPU的指令集不同,因此,需要编译出每一种平台的对应机器码。解释型语言如Python、Ruby没有这个问题,可以由解释器直接加载源码然后运行,代价是运行效率太低。而Java是将代码编译成一种“字节码”它类似于抽象的CPU指令,然后,针对不同平台编写虚拟机,不同平台的虚拟机负责加载字节码并执行,这样就实现了“一次编写,到处运行”的效果。对于虚拟机,需要为每个平台分别开发。为了保证不同平台、不同公司开发的虚拟机都能正确执行Java字节码,SUN公司制定了一系列的Java虚拟机规范。从实践的角度看,JVM的兼容性做得非常好,低版本的Java字节码完全可以正常运行在高版本的JVM上。Java就像预制菜

 

计算机性能已经不是解决一般问题的瓶颈,大数据、云计算、物联网、信息安全、人工智能等需求爆发,计算领域核心矛盾已经从硬件转化为产量、效率和方法的不足。在2018年及以后,面对应用导向计算需求,该使用什么编程语言?



我们可以看出,各编程语言的历史使命,超级语言”的出现是计算时代演进的选择!