各类编程语言的历史以及现状发展情况

本文概述了编程语言从机器语言、汇编语言到高级语言的演变,列举了主要的编程语言类型和代表例子,如Python、C、Java等,并讨论了它们在历史、现状及未来趋势中的角色,重点关注了AI、大数据等新技术对编程语言的需求和挑战。
摘要由CSDN通过智能技术生成

什么是编程语言?

我们通过“语言”来控制计算机、让计算机为我们做事情,这样的语言就叫做编程语言。

具体来说,编程语言是用来定义计算机指令执行流程的形式化语言,每种编程语言都包含一整套词汇和语法规范。这些规范通常包括数据类型和数据结构、指令类型和指令控制、调用机制和库函数以及不成文的规定(如递进书写、变量命名等)。大多数编程语言都能够组合出复杂的数据结构(如链表、堆栈、树、文件等)。面向对象的编程语言还允许程序员定义新的数据结构(如“对象”)。

此外,编程语言的描述通常分为语法(形式)和语义(含义)两个部分。已经创建了成千上万种不同的编程语言,并且每年都在创建更多的编程语言。许多编程语言是以命令式形式编写的,而其他语言则使用声明式形式编写。

有哪些编程语言?

编程语言大致分可为三类

1.低级编程语言

  • 它依赖于机器。
  • 基于二进制数 0 和 1 工作。
  • 处理器直接运行低级程序,不需要编译器或解释器,因此用低级语言编写的程序可以运行得非常快。

2.中级编程语言

  • 中级编程语言介于低级编程语言和高级编程语言之间。
  • 它也被称为中间程序语言和伪语言。
  • 中级编程语言的优点是支持高级编程的特性,是一种用户友好的语言,与机器语言和人类语言密切相关。

例如:C语言、C++

3.高级编程语言高级编程语言 (HLL)

  • 旨在开发用户友好的软件程序和网站。
  • 这种编程语言需要编译器或解释器将程序翻译成机器语言(执行程序)。

例如:Python、Java、PHP、C#、JavaScript

各类编程语言的历史

一、第一代计算机语言——机器语言机器语言,即第一代计算机语言。

机器语言是用二进制代码(0和1)表示的计算机能直接识别和执行的一种机器指令的集合,能够直接被机器执行。早期的程序设计均使用机器语言,程序员们将用0, 1数字编成的程序代码打在纸带或卡片上,1打孔,0不打孔,再将程序通过纸带机或卡片机输入计算机,进行运算。指令格式 机器语言指令是一种二进制代码,由操作码和操作数两部分组成。操作码规定了指令的操作,是指令中的关键字,不能缺省。操作数表示该指令的操作对象。

优点:1.能够被机器直接运行2.灵活3.速度非常快

缺点:1.不便于阅读2.难以记忆3.很难确保程序的正确性、高效性4.争对某一种特定的计算机,移植性差,重用性差

下面是机器语言指令的部分举例:

0000 //代表加载(LOAD)

0001 //代表储存(SET)

1.二进制的发明

1679年,德国数学家 莱布尼茨(Gottfried Leibniz)发明了二进制,并对其系统性深入研究,完善了二进制。莱布尼茨是最早接触中华文化的欧洲人之一,曾经从丝绸之路上的一些前往中国传教的教士那里接触到中国文化。法国汉学大师若阿基姆·布韦(Joachim Bouvet,汉名白晋,1662-1732年)向莱布尼茨介绍了《周易》和八卦。在莱布尼茨眼中,“阴”与“阳”基本上就是他的二进制的中国版。他曾断言:“二进制乃是具有世界普遍性的、最完美的逻辑语言”。如今在德国图林根,著名的郭塔王宫图书馆(Schlossbibliothek zu Gotha)内仍保存一份莱氏的手稿,标题写着“1与0,一切数字的神奇渊源。”

09048bbb2ca242d2898ab624077d8102.png

莱布尼茨

a6a0bcf5896d4962905edb72cbc86521.png 

 1701年白晋给莱布尼茨的周易图

2.二进制在计算机中的应用

阿达·洛芙莱斯(Ada Lovelace,英国诗人拜伦之女,数学家,计算机程序创始人,建立了循环和子程序概念)在1834年,阿达的朋友——英国数学家、发明家兼机械工程师查尔斯·巴贝其(Charles Babbage)——发明了一台分析机(一种机械式通用计算机,由蒸汽机驱动,大约有30米长、10米宽。它使用打孔纸带输入,采取最普通的十进制计数);阿达则致力于为该分析机编写算法,她建议,可以用二进制数代替原来的十进制数,提出分析机可以接受各种各样的穿孔卡:“控制卡”、“数据卡”、“操作卡”。她还提议数字和其他符号如字母可以“编码”成数字数据,机器可以处理它们,还提出了分析机具备记忆能力的想法,指出分析机应该有存储位置或地址,并且有“注解或备忘”的可能性。在1842年与1843年其间,她花了9个月的时间翻译意大利数学家路易吉·米那比亚对巴贝奇最新的计算机设计书(即分析机概论)所留下的备忘录。在这部译文里,她附加许多注记,内容详细说明用计算机进行伯努利数的运算方式,而被认为是世界上第一个电脑算法程序。因此,阿达被认为是世界上第一位程序员,也是第一位女程序员。

2d73605ad70947ad93240a4108bb16ff.png

美貌与智慧并存的程序员姐姐😘 

二、第二代计算机语言——汇编语言

机器语言由纯粹的0和1构成,十分复杂,不方便阅读和修改,也容易产生错误。程序员们很快就发现了使用机器语言带来的麻烦,它们难于辨别和记忆,给整个产业的发展带来了障碍,于是汇编语言产生了。
汇编语言, 即第二代计算机语言,用一些容易理解和记忆的缩写单词来代替一些特定的指令,例如:用"ADD"代表加法操作指令,"SUB"代表减法操作指令,以及"INC"代表增加1,"DEC"代表减去1,"MOV"代表变量传递等等,通过这种方法,人们很容易去阅读已经完成的程序或者理解程序正在执行的功能,对现有程序的bug修复以及运营维护都变得更加简单方便。
但计算机的硬件不认识字母符号,这时候就需要一个专门的程序把这些字符变成计算机能够识别的二进制数或机器语言。因为汇编语言只是将机器语言做了简单编译,并没有根本上解决机器语言的特定性,所以汇编语言和机器自身的编程环境息息相关,推广和移植很难,但是还是保持了机器语言优秀的执行效率,因为他的可阅读性和简便性,汇编语言到现在依然是常用的编程语言之一。
汇编语言不像其他大多数的程序设计语言一样被广泛用于程序设计。在今天的实际应用中,它通常被应用在底层,硬件操作和高要求的程序优化的场合。驱动程序、嵌入式操作系统和实时运行程序都需要汇编语言。

优点:
1.可以轻松的读取存储器状态以及硬件I/O接口情况
2.编写的代码因为少了很多编译的环节,可以能够准确的被执行
3.作为一种低级语言,可扩展性很高

缺点:
1.因为代码非常单调,特殊指令字符很少,所以造成了代码的冗长以及编写的困难
2.汇编仍然需要自己去调用存储器存储数据,很容易出现BUG,而且调试起来也不容易
3.就算完成了一个程序,后期维护时候也需要耗费大量的时间。
4.因为机器的特殊性造成了代码兼容性差的缺陷,依赖于特定的计算机硬件。

三、第三代计算机语言——高级语言

在编程语言经历了机器语言,汇编语言等更新之后,人们发现了限制程序推广的关键因素——程序的可移植性。需要设计一个能够不依赖于计算机硬件,能够在不同机器上运行的程序。这样可以免去很多编程的重复过程,提高效率,同时这种语言又要接近于数学语言或人的自然语言。

  • 1956年,美国计算机科学家约翰·巴克斯带领团队开发出了世界上第一个高级编程语言FORTRAN
  • 1958年,ALGOL(ALGOrithmic Language)算法语言委员会小组成立,后续发表了ALGOL系列算法语言,对后来的高级语言产生了深远的影响
  • 1970年,瑞士计算机科学家Niklaus Wirth研制出了第一个结构化编程语言Pascal
  • 1972年, C语言(The C Programming Language)诞生1963年,英国剑桥大学基于ALGOL 60推出了CPL(Combined Programming Langurage)语言1967年,英国剑桥大学的 Matin Richards对CPL语言做了简化,推出了 BCPL (the Basic Combined Programming Language)语言1969年,美国贝尔实验室的肯·汤普森(Kenneth Lane Thompson),以BCPL语言为基础,又作了进一步的简化,设计出了很简单而且很接近硬件的B语言(取BCPL的首字母),并且用B语言写了初版UNIX操作系统(又叫UNICS)。1972年,美国贝尔实验室的丹尼斯·里奇(D.M.Ritchie )在B语言的基础上最终设计出了一种新的语言,他取了BCPL的第二个字母作为这种语言的名字,这就是C语言。1973年初,C语言的主体完成。
  • 1983年, 美国计算机科学家本贾尼·斯特劳斯特卢普改良了C语言,由此C++(The C++ Programming Language/c plus plus )诞生
  • 1980年代,荷兰国家数学与计算机科学研究中心的Leo Grurts,Lambert Meertens,Steven Pemberton主导研发了一种交互式,结构化高级语言ABC语言,旨在替代BASIC,Pascal等语言,用于教学及原型软件设计。
  • 1980年左右,R语言在新西兰奥克兰大学诞生,R语言是统计领域广泛使用的诞生于1980年左右的S语言的一个分支。可以认为R是S语言的一种实现。而S语言是由AT&T贝尔实验室开发的一种用来进行数据探索、统计分析和作图的解释型语言。
  • 1986年,美国ANSI采用SQL作为关系数据库管理系统的标准语言(ANSI X3. 135-1986),后为国际标准化组织(ISO)采纳为国际标准。结构化查询语言(Structured Query Language)简称SQL,是一种特殊目的的编程语言,是一种数据库查询和程序设计语言,用于存取数据以及查询、更新和管理关系数据库系统。
  • 1990年,荷兰数学和计算机科学研究学会的吉多·范罗苏姆基于ABC语言,研发出了Python语言。Python提供了高效的高级数据结构,还能简单有效地面向对象编程。Python语法和动态类型,以及解释型语言的本质,使它成为多数平台上写脚本和快速开发应用的编程语言,它已被逐渐广泛应用于系统管理任务的处理、Web编程、数据科学研究、网络爬虫、游戏开发、人工智能、大数据等。
  • 1991年,微软公司推出了Visual Basic(简称VB)语言,源自于BASIC。Visual Basic(简称VB)是Microsoft公司开发的一种通用的基于对象的程序设计语言,为结构化的、模块化的、面向对象的、包含协助开发环境的事件驱动为机制的可视化程序设计语言。是一种可用于微软自家产品开发的语言。
  • 1995年,Sun公司的詹姆斯·高斯林带领他的团队对C++进行改写,诞生了Java语言
  • 1995年,丹麦程序员Rasmus Lerdorf根据C语言、Java和Perl多个语言的特色语法研发出了PHP语言。PHP是在服务器端执行的脚本语言,尤其适用于Web开发并可嵌入HTML中,PHP同时支持面向对象和面向过程的开发,使用上非常灵活。
  • 1995年,Netscape公司的Brendan Eich,在网景导航者浏览器上研发出了JavaScript。最开始取名LiveScript,因为Netscape与Sun合作,Netscape管理层希望它外观看起来像Java,因此取名为JavaScript。
  • 2000年,微软公司的安德斯·海尔斯伯格(Anders Hejlsberg)带领他的团队基于C和C++研发出C#,C#是微软公司发布的一种由C和C++衍生出来的面向对象的编程语言、运行于.NET Framework和.NET Core(完全开源,跨平台)之上的高级程序设计语言。C#看起来与Java有着惊人的相似;它包括了诸如单一继承、接口、与Java几乎同样的语法和编译成中间代码再运行的过程。但是C#与Java有着明显的不同,它借鉴了Delphi的一个特点,与COM(组件对象模型)是直接集成的,而且它是微软公司 .NET windows网络框架的主角。
  • 2000年,易语言最早的版本发布。易语言(EPL)是一门以中文作为程序代码编程语言,其以“易”著称,创始人为吴涛。易语言早期版本的名字为E语言。创造易语言的初衷是进行用中文来编写程序的实践,方便中国人以中国人的思维编写程序,并不用再去学习西方思维。易语言的诞生极大的降低了编程的门槛和学习的难度。
  • 2009年, Google 的 Robert Griesemer,Rob Pike 及 Ken Thompson 研发出Go语言,它是一种静态强类型、编译型语言,语法与 C 相近,但功能上有:内存安全,GC(垃圾回收),结构形态及 CSP-style 并发计算。

各类编程语言的现状及发展情况

根据统计,目前世界上的编程语言已经超过8000种。 其中一些已经过时或不再使用,而另一些则仍在广泛使用。 一些流行的编程语言包括Java、Python、C++、JavaScript、PHP、Ruby、Swift等。

在所有编程语言中占比最大的十种编程语言:

2023年TIOBE 发布 9 月编程语言排行榜

c0561539b7af40fb8223849e4976dace.png

 (1)Python:Python语法简单,可读性强,支持面向对象,具有跨平台性。随着互联网和Web应用的发展,Python语言在Web开发、数据科学、人工智能、机器学习等领域得到了广泛的应用。同时,Python的类库和框架也不断得到发展和拓展,例如NumPy、SciPy、PyTorch、Django等。

   (2) C语言:在C语言诞生后不久,C语言的使用范围迅速扩大,各个厂商和开发者都开始编写自己的C编译器。为了保证C语言的标准化和互操作性,ANSI于1983年开始制定C语言的标准化规范,即C89标准,后来又发布了C99和C11标准。

  (3)C++:随着时间的推移,C++逐渐成为了一种独立的编程语言,发展出了自己的特性和标准,并吸引了大量的开发者和用户。

  (4)Java语言:因其稳定性、可移植性和丰富的生态系统而受到广泛欢迎,被广泛应用于企业级应用开发、互联网应用、安卓移动应用开发等领域。

 (5)为了促进C#技术的发展和普及,微软于2014年将.NET Core发布为开源软件,并且在2015年将C#语言的编译器Roslyn也开源了,使得C#技术得到更广泛的应用和开发者的参与。

 (6)JavaScript:JavaScript语言最初由Netscape公司的Brendan Eich于1995年开发,是为了应对Web应用的需要而设计的,JavaScript语言是一种脚本语言,用于Web前端开发.随着Web技术的发展,JavaScript语言也得到了更广泛的应用,例如Node.js、React、Angular、Vue等技术。同时,JavaScript的类库和框架也不断得到发展和拓展,例如jQuery、Bootstrap、D3.js等。

(7)Visual Basic:于2014-11-13 更新为Visual Studio 2015用于Windows、iOS 以及 Android 应用开发,2020年3月11日,微软宣布不会再开发VB或增加功能。

(8)PHP:PHP特别适用于Web开发,可以将代码嵌入到HTML中,它的语法融合了C、Java和Perl的特点,易于学习和使用,在Web开发领域占有重要地位。PHP可以在多种操作系统上运行,包括Windows、Linux和Unix等

(9)Assembler language:又称汇编语言,是一种低级程序设计语言,它在计算机技术领域非常重要。它是一种程序设计语言,由汇编器转换为机器可以识别和执行的机器语言,它是一种汇编程序,是应用最广泛的汇编语言,主要用于处理机器指令或定义一组简单的行为。

(10)SQL:随着深度学习的发展, Transformer和BERT模型相继被提出并在自然语言处理任务上取得优异的成绩. Hwang等人于2019年提出SQLova模型, 第1次把大规模预训练模型应用于NL2SQL任务. SQLova使用BERT作为模型的输入表示层, 以此取代SQLNet中的词向量表示. SQLova将预测SQL语句任务划分为6个子任务, 并将自然语言问句和数据库表的列名均作为网络的输入进行编码. 大规模预训练模型BERT的引入, 大幅提升了模型的语义分析能力, 模型取得惊人的效果. He等人提出X-SQL模型, 在预训练模型的选择上, 采用了MT-DNN来代替BERT, 并在对列名编码时添加了上下文注意力机制, 取得更好的效果. 2020年, Lyu等人提出HydraNet模型, 没有将所有列名和问句连接在一起做BERT编码, 而是将每个列名分别与问句做编码, 再通过规则按列输出组装成 SQL查询, 取得更好的效果. 2021年, Xu等人提出SeaD模型, 没有采用基于草图和槽填充的方法, 而是直接训练序列到序列(Seq2Seq)的模型, 使用Transformer作为基础架构, 采用修改和删除列名以及打乱实体顺序的方式做数据增强, 并使用一种条件敏感的执行指导策略来进行解码, 从而最大化序列生成方法的潜能, 在Wiki-SQL数据集上取得了最好成绩。

未来,人工智能、大数据、区块链和物联网等技术将会带来新的编程需求和挑战。同时,随着量子计算和分布式计算技术的发展,编程语言的发展将会更加多元化和复杂化。

总之,编程语言的历史和发展是一个不断变化和进步的过程,不断涌现出新的技术和语言。在未来的发展中,我们应该始终关注新的技术和趋势,并用不同的语言和工具解决不同的问题。

  • 14
    点赞
  • 25
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值