1、上海交通大学计算机科学与工程系上海交通大学计算机科学与工程系上海交通大学计算机科学与工程系上海交通大学计算机科学与工程系2022-7-292w软件与编程软件与编程w什么是什么是JavawJava的历史的历史wJava的特点的特点wJava相关的概念相关的概念w面向对象概念面向对象概念wJava与面向对象与面向对象上海交通大学计算机科学与工程系上海交通大学计算机科学与工程系上海交通大学计算机科学与工程系上海交通大学计算机科学与工程系2022-7-294w1821年,英国数学家年,英国数学家C.Babbage(1791-1871)设计)设计了差分机,这是第一台可自动进行数学变换的机器,因此了差分机
2、,这是第一台可自动进行数学变换的机器,因此他被称为他被称为“计算之父计算之父”。此后,他又设计了能够处理数学。此后,他又设计了能够处理数学公式的分析机。然而,这两种机器都没有真正实现。公式的分析机。然而,这两种机器都没有真正实现。wAda Lovelace(1815-1852)为)为 Babbage 的分析机设的分析机设计了程序,被称为计了程序,被称为“第一位程序员第一位程序员”。上海交通大学计算机科学与工程系上海交通大学计算机科学与工程系2022-7-295wGrace Hopper于于1943年参加美年参加美国海军,并参与了国海军,并参与了Mark 1的研制的研制工作;工作;1946年为年
3、为UNIVAC 1开发开发了第一个高级语言编译程序;了第一个高级语言编译程序;1959年开发了第一个面向商业信年开发了第一个面向商业信息处理的语言息处理的语言COBOL的编译程序;的编译程序;于于1973年和年和1985年分别晋升为美年分别晋升为美国海军上校与海军少将。国海军上校与海军少将。wHopper 是第一位发现并排除了程是第一位发现并排除了程序错误(序错误(bugs)的人。此后,人)的人。此后,人们把发现和排除程序错误的过程称们把发现和排除程序错误的过程称为为 debugging,把这样的软件工,把这样的软件工具称为具称为 debuger.上海交通大学计算机科学与工程系上海交通大学计算
4、机科学与工程系2022-7-296w计算无所不在,软件无所不在计算无所不在,软件无所不在n软件不仅仅是在计算机上运行的程序软件不仅仅是在计算机上运行的程序n对于客观世界的认识,和对问题求解对于客观世界的认识,和对问题求解的思维与模式的思维与模式.它把现代科学研究和它把现代科学研究和工程问题求解嵌入在各种类型的系统工程问题求解嵌入在各种类型的系统中,是现代产品和服务的关键因素中,是现代产品和服务的关键因素w软件的应用领域软件的应用领域n商业、金融、交通、医疗、电信、军商业、金融、交通、医疗、电信、军事、工业生产过程、娱乐、办公事、工业生产过程、娱乐、办公 n系统软件,实时软件,商业软件,工系统软
5、件,实时软件,商业软件,工程和科学计算软件,嵌入式软件,个程和科学计算软件,嵌入式软件,个人计算机软件,基于人计算机软件,基于Web的软件的软件(网站),人工智能软件(网站),人工智能软件 上海交通大学计算机科学与工程系上海交通大学计算机科学与工程系2022-7-297上海交通大学计算机科学与工程系上海交通大学计算机科学与工程系2022-7-298上海交通大学计算机科学与工程系上海交通大学计算机科学与工程系上海交通大学计算机科学与工程系上海交通大学计算机科学与工程系2022-7-2910w由由Sun Microsystems(James Gosling)开)开发发w是一种通用的编程语言是一种通
6、用的编程语言w基于基于C/C+w针对针对Web/Internet应用应用w广泛应用广泛应用上海交通大学计算机科学与工程系上海交通大学计算机科学与工程系wJava powers more than 4.5 billion devices including:n800 million PCs n1.5 billion mobile phones and other handheld devices(source:Ovum)n2.2 billion smart cards nSet-top boxes,printers,Web cams,games,car navigation systems,lo
7、ttery terminals,medical devices,parking payment stations,and more.2022-7-2911上海交通大学计算机科学与工程系上海交通大学计算机科学与工程系2022-7-2912上海交通大学计算机科学与工程系上海交通大学计算机科学与工程系2022-7-2913w是一门编程语言是一门编程语言:Java是是SUN公司开发的源于公司开发的源于Internet的一种现代程序设计语言。多年来,的一种现代程序设计语言。多年来,SUN公司对公司对Java产品不断改进升级,使之紧跟产品不断改进升级,使之紧跟时代步伐,满足了日益复杂的软件开发需求。时代步
8、伐,满足了日益复杂的软件开发需求。w是一种体系架构是一种体系架构w是一种思考方式是一种思考方式w是一个运行环境是一个运行环境上海交通大学计算机科学与工程系上海交通大学计算机科学与工程系上海交通大学计算机科学与工程系上海交通大学计算机科学与工程系2022-7-2915wJava是是Sun公司公司1995年正式推出的新一代面向对象程序设计语言年正式推出的新一代面向对象程序设计语言,特别适合于特别适合于Internet应用程序开发应用程序开发,其平台无关性直接威胁到其平台无关性直接威胁到Wintel 的垄断地位。的垄断地位。wJava来自于来自于1991年年Sun公司的一个叫公司的一个叫Green的
9、项目的项目,其原先的目的其原先的目的是为家用消费电子产品开发一个分布式代码系统是为家用消费电子产品开发一个分布式代码系统,可以把可以把E-mail发发给电冰箱、给电冰箱、电视机等家用电器电视机等家用电器,对它们进行控制。开始对它们进行控制。开始,准备采用准备采用C+,但但C+太复杂太复杂,安全性差安全性差,最后基于最后基于C+开发了一种新的语开发了一种新的语言言Oak(Java的前身的前身),Oak是一种用于网络的精巧而安全的语言。是一种用于网络的精巧而安全的语言。w1994年下半年年下半年,Internet的快速发展的快速发展,促进了促进了Java语言研制的进展语言研制的进展,Green项目
10、组成员用项目组成员用Java编制了编制了HotJava 浏览器浏览器,触发了触发了Java进军进军Internet,使得它逐渐成为,使得它逐渐成为Internet上受欢迎的开发与编程语言,上受欢迎的开发与编程语言,现已发展成为一种重要的现已发展成为一种重要的Internet平台。平台。上海交通大学计算机科学与工程系上海交通大学计算机科学与工程系2022-7-29161991年 Sun公司的一个叫Green的项目开始启动1992年“Oak”编程语言诞生,绿色小组开发出Star Seven(*7),Duke作为Java语言的吉祥物登上国际舞台 1993年 绿色工程成为焦点,Mosaic v1.0版
11、本发布(历史上第一个多媒体的网络浏览器)1994年 第一个支持移动对象和动态可执行内容的浏览器WebRunner发布 1995年 以James Gosling为首的编程小组在wicked.neato.org网站上发布了Java技术,Java语言的名字从Oak变为Java,Java 技术通过Sun world正式发布 1996年 第一次举办JavaOne 开发者大会,JDK 1.0 软件发布1997年 三周内超过22万的开发者下载了JDK 1.1 软件,超过8,000名开发者参加了JavaOne大会,Java Card 2.0平台发布 1998年 JDK 1.1发布,其被下载次数超过2 百万,V
12、ISA公司应用Java Card技术推出了世界上首张智能卡,Java社区(JCP)成立 上海交通大学计算机科学与工程系上海交通大学计算机科学与工程系2022-7-29171999年 Java 2平台源代码公开,JavaOne大会参会人数增长到20,000人,J2EE beta软件发布 2000年 全球有超过400个Java开发团队,在JavaOne大会上,Steve Jobs与Scottn McNealy一起宣布苹果公司会全力支持Java技术2001年 首个国际性JavaOne会议在日本横滨召开,超过百万的开发者下载Java Platform Enterprise Edition(Java E
13、E)SDKGoogle公司的PageRank查询算法被授予专利 2002年 2EE SDK下载次数达2百万,78%的决策者认为,J2EE技术是最有影响力的网络构建开发平台 2003年 大约有5.5亿个桌面系统应用了Java技术,有75%的专业开发者使用Java 编程语言,并将其作为主要的开发语言2004年 Java 2 Platform,Standard Edition 5 发布,利用Java技术开发的火星探测器成功登陆火星,Sun Java Studio Creator发布2005年 有大约450万名开发者正在使用Java 技术,全球有25亿台设备使用了Java技术,用于生态系统中的Java
14、 技术约合1000亿美金 展望Java EE 5.0 代号:Tiger J2SE 6.0:代号:Mustang 野马J2SE 7.0:代号:Dolphin 海豚 上海交通大学计算机科学与工程系上海交通大学计算机科学与工程系2022-7-2918“Java之父”James Gosling 1991年开始从事“绿色计划”项目,随后创造了Java。Java 2 元勋Joshua Bloch 将Java“哺育”成长,主要贡献:JDK 1.1 中的java.math、JDK 1.4 中的assertions、Collections Framework、Tiger,2004年7月离开Sun到Google公
15、司。Bill Joy,软件行业的爱迪生 1954年出生,是兼通计算机软硬件技术的天才,Sun的创始人之一,世界上最优秀的程序员(Best Coder)Acott McNealySun十年来的掌舵者,Sun的前CEO、总裁兼董事长Doug Lea世界上对Java影响力最大的个人,因为在Java的两次大变革中,他都起了举足轻重的作用,服务于纽约州立大学Oswego分校计算机科学系Bruce EckelThinking in Java的作者,具有超人的表达能力和捕捉机会的能力上海交通大学计算机科学与工程系上海交通大学计算机科学与工程系上海交通大学计算机科学与工程系上海交通大学计算机科学与工程系202
16、2-7-2920w简单简单n风格类似于风格类似于C+,基本语法与基本语法与C语言类似;语言类似;n摒弃了摒弃了C+中容易引发程序错误的地方中容易引发程序错误的地方,如指针和内存管理;如指针和内存管理;n提供了丰富的类库。提供了丰富的类库。w面向对象面向对象n面向对象面向对象:支持静态和动态风格的代码继承及重用,是完全面向:支持静态和动态风格的代码继承及重用,是完全面向对象的对象的,它不支持类似它不支持类似C语言那样的面向过程语言那样的面向过程 的程序设计技术。的程序设计技术。上海交通大学计算机科学与工程系上海交通大学计算机科学与工程系2022-7-2921w解释执行解释执行nJava编译器产生
17、字节码,而不是机器代码编译器产生字节码,而不是机器代码n产生的字节码是平台无关的产生的字节码是平台无关的nJava字节码在执行时被翻译成机器可读的指令字节码在执行时被翻译成机器可读的指令(Java Virtual Machine)n解释执行:解释执行:Java解释器解释器(运行系统运行系统)能直接运行目标代能直接运行目标代码指令码指令上海交通大学计算机科学与工程系上海交通大学计算机科学与工程系w可移植可移植n一个应用到处运行一个应用到处运行n原始数据类型大小在各个原始数据类型大小在各个机器上都是一样的机器上都是一样的n库定义了可移植的接口库定义了可移植的接口n平台无关:平台无关:Java源程序
18、被源程序被编译成一种高层次的与机编译成一种高层次的与机器无关的器无关的 byte-code格式格式语言语言,被设计在被设计在Java虚拟虚拟机上运行机上运行2022-7-2922上海交通大学计算机科学与工程系上海交通大学计算机科学与工程系2022-7-2923w可靠可靠nJava致力于检查程序在编译和运行时的错误致力于检查程序在编译和运行时的错误n类型检查帮助检查出许多开发早期出现的错误类型检查帮助检查出许多开发早期出现的错误nJava自已操纵内存减少了内存出错的可能性自已操纵内存减少了内存出错的可能性nJava还实现了真数组还实现了真数组,避免了覆盖数据的可能避免了覆盖数据的可能w安全安全n
19、安全:安全:Java的安全性可从两个方面得到保证。一方面的安全性可从两个方面得到保证。一方面,在在Java语言里语言里,象指针和释放内存等象指针和释放内存等C+功能被删除功能被删除,避免了非法内存避免了非法内存操作。操作。另一方面另一方面,当当Java用来创建浏览器时用来创建浏览器时,语言功能和一些浏语言功能和一些浏览器本身提供的功能结合起来览器本身提供的功能结合起来,使它更安全。使它更安全。上海交通大学计算机科学与工程系上海交通大学计算机科学与工程系2022-7-2924w多线程多线程n多线程:多线程:Java提供的多线程功能使得在一个程序里可提供的多线程功能使得在一个程序里可同时执行多个小
20、任务。多线程带来的好处是可以有更同时执行多个小任务。多线程带来的好处是可以有更好的交互性能和实时控制性能。好的交互性能和实时控制性能。w动态性动态性n动态:动态:Java的动态特性是其面向对象设计方法的拓展,的动态特性是其面向对象设计方法的拓展,它允许程序动态地装入运行过程中所需要的类。它允许程序动态地装入运行过程中所需要的类。上海交通大学计算机科学与工程系上海交通大学计算机科学与工程系2022-7-2925w比编译型语言,例如比编译型语言,例如C来得慢来得慢n1999年做的一个试验,说明年做的一个试验,说明Java比比C或者或者C+要慢要慢3到到4 倍倍title of the articl
21、e:“Comparing Java vs.C/C+Efficiency Issues to Interpersonal Issues”(Lutz Prechelt)nadequate for all but the most time-intensive programs上海交通大学计算机科学与工程系上海交通大学计算机科学与工程系上海交通大学计算机科学与工程系上海交通大学计算机科学与工程系2022-7-2927wJava Application(Java应用程序):应用程序):用用Java语言编写的通过独立的语言编写的通过独立的Java解释器来解释运行的桌面应解释器来解释运行的桌面应用程序(类
22、似于其它高级语言编制的应用程序)。用程序(类似于其它高级语言编制的应用程序)。wJava Applets(Java小程序):小程序):用用Java语言编写的、嵌入在语言编写的、嵌入在HTML编写的编写的Web页面中的非独立页面中的非独立程序,由程序,由Web浏览器内部包含的浏览器内部包含的Java解释器来解释运行,是动解释器来解释运行,是动态、安全、跨平台的网络应用程序。态、安全、跨平台的网络应用程序。wJSP(JavaServer Pages,Java 服务器页服务器页):是一种实现普通静态是一种实现普通静态HTML和动态和动态HTML混合编码的技术,是在混合编码的技术,是在Sun公司倡导及
23、多个公司参与下共同建立的一种动态网页标准,公司倡导及多个公司参与下共同建立的一种动态网页标准,实现了实现了Web动态内容与其显示的分离,用于构建动态动态内容与其显示的分离,用于构建动态Web网站,网站,JSP文件运行于服务器端,文件运行于服务器端,上海交通大学计算机科学与工程系上海交通大学计算机科学与工程系2022-7-2928wJ2EE Java 2 Platform,Enterprise Edition(Java 2企业版)企业版)nJ2EE首先是一种构架,它包罗了首先是一种构架,它包罗了Java的多种先进的的多种先进的技术,最合适使用技术,最合适使用MVC的方法来构建系统,其表现层的方法
24、来构建系统,其表现层使用使用JSP,控制层可以使用,控制层可以使用Servlet或或Session Bean,用于实现业务逻辑,用于实现业务逻辑,Entity Bean则对业务实体进行则对业务实体进行抽象。此外它还使用抽象。此外它还使用JAAS(Java验证和授权验证和授权API)实现安全机制,实现安全机制,JNDI用于查询资源,用于查询资源,JDBC和和JTA访访问数据库和管理事务;问数据库和管理事务;JMS实现企业的消息处理;实现企业的消息处理;JavaMail实现与企业外界的联系。实现与企业外界的联系。上海交通大学计算机科学与工程系上海交通大学计算机科学与工程系2022-7-2929wJ
25、2SEJava 2 Platform,Standard Edition(Java 2标准版),是标准版),是Java最核心的技术最核心的技术wJ2MEJava 2 Platform,Micro Edition(Java 2袖袖珍版珍版),是一个重要的用于无线方面的是一个重要的用于无线方面的 Java 平台,它从平台,它从可移植的、以网络为中心的可移植的、以网络为中心的 Java 虚拟机转变而来。虚拟机转变而来。wJVMJava Virtual Machine(Java虚拟机虚拟机),它通,它通过采用一种被称之为过采用一种被称之为Java虚拟机的虚拟微处理器的规范,虚拟机的虚拟微处理器的规范,用
26、软件在计算机芯片内模拟出一个假芯片,然后开始运用软件在计算机芯片内模拟出一个假芯片,然后开始运行程序,为行程序,为Java程序提供统一的脱离软、硬件平台的运程序提供统一的脱离软、硬件平台的运行环境。行环境。上海交通大学计算机科学与工程系上海交通大学计算机科学与工程系2022-7-2930wJDKJava Development Kit(Java开发工具包开发工具包),由由Sun公司免费发行的,公司免费发行的,JDK有多个版本,大体经历过有多个版本,大体经历过1.02、1.1.x、1.2、1.3、1.4、1.5、1.6几个系列几个系列wJSDKJava Server Development Ki
27、t(Java服务服务器开发工具包器开发工具包),是,是JDK 的一个典型的扩展工具包的一个典型的扩展工具包。wJDBCJava DataBase Connectivity(Java数据数据库连接)库连接),是一种用于执行是一种用于执行SQL语句的语句的Java API(应用(应用程序接口),可以为多种关系数据库提供统一访问,是程序接口),可以为多种关系数据库提供统一访问,是由一组用由一组用Java语言编写的类和接口组成。语言编写的类和接口组成。上海交通大学计算机科学与工程系上海交通大学计算机科学与工程系2022-7-2931wAppletJava Applet 是用是用 Java 语言编写的、
28、包含语言编写的、包含在网页里的在网页里的“小小 应用程序应用程序”,通常被放在,通常被放在 Web 服务器服务器上。当有人上网浏览时,上。当有人上网浏览时,Applet 随网页一起随网页一起 下载到客下载到客户端的浏览器中,并借助浏览器中的户端的浏览器中,并借助浏览器中的 Java 虚拟机虚拟机(JVM)运行工作。)运行工作。wServlet Servlet是用是用Java编写的编写的Server端程序,端程序,它与协议和平台无关。它与协议和平台无关。Servlet运行于运行于Javaenabled Web Server中。中。Java Servlet可以动态地扩展可以动态地扩展Server的
29、能力,并采用请求响应模式提供的能力,并采用请求响应模式提供Web服务。服务。Servlet与与Jsp之间的交互为开发之间的交互为开发Web服务提供了优秀的服务提供了优秀的解决方案。解决方案。上海交通大学计算机科学与工程系上海交通大学计算机科学与工程系2022-7-2932wSwing与与 AWT(抽象窗口工具包)(抽象窗口工具包)是是Java设计设计 GUI(图形用户界面)的基(图形用户界面)的基础础。nAWT设计有严重缺陷,不能满足发展的需要设计有严重缺陷,不能满足发展的需要nSwing是在是在AWT基础上发展起来的,为基础上发展起来的,为Java GUI编程提供了强大丰富的编程提供了强大丰
30、富的API和灵活的结构和灵活的结构设计,提供了替代设计,提供了替代AWT重量组件的轻量组件,重量组件的轻量组件,Swing 中大部分是轻量级组件。中大部分是轻量级组件。Swing 几乎几乎无所不能,不但有各式各样先进的组件,而无所不能,不但有各式各样先进的组件,而且更为美观易用。二者最好不要混用。且更为美观易用。二者最好不要混用。上海交通大学计算机科学与工程系上海交通大学计算机科学与工程系2022-7-2933wEJB(Enterprise JavaBeans)-J2EE核心组件,核心组件,EJB并不是一个产品。它是并不是一个产品。它是Java服务器端服务框服务器端服务框架的规范,软件厂商根据
31、它来实现架的规范,软件厂商根据它来实现EJB服务器。服务器。上海交通大学计算机科学与工程系上海交通大学计算机科学与工程系2022-7-2934上海交通大学计算机科学与工程系上海交通大学计算机科学与工程系2022-7-2935Sun JDKJava的基石,Sun公司产品,1996年1月推出JDK1.1,目前是2004年9月推出的J2SE 5.0Eclipse 以构架赢天下,2001年IBM投资成立了Eclipse联盟,是目前最受欢迎的Java开发工具Junit/Ant让Java自动化的绝代双骄,Junit是单元测试的工具,Ant是编译部署工具,是Java程序员的必备工具Websphere1999
32、年IBM推出,开发Web 应用程序的平台WebLogic1998年BEA推出的以Java为基础的应用平台服务器JBuilderJava开发工具的王者,是由Borland公司推出的Java 集成开发环境,半年推出一个新版本,目前为2005版Jdeveloper IDEOracle公司提供的Java开发工具上海交通大学计算机科学与工程系上海交通大学计算机科学与工程系上海交通大学计算机科学与工程系上海交通大学计算机科学与工程系2022-7-2937w历史回眸历史回眸w开发模式开发模式w传统方法学传统方法学w面向对象方法学面向对象方法学w面向对象基本概念面向对象基本概念w对象组成对象组成w面向对象分析
33、面向对象分析/设计设计/编程编程上海交通大学计算机科学与工程系上海交通大学计算机科学与工程系2022-7-2938w现在的计算机的数学理论基础是由计算机的开山鼻祖,现在的计算机的数学理论基础是由计算机的开山鼻祖,大名鼎鼎的图灵于大名鼎鼎的图灵于1937年提出的图灵机模型。年提出的图灵机模型。随后不随后不到十年,电子计算机就诞生了到十年,电子计算机就诞生了(1945)。(埃尼亚克埃尼亚克)w它当时的主要任务之一就是用于导弹弹道轨迹的计算。它当时的主要任务之一就是用于导弹弹道轨迹的计算。当时的软件开发当时的软件开发(如果可以称之为软件开发的话如果可以称之为软件开发的话)与现在与现在的大不相同。为了
34、算一道题,要有人事先把完成加减乘的大不相同。为了算一道题,要有人事先把完成加减乘除等各类运算的部件像搭积木那样搭起来,如果换一道除等各类运算的部件像搭积木那样搭起来,如果换一道题,则要把这些部件分解开来,根据新的要求重新搭建,题,则要把这些部件分解开来,根据新的要求重新搭建,效率极低效率极低(与现在比与现在比)。上海交通大学计算机科学与工程系上海交通大学计算机科学与工程系2022-7-2939w现代电子计算机的体系结构及实际计算模型来自冯现代电子计算机的体系结构及实际计算模型来自冯.诺依诺依曼的思想。曼的思想。1946年他和他的同事们发现了埃尼亚克的年他和他的同事们发现了埃尼亚克的缺陷,发表了
35、一份报告,提出了程序放入内存,顺序执缺陷,发表了一份报告,提出了程序放入内存,顺序执行的思想,这样,当算一道新题时就只需采取改变计算行的思想,这样,当算一道新题时就只需采取改变计算机中的程序的机中的程序的“软软”的方法。的方法。w英国的科学家维尔克斯实现了冯英国的科学家维尔克斯实现了冯.诺依曼的思想,领导研诺依曼的思想,领导研制了制了“艾克萨克艾克萨克”。w因此,现在的计算机通常被称为冯因此,现在的计算机通常被称为冯.诺依曼计算机。诺依曼计算机。上海交通大学计算机科学与工程系上海交通大学计算机科学与工程系2022-7-2940w早期程序员们使用机器语言来进行编程运算;随着编译早期程序员们使用机
36、器语言来进行编程运算;随着编译技术的出现,人们设计了许多更高级别的语言;这些语技术的出现,人们设计了许多更高级别的语言;这些语言摆脱了机器语言繁琐的细节,更接近于人的自然语言,言摆脱了机器语言繁琐的细节,更接近于人的自然语言,迅速流行开来。迅速流行开来。w据统计,全世界的高级语言起码有几千种,但从可计算据统计,全世界的高级语言起码有几千种,但从可计算性的角度看,它们的计算能力都等价于图灵机。性的角度看,它们的计算能力都等价于图灵机。已经证已经证明,一个计算机语言,只要除了赋值语句之外,还包括明,一个计算机语言,只要除了赋值语句之外,还包括顺序语句,条件语句和循环语句,它的计算能力即相当顺序语句
37、,条件语句和循环语句,它的计算能力即相当于图灵机。于图灵机。这里当然要排除其他技术因素的影响,如程这里当然要排除其他技术因素的影响,如程序长度,变量个数,数据精度等。序长度,变量个数,数据精度等。上海交通大学计算机科学与工程系上海交通大学计算机科学与工程系2022-7-2941w由于图灵机的想法是把问题转化为一步一步按规由于图灵机的想法是把问题转化为一步一步按规则执行的机械求解过程,各种计算机语言也不过则执行的机械求解过程,各种计算机语言也不过都是某种形式语言,因此软件开发的过程实质上都是某种形式语言,因此软件开发的过程实质上就是程序员们对客观世界问题域的形式化的过程。就是程序员们对客观世界问
38、题域的形式化的过程。w程序员们先建立问题的模型程序员们先建立问题的模型(形式化形式化),再用计算,再用计算机语言加以合适的表达,最后再输入计算机里进机语言加以合适的表达,最后再输入计算机里进行计算。行计算。上海交通大学计算机科学与工程系上海交通大学计算机科学与工程系2022-7-2942w最早的高级语言大约诞生于最早的高级语言大约诞生于1945年,是德国人年,是德国人楚译为他的楚译为他的Z-4计算机设计的计算机设计的Plan Calcul,比,比第一台电子计算机还早几个月;在电子计算机上第一台电子计算机还早几个月;在电子计算机上实现的第一个高级语言是美国尤尼法克公司于实现的第一个高级语言是美国
39、尤尼法克公司于1952年研制成功的年研制成功的Short Code;而真正得到推;而真正得到推广使用,至今仍在流行的第一个高级语言是美国广使用,至今仍在流行的第一个高级语言是美国的计算机科学家巴科斯设计,并于的计算机科学家巴科斯设计,并于1956年首先年首先在在IBM公司的计算机上实现的公司的计算机上实现的FORTRAN语言。语言。上海交通大学计算机科学与工程系上海交通大学计算机科学与工程系2022-7-2943w早期的高级语言主要是应用于科学和工程计算,早期的高级语言主要是应用于科学和工程计算,其代表作有其代表作有FORTRAN和和ALGOL60。计算机进。计算机进入商业和行政管理领域以后,
40、出现了入商业和行政管理领域以后,出现了COBOL和和 RPG等便于商界使用的语言。等便于商界使用的语言。w这类语言和数据库技术,图形界面技术这类语言和数据库技术,图形界面技术(可视化可视化编程编程),面向对象的思想及,面向对象的思想及RAD(Rapid Application Development)的概念相结合,形的概念相结合,形成了一批更方便使用的所谓第四代语言成了一批更方便使用的所谓第四代语言(4GL),如如Powerbuilder,Delphi,VB等。等。上海交通大学计算机科学与工程系上海交通大学计算机科学与工程系2022-7-2944w前一类应用于科学和工程计算的大型语言相对来前一
41、类应用于科学和工程计算的大型语言相对来说更为基础,因而也更为灵活,应用范围更为广说更为基础,因而也更为灵活,应用范围更为广泛。泛。在在FORTRAN,BASIC(学习型学习型)之后,自之后,自70年代以来,模块特征更明显,简单易用,可年代以来,模块特征更明显,简单易用,可靠性强的靠性强的PASCAL异军突起,在世界范围内广泛异军突起,在世界范围内广泛流行。流行。但进入但进入80年代以后,它的地位又逐渐为年代以后,它的地位又逐渐为更实用的更实用的C语言替代。语言替代。到现在,到现在,C语言的地位已语言的地位已相当于一种相当于一种“高级汇编语言高级汇编语言”了。了。上海交通大学计算机科学与工程系上
42、海交通大学计算机科学与工程系2022-7-2945w80年代后期,面向对象的语言开始浮出水面,年代后期,面向对象的语言开始浮出水面,C+借助使用借助使用C语言的庞大程序员队伍,一举建语言的庞大程序员队伍,一举建立了面向对象语言的老大地位。从而立了面向对象语言的老大地位。从而OO的思想的思想正式统治了整个软件开发界。正式统治了整个软件开发界。C+的流行甚至的流行甚至使得美国军方从使得美国军方从80年开始大力扶植的年开始大力扶植的Ada语言语言还未及推广便胎死腹中了。还未及推广便胎死腹中了。上海交通大学计算机科学与工程系上海交通大学计算机科学与工程系2022-7-2946w90年代以后,计算机世界
43、更是发生了天翻地覆年代以后,计算机世界更是发生了天翻地覆的变化,原先的单机平台让位于的变化,原先的单机平台让位于WEB,“网络网络就是计算机就是计算机”,新的语言不仅要是,新的语言不仅要是OO的,的,Visual的,更要是基于的,更要是基于WEB的。的。Java语言借语言借INTERNET的东风,横空出世,一夜红遍天下。的东风,横空出世,一夜红遍天下。w上述这些变化,表面是不同的编程工具的流行,上述这些变化,表面是不同的编程工具的流行,但其背后反映的却是一种更为深刻的认识论的改但其背后反映的却是一种更为深刻的认识论的改变,即你是用何种观点来认识这个世界的?变,即你是用何种观点来认识这个世界的?
44、上海交通大学计算机科学与工程系上海交通大学计算机科学与工程系2022-7-2947w开发模式又称为范型、范例、风范或模式开发模式又称为范型、范例、风范或模式(Pattern)。开发模式定义了。开发模式定义了特定问题和应用的开发过程中将遵循的步骤;特定问题和应用的开发过程中将遵循的步骤;确定将用于表示问题和解的那些成分的类型;确定将用于表示问题和解的那些成分的类型;利用这些成分表示与问题解决有关的抽象;利用这些成分表示与问题解决有关的抽象;直接得到问题的结构。直接得到问题的结构。上海交通大学计算机科学与工程系上海交通大学计算机科学与工程系2022-7-2948w开发模式的选择影响到整个软件开发生
45、存期。就开发模式的选择影响到整个软件开发生存期。就是说,它支配选择:是说,它支配选择:设计方法设计方法编码语言编码语言测试和检验技术测试和检验技术上海交通大学计算机科学与工程系上海交通大学计算机科学与工程系2022-7-2949w传统方法学:瀑布模型,结构化分析传统方法学:瀑布模型,结构化分析/设计设计/编编码码w瀑布模型的缺点:僵化瀑布模型的缺点:僵化n瀑布模型要求:生命周期各阶段间遵守严格的顺序,瀑布模型要求:生命周期各阶段间遵守严格的顺序,实际情况是:软件开发往往在反复实践中完成实际情况是:软件开发往往在反复实践中完成n瀑布模型要求:预先定义并瀑布模型要求:预先定义并“冻结冻结”软件需求
46、,实际软件需求,实际情况是:某些系统的需求的一个逐渐明确的过程,且情况是:某些系统的需求的一个逐渐明确的过程,且预先定义的需求到软件完成时可能已经过时预先定义的需求到软件完成时可能已经过时上海交通大学计算机科学与工程系上海交通大学计算机科学与工程系2022-7-2950w SA-SD-SP 技术的缺点:技术的缺点:n本质上是功能分解,以实现功能的过程为中心,本质上是功能分解,以实现功能的过程为中心,而用户的需求变化主要是针对功能的。这就使而用户的需求变化主要是针对功能的。这就使基于过程的设计不易被理解;且功能变化往往基于过程的设计不易被理解;且功能变化往往引起结构变化较大,稳定性不好引起结构变
47、化较大,稳定性不好n系统有明确的边界定义,且系统结构依赖于系系统有明确的边界定义,且系统结构依赖于系统边界的定义,这样的系统不易扩充和修改统边界的定义,这样的系统不易扩充和修改n数据与操作分开处理,可能造成软构件对具体数据与操作分开处理,可能造成软构件对具体应用环境的依赖,可重用性应用环境的依赖,可重用性(reusability)较差较差上海交通大学计算机科学与工程系上海交通大学计算机科学与工程系2022-7-2951w维特跟斯坦是本世纪乃至人类哲学史上最伟大的维特跟斯坦是本世纪乃至人类哲学史上最伟大的哲学家之一。哲学家之一。他生前只于他生前只于1922年出版了一本著年出版了一本著作作逻辑哲学
48、论逻辑哲学论(Tractatus Logico-Philosophicus)。在该书中,他阐述了一种世在该书中,他阐述了一种世界观,或者说一种认识世界的观点,这种观点,界观,或者说一种认识世界的观点,这种观点,在六七十年后的今天,终于由一种哲学思想沉淀在六七十年后的今天,终于由一种哲学思想沉淀到技术的层面上来,成为计算机业界的宠儿,这到技术的层面上来,成为计算机业界的宠儿,这就是就是“OO”,Object-Oriented,面向对象。,面向对象。上海交通大学计算机科学与工程系上海交通大学计算机科学与工程系2022-7-2952w维特根斯坦在维特根斯坦在逻辑哲学论逻辑哲学论 一书中提出一书中提出
49、了如下思想:了如下思想:n世界可以分解为事实世界可以分解为事实(The world divides into facts.)事实是由原子事实事实是由原子事实(atomic facts)组成的。组成的。n一个原子事实是多个对象一个原子事实是多个对象(objects)的组合。的组合。n对象是简单的对象是简单的(基本的基本的)The Object is simple。n对象形成了世界的基础。对象形成了世界的基础。上海交通大学计算机科学与工程系上海交通大学计算机科学与工程系2022-7-2953杭杭 州州北北 京京Post-officeMessageSend by method对象对象ObjectOb
50、ject=数据数据AttributeAttributes:location;employee;+操作操作MethodMethods:send;sell;注意:注意:Object内部的内部的attributes不允许外部用户直接改动,只有当它提供了相应的服不允许外部用户直接改动,只有当它提供了相应的服务务method时,用户才能通过发送时,用户才能通过发送message来提请它执行。来提请它执行。我想把邮局搬到我想把邮局搬到我家门口,多加几个我家门口,多加几个邮递员,邮递员,24小时都开门小时都开门对不起,对不起,本邮局不提供本邮局不提供此类服务此类服务唉,那就先送束花吧唉,那就先送束花吧 Po