为什么没有银弹?因为CPU不能再快下去了
2011-09-10 15:14
447 查看
摩尔定律失效了,CPU不能再快下去了。最痛苦的应该是程序员。
2000年左右的那些时间真是程序员的黄金时代。每半年CPU的速度就翻番,半年前效率还那么不现实的算法,半年后就能应用了。
那些年sun以为java可以统治移动设备,因为每半年速度翻番的cpu会让大家不再在意那点虚拟机的消耗。但是现实是那么残酷,如今cpu频率止步不前,java在移动设备上的效率依然被人诟病,而sun已经成了历史。
硬件厂商们无法再在速度上做文章,转向了多核。
但程序还得继续写下去,用户需要越来越高的pv,越来越多的数据,越来越炫的界面。但是cpu不能再快下去了,程序员之能转而求助于多核心,协同处理。而异步程序的处理只会让编程更加困难,项目更加复杂。
以前只会c\c++,以为它们足够高效,足够复杂,足以构建出整个世界。但是真正做项目以后才发现静态语言、OO在现实的复杂度面前是多么的苍白无力。
直到看到了lua,python这样的动态语言,才发现原来银弹是有的,只不过太慢。
OO不过是晚绑定和高效率的不得已妥协,妥协的结果是高耦合的继承体系。在一个怪物的继承体系中增添一个会飞的怪物,你就需要在整个体系中加上一个virtual bool CanFly()。这太蹩脚了。
真正理想的泛型是彻底的晚绑定:
这样的语言里根本就不需要OO。但是彻底的玩绑定不够快啊,python不够,C#的反射也不够。所以我们还是得OO,还是得delete。
为什么没有银弹?因为CPU不能再快下去了。量子计算或者别的什么足够快的东西快来拯救程序员们吧!
2000年左右的那些时间真是程序员的黄金时代。每半年CPU的速度就翻番,半年前效率还那么不现实的算法,半年后就能应用了。
那些年sun以为java可以统治移动设备,因为每半年速度翻番的cpu会让大家不再在意那点虚拟机的消耗。但是现实是那么残酷,如今cpu频率止步不前,java在移动设备上的效率依然被人诟病,而sun已经成了历史。
硬件厂商们无法再在速度上做文章,转向了多核。
但程序还得继续写下去,用户需要越来越高的pv,越来越多的数据,越来越炫的界面。但是cpu不能再快下去了,程序员之能转而求助于多核心,协同处理。而异步程序的处理只会让编程更加困难,项目更加复杂。
以前只会c\c++,以为它们足够高效,足够复杂,足以构建出整个世界。但是真正做项目以后才发现静态语言、OO在现实的复杂度面前是多么的苍白无力。
直到看到了lua,python这样的动态语言,才发现原来银弹是有的,只不过太慢。
OO不过是晚绑定和高效率的不得已妥协,妥协的结果是高耦合的继承体系。在一个怪物的继承体系中增添一个会飞的怪物,你就需要在整个体系中加上一个virtual bool CanFly()。这太蹩脚了。
真正理想的泛型是彻底的晚绑定:
obj = new Object; obj.life = 100 if(obj.life) print "obj is a creature." obj.fly = fly() if(obj.life && obj.fly()) print "obj is a bird."
这样的语言里根本就不需要OO。但是彻底的玩绑定不够快啊,python不够,C#的反射也不够。所以我们还是得OO,还是得delete。
为什么没有银弹?因为CPU不能再快下去了。量子计算或者别的什么足够快的东西快来拯救程序员们吧!
相关文章推荐
- 为什么Eclipse打jar包,Export为什么没有 Runnable jar file,即为什么不能打可执行jar包?
- 星巴克成功之谜:为什么不能因为利益牺牲原则?
- MAC 出现 不能完成此操作,因为您没有权限访问一些项目 解决方法
- Map的new为什么是Map map=new HashMap();而不是new Map();?因为map是个接口,而接口不能被实例化!HashMap是map接口的实现类!
- 为什么 nodejs 外部的 reactnative 无法启动,因为没有配置环境变量.
- python多线程为什么不能利用多核cpu
- Hibernate OneToOne双向关联为什么没有外键的一方不能Lazy加载?
- photoshop中为什么会出现"不能使用文字工具,因为暂存盘已满"?
- 为什么最近我不能在我自己的日志里面发表评论呢?点发表没有反应,请大家帮我测试一下看看能否发!
- Sharepoint里面文件因为没有成为主版本,导至只读权不能读到文件
- 我为什么那么喜欢呆在实验室,因为我知道我错过就再也没有机会
- 汉高澳大利亚sinox为什么不能下载源代码,因为sinox执行unix/linux/windows规划
- 为什么你的APP不如人?因为你没有让它“活”起来
- sql语句学习笔记(10)-group by(因为该列没有包含在聚合函数或 GROUP BY 子句中。聚合函数不能出现在where中)
- 为什么不能用CPU而用GPU挖矿?
- 为什么Cpu不能以100%运行 [不完全版]
- 为什么安装了证书,却不能用,有时候钥匙串里也没有安装成功?
- Java中的static关键字解析(转自海子)__为什么main方法必须是static的,因为程序在执行main方法的时候没有创建任何对象,因此只有通过类名来访问。
- 好些天没有写什么了,不能懒散下去了,要重新振作起来。
- 为什么硅谷不能在没有移民的情况下工作