《Java和Android开发实战详解》——1.1节编程语言基础知识

简介:

本节书摘来自异步社区《Java和Android开发实战详解》一书中的第1章,第1.1节编程语言基础知识,作者 陈会安,更多章节内容可以访问云栖社区“异步社区”公众号查看

1.1编程语言基础知识
Java和Android开发实战详解
“编程语言”(Programming Language)是人类告诉计算机如何工作的一款语言,如同人与人之间沟通使用自然语言,编程语言被设计用于人类与计算机之间进行沟通。从技术角度来说,编程语言就是一款将执行指令传达给计算机的标准通信技术。

1.1.1 程序、软件与应用程序
在说明编程语言之前,我们需要了解什么是程序、软件与应用程序。简单地说来,编程语言提供了语法,可以让我们编写程序代码来建立程序,程序经编译建立成应用程序后,就可以归类成不同软件。

1.程序
“程序”(Program)是使用指定编程语言所编写的特殊符号的组合,这些符号组成指令和语句,再进一步编写成程序代码,程序代码可以告诉计算机解决指定问题的步骤。

简单地说,程序就像是一个转换器,当从计算机键盘或鼠标取得输入数据后,程序就可以将数据转换成有用的信息,如图1-1所示。


68385e5f8b68078d423701e8a0b583174cb1c26b

如图1-1所示的输出结果可能显示在屏幕或是从打印机打印出来,计算机只是按照程序的指令将输入数据进行转换,并产生所需的输出结果。换句话说,为了让计算机能够看懂程序,程序需要根据编程语言的规则、结构和语法,以指定文字或符号来编写程序,例如,使用Java编程语言编写的程序称为Java程序代码(Java Code),或称为“源代码”(Source Code)。

编程语言与人类使用的自然语言的最大不同,在于我们平常使用的语言并不要求十分精确,就算有一些小错误也一样可以猜测其意义。但是计算机就没有这么聪明,一定要严格遵照编程语言规则来编写程序,否则计算机执行程序就会产生错误。

2.软件与应用程序
“应用程序”(Application)是一款处理指定工作的计算机程序,例如,数学计算分析、文字处理、电子表格工具以及编程语言的集成开发工具等。“软件”(Software)是在计算机执行的应用程序或者操作系统的泛称,通常软件可以是一款或多款程序或整套应用程序的泛称。

1.1.2 编程语言的种类
随着计算机科技的进步,编程语言已经发展成一个庞大的族群。在编程语言的分类上,按照其发展时代来区分可以分为五代,如表1-1所示。


64632de258e322e412bbabf02f7c6873359a6260

所谓第四代语言是特定应用程序专用的编程语言,例如,用于数据库查询的SQL语言。第五代编程语言主要是使用在人工智能和专家系统的逻辑分析语言,也称为“自然语言”(Natural Languages)。

1.1.3 低级语言
如果按照与程序编写者的亲和度来区分,编程语言可以分为偏向计算机的低级语言和编写者容易了解的高级编程语言。

低级语言(Low Level Language)是一款面向计算机不容易了解的编程语言。简单地说,它是计算机看得懂的编程语言。所以执行效率高,但是用户并不易学习。低级语言主要有两款:机器语言和汇编语言。

1.机器语言(Machine Language)
机器语言使用二进制的0和1来表示程序代码,计算机可以直接执行机器语言的程序代码,所以执行效率最高,如下所示:

0111 0001 0000 1111
1001 1101 1011 0001

2.汇编语言(Assembly Language)
汇编语言使用一些由简单符号组成的指令集来代表机器语言0和1表示的二进制程序代码。其建立的程序代码只需使用“汇编程序”(Assembler)就可以转换成机器语言,然后在计算机上执行。汇编语言是一款十分接近机器语言的编程语言,如下所示:

MOV AX 01
MOV BX 02
ADD AX BX

1.1.4 高级语言
高级语言(High Level Languages)是一种接近人类语言的编程语言,或称为半英文(Half-English)编程语言。因为计算机不能马上看懂,所以需要进一步翻译转换成机器语言,其转换的程序代码通常比直接使用机器语言编写的代码冗长,所以效率较低,但是非常适合用户学习。

目前常见的高级语言有:Basic、C/C++、C#、Java、Fortran、COBOL和Pascal等。高级语言需要进行翻译,将程序代码转译成机器语言的执行文件后,才能在计算机上执行,翻译方式有两款:使用编译程序和使用解释程序。

1.编译程序(Compiler)
C/C++等编程语言属于编译型语言,编译程序需要检查完整个程序文件的代码,在完全没有错误的情况下,才会翻译成机器语言的程序文件。其主要功能有两项,具体如下所示。

检查程序错误。
将程序翻译成机器语言的程序文件。
2.解释程序(Interpreter)
早期Basic语言(例如BASICA、QuickBasic等)和目前网页技术常见的“脚本”(Scripts)语言,例如VBScript和JavaScript,都属于解释型语言。解释程序在处理程序代码时,并不会输出可执行文件,而是直接一个指令一个动作,一行一行地执行程序代码,其执行效率相对较低,但是非常便于系统开发阶段的程序调试。

1.1.5 程序是如何执行的
程序在计算机实际执行的过程对于高级编程语言来说并非十分重要。不过,对计算机执行程序有一定的认识,在程序设计时仍然有一定的帮助。

不论我们是使用高级或低级编程语言来编写程序,所编写的程序代码最后都会编译成计算机看得懂的机器语言,这些指令是CPU支持的“指令集”(Instruction Set)。

因为各计算机使用的CPU不同,其支持的指令集也不相同。但要认识到,虽然高级语言有很多种,但是CPU只懂一种语言,也就是其能执行的机器语言,如图1-2所示。

图1-2所示为计算机的基本结构,其中CPU使用总线来连接周边设备,在图1-2只绘出主存储器。CPU执行机器语言程序是一种例行工作,过程只是依次将存储在内存的机器语言指令“取出和执行”(Fetch-and-execute)。简单地说,CPU从内存中访问出指令,然后执行此指令;取出下一个指令,再执行它。现在我们可以来简单了解程序执行的步骤,具体如下所示。

在计算机主存储器存储机器语言的程序代码和数据。
由CPU从内存依次取出一个个机器语言指令,然后执行它。当然,CPU并非真正了解机器语言在做什么,这只是它的例行工作——依次执行机器语言指令,所以用户设计的程序不能有错误,因为CPU实在没有聪明到能够替您的程序纠错。


4b42189dafde211e71f1ca3ab19b86c8ecb95527

1.中央处理器
中央处理器(CPU)是计算机实际提供运算功能的组件,目前的个人计算机都是使用单芯片集成电路(Integrated Circuit,IC)来作为处理器的,其主要功能是使用“ALU”(Arithmetic and Logic Unit,算术逻辑单元)中的逻辑电路进行运算,执行机器语言的指令。

在CPU拥有很多组“寄存器”(Registers),寄存器是位于CPU内部的内存,可以暂时存储数据或机器语言指令,例如,执行加法指令需要两个操作数,运算时这两个操作数数据就存储在寄存器。

CPU中拥有一些控制“取出和执行”(Fetch-and-execute)用途的寄存器,其说明如表1-2所示。


6c72c794924c0f5d0fd6bcd460b167d7c83e4636

现在我们可以进一步查看“取出和执行”(Fetch-and-execute)过程,CPU的执行速度是依据Clock产生的频率,即以MHz为单位的速度来执行存储在IR的机器语言指令。在执行后,以IC寄存器存储的地址,通过MDR和MAR寄存器从总线取得内存的下一个指令,然后执行指令,重复上述操作即可执行完整个应用程序。

2.内存
当我们执行程序时,操作系统可以将存储在硬盘或软盘的执行文件加载计算机主存储器(Main Memory)上,CPU可以从内存依次加载指令并执行。

事实上,我们编写的程序代码本身和使用的数据都存储在RAM(Random Access Memory)中,每一个存储单位有数字编号,称为“地址”(Address)。如同大楼里的信箱,门牌号码是地址,信箱内容是程序代码或数据,存储数据占用的内存空间大小,需根据使用的数据类型而定。

计算机CPU访问内存数据的主要步骤,如下所示。

step01送出读写的内存地址:当CPU读取程序代码或数据时,需要送出欲取得的内存地址,例如,内存地址4。

step02读写内存存储的数据:CPU可以从指定地址读取内存内容,例如,地址4中的内容是01010101,这是一个二进制值,每一个0或1是一个“位”(Bit),8个位称为“字节”(Byte),这是计算机内存的最小存储单位。

每次CPU从内存读取的数据量,需根据CPU与内存间的“总线”(Bus)而定,在购买计算机时,常听到所谓32位或64位的CPU,就是指CPU每次可以读取4个字节或8个字节数据来进行运算。当然每次CPU可以读取越多的数据量,CPU的执行效率也越高。

3.输入/输出设备
计算机的输入/输出设备(Input/Output Devices)是程序的窗口,可以让用户输入数据和显示程序的执行结果。目前而言,计算机最常用的输入设备是键盘和鼠标;输出设备是屏幕和打印机。

当人们在“记事本”使用键盘输入英文字母和数字时,屏幕马上显示对应的英文或中文字。

但对于计算机来说,当用户在键盘按下大写A字母时,传给计算机的是1个一字节宽的数字(英文字母和数字只使用其中的7位)。目前个人计算机主要是使用“ASCII”(American Standard Code for Information Interchange)码来表示字符,例如,大写A对应的ASCII码是65,换句话说,计算机实际显示和存储的数据是数值65。

同样的,在屏幕上显示的中文字,我们看到的是中文字,计算机看到的仍然是内码。因为中文字很多,需要使用2个字节的数值来代表常用的中文字,繁体中文的内码是Big 5,简体中文有GB和HZ。也就是说,1个中文字的内码值占用两个字节,相当于两个英文字母。

目前Windows操作系统也支持Unicode,它是由Unicode Consortium组织所制定的一个能包括全世界文字的内码集,包含GB2312和Big5的所有内码集,即ISO 10646内码集。有两种常用的编码方式:UTF-8,为8位编码;UTF-16,为16位的编码。

4.二级存储设备
二级存储设备(Secondary Storage Unit)是一种能够长时间和提供高容量存储数据的设备。计算机程序与数据是在加载到内存后,才依次让CPU来执行,不过,在此之前这些程序与数据存储在二级存储设备,例如硬盘驱动器。

当我们在Windows操作系统使用“记事本”编辑Java程序代码时,这些数据只会暂时存储在计算机的主存储器,因为主存储器在关闭电源后,其存储的数据就会消失,为了长时间存储这些数据,我们需要使用二级存储设备,比如将数据存储到硬盘。

在二级存储设备的程序代码文件可以长时间存储,当我们需要编译和执行程序时,再将文件内容加载主存储器。基本上,硬盘是最常用的二级存储设备,此外,CD和DVD光驱也是计算机常用的二级存储设备。

相关文章
|
1天前
|
缓存 Java 数据库
Java并发编程学习11-任务执行演示
【5月更文挑战第4天】本篇将结合任务执行和 Executor 框架的基础知识,演示一些不同版本的任务执行Demo,并且每个版本都实现了不同程度的并发性。
20 4
Java并发编程学习11-任务执行演示
|
2天前
|
存储 安全 Java
12条通用编程原则✨全面提升Java编码规范性、可读性及性能表现
12条通用编程原则✨全面提升Java编码规范性、可读性及性能表现
|
2天前
|
缓存 Java 程序员
关于创建、销毁对象⭐Java程序员需要掌握的8个编程好习惯
关于创建、销毁对象⭐Java程序员需要掌握的8个编程好习惯
关于创建、销毁对象⭐Java程序员需要掌握的8个编程好习惯
|
2天前
|
缓存 Java 数据库
Java并发编程中的锁优化策略
【5月更文挑战第9天】 在高负载的多线程应用中,Java并发编程的高效性至关重要。本文将探讨几种常见的锁优化技术,旨在提高Java应用程序在并发环境下的性能。我们将从基本的synchronized关键字开始,逐步深入到更高效的Lock接口实现,以及Java 6引入的java.util.concurrent包中的高级工具类。文中还会介绍读写锁(ReadWriteLock)的概念和实现原理,并通过对比分析各自的优势和适用场景,为开发者提供实用的锁优化策略。
3 0
|
3天前
|
JavaScript 小程序 Java
基于java的少儿编程网上报名系统
基于java的少儿编程网上报名系统
11 2
|
3天前
|
存储 安全 算法
掌握Java并发编程:Lock、Condition与并发集合
掌握Java并发编程:Lock、Condition与并发集合
11 0
|
3天前
|
Java API 开发工具
java与Android开发入门指南
java与Android开发入门指南
10 0
|
3天前
|
Java 测试技术 图形学
掌握Java GUI编程基础知识
掌握Java GUI编程基础知识
6 0
|
3天前
|
SQL Java 数据库连接
Java数据库编程实践:连接与操作数据库
Java数据库编程实践:连接与操作数据库
8 0
|
3天前
|
安全 Java 程序员
深入探索Java泛型编程
深入探索Java泛型编程
7 0