- 论坛徽章:
- 0
|
本帖最后由 HappyTigerYear 于 2010-02-25 16:59 编辑
电影《黑客帝国》测试你的软件逻辑能力和OO(面向对象)编程能力!你看懂《黑客帝国》了么?
在影片里,Neo最后说服了Matrix,拯救了人类,就是因为抓住了Matrix系统的逻辑漏洞。
bool Combat(&Neo, &Smith)
{
// Neo 和 Smith 激战...
// Smith调用memcpy函数,把Neo复制成自己:
memcpy(&Neo, &Smith, sizeof(Neo));
if(Neo胜利)
return true;
else
return false;
}
Matrix时刻删除没用没有目的的程序。
影片末尾,Matrix调用Combat函数,Neo和Smith开战...
战斗结束,Neo所在内存空间内的数据都被Smith用自己的数据填充了,Combat函数返回了false。Neo失败了,Matrix因此删掉了Neo,即冲洗掉了Neo内存空间数据,而实际上冲洗掉了Smith在Neo内存上的复本数据。Smith看到自己的一个复本被删除,惊疑自己怎么是无用的程序了,所以他那时非常惊恐。Matrix看到Smith的一个复本“自杀”(Matrix不知道这个Smith复本是自己一箭双雕杀死的,这是Matrix系统的一个逻辑漏洞),所以Matrix就认为Smith已是个无用的程序,就迅速接二连三地把Smith及每个Smith的复本删除(杀死)。
Smith死得很惨,比赵本山那一万元钱死的还惨。
因此,Neo就与Matrix达成了和平交易,拯救了人类。
“生活”在Matrix控制的虚拟世界中的所有物质都是用先进OO(面向对象)技术编写的程式,“人”、“美女”、“俊男”、“楼房”、“汽车”、“小猫”、“小狗”、“灰尘”、“牛排”、“花”、“鸟”、“树”、“木”、“草”、“虫”等等所有东西都是对象化的程序。
为什么说是“对象化”的程序呢?
虚拟世界与真实世界那么逼真,以致让真正的人类都无法辨别真假(即使顶级天才程序员能辨别出来,那也很不容易,像尼奥、莫菲斯、崔妮蒂、坦克等),然而你知道么,只有具备先进的OO编程思想才能设计出优秀的软件,才能设计出如此逼真的虚拟世界。 |
|