我读《计算机科学概论》第12版 J.Gleen.Brookshear Dennis Brylow

用了很长时间,通读了一遍《计算机科学概论》第12版,首先说一下整体印象,在计算机科学层面,老外的书比国内的某些“大教授”编写的教科书明显不是一个档次,老外用通俗易懂的语言教人理解计算机科学,“大教授”用晦涩难懂的语言让人远离计算机科学。

这本书一共分为13章,包含绪论,数据存储,数据操控,操作系统,组网及因特网,算法,程序设计语言,软件工程,数据结构,数据库系统,计算机图形学,人工智能,计算方法。鉴于时间原因及从核心出发的思想,我学习了前十章节,后三章留待日后学习或者从其他专门书籍中学习。

从绪论章节开始,讲述了计算机科学的历史来源,涉及的主题及基本方法论,学习完绪论章节,能对计算机科学有一个大概认识,并对算法,抽象,创新,数据,程序设计,因特网及社会影响几大核心主题有一个结构化的理解。

第一章是关于数据存储的,其核心主题是:计算机世界里,信息是通过0和1这两个符号表示和传递的,通过使用0和1,计算机可以表示文本(ASCII及UNICODE编码),数字(整数用二进制补码表示,实数用二进制浮点表示法表示),图像(通过位图,矢量图的形式表示),声音(通过采集方式或者乐谱形式表示),视频(图像集合+声音数据);并通过简单的门电路及触发器原理讲述了存储二进制位的实际电路构成,并以此介绍了计算机的主存储器(内存),海量存储器(外存,包括磁盘存储器,光盘存储器,闪存存储器)的基本构成特点及性能;最后,介绍了Python语言的数据存储语法及基本的运算符及表达式,数据压缩的通用技术及通信差错的处理方法。

第二章是关于计算机内部数据操作的,其核心是:计算机的核心体系结构包括CPU(运算单元和控制单元),内存,总线;计算机可以通过存储程序概念保存程序及数据到内存单元,并通过机器指令形式操控机器部件及数据;通过总线,计算机(CPU+内存)可以与计算机外部设备(键盘,鼠标,打印机,显示器等)通过控制器进行通信,以存储映射输入输出的两种方式完成通信过程,并通过状态字机制处理通信过程中的不匹配问题;通过对Python中的数据操作方法的简要介绍(包括逻辑运算与移位运算,控制结构语法,输入和输出函数及自定义函数)将本章的主要概念实际演示出来;最后,介绍了计算机的其他体系结构包括流水线结构及多处理器机器的概念。

第三章开始,利用前两章的概念作为抽象工具,介绍了操作系统的历史(批处理系统,实时处理需要导致的分时及多任务处理概念,以及因此出现的多道程序设计方法),软件分类(系统软件+应用软件),操作系统的组成(用户界面+文件管理程序+设备驱动程序+内存管理程序),进程的概念(程序活动的执行),进程管理的方法(调度程序及分派程序),信号量(为临界区代码或设备提供标识符用于多进程互斥访问的方法)与死锁(多进程设计不良造成的进程无法前进状态)的分析表明了操作系统处理多进程并发的方法;最后,用操作系统安全性(问题与解决办法)的相关主题结束了本章节。

第四章主要介绍计算机网络的相关知识,包括:组网方法(总线型网络中的设备及带冲突检测的载波侦听多址访问协议,无线星型网络中的设备及带冲突避免的载波侦听多址访问协议),通过进程通信的方式引入了C/S模型及P2P模型,简要介绍了以网络为工具形成的软件系统形式:分布式网络;接下来,重点描述了因特网(网络的网络)的架构方法,设备,地址形式(IP地址及域名系统),在因特网环境中的网络应用(SMTP协议下的邮件应用,Voip及因特网多媒体流通信);在以上知识的基础上,构建了因特网特殊应用:万维网(WWW),并介绍了万维网中的标记语言-HTML,XML以及万维网客户端和服务器的活动;网络软件的四层架构及相应层级上的网络协议,重点介绍了TCP及UDP协议的区别与相似点;最后,以网络安全性问题及相关解决方案的介绍结束。

第五章介绍了计算机科学的核心主题:算法。包括:算法的本质及概念;算法的表示方法(原语,伪代码,流程图,机器语言,汇编语言与高级语言);算法的发现过程(自顶向下逐步求精及自底向上逐步求解的方法);算法的两种结构(迭代及递归),基本算法(顺序搜索算法,二分搜索算法,插入排序算法,选择排序算法,冒泡排序算法);算法的效率分析(时间复杂性及空间复杂性,本书主要介绍了时间复杂性的计算方法)及软件正确性验证(形式化验证方法)。

第六章涉及程序涉及语言方面的相关主题,通过本章学习,我了解到了:程序设计语言的概念及发展(机器语言->汇编语言->高级语言),程序设计的四大范型(命令型范型,函数式范型,说明性范型及面向对象范型),传统程序设计的概念(变量,常量,字面量,数据类型,数据结构,控制语句,表达式及注释,函数),语言实现的过程(语法分析,词法分析,代码生成),面向对象程序设计的基本概念(类和对象,构造函数,继承,封装,多态性概念),程序设计并发活动(线程的概念及创建线程方法,对数据访问的控制方法由线程控制或者数据自身的监控程序控制)。

第七章描述了现代软件工程方面的主题,包括:软件生命周期(开发阶段,使用阶段,维护阶段),在开发阶段包括需求分析,设计及实现;软件模块化设计方法(命令型程序中的函数模块化,面向对象范型中的对象模块化,模块化的低耦合,高内聚以及信息隐藏的原则),在软件设计过程中使用的UML即统一建模语言(实际使用用例图,类图及序列图来描述软件系统),并通过软件质量保证(测试+形式化方法),软件相关文档(用户文档+系统文档+技术文档),人机界面及软件所有权方面的主题结束了本章节。

接下来到了第八章,本章介绍了数据结构的概念(通过语言设计数据集合,隐藏技术细节,使应用程序开发者使用概念结构操控数据),典型数据结构的概念(列表,链表,栈和队列,树及二叉树)及实现方法(使用指针),通过传统命令型程序中用户定义的数据类型及抽象数据类型的介绍引入了类与对象这种特殊的数据结构,并通过机器语言的指针实现方法引入了立即寻址,直接寻址及间接寻址的概念。

第九章介绍数据库系统,数据库系统包括(应用软件+数据库管理系统+实际数据库),通过SQL语言,可以借助数据库管理系统提供的访问数据库的例程访问实际数据库,可以从概念上访问数据库而不需要考虑存储细节,数据库设计的方法包括传统的关系型数据库及面向对象数据库,面向对象数据库从各种方面优于传统的关系型数据库;简要介绍了数据挖掘及数据仓库的概念以及数据库技术引发的社会问题。

一口气写完这篇,是为了在输入信息及知识的同时产生相关输出,整理自己的所学,从中发现问题,以为下一阶段学习提供参考,不得不说,这样一套学习下来,对计算机科学有了一个全景式的认知,并对计算机科学中的模型有了一个较为系统的认知,对常见的经典问题及解决方案也有了一个基础的理解,这本书先学到这里,接下来需要学习产品相关的理论书籍及实用方法,这本书先入书架,日后还将不断翻看。

                                                                                                                        2017年11月24日

你可能感兴趣的:(我读《计算机科学概论》第12版 J.Gleen.Brookshear Dennis Brylow)