--------------------------第一讲------------------------------
(一)70年代
问题:人们都还在用汇编,程序无法移植,难以维护。
解决方法:出现了C,Fortran之类的语言,让计算机不再有依赖于特定机器硬件的方言(汇编),而是通过编译器(可以将这货理解为一个虚拟机吗=。=)的出现,让计算机世界拥有了通用语言。
(二)80年代
问题:无法多人协作编程,多段小程序根本无法拼接成一个大型程序,几百号人一起写大型程序的感觉就是进度条看不到头。。
解决方法:出现了C++,C#,Java之类的东西,还有一些类库什么的。十年前写的程序放在今天的电脑上仍然能跑,而且那段时期,由于是摩尔定律的鼎盛时期(计算机硬件性能会自动随时间而提升)的原因,程序跑起来的性能感觉有明显提升。
(三)现在
问题:计算机性能提升遇到了瓶颈(如果仍然按照摩尔定律的方式去做大core的面积,增多单位面积集成的晶体管数量,发现性能上的提升是微乎其微的,于是intel那几个关于超大规模集成core的project都自杀了),顺序编程无法兼容现在硬件提升性能的方式(多核,且为多微核),顺序程序的性能会卡在那。
//量子计算机成功的话应该应该又是另一话了=。=毕竟量子态是能在同一时间内有4个甚至8个状态,对比起半导体硅的二进制只有0和1的两态,简直是黑魔法,而且目前绝大部分计算机都是基于冯诺依曼模型的,量子计算机会不会是打开新世界大门的强力装备。。
主要是下面几个原因导致的性能无法提升:
1.core(即microprocessors微处理器)的散热和冷却。继续按照摩尔定律的方式去制造的话,core的功耗(power)需求越来越大,但是众周知,core的绝大部分成本在于散热和冷却,超大规模集成的芯片不知道会不会一通电把电脑外壳都热熔了。。
2.core内部的通讯延迟(wire delay)。CPI(clock per
instruction单位时钟周期执行指令条数?)是衡量计算机性能的指标,但由于core的面积增大,clock却木有太大提升,所以出现了通讯延迟,拖慢程序运行速度
3.DRAM的速度提升率远慢于core的速度提升率。DRAM的速率是十年才翻倍。
其实摩尔定律没有错,只是单位面积上集成晶体管的数量翻倍并不代表计算机的性能提升率也翻倍。。
解决方法:多核编程