理解计算机系统

前言

        有一本著名的黑皮书<深入理解计算机系统>(以下称"本书"),笔者目前正在翻阅.计算机系统可以说是博大精深,内容繁多,而且还在不断推出新理论和技术.现实中软硬兼修的大师凤毛麟角,毕竟现在的计算机领域分工比以前更细,要求的是专精.所以"深入"理解是比较难的,但可以简要理解,对各层面有个大致的认识,然后在其中某个区域内做到专业级别.

引入

        认识计算机如何工作,编写软件方面的看法. 

计算机体系

        本书分了三大部分:程序的结构和执行,在系统上运行程序,程序间的交互和通信

        第一部分,从硬件角度去看程序的结构和执行,数据的表示,CPU结构,存储器的层次结构.以及优化程序性能的方法.

        第二部分,讲了链接,异常控制,虚拟内存,和操作系统有关

        第三部分,系统级I/O,网络编程和并发编程三部分

        从写代码的角度来看,底层的实际价值表现在编译器的版本更新,编程语言的更新中,而程序员只要调用相关接口即可,所以不用懂那么多也无所谓.但是对底层理解对编码会有所帮助.

软件

       一概述

        我想有不少人学编程是从一门编程语言开始的,由于每个人学习资质不同,效果不同.当对语言有所掌握以后,再到网上去问:学了XXX语言能干什么?有很多人说,学了语言没啥用,你要到具体生产环境中才能体现.感觉是被泼了冷水而生出退意.其实别人也没说错,学了要用到才算有价值,学习的过程本身是个储备.但也不要因此妄自菲薄(有些人就是故意的,不想你进来玩耍//斜眼笑).学习贵在坚持,前面那些令人烦躁和枯燥的语法都学得下去,后面有什么好怕的呢.

        要写出用于实际的代码,还需要把代码和实际情况结合起来.有人给你说(或者你对自己说),有个需求你来写一下.每一个程序有若干个需求,或者说若干个场景去完成.在语言学习的过程中,虽然不会主动去想,但多多少少也会涉及到场景.在实际应用中,自己写出好代码的时候,或者别人有写得好的代码,不要去背代码(除非很经典的),去把场景背下来.以后再遇到同样的情况,信手拈来就用了.一定程度上来说,熟练程度和代码量是相关的,写得多了,一方面自己信心有提升,另一方面经验有积累.当然基本功还是要扎实的,需要对代码有一定的语感.

        二.函数

        那个经典公式:程序=数据结构+算法.很好的解释了编程是在干什么.对此笔者觉得可以细分,程序在不停传入数据,调用函数.每个函数代表一个被满足的需求,函数包括数据和逻辑两部分.

        数据需要考虑的内容:

                数据从哪里来,往哪里去?这部分和文件的读写有关,以及数据库和硬件的映射

                数据的类型是什么?通常在语言中用内置数据类型和类来表示,表示对数据的一种约束

                同类型数据的组织形式---即数据结构和算法是什么?

        表达逻辑要考虑的内容:

                 用函数,类,还是接口来表达逻辑?做一个选择,当然不一定是一来就确定的,可以后面修改

                怎样用数据变化正确表达逻辑?

        三.设计模式和模块化编程

                 写代码的目的一是为了解决问题,二是为了复用代码.代码放到一起做成文件,再把文件做成框架,留出接口,以备使用.软件开发是经过不断迭代而成熟的.有句话说的是不要重复造轮子,使用别人的框架大大简化编程.写代码的目的也可以理解为做框架,没有可用的就自己做.框架这件事也是有利有弊,针对某个领域的开发,到一定程度下会饱和,简单的用手机应用开发来说,前面的人进来把功能开发得差不多了,后面进来的人就没啥可做的了,就算有能力也未必能体现.现在又不断听人在说:已经过剩了,软件开发难找工作难有发展了.想想未来是万物互联,人工智能的时代,目前还远远达不到理想的状况,所以笔者认为软件开发应该还是能占一席之地,因此也不用太过担心,只要是人才总有用武之地.

                设计模式是一些典型应用场景的经验总结.面对某种场景,代码思路已明确(具体代码不一定完全一致),比如单例模式代码基本上是没变化的.学习设计模式,是学习他的思路,有一种UML建模语言,用来描述设计模式.遵循设计模式的好处,一是建立一种共同性,程序员之间方便沟通.比如大家都学过勾股定理.一个人一说3个数字之间满足勾股定理,另一个人马上就懂是什么意思.二是设计模式是经过检验的,对程序结构有益.比如法拉利是车,老爷车也是车,都能开着到达目的地.老爷车缝缝补补也能用,但法拉利的控制和行驶,和老爷车恐怕有天壤之别.代码都能写,写不写得好是另外一回事.

后记

        在编程语言有了一定认识后,考虑一下代码方向.

       

        

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

jllws1

你的鼓励是我创作的动力,谢谢

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值