计算机编程语言的发展趋势_第1页
计算机编程语言的发展趋势_第2页
计算机编程语言的发展趋势_第3页
计算机编程语言的发展趋势_第4页
计算机编程语言的发展趋势_第5页
已阅读5页,还剩72页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

计算机编程语言的发展趋势2023/4/18第1页,共77页,2023年,2月20日,星期二据说全世界存在过计算机编程语言超过2500种。你可以在下面的网站查询到约2500种编程语言的相关信息。/~nkinners/LangList/Extras/search.htm第2页,共77页,2023年,2月20日,星期二关于编程语言的几个问题编程语言可以分为哪些种类?优秀的编程语言应该是什么样?导致编程语言流行的原因?最流行的编程语言是什么?如何选择适合自己的开发语言?第3页,共77页,2023年,2月20日,星期二提纲编程语言发展历史的简单回顾编程语言的现状编程语言的发展趋势编程语言的选择第4页,共77页,2023年,2月20日,星期二编程语言发展

历史的简单回顾第5页,共77页,2023年,2月20日,星期二编程语言发展历史的简单回顾低级语言时代高级语言时代面向对象时代第6页,共77页,2023年,2月20日,星期二低级语言时代(1946—1953)第7页,共77页,2023年,2月20日,星期二光电阅读机将记录在穿孔卡片上数据读入计算机,计算的结果则利用打孔机在卡片上打出的一些小孔,就表示输出的数据。卡片上的小孔就组成了计算机和专家明白但绝大多数人不明白的天书——机器语言,也就是完全用0,1代码写的程序。机器语言第8页,共77页,2023年,2月20日,星期二汇编语言由于机器语言的难易理解,莫奇莱等人开始想到用助记符来代替0,1代码,于是汇编语言出现了section.data

msgdb"Hello,world!",0xA

lenequ$-msg

; section.text

;

global_start

;

_start:

;

第9页,共77页,2023年,2月20日,星期二高级语言时代(1954—至今)随着世界上第一个高级语言fortran的出现,新的编程语言开始不断涌现出来。各有特色,各有优势,随着时间的检验,一些流行至今,一些则逐渐消失第10页,共77页,2023年,2月20日,星期二常见的高级编程语言ALGOL1960,第一个结构化程序设计语言推出C1972年,丹尼斯·里奇以B语言为基础开发出C语言——目前世界上最常用的程序语言之一。C语言是使用最广泛的语言之一,可以说,C语言的诞生是现代程序语言革命的起点,是程序设计语言发展史中的一个里程碑

第11页,共77页,2023年,2月20日,星期二开启了一个时代的C语言(宣传图)第12页,共77页,2023年,2月20日,星期二常见的高级编程语言Basic

1964年美国达特茅斯学院的两个教员(约翰.凯梅尼(J.Kemeny)和托马斯·卡茨(T.Kurtz))开发了basic语言该语言只有26个变量名,,17条语句,12个函数和3个命令这门语言叫做初学者通用符号指令代码”—BeginnersAllpurposeSymbolicIntructionCode第13页,共77页,2023年,2月20日,星期二常见的高级编程语言Pascal

1967年,Niklaus

Wirth开始开发PASCAL语言,1971年完成。主要特点有:严格的结构化形式;丰富完备的数据类型;运行效率高;查错能力强,可以被方便地用于描述各种算法与数据结构有益于培养良好的程序设计风格和习惯PASCAL是一个重要的里程碑结构化程序设计概念的语言第14页,共77页,2023年,2月20日,星期二面向对象时代(1990s初—至今)面向对象程序设计(Object-OrientedProgramming,简称OOP)是一种起源于六十年代的Simula语言,发展已经将近三十年的程序设计思想。其自身理论已经十分完善,并被多种面向对象程序设计语言实现第15页,共77页,2023年,2月20日,星期二常见的面向对象编程语言VB—Basic的继续Delphi—Pascal的继续C++—C语言扩展VC++BorlandC++BuilderQtJava—最为流行的面向对象语言C#

—新一代的面向对象语言第16页,共77页,2023年,2月20日,星期二总结1、Java霸占了企业级应用市场,一部分移动开发(J2ME)和web开发,但是Java在客户端的图形接口方面失败连连,从Applet、AWT到Swing,Java似乎一直无法为客户端提供堪用的解决方案,以致不断败退,造成了目前在客户端使用Java应用程序的应用系统仍然非常稀少。——使用者排名第一第17页,共77页,2023年,2月20日,星期二2、C和C++仍然是嵌入式开发和系统给开发的利器。操作系统、驱动程序、各种游戏大都是他们的开发的——地位不可替代3、C#用来做WEB、桌面、控制台等程序都可以,和java类似。——迅速崛起4、VB、delphi擅长于快速的桌面程序开发,数据库开发,例如进销存软件——逐渐下滑5、其他:perl、python、ruby,jsp,javascript,php等等也占据了一定的市场第18页,共77页,2023年,2月20日,星期二编程语言的现状第19页,共77页,2023年,2月20日,星期二编程语言的现状几十年来硬件与编程语言的发展的对比从TOIBE排行榜看编程语言的现状第20页,共77页,2023年,2月20日,星期二年份机型CPU主频内存外存1981IBMPC80884.77M16K~256K1.44M软盘2012PC组装机3.40G16G1T硬盘

71262500700000过去31年个人PC机硬件发展第21页,共77页,2023年,2月20日,星期二几十年来编程语言进步自1953年,第一个高级编程语言产生1972年,C语言诞生,至今整整40年,C语言的发展第22页,共77页,2023年,2月20日,星期二几十年来编程语言进步1972年,诞生1978年,贝尔实验室正式发表C语言1983年,着手制定标准1989年,C语言标准被批准,即ANSIC1990年,ISO接受ANSIC为ISOC的标准1999年,ISO又对C标准标准修订形成,C992011年12月8日,ISO正式公布C语言新的国际标准草案:ISO/IEC9899:2011,即C11。自ANSI标准化C语言后至今,ISO修订对于C语言标准的改动非常小。第23页,共77页,2023年,2月20日,星期二/*用C语言编写的打印华氏温度与摄氏温度对照表代码*/#include<stdio.h>main(){

intfahr,celsius;

intlower,upper,step;

lower=0;upper=300;step=20;fahr=lower;

while(fahr<=upper){celsius=5*(fahr-32)/9;printf("%d\t%d\n",fahr,celsius);fahr=fahr+step;}}第24页,共77页,2023年,2月20日,星期二//用java语言编写的打印华氏温度与摄氏温度对照表代码packagetest;publicclassTest{publicstaticvoidmain(String[]args){intfahr,celsius;intlower,upper,step;lower=0;upper=300;step=20;fahr=lower;while(fahr<=upper){celsius=5*(fahr-32)/9;System.out.printf("%d\t%d\n",fahr,celsius);fahr=fahr+step;}}}第25页,共77页,2023年,2月20日,星期二#用Python语言编写的打印华氏温度与摄氏温度对照表代码lower=0upper=300step=20fahr=lowerwhile(fahr<=upper):celsius=5*(fahr-32)/9print("%s\t%s"%(fahr,celsius))fahr=fahr+step第26页,共77页,2023年,2月20日,星期二小结编程语言本身的发展非常缓慢。期间出现了一些东西,例如面向对象等等,但是远没有好上1000倍。过去的努力没有体现在编程语言上,而是体现在框架及工具等方面了。如今我们使用的框架,它们的体积的确有1000倍的增长。例如当年TurboPascal所带的框架大约有100个功能,而现在的.NETFramework里则有一万个类,十万个方法,的确有1000倍的增长。与此类似,如果你观察现在的IDE,我们现在已经有了无数强大的功能,例如语法提示,重构,调试器,探测器等等,这方面的新东西有很多。与此相比,编程语言的改进的确很不明显。第27页,共77页,2023年,2月20日,星期二从TIOBE排行榜看编程语言的现状TIOBE编程语言排行榜世界排名前20的编程语言五大流行编程语言的发展趋势第28页,共77页,2023年,2月20日,星期二编程语言的现状Tiobe

TIOBE开发语言排行榜每月更新一次,依据的指数是基于世界范围内的资深软件工程师和第三方供应商提供,其结果作为当前业内程序开发语言的流行使用程度的有效指标。该指数可以用来检阅开发者的编程技能能否跟上趋势,或是否有必要作出战略改变,以及什么编程语言是应该及时掌握的。观察认为,该指数反应的虽并非当前最流行或应用最广的语言,但对世界范围内开发语言的走势仍具有重要参考意义。第29页,共77页,2023年,2月20日,星期二排名1-10的编程语言第30页,共77页,2023年,2月20日,星期二排名11-20的编程语言第31页,共77页,2023年,2月20日,星期二VeryLongTermHistoryofthetop10programminglanguages第32页,共77页,2023年,2月20日,星期二Thelongtermtrendsforthetop10programminglanguages第33页,共77页,2023年,2月20日,星期二第34页,共77页,2023年,2月20日,星期二第35页,共77页,2023年,2月20日,星期二第36页,共77页,2023年,2月20日,星期二第37页,共77页,2023年,2月20日,星期二第38页,共77页,2023年,2月20日,星期二编程语言

的发展趋势第39页,共77页,2023年,2月20日,星期二编程语言的发展趋势思考:影响编程语言未来发展的因素?第40页,共77页,2023年,2月20日,星期二编程语言未来发展趋势动态化计算机能够处理的事交给计算机处理声明式及函数式编程风格告诉计算机What而不是How并发编程多核时代的必然要求观点来自AndersHejlsberg《编程语言的发展趋势及未来方向》的讲座第41页,共77页,2023年,2月20日,星期二编程语言未来发展趋势未来计算机编程语言特点总体向支持动态、声明式、并发支持,易于使用的多范式语言发展一些语言会同时支持面向对象、面向过程、动态、声明、函数式以及并发编程第42页,共77页,2023年,2月20日,星期二PositionProgrammingLanguageRatings

PositionProgrammingLanguageRatings21SAS0.56%

36D0.28%22Bash0.55%

37Smalltalk0.25%23Transact-SQL0.49%

38NXT-G0.24%24ABAP0.46%

39APL0.23%25Scratch0.45%

40Forth0.22%26COBOL0.45%

41ML0.22%27Fortran0.42%

42Awk0.22%28R0.42%

43Dart0.19%29Scheme0.41%

44ActionScript0.17%30Logo0.38%

45CommonLisp0.17%31Prolog0.35%

46Alice0.16%32RPG(OS/400)0.35%

47LabVIEW0.15%33Haskell0.31%

48Eiffel0.15%34Erlang0.29%

49CFML0.15%35Scala0.29%

50Tcl0.14%排名21~50的语言,其中红色为动态语言,蓝色为函数式语言第43页,共77页,2023年,2月20日,星期二安德斯·海尔斯伯格安德斯·海尔斯伯格(AndersHejlsberg,1960.12~),丹麦人,TurboPascal编译器的主要作者,Delphi和.NET之父

比尔盖茨评价:“Anders在C#创建中所做的努力将会改变现在的软件开发方式,并将在以后的十年继续产生影响。”第44页,共77页,2023年,2月20日,星期二例:找出所有100以内能被3整除的数C语言实现核心代码:inti,

a[100];for(i=0;i<100;

i++)

if(i

%

3

==

0){

a[i]

=

i;

printf("%d\t",

a[i]);

}第45页,共77页,2023年,2月20日,星期二例:找出所有100以内能被3整除的数Python语言实现核心代码:a

=

[xforxinrange(1,100)]print

a第46页,共77页,2023年,2月20日,星期二例:从文本文件中读入所有行到一个数组(列表)中C语言实现核心代码:FILE*fr;chars[1000][1000];inti=0;fr=fopen("test.txt","r");while(!feof(fr)){fgets(s[i],1000,fr);i++;}第47页,共77页,2023年,2月20日,星期二例:从文本文件中读入所有行到一个数组(列表)中Python语言实现核心代码:li=open("test.txt").readlines()第48页,共77页,2023年,2月20日,星期二例:快速排序算法A[0]A[1]A[2]A[3]A[4]A[5]A[6]493865977613272738134976976513273849657697第49页,共77页,2023年,2月20日,星期二快速排序算法:C语言实现voidqsort(intv[],intleft,intright){

inti,last;

voidswap(intv[],inti,intj);

if(left>=right)

return;

swap(v,left,(left+right)/2);

last=left;

for(i=left+1;i<=right;i++)

if(v[i]<v[left])

swap(v,++last,i);

swap(v,left,right);

qsort(v,left,last-1);

qsort(v,last+1,right);

}

voidswap(intv[],inti,intj){

inttemp;

temp=v[i];

v[i]=v[j];

v[j]=temp;}第50页,共77页,2023年,2月20日,星期二快速排序算法:haskell实现qsort[]=[]qsort(x:xs)=qsort[y|y<-xs,y<x]++[x]++qsort[y|y<-xs,y>=x]第51页,共77页,2023年,2月20日,星期二小结命令式语言面向机器的,以机器为中心,与计算机内部原理相一致注重How,即如何解决问题函数式语言面向问题的,以人为中心,更符合人的思维方式,具有更高的抽象注重What,即对问题的描述第52页,共77页,2023年,2月20日,星期二编程语言的选择第53页,共77页,2023年,2月20日,星期二编程语言的选择编程语言的分类不同编程语言的特点值得关注的一些编程语言编程语言与开发工具的选择第54页,共77页,2023年,2月20日,星期二编程语言的分类几种概念的说明面向对象的编程语言支持面向的编程语言第55页,共77页,2023年,2月20日,星期二编程语言的分类高级语言与低级语言编译型与解释型动态与静态类型命令式与函数式非中文与中文第56页,共77页,2023年,2月20日,星期二动态语言,是指程序在运行时可以改变其结构新的函数可以被引进,已有的函数可以被删除等在结构上的变化动态语言的类型检查是在运行时做的静态类型语言的类型判断是在运行前判断第57页,共77页,2023年,2月20日,星期二命令式编程(Imperativeprogramming),是一种描述电脑所需作出的行为的编程范型。几乎所有电脑的硬件工作都是指令式的;几乎所有电脑的硬件都是设计来运行机器码,使用指令式的风格来写的。较高级的指令式编程语言使用变量和更复杂的语句,但仍依从相同的范型。因为命令式编程的基础观念,不但概念上比较熟悉,而且较容易具体表现于硬件,所以大部分的编程语言都是指令式的。2023/4/18第58页,共77页,2023年,2月20日,星期二函数式编程是种编程典范,它将电脑运算视为函数的计算。函数编程语言最重要的基础是λ演算(lambdacalculus)。而且λ演算的函数可以接受函数当作输入(参数)和输出(返回值)。和指令式编程相比,函数式编程强调函数的计算比指令的执行重要。和过程化编程相比,函数式编程里,函数的计算可随时调用。2023/4/18第59页,共77页,2023年,2月20日,星期二编程语言的分类中文编程语言易语言丙正正习语言Peryuyan扩展阅读:各种奇怪的中文编程语言/share/28106743260页,共77页,2023年,2月20日,星期二易语言是由大连大有吴涛易语言软件有限责任公司自主研发的国产化汉语编程软件。是2005年国家火炬计划项目之一,是一种全中文全可视跨平台的编程语言环境。网站最近更新时间:2010年12月第61页,共77页,2023年,2月20日,星期二//易语言示例局部变量

文本,

文本型

.局部变量

返回文本,

文本型

.判断循环首

(整数

0)

文本

文本

字符

(取代码

(“0”,

)

整数

2)

整数

整数

÷

2

.判断循环尾

()

.计次循环首

(取文本长度

(文本),

整数)

返回文本

返回文本

取文本中间

(文本,

取文本长度

(文本)

整数

1,

1)

.计次循环尾

()

返回

(返回文本)第62页,共77页,2023年,2月20日,星期二//丙正正语言示例空象棋檔::設定註解(字元*s,整數n){

若(n>=最大註解數)

對於(;最大註解數<=n;最大註解數++)

註解[最大註解數]=NONE;

若(s==NULL或字串長度(s)==0)

傳回;

若(註解[n]!=NONE)

刪除註解[n];

註解[n]=新字元[字串長度(s)+1];

字串複製(註解[n],s);

}第63页,共77页,2023年,2月20日,星期二#包含“习语言系统.接口”//习语言代码示例整数类型主函数(){

文件类型*fp;

整数类型ch;

如果((fp=文件打开("练习13-2.文本","写+"))==空指针){

格式输出("无法打开文件:练习13-2.文本!");

暂停();

退出(1);}

格式输出("输入一串字符:\n");ch=输入字符();

若符合条件(ch!=宏_换行键)重复{

文件写字符(ch,fp);ch=输入字符();}

文件复位(fp);ch=文件读字符(fp);

若符合条件(ch!=宏_文件结束)重复{

输出字符(ch);ch=文件读字符(fp);}

格式输出("\n");

文件关闭(fp);

暂停();返回0;}第64页,共77页,2023年,2月20日,星期二#!/usr/local/bin/perl

useLingua::Sinica::PerlYuYan;

用警兮用嚴。

印道

1..1

哉兮

印編曰雜申雜申矣

又曰ok矣

又曰1矣

亂曰

國無人莫我知兮又何懷乎故都

既莫足與為美政兮吾將從彭咸之所居第65页,共77页,2023年,2月20日,星期二#!/usr/local/bin/perl

#

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论