考研过程中的一些思想shock

1、无穷级数:
无穷项相加居然为有限的和,可以思考下芝诺悖论。
更多例子:
无限循环小数,比如3.3333... = 31.111... = 3(1+0.1+0.01+0.001....) = 1/3

2、递归、分治等思想:
在时间足够多的前提下,要解决一件事情,只要能把事情的规模逐步的降下来,那么最终问题肯定可以得到解决。

3、以前做数学题目时候,碰到多次一边抽水,一边放水的题,感觉出题的真傻逼,世界上怎么会有这么sb的水库管理员。能不能现实点啊?太不懂得节约环保了……直到现在边充电边玩手机,我才明白,当时还太年轻。

4、突然想,如果有一天我们可以用这样子的高级语言进行编程那就好了。

考研过程中的一些思想shock_第1张图片
Paste_Image.png

5、设计哲学——RISC与CISC:
计算机开始计算的时候总是想让一条指令做很多事情,出来了很多复杂的指令,这就是CISC,但是后面越来越复杂导致整体CPU设计复杂并且效率反而下降了,因为为了照顾更多复杂的指令,CPU设计整体速度就被拖慢了,比如流水线就不能很好地利用。这时谁又会想到用部分常用的简单指令(20%的指令在80%的时间用到)加上编译器优化,简单的指令CPU设计的时候优化起来也快。这是否可以给我们做事情的时候一个启发呢?抓住主要精力先攻克简单的80%,最后有精力再去做好20%。

6、信息往往是优化效率的一个很有用的东西:
比如缓存,虚拟存储,其利用的原理基本上都是程序的局部性原理,利用这么简答的一个原理,却给我们带来了不可思议的效果,内存读取速度接近缓存,价格接近内存,容量接近辅存,啧啧啧!!!

7、分层(隔离)在编程中的优缺点:
分层在程序设计中的例子:

  • cache缓存由硬件来实现
  • 虚拟内存等资源管理由操作系统来实现
  • 网络协议的设计
  • 进程,进程使程序员感觉到好像每次写一个程序都分配了一个CPU一样,设想下,如果还是前后台的程序设计,那么程序员每次写程序都需要注意下可能其他程序的运行情况....

优点:使问题简单化,在设计好程序的整体框架后,如果分层分得好,那么作为程序员在不同阶段实现不同的程序会减少程序员的负担。比如我觉得Cache缓存这件事情由硬件来做是相当正确的,如果由程序员来做,那么程序员的效率可能会大大折扣。

缺点:问题分层次进行解决了,但是各个层次之间可能出现重复解决问题(递归实现斐波那契数列就是这个例子)、层次之间交换信息效率低下(网络协议一层层的实现使得最后发出去的内容有时远多于实际要发送的信息)的缺点。

取舍:我是比较倾向于实现程序分层的,可以大大节省程序员的时间,有必要的时候再进行局部的一些优化即可。

你可能感兴趣的:(考研过程中的一些思想shock)