计算机编程语言的发展趋势

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

编程语言的发展趋势——编程语言的历史、现状和未来计算机与信息学院王安慧snowfield@163.com据说全世界存在过计算机编程语言超过2500种。你可以在下面的网站查询到约2500种编程语言的相关信息。~nkinners/LangList/Extras/search.htm关于编程语言的几个问题•编程语言可以分为哪些种类?•优秀的编程语言应该是什么样?•导致编程语言流行的原因?•最流行的编程语言是什么?•如何选择适合自己的开发语言?提纲•编程语言发展历史的简单回顾•编程语言的现状•编程语言的发展趋势•编程语言的选择编程语言发展历史的简单回顾编程语言发展历史的简单回顾•低级语言时代•高级语言时代•面向对象时代低级语言时代(1946—1953)光电阅读机将记录在穿孔卡片上数据读入计算机,计算的结果则利用打孔机在卡片上打出的一些小孔,就表示输出的数据。卡片上的小孔就组成了计算机和专家明白但绝大多数人不明白的天书——机器语言,也就是完全用0,1代码写的程序。机器语言汇编语言由于机器语言的难易理解,莫奇莱等人开始想到用助记符来代替0,1代码,于是汇编语言出现了section.datamsgdbHello,world!,0xAlenequ$-msg;section.text;global_start;_start:;高级语言时代(1954—至今)随着世界上第一个高级语言fortran的出现,新的编程语言开始不断涌现出来。各有特色,各有优势,随着时间的检验,一些流行至今,一些则逐渐消失•常见的高级编程语言ALGOL•1960,第一个结构化程序设计语言推出C•1972年,丹尼斯·里奇以B语言为基础开发出C语言——目前世界上最常用的程序语言之一。•C语言是使用最广泛的语言之一,可以说,C语言的诞生是现代程序语言革命的起点,是程序设计语言发展史中的一个里程碑开启了一个时代的C语言(宣传图)•常见的高级编程语言Basic•1964年美国达特茅斯学院的两个教员(约翰.凯梅尼(J.Kemeny)和托马斯·卡茨(T.Kurtz))开发了basic语言•该语言只有26个变量名,,17条语句,12个函数和3个命令这门语言叫做初学者通用符号指令代码”—BeginnersAllpurposeSymbolicIntructionCode•常见的高级编程语言Pascal•1967年,NiklausWirth开始开发PASCAL语言,1971年完成。•主要特点有:严格的结构化形式;丰富完备的数据类型;运行效率高;查错能力强,可以被方便地用于描述各种算法与数据结构有益于培养良好的程序设计风格和习惯•PASCAL是一个重要的里程碑结构化程序设计概念的语言面向对象时代(1990s初—至今)面向对象程序设计(Object-OrientedProgramming,简称OOP)是一种起源于六十年代的Simula语言,发展已经将近三十年的程序设计思想。其自身理论已经十分完善,并被多种面向对象程序设计语言实现•常见的面向对象编程语言VB—Basic的继续Delphi—Pascal的继续C++—C语言扩展•VC++•BorlandC++Builder•QtJava—最为流行的面向对象语言C#—新一代的面向对象语言总结1、Java霸占了企业级应用市场,一部分移动开发(J2ME)和web开发,但是Java在客户端的图形接口方面失败连连,从Applet、AWT到Swing,Java似乎一直无法为客户端提供堪用的解决方案,以致不断败退,造成了目前在客户端使用Java应用程序的应用系统仍然非常稀少。——使用者排名第一2、C和C++仍然是嵌入式开发和系统给开发的利器。操作系统、驱动程序、各种游戏大都是他们的开发的——地位不可替代3、C#用来做WEB、桌面、控制台等程序都可以,和java类似。——迅速崛起4、VB、delphi擅长于快速的桌面程序开发,数据库开发,例如进销存软件——逐渐下滑5、其他:perl、python、ruby,jsp,javascript,php等等也占据了一定的市场编程语言的现状编程语言的现状•几十年来硬件与编程语言的发展的对比•从TOIBE排行榜看编程语言的现状年份机型CPU主频内存外存1981IBMPC80884.77M16K~256K1.44M软盘2012PC组装机3.40G16G1T硬盘71262500700000过去31年个人PC机硬件发展几十年来编程语言进步•自1953年,第一个高级编程语言产生•1972年,C语言诞生,至今整整40年,C语言的发展几十年来编程语言进步•1972年,诞生•1978年,贝尔实验室正式发表C语言•1983年,着手制定标准•1989年,C语言标准被批准,即ANSIC•1990年,ISO接受ANSIC为ISOC的标准•1999年,ISO又对C标准标准修订形成,C99•2011年12月8日,ISO正式公布C语言新的国际标准草案:ISO/IEC9899:2011,即C11。自ANSI标准化C语言后至今,ISO修订对于C语言标准的改动非常小。/*用C语言编写的打印华氏温度与摄氏温度对照表代码*/#includestdio.hmain(){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;}}//用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;}}}#用Python语言编写的打印华氏温度与摄氏温度对照表代码lower=0upper=300step=20fahr=lowerwhile(fahr=upper):celsius=5*(fahr-32)/9print(%s\t%s%(fahr,celsius))fahr=fahr+step小结•编程语言本身的发展非常缓慢。•期间出现了一些东西,例如面向对象等等,但是远没有好上1000倍。•过去的努力没有体现在编程语言上,而是体现在框架及工具等方面了。如今我们使用的框架,它们的体积的确有1000倍的增长。例如当年TurboPascal所带的框架大约有100个功能,而现在的.NETFramework里则有一万个类,十万个方法,的确有1000倍的增长。与此类似,如果你观察现在的IDE,我们现在已经有了无数强大的功能,例如语法提示,重构,调试器,探测器等等,这方面的新东西有很多。与此相比,编程语言的改进的确很不明显。从TIOBE排行榜看编程语言的现状•TIOBE编程语言排行榜•世界排名前20的编程语言•五大流行编程语言的发展趋势编程语言的现状•TiobeTIOBE开发语言排行榜每月更新一次,依据的指数是基于世界范围内的资深软件工程师和第三方供应商提供,其结果作为当前业内程序开发语言的流行使用程度的有效指标。该指数可以用来检阅开发者的编程技能能否跟上趋势,或是否有必要作出战略改变,以及什么编程语言是应该及时掌握的。观察认为,该指数反应的虽并非当前最流行或应用最广的语言,但对世界范围内开发语言的走势仍具有重要参考意义。排名1-10的编程语言排名11-20的编程语言VeryLongTermHistoryofthetop10programminglanguagesThelongtermtrendsforthetop10programminglanguages编程语言的发展趋势编程语言的发展趋势•思考:影响编程语言未来发展的因素?编程语言未来发展趋势•动态化计算机能够处理的事交给计算机处理•声明式及函数式编程风格告诉计算机What而不是How•并发编程多核时代的必然要求观点来自AndersHejlsberg《编程语言的发展趋势及未来方向》的讲座编程语言未来发展趋势•未来计算机编程语言特点总体向支持动态、声明式、并发支持,易于使用的多范式语言发展一些语言会同时支持面向对象、面向过程、动态、声明、函数式以及并发编程PositionProgrammingLanguageRatingsPositionProgrammingLanguageRatings21SAS0.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的语言,其中红色为动态语言,蓝色为函数式语言安德斯·海尔斯伯格安德斯·海尔斯伯格(AndersHejlsberg,1960.12~),丹麦人,TurboPascal编译器的主要作者,Delphi和.NET之父比尔盖茨评价:“Anders在C#创建中所做的努力将会改变现在的软件开发方式,并将在以后的十年继续产生影响。”•例:找出所有100以内能被3整除的数C语言实现核心代码:inti,a[100];for(i=0;i100;i++)if(i%3==0){a[i]=i;printf(%d\t,a[i]);}•例:找出所有100以内能被3整除的数Python语言实现核心代码:a=[xforxinrange(1,100)]printa•例:从文本文件中读入所有行到一个数组(列表)中C语言实现核心代码:FILE*fr;chars[1000][1000];inti=0;fr=fopen(test.txt,r);while(!feof(fr)){fgets(s[i],1000,fr);i++;}•例:从文本文件中读入所有行到一个数组(列表)中Python语言实现核心代码:li=open(test.txt).readlines()•例:快速排序算法A[0]A[1]A[2]A[3]A[4]A[5]A[6]493865977613272738134976976513273849657697快速排序算法: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;

1 / 80
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功