第9章 类型系统 - 程序设计语言原理

Download Report

Transcript 第9章 类型系统 - 程序设计语言原理

TIOBE编程语言排行榜
Position
Oct 2012
Position
Oct 2011
Ratings
Oct 2012
Delta
Oct 2011
1
2
C
19.822%
+2.11%
A
2
1
Java
17.193%
-0.72%
A
3
6
Objective-C
9.477%
+3.23%
A
4
3
C++
9.260%
+0.19%
A
5
5
C#
6.530%
-0.19%
A
6
4
PHP
5.669%
-1.15%
A
7
7
(Visual) Basic
5.120%
+0.57%
A
8
8
Python
3.895%
-0.05%
A
9
9
Perl
2.126%
-0.31%
A
10
11
Ruby
1.802%
+0.28%
A
11
10
JavaScript
1.261%
-0.93%
A
12
12
Delphi/Object Pascal
1.097%
-0.01%
A
13
13
Lisp
0.947%
-0.08%
A
14
18
Pascal
0.839%
+0.12%
A
15
16
Lua
0.728%
-0.07%
A
16
20
Ada
0.654%
+0.04%
B
17
15
PL/SQL
0.630%
-0.27%
B
18
25
Visual Basic .NET
0.599%
+0.12%
A--
19
21
MATLAB
0.591%
+0.02%
B
Delta in Position
Programming Language
Status
TIOBE编程语言排行榜
1、Objective-C 语言
Objective-C,通常写作ObjC和较少用的Objective
C或Obj-C,是扩充C的面向对象编程语言。它主要
使用于Mac OS X和GNUstep这两个使用OpenStep标
准的系统。Objective-C可以在gcc运作的系统写和
编译,因为gcc含Objective-C的编译器。1980年代
初布莱德·确斯(Brad Cox)在其公司Stepstone发明
Objective-C。他对软件设计和编程里的真实可用度
问题十分关心。
Objective-C是唯一一个用于编写iphone应用程序
的语言 Tiobe编程语言排行榜中有一个显著变化
是:一直在50名左右的Objective-C排名大幅提升,
它的流行当归功于iphone的成功。
2、Python 语言
Python(KK 英语发音:/'paɪθɑn/, DJ 英语发音:
/ˈpaiθən/)是一种面向对象、直译式计算机程序设
计语言,由Guido van Rossum于1989年底发明,
第一个公开发行版发行于1991年。Python语法简
捷而清晰,具有丰富和强大的类库。它常被昵称
为胶水语言,它能够很轻松的把用其他语言制作
的各种模块(尤其是C/C++)轻松地联结在一起。
常见的一种应用情形是,使用python快速生成程
序的原型(有时甚至是程序的最终界面),然后
对其中有特别要求的部分,用更合适的语言改写,
比如3D游戏中的图形渲染模块,速度要求非常高,
就可以用C++重写。
Python 语言
系统编程:提供API(Application Programming
Interface应用程序编程接口),能方便进行系统维
护和管理,Linux下标志性语言之一,是很多系统
管理员理想的编程工具。
图形处理:有PIL、Tkinter等图形库支持,能方便
进行图形处理。
数学处理:NumPy扩展提供大量与许多标准数学
库的接口。
文本处理:python提供的re模块能支持正则表达式,
还提供SGML,XML分析模块,许多程序员利用
python进行XML程序的开发。
Python 语言
数据库编程:程序员可通过遵循Python DB-API
(数据库应用程序编程接口)规范的模块与
Microsoft SQL Server,Oracle,Sybase,DB2,
Mysql、SQLite等数据库通信。python自带有一个
Gadfly模块,提供了一个完整的SQL环境。
网络编程:提供丰富的模块支持sockets编程,能
方便快速地开发分布式应用程序。很多大规模软
件开发计划例如Zope,Mnet 及BitTorrent. Google
都在广泛地使用它。
多媒体应用:Python的PyOpenGL模块封装了
“OpenGL应用程序编程接口”,能进行二维和三
维图像处理。PyGame模块可用于编写游戏软件。
3、Haskell 语言
Haskell是一种标准化的,通用纯函数式编程语言,
有非限定性语义和强静态类型。它的命名源自美国
逻辑学家Haskell Brooks Curry,他在数学逻辑方面
的工作使得函数式编程语言有了广泛的基础。在
Haskell中,函数是一等公民。作为函数式编程语言,
主要控制结构是函数。Haskell语言是1990年在编程
语言Miranda的基础上标准化的,并且以λ演算
(Lambda-Calculus)为基础发展而来。具有“证明
即程序、结论公式即程序类型”的特征。这也是
Haskell语言以希腊字母「λ」(Lambda)作为自己
标志的原因。
4、Scheme 语言
Scheme 语言是 Lisp 的一个现代变种、方言,诞
生于1975年,由 MIT 的 Gerald J. Sussman and Guy
L. Steele Jr. 完成。与其他lisp不同的是,scheme是
可以编译成机器码的 。
Scheme语言的规范很短,总共只有50页,甚至连
Common Lisp 规范的索引的长度都不到,但是却被
称为是现代编程语言王国的皇后。它与以前和以后
的 Lisp 实现版本都存在一些差异,但是却易学易
用。
5、Clojure 语言
Clojure 是一种运行在 Java™ 平台上的 Lisp 方
言,它的出现彻底颠覆了我们在Java虚拟机上并发
编程的思考方式改变了这一现状。如今,在任何具
备 Java 虚拟机的地方,您都可以利用 Lisp 的强大
功能
作为Lisp方言,Clojure或许拥有最灵活的编程
模型,因此绝不缺乏号召力。与其他Lisp方言不同
的是,它不会带那么多括号,还有众多Java库和在
各平台上的广泛部署作为坚强后盾
6、Scala 语言
Scala是一种函数式面向对象语言,它融汇了许
多前所未有的特性,而同时又运行于JVM之上。随
着开发者对Scala的兴趣日增,以及越来越多的工
具支持,无疑Scala语言将成为你手上一件必不可
少的工具。
Scala为Java系统引入了强大的函数式思想,同时
也并未丢弃面向对象编程。回顾历史,我发现C++
和Scala有着惊人的相似之处,因为从过程式编程
过渡到面向对象编程期间,C++同样起到了举足轻
重的作用。当你真正融入Scala社区之后,你就会
明白,为什么对于函数式语言程序员来说,Scala
是异端邪说,而对于Java开发者来说,Scala是天降
福音。
7、Erlang 语言
Erlang是一个结构化,动态类型编程语言,内建
并行计算支持。最初是由爱立信专门为通信应用设
计的,比如控制交换机或者变换协议等,因此非常
适 合于构建分布式,实时软并行计算系统。
CouchDB(新兴的基于云的数据库)的创始人就
选择了Erlang,并且义无反顾地一直用它,只要花
上点时间了解这门分布式语言,你就会明白原因所
在。在Erlang帮助下,设计带有并发、分布式、容
错等特征的应用程序将变得无比简单
8、Ruby 语言
Ruby,一种为简单快捷的面向对象编程(面向
对象程序设计)而创的脚本语言,在20世纪90年代
由日本人松本行弘(まつもとゆきひろ/Yukihiro
Matsumoto)开发,遵守GPL协议和Ruby License。
它的灵感与特性来自于 Perl、Smalltalk、Eiffel、
Ada 以及 Lisp 语言。由 Ruby 语言本身还发展出了
JRuby(Java 平台)、IronRuby(.NET 平台)等其
他平台的 Ruby 语言替代品。
减少编程时候的不必要的琐碎时间,令编写程序
的人高兴,是设计 Ruby 语言的 Matz 的一个首要
的考虑;其次是良好的界面设计。他强调系统设计
必须注重人性化,而不是一味从机器的角度设想。
9、PHP 语言
PHP,是英文超文本预处理语言Hypertext
Preprocessor的缩写。PHP 是一种 HTML 内嵌式
的语言,是一种在服务器端执行的嵌入HTML文
档的脚本语言,语言的风格有类似于C语言,被广
泛地运用。
PHP 独特的语法混合了 C、Java、Perl 以及 PHP
自创的语法。 它可以比 CGI或者Perl更快速地执行
动态网页。用PHP做出的动态页面与其他的编程语
言相比,PHP是将程序嵌入到HTML文档中去执行,
执行效率比完全生成HTML标记的CGI要高许多;
而且支持几乎所有流行的数据库以及操作系统。最
重要的是PHP可以用C、C++进行程序的扩展!
10、HTML5 语言
HTML5是用于取代1999年所制定的 HTML
4.01 和 XHTML 1.0 标准的 HTML 标准版本,现
在仍处于发展阶段,但大部分浏览器已经支持某
些 HTML5 技术。
HTML 5有两大特点:首先,强化了 Web 网页
的表现性能。其次,追加了本地数据库等 Web 应
用的功能。 广义论及HTML5时,实际指的是包括
HTML、CSS和JavaScript在内的一套技术组合。
它希望能够减少浏览器对于需要插件的丰富性网
络应用服务,如Adobe Flash、Microsoft
Silverlight,与Oracle JavaFX的需求,并且提供更
多能有效增强网络应用的标准集。
大作业要求
选择一门到两门语言,由助教协助确定编组,十人一组,
对选定语言的下述内容进行分析和讨论:
1、 程序对象:类型系统、存储、束定机制与特征
2、程序控制:表达式、程序控制与抽象封装
3、语言实现与编程环境:翻译器、库、链接、社区
4、语言应用与评价:应用范围、成功系统、优缺点
形成专题的分析文档和讲座报告,由每组选派三人做
报告,一个语言的报告为半个小时。课题作业时间为1个
月。