已阅读5页,还剩36页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
计算机程序设计语言 发展与比较 郭东伟 吉林大学 2010年3月18日 by skywind 1 目录 l程序设计语言的发展史 l不同类型的程序设计语言 l当前流行语言分析 国际上 国内 l语言间的对比 C+ vs Java by skywind 计算机语言 l用于人与计算机之间交互的语言。是人与计算 机之间传递信息的媒介。 程序设计语言 l低级语言 l高级语言 l专用语言 命令语言 l作业控制语言 lSQL 描述语言 lHTML、XML 2 by skywind 3 编程语言分类 l低级语言-汇编语言 l函数式程序设计语言 l逻辑程序设计语言 l通用程序设计语言 面向过程的程序设计语言 面向对象的程序设计语言 by skywind 4 计算机编程语言谱系图 by skywind 5 古典时代 lFORTRAN 第一个高级语言,主要用于科学计算 lALGOL58/ALGOL60 严谨的现代语言的鼻祖之一 在20年间,成为出版刊物中的唯一语言 主要贡献:BNF 没有得到广泛实际应用 lCOBOL 商务记录处理 by skywind 6 中世纪-1:过程化语言逐渐成熟 l BASIC(1963) 第一个结合分时操作,简单易学的语言 l PL/1 IBM为主设计的一个通用语言 结合ALGOL,FORTRAN,COBOL既一些其他新特性的 通用语言 第一次提出:并发机制、异常处理、过程化递归、指针 过于复杂,部分成功 l Ada 历史上最大规模的语言设计(美国军方) by skywind 7 中世纪-2: ALGOL的后继 lPascal 成功的教学语言 Delphi lC语言 与unix共同成长 简单、高效、相信程序员 目前系统级程序设计首选语言 by skywind 8 工业时代的开始 lSIMULA67 数据抽象的开始,第一次提出class lSmalltalk 真正的面向对象程序设计语言(数据抽象、基础 和动态绑定) 图形化的交互语言(系统) l特点 万物皆对象,包括控制流 使用消息在对象间通信 by skywind 9 工业时代 lC+ 继承了C语言的灵活特征 仍然强调效率 从Eiffel到D语言 lJava 从嵌入式编程过渡到web应用 更加严谨的面向对象机制 lC# 与微软的dot net紧密结合 by skywind 10 后工业时代 l脚本语言 unix系统脚本语言 Perl、Python、Ruby、Lua l动态类型语言 lWEB服务器开发语言 JSP PHP ASP lWEB页面端开发语言 Javascript by skywind 几种现代流行语言谱系 11 C语言C+ Java C# VBAsp JSP PHP Python PerlRuby PascalDelphi Objective-CJavaScript Asp.NETBasic by skywind 12 函数式程序设计语言 lLisp Logo、Scheme、Common Lisp lLisp特点 万物皆函数 基本数据结构:表 基本控制流程:递归 解释语言 主要用于人工智能,也可用于各种其他用途 by skywind 13 逻辑程序设计语言 lProlog 1970s 在1980s日本人工智能计划时得到关注 l特点 基于谓词演算,给出事实和规则 实现定理证明 只需要说明问题,无需指定流程 lSQL在一定程度也有这种特点 by skywind 过程式语言的基本特征 l变量、作用域和生存期 l数据类型(记录和指针) l表达式与赋值语句 l控制流(Goto is harmful) l子程序与递归 l异常处理 14 by skywind 15 解释性语言 vs. 编译性语言 l 执行流程 l 性能 目前计算机硬件的发展使得解释程序的性能代价在很多场 合可以忽略 l 跨平台性:解释程序与虚拟机 l 灵活性 自解释 运行时修改、创建程序 自执行 l 目前解释性语言的应用比例逐渐提高 by skywind 静态类型语言 vs. 动态类型语言 l变量的数据类型是在运行前静态确定的,还是 运行时动态确定的,称之为静态类型语言( Statically Typed Languages)和动态类型语言( Dynamically Typed Languages) l动态类型语言具有更大的灵活性,很适于写出 通用程序。而静态类型语言很难做到这一点( 如C语言中void *和C+中的模板)。 l 动态类型的缺点在于发现错误的能力较差、 运行代价高 l包括面向对象中的多态类的判定。 16 by skywind 动态语言 l一类在运行时可以改变其结构的语言:例 如可以动态执行生成的代码,产生新的函 数、对象定义、已有的函数可以被删除或 是其他结构上的变化等。 lECMAScript(JavaScript)是一个动态语言的 代表,除此之外如PHP、Ruby、Python等 也都属于动态语言。 l动态语言是一种可“自创造”的语言,典型的 都有eval这样的语法要素。 17 by skywind 关于类型的几个概念 l动态语言大部分是动态类型语言 l动态语言和大部分动态类型语言都是解释执行 的,但解释语言不一定是动态语言(Basic) ,也不一定是动态类型语言(Java)。 l静态类型语言可以是“强类型的”或是“弱类型的 ” l可以在兼容类型(包括类)之间进行隐含的或 显式的类型转换,部分语言可以进行强制类型 转换。 18 by skywind 19 脚本语言 l 介于文本描述语言(HTML等)和高级编程语言 之间 l 一般都以文本形式存在,类似于一种命令 最简单的脚本语言就是配置文件 l 执行过程 脚本语言是一种解释性的语言 脚本语言一般都有相应的脚本引擎来解释执行 脚本语言主要指该语言面向的开发环境,脚本语言一般局 限在某一个特定环境。 l 编程语言的语法和规则更为严格和复杂,脚本语 言相对灵活 by skywind 语言关注情况排名 Position Mar 2009 Position Mar 2008 Programming Language Ratings Mar 2009 Delta Mar 2008 Status 11Java19.797%-1.69% A 22C15.862%+1.00% A 35C+10.357%+1.08% A 44PHP9.485%-0.41% A 53(Visual) Basic8.285%-3.32% A 67Python5.185%+0.42% A 78C#4.321%-0.19% A 810JavaScript3.607%+1.27% A 96Perl3.419%-2.79% A 109Delphi2.710%-0.09% A 1111Ruby2.601%+0.74% A 1212D1.809%+0.62% A 1313PL/SQL1.042%+0.06% A 1422Logo0.964%+0.65% A- 1514SAS0.796%-0.15% A 1617Pascal0.733%+0.29% A- 1729ABAP0.638%+0.49% B 1826RPG (OS/40 0) 0.585%+0.41% B 1921ActionScript0.481%+0.17% B 2018Lua0.480%+0.09% B 资料来源: / 主要依据: 搜索引擎 by skywind 21 语言关注情况分析 /index.php/content/paperinfo/tpci/index.html by skywind 2011年趋势 22 by skywind 23 一些其他比较数据 Category Ratings March 2009 Delta March 2008 Object-Oriented Languages 55.9% +1.2% Procedural Languages 39.7% -2.9% Functional Languages 3.3% +1.5% Logical Languages 1.1% +0.1% YearWinner 2008 C 2007 Python 2006 Ruby 2005 Java 2004 PHP 2003 C+ CategoryRatings March 2009Delta March 2008 Statically Typed Languages 59.2% +2.2% Dynamically Typed Languages 40.8% -2.2% by skywind 24 一点分析 lJava,C/C+始终占据主要地位,但略有 下降 lVB,C#不温不火,特别是C#,没有达到期 望的使用率 lPerl、Python、PHP保持前列地位,但Perl 有所下滑(相对古老) l一些新兴语言,如Ruby、Lua尚不能取得 领先地位 by skywind 25 CSDN中国IT技术指数报告 l/csdn_radar/archive /2008/07/24/2705240.aspx l数据来源如下(2008.7): * 特定时段内新出现在主要IT专业网站上的相关 网页数量 * 特定时段内互联网上新张贴的相关论坛贴子和 博客文章数量 * 特定时段内相关互联网搜索数量 * 特定时段内相关工作职位招聘规模 * 特定时段内相关图书销售量 by skywind 26 2008年6月中国地区计算机语言指数 排名语言指数得分对比评级 1Java226324.9%* 2C/C+143615.1%* 注 : 其中Visual C+ 4324.5%- 3PHP8929.4%* 4Javascript8919.4%* 5SQL8919.4%* 6C#8629.1%* 7CSS6226.5%* 8Visual BASIC3804.0%* 9UML2742.9%* 10Perl2142.3%* 11Ruby2112.2%* 12Delphi1771.9%* 13Python1521.6%* 14ActionScript1391.5%* by skywind 27 说明与注解 lJava处于全盛时代 lC/C+稳居主流 lPHP、Javascript、CSS进步显著 lC#、VB亟待驱动 l SQL与UML对比鲜明 l动态语言仍然囿于小众 lDelphi与ActionScript:夕阳与朝阳 by skywind 28 Web相关技术-服务器端 排名技术指数 得分 对比评级 1ASP.NET103337.0%* 2PHP85330.6%* 3Java based78628.2%* 4Ruby on Rails843.0%* 5Python based190.7%* 6Perl based160.6* by skywind 29 说明与注解 lWeb服务端三足鼎立,RoR雷声大雨点小 第一代:CGI 第二代:PHP、JSP、ASP lPHP:快捷灵活高效,低成本,国内以个人爱好和高 性能网站开发为主。 lJSP:结构严谨,适合于企业级的B/S模式的管理系统 ,难以迎合时尚网站多变的需求。 lASP:简单易学,在国内的占有率远高于国际。适合 简单、多变的网站开发。 第三代:以Ruby on Rails为代表的第三代 lAjax仍据主流,新RIA技术奋起直追 by skywind 30 基础软件设施-服务器OS by skywind 31 基础软件设施-数据库 by skywind 32 基础软件设施-移动操作系统 by skywind 33 Java EE应用服务器及SAP by skywind 不同类型的应用软件开发和语言选择 l工业控制、嵌入式开发 l系统软件开发:操作系统、数据库 l通用桌面应用软件 l信息管理系统 C/S模式 B/S模式 l互联网应用 l游戏和娱乐 l专用软件 34 by skywind 35 语言对比:C+ vs Java l速度与性能 l指针与句柄 l对象处理机制 根类Object 运算符重载 多继承与接口 不同的绑定方式 l自动垃圾收集与析构器 l名字空间封装 by skywind 36 更加健壮的Java l增强的异常处理机制 l数组下标检查 l内置多线程支持 l没有显式的指针,不能进行强制类型转换 l自动初始化变量 by skywind 37 高效的C
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2024年折叠筷子:课堂演示与环保的完美结合
- 2023年9月15日中级注册安全工程师-安全生产法律法规真题
- 人教部编版《道德与法治》二年级上册第3课《欢欢喜喜庆国庆》精美课件(第2课时)
- 智能卫浴用品制造业的账务处理-记账实操
- 老旧小区安装电梯后费用分担协议-物业管理
- 2024版《工程制图》教案:探索与创新
- 2024年《教育学原理》课件在高等教育中的作用
- 2024年HAZOP培训课件:深入解析
- 2024年《燃烧与灭火》教案设计:教育与科技的结合
- 5种“谢谢你”的表达方法
- 开题报告 地方政府融资平台问题分析与转型发展研究-以A平台公司为例
- 中小学幼儿园师德师风监测台账(对教师)
- 科技改变生活-课件
- UPS电源蓄电池更换实施方案
- 2022年中级经济师《专业知识与实务(人力资源管理)》考试题库(含解析)
- 结直肠癌肝转移消融课件
- 【教师必备】部编版五年级语文上册第三单元【集体备课】
- 项目管理系列课程之进度管理课件
- 城市轨道交通票务管理07票务差错和票务事故处理
- 医院发票模板
- 二年级公开课教案武术基本功练习和五步拳教案
评论
0/150
提交评论