数据与计算如同双螺旋线结构中的两条主链,围绕人类文明进程与经济社会发展这一轴心盘旋,并以时间为序不断向前发展,两者相互依存、相互影响。随着数据与计算技术的飞速发展,它们不仅仅在科学研究与实际应用中起到辅助与支撑的作用,而且可以依靠其自身的逻辑方法,驱动甚至引领科学研究和实际应用的发展。
早期,人们利用自然规律进行计时(计算),如通过圭、日晷、铜壶等计时器测得时刻;随后,人类用算盘、算筹等工具进行计算;后来,出现了利用机械装置帮助计算的计算工具。二进制(1679年)、布尔代数(1847年)和开关电路理论(1938年)的发明,为电子计算奠定了基础;1936年,图灵机的概念为电子计算提供了理论支撑;1942年,阿塔纳索夫—贝瑞计算机的发明开启了电子计算时代的探索;随后在1946年,电子数字积分计算机的发明则标志着全电子计算机时代的到来……
计算的发展历史就是一个不断演进的过程,而当代的量子计算、生物计算等新兴计算方式,也都表明人类在不断探索新的计算方式,并因此推动着科技的进步。
在这个过程中,电子计算机的发明让计算(机)本身成为研究对象,而从这时起,计算机科学就作为一个独立的科学体系得到人们的关注。所谓计算机科学,就是对计算机及其相关现象的研究。前者研究计算本身,包括计算的理论基础、方法和技术;后者关注计算在各领域中的应用,并通过多学科的交叉融合推动计算机技术的不断创新。如今,计算机科学正在成为一门前沿和引领性的学科,它不仅代表着人类智慧的结晶,也引领着社会的进步和发展,因此备受社会各界的关注和重视。
一般而言,可以从以下几个角度来理解计算机科学。
1. 计算与计算机
计算的本质在于符号处理,即以符号结构(信息、数据、知识等)作为输入,并产生符号结构作为输出。计算不仅存在于计算机系统中,也可以发生在人脑、生物系统等其他环境中。电子计算机是实现计算的工具和平台,是人工制造的产物。因此,计算机科学就是研究这种人工制品的科学。关于计算与计算机的内容详见本书的第一章和第二章。
2. 算法与编程
算法思维是解决问题的基本思维方式,启发式计算则是在算法思维基础上发展的一种特殊求解方法,用于处理复杂问题。算法描述了如何有效地完成某项任务或解决某个问题,构成了一种程序性但客观的知识。编程既是一项工程活动,也是一门数学科学,旨在将算法思维转化为可执行的代码,是算法实现的具体手段。关于算法和编程的内容,详见本书的第三章、第四章和第六章。
3. 计算机体系结构
计算机体系结构涵盖了计算机硬件和软件组织的基本结构和设计原则,描述了计算机系统的基本组成部分以及它们之间的交互方式,包括物理计算机和系统程序员之间的接口,如指令集体系结构;也包括物理(硬件)组件的实现,如处理器结构、存储系统结构、总线结构、输入/输出系统结构等。关于计算机体系结构的内容,详见本书的第五章。
4. 计算思维
问题建模与求解是计算机科学的核心问题之一,关注如何将具体问题形式化,并找到高效的解决方案。计算思维是一种通用的问题分析和解决能力:一方面,问题建模为计算思维提供具体的场景;另一方面,计算思维则指导问题建模和求解过程,两者相互依赖和互为补充。关于计算思维的内容,详见本书的第七章。
总体而言,也正如本书所述,计算机科学有一种特殊性,它吸引了人们的注意力,并将其与所有其他科学区分开来。我由衷地希望,也相信,通过阅读这本书,读者能够进一步认识和理解这个学科的魅力所在,感受到它给人类社会带来的巨大影响力。
序言作者:王崇骏(南京大学计算机科学与技术系教授、博导,南京大学计算机应用研究所副所长、南京大学中德HPI研究院副院长,主要研究领域为自主智能与群体智能、复杂网络分析、大数据分析及嵌入式智能系统等。)
编辑/韩世容