对计算机专业的认识(对计算机专业的认识和理解)




对计算机专业的认识,对计算机专业的认识和理解

时光不居,几年前就开始梳理计算机科学这门学科,一晃至今我感悟颇多。从最初研究基础理论,到后来项目实践,再到现在重视前沿技术的探索,总感觉学的越多知识却越匮乏。但有一点欣慰的是,刚开始喜欢看各个分支的书籍,现在主打视频学习,手痒了写个demo巩固知识,数学也会涉猎。言归正传,今天我想说说对计算机这门学科的理解。其实非常的浅显,算是科普软文吧。大家轻松点看,何不乐乎?

01

先抛出一个有意思的话题,计算技术哪家强?这个题目肯定是见仁见智。美国作为计算机科学只手遮天的存在,四大名校(MIT、Stanford、CMU、UCBerkeley)自不必说,其实还有其他很多学校也是逆天级的存在,这里不一一详述。国内的话,清华、北大、浙大、上海交通大学的计算机学科实力强劲,发展速度有目共睹。计算机的发展,除了大学的推动,产业界可能发挥着更大的作用。比如早期的IBM、微软、苹果,后来者谷歌、Amazon、facebook等。国内的公司则相形见绌,早期的金山、搜狐、新浪、网易,到BAT,再到新秀字节跳动、美团、京东等,虽然在国际上的影响力有限,但对于中国信息产业和社会事业的进步起到了不可替代的作用。

从一项软件技术的产生,到业界的竞争,再到被采用为标准,是一场没有硝烟的长跑。比如上世纪90年代微软和网景公司竞争浏览器市场份额,再早一些TCP/IP和ATM(异步传输模式)竞争互联网协议标准,几年前facebook、商汤科技、IBM竞争人脸识别专利,都佐证了计算机科学领域技术竞赛之激烈。信息基础设施,像操作系统、编译器、设备驱动、网络协议、路由器、数据库管理系统、浏览器内核等,中国参与制定了并成为事实上的标准不多见。国家在进行顶层设计时,也意识到了这种“卡脖子”的问题,很多诺奖得主、美国科学院院士、计算机行业国际上的名人也提出了基础科学的重要性。国家也有意对科研院所、产业界的基础科技进行大量投入,甚至从小学就培养学生的科学兴趣和创新能力。追本溯源,最终产品的“曲高和寡”在于最初着力于发展科学与技术。

02

计算机笼统地分为硬件和软件,两者就好比人的肉体和思想。一般地,电子工程、自动化偏重于硬件,而计算机科学与技术、软件工程、信息安全等偏重于软件。一台计算机包括CPU、GPU、Cache、内存、固态硬盘(或磁盘)、鼠标、键盘、显示器、网卡、声卡,也可连扫描仪、打印机等。不论是笔记本电脑、平板电脑、智能手机、智能手表、VR设备等,还是工作站、服务器、数据中心、超级计算机等,都属于冯诺依曼计算机体系结构。也就是概括的说,包括处理器、存储器、输入设备和输出设备。说了这么多计算机导论性质的话题,接下来,我想专业一点地谈谈操作系统、编译器、数据库系统、网络协议,权且抛砖引玉。因为自己平时喜欢研究软件,所以硬件知之甚少,就不班门弄斧了。

03

操作系统作为用户和计算机硬件之间地接口,起到了核心作用。应用程序在操作系统之上运行,通过系统调用来管理硬件资源。硬件资源的管理则通过操作系统的调度程序来实现,操作系统把静态的程序映射为动态的进程(或者是线程),调度程序只需要将系统中诸多的进程确立为运行、就绪、阻塞、挂起或结束的状态。对于单核计算机而言,只有1个进程处于运行态,多核计算机则同时每核1个进程处于运行态。系统分为内核态和用户态,一般而言,用户态的进程都会调用内核态的进程。如果程序有异常,或者有中断到来,系统会暂停正在运行的进程,转而去为异常或者中断服务。CPU每个时钟周期都会去检查异常或中断信号,以便及时处理异常和中断。

编译器即将人类友好的程序语言翻译为机器二进制代码,它将整个过程分为多个阶段,如词法分析、语法分析、语义分析、中间代码生成、优化、目标代码生成。编译器将应用程序一次性翻译为目标代码,所以变量和函数内存地址的分配是静态的。还有一种翻译器是解释器,解释器是将程序每一行翻译并运行。编译器需要知道程序是否有语法错误,如有语法错误则不能进行下去,也会检查语义,但有些语义只能在运行时才知道。编译器还有一个很重要的工作,即为中间代码选择指令,可能一段代码可以很多种指令序列,但是哪种序列是高效的?如何对中间代码进一步优化,使寄存器的调度最节约时间?诸多问题,编译器都起到作用。

数据库系统,从最早的树状、网状到关系型,再到面向对象、分布式、数据仓库,到现在的键值对缓存数据库,发展迅速。数据库是存储数据的,一个设计良好的数据库既是高效的,又要有一定的冗余,既是完整的,又要考虑性能。一次事务要么全部执行,要么全部不执行,后一种情况通常是因为遇到异常或错误。如何保证读取到的数据是正确的,而不是脏数据?如何保证大量并发访问时,数据库不至于崩溃?如何加锁、锁的粒度如何确定?在分布式数据库中,如何同步子数据库?负载均衡策略如何设计?结点失效时如何保证可用性?

04

ISO网络有七层协议,分别是物理层、数据链路层、网络层、传输层、会话层、表示层、应用层,而TCP/IP将后三层统一为应用层。TCP/IP协议是事实上的网络协议标准,因为其简单、实用,而ATM则过于复杂,所以ATM被逐渐弃用。IBM推出的令牌环网络主要用于工业控制领域。普通的计算机都有这七层,而路由器只有物理层、数据链路层和网络层。物理层主要负责电信号在光纤、同轴电缆或者双绞线等电路上的传输,数据链路层上的信号是成帧传输的,网络层主要负责分组的选路、存储和转发,传输层有两个协议很有名,一个为TCP,一个为UDP。TCP是可靠传输协议,表示数据报必须完整正确有序的到达目的地。UDP则不保证这些,只是尽力将数据包传输。应用层编码、解析传输的数据。数据从上至下和从下至上,每经过一层,分别添加一个头部和解除一个头部。网络协议还必须做好拥塞控制和流量控制。

各位朋友,就写这么多了,来日方长,后续会不断推出一些想法与大家分享。计算机科学学习是一个漫长的过程,特别是以全栈开发为目标的小伙伴们,有点熬人。希望看到这里的朋友,关注我的这个公众号,如果你对计算机感兴趣,或者你的孩子们想从事计算机行业,或者你是这个道上的,都可以关注。有了一点知识,我一定及时分享出来!拜拜~ヾ(•ω•`)o

对计算机专业的认识(对计算机专业的认识和理解)

赞 (0)