并行计算

Download Report

Transcript 并行计算

问题六:大学生如何提高实践能力?
上课认真学(预习、笔记、思考)
课后作业 、实验和课程设计自己做(看书、上
相关网站、动手实践)
参加USRP、参加竞赛、参与老师的项目
参加培训
进行实习
不要什么语言都学,但什么都不精。只要精通一门就可以
将来哪个
更挣钱?
哪个更容
易学?
是不是都
要学?
C、JAVA
哪个好?
As you will
第七章 计算机语言
3
计算机语言与汽车
Delphi就像吉普车,什么路上都能开,却在什么路上也
开不好
PB就像卡丁车,只能在固定路线上开,到了室外就有些
不稳了
VC就像是跑车,你开得起却买不起,而且一旦发生故障,
想修都找不到毛病在哪
Java就像敞篷车,不管刮风下雨,还是艳阳高照,都能
照开不误
VB就是摩托车,骑得时间越长,你越痛恨它!
2015/7/17
4
计算机语言与女人
有的女人就是Windows,虽然很优秀,但是安全隐患太大
有的女人就是MFC,条件很好,然而不是谁都能玩得起的
有的女人就是C#,长得很漂亮,但是家务活不行
有的女人就是C++,她会默默地为你做很多的事情
有的女人就是汇编,虽然很麻烦,但是有的时候还得求她
有的女人就是SQL,她会为你的发展带来莫大的帮助
2015/7/17
5
计算机硬件就像人的躯体一样
计算机软件就像人的灵魂一样
2015/7/17
6
三毛,什么是程序?
不对
您前面四个答案之
和
算法?
数据结构?
程序设计方法?
语言工具和环境?
海宝,您说是什么?
2015/7/17
7
内容提要
7.1 计算机语言的形成与发展
7.2 计算机语言实例
7.3 什么是计算机语言(翻译、模式、概念)
2015/7/17
8
7.1 计算机语言的形成与发展
1.机器语言(1GL)
 一般来说,计算机可以直接执行的代码形式的指
令系统称为机器语言
 每台计算机有自己的机器语言,这种语言由“0”
和“1”的字符串组成
 优点:真实表示了数据是如何被计算机操纵的
 缺点:依赖于计算机;编程单调乏味,发现错误
很难
2015/7/17
9
例如,在国产DJS——21计算机中,取、除、减、
送的指令代码分别为:002,00E,009,004
假定a、b、c、x四个单元的地址码分别为:0123,
1234,2103,0576,那么要计算 x:= a / b – c
其机器语言程序为:
2015/7/17
002
0123
00E
1234
009
2103
004
0576
10
2.汇编语言(2GL)
 汇编语言就是计算机符号形式的指令系统
 用带符号或助记符的指令和地址代替二进制代码
 缺点:没有程序设计环境;不方便移到其他计算
机;程序员还要从机器语言的角度思考
如对应于取、除、减、送采用下列符号:CLA,DIV,SUB,
STO
那么上述程序的汇编语言程序:
CLA
a
DIV
b
SUB
c
STO
x
2015/7/17
11
3.高级语言(3GL)
 为了提高程序员效率以及从关注计算机转到关注
要解决的问题,导致了高级语言的发展
 高级语言的高级在于它比较接近自然语言,它面
向问题的求解步骤(算法)而不是具体机器的指
令系统,所以又叫算法语言。分为:
非结构化(数据类型、执行控制、过程和函数)
结构化(顺序结构、分支结构、循环结构)
2015/7/17
12
上例用 BASIC 语言写为赋值语句为:
x=a/b-c
用 PASCAL 语言写为赋值语句为:
x: = a / b - c
上例用 C 语言写为赋值语句为:
x=a/b-c
又如求半径为r的圆面积和周长的问题,用PASCAL语
言编写的程序是: Program scr ( input , output ) ;
2015/7/17
const pi = 3.1416 ;
var s, c, r : real ;
begin read ( r ) ;
s : = pi * sqr ( r ) ;
c : = 2 * pi * r ;
write ( r, s, c)
End.
13
4.第四代语言(4GL)
 可以快速开发应用软件的各种高生产率的软件工
具的统称用户只要告诉系统做什么,而无须说明
怎么做
 4GL以数据库管理系统所提供的功能为代表,进一
步构造了开发高层软件系统的开发环境
 特点:非过程化、支持面向对象程序设计、图形
化可视化
 缺点:系统开销大,运行效率低
2015/7/17
14
 常用的第四代语言:
 查询语言和报表生成器:SQL、PowerBuilder、
Delphi
 面向对象的编程语言和网络语言:smalltalk、
VC、C++、JAVA、Ada95、HTML
 可视化编程语言:VB
 软件开发工具:CASE(计算机辅助软件工程)
2015/7/17
15
5.第五代语言(5GL)
 智能化语言、知识库语言、人工智能语言,是最
接近自然语言的程序语言
 人工智能应用程序的开发语言:LISP、PROLOG
 PROLOG可能成为第五代语言最著名的雏形,其
特点是使用符号运算而非数字计算,但远远达不
到自然语言的要求
2015/7/17
16
6.2 计算机语言实例
1.Ada语言
爱 达 · 洛 夫 雷 斯 ( Ada Lovelace ) , 1815.12.10 -
1852.11.27
她对查尔斯·巴贝奇的笔记,手稿进行了整理和修正
她是世界上第一位计算机程序员
没有诗,要数
学干什么?
2015/7/17
她的座右铭是:
工作是我的报
酬
17
1977 年,DoD 起草了一份建议,开发一门新的语言
由Cii-Honeywell Bull公司的Jean Ichbiah(法国科学院
院士,1940.3.25-2007.1.26)负责
I see Ada as a cathedral,
with all the architectural
lines interwoven in a
harmonious manner. I
would
not
do
it
differently if I had to do
it over again.
2015/7/17
18
 Ada是一种表现能力很强的通用程序设计语言,它是美
国国防部为克服软件开发危机,耗费巨资,历时近20
年研制成功的
 它被誉为第四代计算机语言的成功代表
 Ada的出现,标志着软件工程成功进入了国家和国际的
规模
3 个最重要的问题:程序的稳定
性和可维护性,程序设计和人的行为接近,并且高效
 Ada最初设计时关注于
 Ada语言是美国国防部指定的唯一的一种可用于军用系
统开发的语言,我国军方也将Ada做为军内开发标准
2015/7/17
19
Ada语言编写的“Hello world”程序:
with Ada.Text_IO;
procedure Hello is
begin
Ada.Text_IO.Put_Line("Hello, world!");
end Hello;
2015/7/17
20
2. Pascal
它由瑞士Niklaus Wirth教授于六十年代末设计并创立
以法国数学家命名的Pascal语言现已成为使用最广泛
的基于DOS的语言之一
首次提出了“结构化程序设计” ,扩充了著名的巴
科斯范式,发明了语法图
1984年我获
得“图灵奖”
2015/7/17
21
const a=10;
var b,c;
procedure p;
begin
c:=b+a;
end
begin
read(b);
while b#0 do
begin
call p;
write(2*c);
read(b);
end
end.
2015/7/17
22
3.Fortran语言(Formula Translator)
 第一个被正式推广使用的高级语言,1956年使用
 为科学、工程问题或企事业管理中的那些能够用数学
公式表达的问题而设计的,其数值计算的功能较强
 John
Backus提出了规范描述编程语言语法的BackusNaur Form(BNF)
我 中 学 讨厌
学 习 , 成绩
很 差 不 得不
在暑假补课
2015/7/17
1977 年 我 获
得“图灵奖”
23
program hello
write(*,*)"Hello"
stop
end
program main
integer a
a=2+2*4-3
write(*,*) "2+2*4-3=",a
stop
end
2015/7/17
24
4.Prolog语言(Programming in Logic )
 建立在逻辑学的理论基础之上,最初被运用于自
然语言等研究领域。现在它已广泛的应用在人工
智能的研究中,它可以用来建造专家系统、自然
语言理解、智能知识库等
 1970年7月初,Robert Pasero和Philippe受Alain的邀
请来到了蒙特利尔大学
2015/7/17
25
5. BASIC/VB/VB.net
 1964年,Tom Kurtz和John Kemeny在FORTRAN语
言的基础上创造了BASIC(Beginners’ All-purpose
Symbolic Instruction Code)
 1975 年,比尔·盖茨创立的 Microsoft,并成功的
把 BASIC语言的编译器移植到使用Intel处理器的
ALR 计算机中
 2001年 Visual Basic.NET 推 出 , Visual Basic.NET
2010
2015/7/17
26
Private Sub Command1_Click()
a = InputBox("输入用户名,")
b = InputBox("输入密码,")
If a = "admin" And b = "admin" Then
MsgBox ("正在读处admin列表")
Text1.Text = "迅雷帐号:密码:,hotmail邮箱用户名: 密码: "
ElseIf a = "ad" And b = "ad" Then
MsgBox ("正在读处ad列表")
Text1.Text = "1234582"
Else
MsgBox ("你的用户名或密码不对,")
End
End If
End Sub
2015/7/17
27
6. C语言(Combined Language )
 1963年,剑桥大学将ALGOL 60语言发展成为CPL
(Combined Programming Language)语言
 1967年,剑桥大学的Martin Richards对CPL语言进
行了简化,产生了BCPL语言
 1970年,贝尔实验室的Ken Thompson将BCPL进行
了修改,并为它起了一个有趣的名字“B语言”
 1972年,贝尔实验室的Dennis M.Ritchie在B语言的
基础上最终设计出了一种新的C语言
2015/7/17
28
UNIX是我们
的杰作,呵呵!
Ken Thompson 和 Dennis Ritchi
我参加了UNIX、C、
AWK语言开发,也
写书,厉害吧,呵呵!
2015/7/17
Brian W.Kernighan
29
 具有高级语言的特点,又具有汇编语言的特点
 可以作为工作系统设计语言,可以作为应用程序设
计语言
 常用的C语言IDE(集成开发环境)有:
 Microsoft Visual C++、Dev-C++、Code::Blocks
 Borland C++、Watcom C++ 、Borland C++ Builder
 GNU DJGPP C++ 、Lccwin32 C Compiler 3.1
 High C、Turbo C、C-Free、win-tc ……
2015/7/17
30
【面试真题】:
#include <stdio.h>
main( ){
unsigned int a=6;
int b=-20;
int c;
(a+b>6) ? (c=1) : (c=0);
printf("c= %d \n",c);
}
2015/7/17
31
7. Objective-C(ObjC)
 1980年代初Brad Cox发明Objective-C
 主要使用于Mac OS X和GNUstep这两个使用
OpenStep标准的系统(iPhone的开发语言是
Objective-C)
2015/7/17
32
#import <Foundation/Foundation.h>
int main (int argc, const char * argv[]) {
NSAutoreleasePool * pool = [[NSAutoreleasePool
alloc] init];
NSLog(@"Hello, World!");
[pool drain];
return 0;
}
2015/7/17
33
8. C++
 以C中的++运算符来体现它是C的进步,所以就叫
C++
 中国大陆的程序员圈子中通常被读做“C加加”,
西方的程序员通常读做“C plus plus”,“CPP”
 贝尔实验室的Bjarne Stroustrup在80年代初期发明
C++(C with Classes)
2015/7/17
34
【面试真题】:
#include <stdio.h>
main( ){
int i=3, j=4;
i ? i++ : ++j;
printf("i=%d j=%d \n", i, j);
}
2015/7/17
35
VC、VC++、VS、
Visual J++、J#
是什么东东?
2015/7/17
36
9. C#
 专业人士一般读“C sharp”,非专业一般读“C井”
 C# 是 微 软 公 司 发 布 的 一 种 面 向 对 象 的 、 运 行
于.NET Framework之上的高级程序设计语言
 C#是微软公司研究员Anders Hejlsberg的最新成果
Turbo Pascal编译
器的主要作者,
Delphi和.NET之父
2015/7/17
37
【面试真题】:
一列数的规则如下:1、1、2、3、5、8、13、21、34……,
第30位数是多少,用递归算法实现,C#语言编写
public class MainClass
{public static void Main( )
{Console.writeLine(Foo(30));}
public static int Foo(int i)
{ if(i<0) return 0;
else if (i==0||i==1) return 1;
else return Foo(i-2)+Foo(i-1);
}
}
2015/7/17
38
10. JAVA
 1990年,Sun公司开始了一个James Gosling(Java
创始人)项目,尝试用C++开发用于消费电器中
的软件
我从来没有想到Java技术将会这
么火。当我的老板问我它将达到
多少次下载时,我说10,000 次。
而他认为我太过乐观了
2015/7/17
39
 Gosling用了一个新语言Oak来解决这个问题。Oak保
留了熟悉的C++语法
 当Oak成熟时,因特网也正处于戏剧性增长的时期,
Sun公司的开发小组认识到Oak非常适合Internet编程
 1994年,他们完成了一个用Oak编写的早期Web查看
器,称为WebRunner,后被改名为HotJava
2015/7/17
40
 Java让人联想到印度尼西亚有个重要的盛产咖啡的
岛屿,开发人员为这种新的语言起名为Java,其寓
意是为世人端上一杯热咖啡
 1995年,Oak更名为Java ,并在SunWorld 95中发布
 从此,Java的知名度如日中天。甚至在1996年1月
Java编译器第一版发布之前,Java已经成为Internet
发行的行业标准
 98年末,Sun推出Java 1.2 (简称Java 2)
 目前Java 1.7 是Java 2平台的最新版本
2015/7/17
41
Java特点:
简单
面向对象
分布式的
解释型的
强壮的
安全的
体系结构中立的
可移植的
高性能的
多线程的
动态的语言
2015/7/17
42
 目前常用的版本:
J2EE(Java 2 Platform Enterprise Edition):Java EE
定位在服务器端的应用
J2SE(Java 2 Platform Standard Edition):Java SE
定位在个人计算机上的应用
J2ME(Java 2 Platform Micro Edition):Java ME
定位在消费性电子产品的应用上
Java Card:定位在智能卡的应用上
2015/7/17
43
//Program filename: calcSquare.java
//package test;
//import java.io.*;
class Square
{
void calcSquare( int x )
{
int square = x*x;
System.out.println("The square of" + x + " is "+ square);
}
public static void main(String args[ ])
{
Square a = new Square( );
a.calcSquare(15);
}
}
2015/7/17
44
11. G语言
Systemview
Labview是我的兄弟
 LabVIEW(Laboratory Virtual instrument
Engineering)
 一种图形化的编程语言,广泛地被工业界、学术
界和实验室所接受,视为一个标准的数据采集和
仪器控制软件
 LabVIEW集成了与满足GPIB、VXI、RS-232和
RS-485协议的硬件及数据采集卡通讯的全部功能
 它内置了便于应用TCP/IP、ActiveX等软件标准的
库函数
 利用它可以方便地建立自己的虚拟仪器,其图形
化的界面使得编程及使用过程都生动有趣
2015/7/17
45
6.3 什么是计算机语言
1. 什么是计算机语言
 计算机语言是指编写程序时,根据事先定义的规
则(语法)而写出的预定语句的集合
2015/7/17
46
2. 翻译
 计算机实现程序设计语言的方法
第一种方法:对程序进行翻译
(翻译)
编译程序
(B语言)
目标程序
汇编语言
汇编程序
机器语言
高级语言
编译程序
汇编(机器)语言
源程序
解释程序
(A语言)
源程序
无
第二种方法:对程序进行解释
2015/7/17
47
 编译程序的组成
信
息
表
管
理
程
序
源
词法
语法
语义
中间
代码
目标
程
分析
分析
分析
代码
优化
代码
序
程序
程序
程序
生成
程序
生成
错
2015/7/17
误
检
查
和
处
理
程
目
标
代
码
序
48
3. 编程模式
 程序设计语言的划分:
 线性尺度:划分为不同的代
– 第一-四代:问题在人符合计算机特征的
环境里被解决
– 第五代:问题在计算机符合人的特征的环
境里被 解决
程序设计模式:沿着不同的可以选择的程
序设计过程
2015/7/17
49
程序设计模式的演变:
LISP
Scheme
函数式模式
ML
Smalltalk C++ VB
C#
面向对象模式
JAVA
机器 FORTRAN
语言 COBOL BASIC
Ada
Pascal
ALGOL APL C
GPSS
1950
2015/7/17
1960
过程式模式
Prolog
1970
说明式模式
1980 1990
2000
50
 过程式模式(命令型模式):把算法表示为命令
的序列
 说明式模式:要求程序员描述要解决的问题,而
不是解决该问题的算法,如天气预报
 函数式模式:程序可以看成是可以接受输入和产
生输出的实体
 面向对象模式:一个软件系统就是对象的集合
2015/7/17
51
4.共同概念
 标识符:
允许给程序中的数据和其他对象命名
相同点
C
C++
第一个字符
必须是字母
或下划线
不同点
有的C前8个有效
前32个有效
C#
把保留字用作标识符,前面加@
JAVA
也可以是$,没有限制
2015/7/17
52
 数据类型:
 定义了一系列值及应用于这些值的一系列操作
 简单数据类型:整数类型、实数类型、字符类型、
布尔类型
 复合数据类型:数组、记录
相同点
C
浮点、布
尔、字符
不同点
int/unsigned int/short int/unsigned short
int/long int/unsigned long
C++
整型int,短整型short,长整型long
C#
Sbyte/Byte/Short/ushort/Int/uint/Long/U
long/引用类型,指针类型
JAVA
类、接口、byte/short/int/long
2015/7/17
53
 变量:
 存储单元的名字
 变量声明:char c; int num; double result;
 变量初始化:char C=‘z’; int num=12; double
result=256782
相同点
C
不同点
先定义后使用
C++
C#
JAVA
2015/7/17
支持中文变量,可以后定义
54
 字面值:
程序中使用的预定义的值,如PI,’A’,“Anna”
相同点
不同点
C
C++
C#
JAVA
2015/7/17
55
常量:
是一个可以存储值的命名的位置
常量被声明时,要定义它的类型
相同点
不同点
C
const float taxmultiplier=0.15
C++
const float taxmultiplier=0.15
C#
JAVA
final static int MAXNAME = 10
public class Const{ public static final faint = "失败"; }
Const c = new Const(); System.out.println(Const.faint);
2015/7/17
56
输入和输出:
不同语言区别比较大
相同点
不同点
C
scanf(“%d”,&a)
C++
int a,b;cin >>a >>b;scanf
cout << “hello, world ”; printf
System.Console.ReadLine()
System.Console.WriteLine()
C#
JAVA
2015/7/17
printf(“%d”,a)
choice=(char)System.in.read();
System.out.println
57
public class Input
{
public static void main(String []args) throws
java.io.IOException
{
char choice;
System.out.println("请输入一个字符:");
choice=(char)System.in.read();
System.out.println("您输入的字符是:"+choice);
}
}
2015/7/17
58
表达式:
由一系列操作数和运算符简化后的一个单一数值
运算符:算术运算符、关系运算符、逻辑运算符
操作数:接收一个运算符的动作
相同点
C
C++
C#
JAVA
2015/7/17
==
!=
&&
++
+=
?:
不同点
移位操作符
59
public class BitwiseOperators {
public static void main(String []args)
printBits("-1",-1);
printBits("+1",+1);
printBits("~2",~2);
printBits("2&3",2&3);
printBits("2|3",2|3);
printBits("2^3",2^3);
printBits("128>>2",128>>2);
printBits("-256>>4",-256>>4);
printBits("128<<1",128<<1);
printBits("16<<2",16<<2);
}
2015/7/17
{
60
static void printBits(String s,int i)
{
System.out.print(s+",int: "+i+" binary: ");
for(int j=31;j>=0;j--)
if(((1<<j)&i)!=0)
System.out.print("1");
else
System.out.print("0");
System.out.println();
}
}
2015/7/17
61
语句:
每条语句都使程序执行一个相应的动作
赋值语句、复合语句、控制语句
相同点
C
C++
C#
JAVA
2015/7/17
if-else
case
for
While
do-while
不同点
没有GOTO语句
62
子程序:
局部变量:
参数:实际参数、形式参数(传值、传引用)
相同点
不同点
C
C++
C#
函数
函数
JAVA
方法
2015/7/17
63
封装性:
必须有模块化的性质以及信息隐藏的能力
相同点
不同点
C++
C#
JAVA
2015/7/17
64
多态性:
 不同的对象对同一种信息,可以按照对象本身
的性质加以回应
相同点
不同点
C++
C#
JAVA
2015/7/17
65
 继承性:
 可以定义一套对象之间的层次关系,下层的对象
继承了上层对象的特性,籍此可以实现程序代码
重复利用,并且有效的组织整个程序
相同点
不同点
C++
C#
JAVA
2015/7/17
66
动态联编:
 一旦对象生成以后,要使用这个对象只需简单
地把信息传递给它,不再需要去参考对象当初
设计时的规格
 只在程序执行时,才会真正锁定需要的对象,
这样的方式可以使程序设计具有最大的灵活性
相同点
不同点
C++
C#
JAVA
2015/7/17
67
注释:
程序设计语言提供了可以插入程序中的解释性语句
编译器忽略注释语句,但对阅读特别重要
相同点
C
C++
不同点
//
/* */
C#
JAVA
2015/7/17
/*
**/
68
方法一:
方法二:
/*
#if 0
void swap( int *a, int *b)
void swap( int *a, int *b)
{
{
int *tmp; tmp = a;
int *tmp; tmp = a;
/* 这是一段注释 */
/* 这是一段注释 */
a = b;
a = b;
b = tmp;
b = tmp;
}
}
*/
#endif
2015/7/17
69
1. html、xhtml、xml、css、JavaScript、VBScript、
asp、asp.net、jsp、php、ajax、ActionScript是什
么?
2. 用C实现1到100奇数之和的程序
3. 用C实现四个数从大到小输出
4. 除了上面提到的编程语言,还有哪些?
2015/7/17
70