依托于我现在浅显的认知,我觉得计算机其实就是在处理两大问题:输入输出(IO)和计算。
输入输出(IO)包括硬件的IO以及网络IO。
计算包括各种算法甚至是现在大火的人工智能。
操作系统是一个超大的基础软件,这个软件的作用就是统筹输入输出(IO)和计算。
我们以web应用举例,其实web应用主要就是解决两个问题:接收用户的请求,提供相应的响应。
为了解决上述的两个问题,我们还是可以将问题分解为输入输出(IO)和计算。
其中IO包括和用户的IO以及和数据库系统的IO。
以javaweb为例,javaweb为和用户的IO提供了一个标准,那就是servlet,其实servlet就是一个接口,当使用java编写web程序的时候就是处理requestservlet和responseservlet。
相对应的,javaweb也为和数据库系统的IO提供了一个标准,那就是JDBC,大多数数据库都是编写各自的JDBC实现和java应用程序的交互。
接着再来谈谈计算,计算的范畴就非常广了,可以是简单的数值计算,也可以复杂一点的推荐系统,也可以是超大规模的神经网络(AI),只要是进行数值计算都可以归到这个范畴中来。
计算机考研的四门专业课《数据结构》,《操作系统》,《计算机组成原理》和《计算机网络》对于计算机的学习是非常重要的。
《数据结构》描述的就是计算的问题,不管是简单的数据处理,还是复杂的算法设计,都离不开《数据结构》中的基础知识。
《计算机组成原理》和《计算机网络》描述的就是IO的问题。其中《计算机组成原理》描述的是硬件系统之间的IO,《计算机网络》描述的是网络之间的IO。
《操作系统》描述的是如何整合 输入输出(IO)系统和计算系统。
最后再说说现在很流行的分布式和微服务。
我觉得分布式实际上就是使用网络IO来统筹各个单机系统的硬件IO,解决的问题就是不断增长的大数据处理需求和发展相对较慢的单机系统性能的矛盾。
当单机系统性能不足的时候,就使用网路IO和一定的算法来统筹各个计算机进行协同工作。
最后的最后再谈谈对于云计算的粗浅理解,云计算实际上就是统筹分布式系统中的计算资源,云计算的一个很重要的基础软件就是云计算操作系统,这个操作系统应该是构建于传统操作系统之上的一层软件,作用就是统筹分配分布式系统中的计算资源。当我们使用云计算的时候,计算资源就好像水龙头里的水一样,想要更多资源就把水龙头开大一点,想要减少资源就把水龙头开小一点。
做一个总结,计算机的发展就是对于输入输出(IO)和计算这两大核心问题不断提出解决方案的过程,解决方案没有绝对的好坏,只有相对的是否符合需求。