习题1

来源:互联网 发布:ai什么软件 编辑:程序博客网 时间:2024/05/16 00:26

习题1

1.1

(1)图1—2中列出的10中编程语言各自的特点和主要应用领域:1.Java
首先我要推荐的就是Java语言,相信只要略微了解编程的人就会听过Java,其如今依然展现出强势的增长势头,说其是目前最流行的编程语言也不为过。并且随着移动和大数据的发展,以基于Java的Hadoop如今发展迅速,这也是Java编程人员更加千金难寻。其可以用于各种各样的领域,包括企业应用及基础设施,以及Web应用和移动开发。 >>
2.JavaScript
JavaScript在Web应用上有着非常大的需求,主要目的是为了解决服务器端语言,比如Perl,遗留的速度问题,为客户提供更流畅的浏览效果。JavaScript主要用于实现为Web浏览器,以提供增强的用户界面和动态网站。

3.C/C++
C和C++都是基于C的语言,是目前最流行的编程语言, C常被用作系统以及应用程序的编程语言,如嵌入式系统的应用程序。C++语言为C的增强,其在出现后迅速成为开发人员之间最流行的语言之一。它是用于开发系统软件,应用软件,设备驱动程序,嵌入式软件,高性能服务器和客户端应用及娱乐软件,如视频游戏。
4.C#
C#是微软公司发布的一种面向对象的、运行于.NET Framework之上的高级程序设计语言。C#是微软公司用来替代Java而开发的一种语言,并借鉴了Java,C,C++和Delphi的一些特点,如今C#已经成为微软应用商店和开发成员非常欢迎的开发语言。
5.PHP
PHP是一种通用开源脚本语言,特别适合于Web开发,可嵌入到HTML中,它最初是用来设计动态网页产生的。语法吸收了C语言、Java和Perl的特点,入门门槛较低,易于学习,使用广泛。
针对苹果系统的Objective-C.
6.Python
Python是应用于设计各种各样的应用程序的动态语言, 往往比Tcl,Perl,Ruby,Scheme和Java更容易编写。Python语法简洁而清晰,具有丰富和强大的类库。它常被昵称为胶水语言,它能够很轻松的把用其他语言制作的各种模块(尤其是C/C++)轻松地联结在一起。
7.Ruby
Ruby是一种动态的,侧重于简单个高效的开源语言,他是一个优雅的语法,能够很自然的阅读和编写,适合于快速开发,一般开发效率是JAVA的5倍。
8.Objective-C
对于钟情于Apple设备的网友来说,Objective-C的流行就得益于苹果的成功,其是增加了Smalltalk风格的消息在C编程语言中的反射,面向对象的语言。主要使用于苹果系统和GNUstep这两个使用OpenStep的标准的系统。随着苹果平台的巨大人气,如今Objective-C语言被人们逐渐知道。
Web应用领域的HTML5.
9.HTML5
HTML5是用于构建因特网的核心技术的标准语言,用于Web呈现内容,它是HTML标准的第五次修订,如今,HTML5继续在移动开发领域发挥着重要的作用,为互联网的发展提供了多样化的发展道路,37%的开发者依赖HTML5开发移动网站和Web应用程序 。
10.CSS
CSS是一种用来表现HTML)或XML等文件样式的计算机语言。最常用于Web样式和HTML和Xhtml接口,该语言可以应用与任何类型的XML文档, CSS的设计主要是为了使文档内容从文档表示的分离,包括元素,如布局,颜色和字体。

1.2

(1)通信工程专业最常用的支持二次开发的软件是什么?它的开发接口支持什么编程语言:CAD,C++/Java

1.3

(1)图灵测试是:

图灵测试(The Turing test)由艾伦·麦席森·图灵发明,指测试者与被测试者(一个人和一台机器)隔开的情况下,通过一些装置(如键盘)向被测试者随意提问。
进行多次测试后,如果有超过30%的测试者不能确定出被测试者是人还是机器,那么这台机器就通过了测试,并被认为具有人类智能。图灵测试一词来源于计算机科学和密码学的先驱阿兰·麦席森·图灵写于1950年的一篇论文《计算机器与智能》,其中30%是图灵对2000年时的机器思考能力的一个预测,目前我们已远远落后于这个预测。

1.4

(1)—·程序和软件的不同:、软件,是相对于硬件而言的。
硬件:是指看得见,摸得着,具有形状、硬度等物理特性的器械,如:电脑的处理器、主板、硬盘、电源、机箱等。
软件:是一系列按照特定顺序组织的计算机数据和指令的集合。软件的特点是:
1、无形的,没有物理形态,只能通过运行状况来了解功能、特性、和质量
2、软件渗透了大量的脑力劳动,人的逻辑思维、智能活动和技术水平是软件产品的关键。
3、软件不会像硬件一样老化磨损,但存在缺陷维护和技术更新。
4、软件的开发和运行必须依赖于特定的计算机系统环境,对于硬件有依赖性,为了减少依赖,开发中提出了软件的可移植性。
5、软件具有可复用性,软件开发出来很容易被复制,从而形成多个副本。
二、应用程序是相对于系统程序的
程序属于软件部分,应用程序是相对于系统程序的。
1、系统程序,一般是指操作系统,如Windows XP、Windows7、Windows8、Windows10。
2、应用程序,是指依赖于操作系统而工作的、具有特定功能的程序,如用于文档处理的Microsoft Office、用于聊天的QQ、用于下载文件的迅雷、用于图像处理的Adobe Photoshop 、用于播放媒体的暴风影音、用于播放音乐的千千静听等等。

1.5

(1)人与计算机之间的交流语言是什么?如何实现更有效的人机交流:人与计算机之间交流语言是指人对计算机进行的操作,比如敲击键盘 点击鼠标等等.。

计算机的发展历史就是一段不断克服人机交互难题的过程。当来自不同语言背景的两个人进行对话的时候,只有在其中一方懂得对方的语言的情况下,双方才能实现真正的交流。

在计算机发展历史的开端,人类只能使用机器的语言。早期的程序员会通过二进制向机器传达信息。后来,我们不断建立出更好的交互方式,以单词形式表达指令的语言取代了二进制机器码;命令行界面又被图形界面和抽象的文件系统取代;而随后的指令输入方式变成了鼠标和滑动手势。

如今,自然语言处理(NLP)技术的成熟意味着我们可以跟自己的手机、汽车和玩具进行“对话”。在这些技术的帮助之下,我们现在可以使用数字助理和字符界面来帮助自己完成事务。

当然,这些系统的设计需要克服一些难题。这里我们要引入一种叫做“认知工效学”(cognitive ergonomics)的设计哲学,正如人体工学键盘会按照用户的手部结构改变自身的形状,系统的设计也应该迎合用户在完成工作时的自然习惯。这样一来,用户就不需要在人机交互的时候“迁就”计算机。

当以自然语言的形式进行人机交互的时候,人们会倾向于认为交互的另一方也同样是人类。然而,如果想从“交互式应答”转换到“对话”,我们要做的不仅仅是摆脱现有的思维。

设计用于与人类自然沟通的系统是非常困难的,因为人与人之间的对话不会遵守“规则”。例如,任何使用文本方式交流的人都会发展出一些特殊的用语,比如对自然语言的单词拼写和语法规则进行有意的变更,这种现象就引出了一些全新的语言学研究领域。

然而,这种现象在人类交流当中其实是很常见的。为了提升输入的效率,莫尔斯密码电报员也发明了一种简写方式。时至今日,我们仍然能在业余无线电操作员之间的交流看到这种做法,比如:

NC1M DE AA1JD    GA DR OM UR RST 5NN HR   QTH TIMBUKTU   OP IS MATT  HW?   NC1M DE AA1JD KN

翻译:由 AA1JD 发至 NC1M(To NC1M from AA1JD):下午好,亲爱的朋友。(Good afternoon dear old man)你的信号非常清晰可辨,音色良好(Yoursignal is very readable and very strong, with very good tone)我的位置是廷巴克图。(I’m located in Timbuktu)操作员的名字是马特。(Theoperator’s name is Matt)你能收得到吗?(How do you copy?)由 AA1JD 发至 NC1M,正在等待回应。(ToNC1M from AA1JD, listening for response from a specific station)

有多项研究结果表明,15%出现在短信和 Twitter 文本中的单词都是字典上查不到的,这对于希望通过文本与用户交流的自动化 NLP 工具来说是一个不可忽视的问题。

此外,除了经常会出现的无意输入错误以外,这些特殊拼写形式很多时候都是有意为之的。文本输入者可能会出于简洁、风格或强调的目的,通过首字母缩写、单词简写或单词延长等方式改变单词的标准拼写方式。有一项研究发现,母语为英语的年轻人发出的每条短信平均含有 5.5 个简化的拼写。

怎样才能让计算机理解这些东西?其中一个办法是各种单词简写添加到计算机的词典里。然而,尽管现在已经有许多常用俚语和缩写的资源,但是这些记录仍然无法囊括所有即兴产生的单词变体。这意味着我们需要增强现有的俚语词典,使用可靠的方式将未识别文本转换为标准拼写。

大多数的文本标准化方法都是先生成一些可能的重新拼写候选词,然后根据可能性的高低来排列它们的优先级。在输入纠错的时候,重新拼写的候选词是根据手指或记忆经常会出错的地方生成的。

幸好我们也可以对有意的变形拼写进行同样的处理。现在有部分研究已经证明,如果你可以系统地描述人们在文本对话中更改单词的一般方式,你就能有效地生成和排列重新拼写的可能性。如果你在语句的其他部分应用一些自然语言理解(NLU)的相关知识,比如语义学和句法学,候选词排列的准确率将会更高。

我们在处理自然对话时要面对的另外一个挑战是,对话的进行通常都不是完全线性的,这点我们可以从本文的题图看出。当用户被问到一个问题时,他们很自然地会提出一个自己的问题作为回应(“我的余额是什么意思”)。

自然对话通常都会出现短暂的离题,这时系统必须认识到用户言语中的“对话行为”其实不是答案,而是对相关信息的询问。然后对话的主动权可以回到系统之上,并继续自然地完成对话。除了问题直接提到的内容以外,用户也可能会提供更多的信息(“从储蓄账户转到支票”),或者给出模糊的回应(“我的余额是什么意思?”哪个账户的余额?这样的话,以上两条信息都是不相关的,如果不想在阐明意图之上花费更多的对话来回,这两条信息都是可以提供的)。

因此,对话系统在单词拼写以外的方面也需要灵活应对。它们还要避免将交互过程局限为一问一答的交流。如果上述问题能够得到解决的话,高效而自然的人机交互时代

1.6

(1)程序开发的基本步骤是:

首先明确要解决的问题;
其次分析问题并选择想要利用的算法,或者自己想一个的算法;
画流程图,明确解决问题过程中的逻辑关系和时序关系;
然后才是上机编写代码;
之后是debug调试,基本就可以执行了。

具体就上机编写代码来讲,首先需要打开C++的开发环境,然后新建一个工程;
然后新建一个文件(如果是VC6.0就可以继续写了,如果是VS20**的话就需要在文件菜单中选择将文件移入工程);
在文件中写入代码,然后就可以编译运行了。

具体代码的格式来讲,首先应该引用头文件#include<"头文件名(不带.h)">,然后在所有头文件引入之后加一行using namespace std;后面可以写函数了。

1.7

(1)程序在计算机内部是如何运行的:

1.信息在计算机的中表示

当我们输入以下程序,编译运行,计算机从屏幕输出hello, world。整个过程计算机都怎么运作的呢?

#include <stdio.h>

int main()

{

printf("hello, world\n");

}

我们知道,信息在计算机中都是用01表示的。计算机通过这些位信息以及上下文来解读这些0/1。也即:计算机中的信息=+上下文。

我们输入的hello程序就是由01组成的序列,将这些位8位组织成一个字节,每个字节用来表示一个文本字符。ASCII码给出了一种字符与数字的一一对应关系。

hello, world程序以字节方式存放于文件中,如下图所示。其每个字符对应一个数字,具体可参考ASCII码表。

1 Hello world程序的ASCII码表示

2.将程序翻译成机器可读的格式

因为我们输入的hello, world程序是人可读的,机器并不能直接识别它们。我们需要把这些文字翻译成机器可执行的二进制文件。这一部分的工作是由编译系统完成的。编译系统由预处理器、编译器、汇编器、连接器四部分组成。以hello, world程序为例,各部分共同完成将源文件编译成二进制可执行文件。各个部分完成的具体工作如下:

l 预处理器:根据以#开头的命令,修改源程序。如根据#include <stdio.h>行,预处理器读取系统头文件stdio.h中的内容,代替此行内容。源程序经过预处理后,得到另一个c程序,此程序通常以.i为后缀保存。

l 编译器:将预处理后的.i文件转换成汇编程序。编译器将不同的高级语言(c语言,C++语言)转换成严格一致的汇编语言格式进行输出。汇编语言以标准的文本格式确切的描述每机器语言指令。编译器得到的文件通常以.s为后缀保存。

l 汇编器:将汇编语言(.s文件)翻译成机器语言指令,并将这些指令打包成一种可定位目标程序格式。汇编后得到的文件即为二进制文件,通常以.o为后缀。

l 链接器:hello, world程序中调用过printf函数,它是一个c标准库里的函数。Printf函数存放在一个名为printf.o的单独预编译的文件中。而这个文件必须以适当的方式并入到我们的程序中,这个工作由链接器完成。将外部的.o文件并入后,得到一个完整的hello, world可执行文件。可执行文件加载到存储器后,由系统复制执行。

编译系统

linux系统上,输入编译命令行:

Viidiot>gcc hello.c -o hello

将执行上图所示的四个步骤,得到可执行二进制文件hello

3.处理器读取并解释存储在存储器中的指令

Shell:命令行解释器,为用户提供了一只与系统打交道的方式。它等待用户的输入,当用户输入一行命令后,shell先判断它是不是一个shell内置命令,如果不是,shell会假定用户输入为一个可执行文件的名字,从而去加载并执行该文件。因此,当我们通过编译系统将源文件编译成可执行二进制文件后,在shell中输入我们得到的可执行二进制文件名,shell将其从磁盘中加载到存储器(注:我们的可执行文件是存放在磁盘上的),并通过处理器进行解释执行,得到最终的结果,输出到终端(显示器)上进行显示。自此,我们的hello, world程序完成了其生命周期。

4.计算机系统硬件结构

为了弄清楚hello, world运行时,系统究竟发生了什么,我们先来了解下一个典型的计算机硬件结构。

图3 典型的计算机硬件构成

CPU:中央处理器   ALU:算术/逻辑运算单元  PC:程序计数器  USB:统一串行接口】