《世界是数字的》读后感(2)

第四章  算法

算法,就是保证特定计算过程正确执行的一系列步骤。算法的每一步都表达为一种基本操作,其含义是完全确定的。任何算法必须终止。

4.1 线性算法

如果计算时间与数据量成正比或线性比例,那该算法就叫做线性时间算法或线性算法。

4.2 二分搜索(熟悉2的幂函数)

4.2.1 二分搜索具有快速的优点:每次检查或比较都会把数据一分为二,而其中一半就不再理会了。

4.2.2 二分搜索的关键是数据量的增长只会带来工作量的微小增长。

4.3 排序

4.3.1选择排序:这个算法是不断从未经排序的名字中选择下一个名字。但是它的工作量与N^2+N成正比,随着N的不断增大,N相当于与N^2成正比。可以看出,随着工作量的的增大,耗时量剧增。

4.3.2快速排序(托尼 霍尔发明):分组排序。

4.4 难题与复杂性

4.4.1 “P”问题:当解决某些问题的时间可以用N^2这样的多项式来表示时,这些问题被计算机科学家称为“P”。

4.4.2 “NP”问题:当现实中大量的问题或者说很多实际的问题似乎都需要指数计算发来解决,也就是说我们还不知道对这类问题有没有多项式算法,这类问题被称为“NP”问题。它的特点是可以快速的验证某个解决方案是否正确,但要想迅速找到一个解决方案很难。

第五章  编程与编程语言

5.1 汇编语言

5.1.1 几种定义:能代替人执行具体操作的程序被称为汇编器,相应的语言叫做汇编语言(使用有意义的单词来表示指令,使用名字来指代特定的内存位置)。这个层次上的编程叫做汇编语言编程

5.1.2 唯一性:不同处理器的汇编语言只能用于为该处理器编写程序。汇编语言通常都与CPU的指令一一对应,能够以特定方式将指令编码为二进制格式,也知道信息在存储器中如何存放。

5.2 高级语言

5.2.1 FORTRAN:是第一批高级语言中最早的一门语言。由约翰 巴库斯在IBM领导的一个小组开发,在表达科学和工程计算方面非常成功。

5.2.2 COBOL:专门针对商业数据处理的语言,其功能非常适合表达库存管理、开发票、做工资等方面的计算。

5.2.3 BASIC:是学习编程的入门语言。

5.2.4 C和C++:专门为“系统编程”开发的语言。

5.2.5 Java和JavaScript:更加简便。

5.3 软件开发

5.3.1 库、接口和开发工具包

5.3.2 bug

程序所包含的错误或缺陷称为bug

5.4 软件资产

5.4.1 知识产权

知识产权指的是有个人经过法发明或创造等创造性劳动得到的各种无形资产。有一些保护知识产权的法律适用于软件,但适用程度和范围各不相同。这些法律涉及商业秘密、版权、专利和许可。

5.4.2 标准

标准是对某些产品如何制造或者应该有什么用途的准确、详细的说明。软件标准的例子涉及编程语言(即语法和语义的定义)、数据格式(如何表示信息)、算法处理(完成某个计算的特定步骤),等等。

 

总结:学习了这两章内容之后,我对编程和算法都有了初步了解。看到书中所讲的编程写出的代码,我想到了高中数学学习的逻辑,每一个步骤都要严密都要有意义;每一个结果也都要有定义。虽然只是短短的两章内容,我却看了很长时间才能够理解。而却第一次尝试用这样的方法来写读后感,感觉需要很大的精力和耐心以及很强的总结能力,希望自己在日后能多加学习,更加进步。

你可能感兴趣的:(《世界是数字的》读后感(2))