关于静态与动态之辩的一点想法
先让我们来了解下柏拉图对世界的理解,柏拉图认为,自然界中有形的东西是流动的,但是构成这些有形物质的“形式”或“理念”却是永恒不变的。柏拉图指出,当我们说到“马”时,我们没有指任何一 匹马,而是称任何一种马。而“马”的含义本身独立于各种马(“有形的”),它不存在于空间和时间中,因此是永恒的。但是某一匹特定的、有形的、存在于感官 世界的马,却是“流动”的,会死亡,会腐烂。柏拉图把这个永恒不变的“形式”称为“理型”,他认为这个世界分为两个部分,一部分是完美的由“理型”组成的世界,另一个就是我们现实的“粗糙”的世界,真实世界是按照理型世界的标准设计的,总是努力达致完美的理型世界,但总是存有偏差。 因此他相信人类的灵魂是不朽的,灵魂苏醒后会向往回到完美“理型”的世界,人生来就有“理型”的观念。总之,柏拉图深信“理性”远比“感官”可靠。而他的学生亚里士多德却反驳他的老师,在亚里士多德看来,他也赞成世界是有变化的“质料”与不变的“形式”组成,比如具体的某只马是有一些“质料”组成,它有马的“形式”在里头,因此它被称为马。而“形式”存在于具体的“物”之中,比如“马”的含义就存在具体的千千万万只马之中, “形式”的观念并不是人与生俱来的,而是借助于“感官”去感知外界事物而得来的。他把这种“形式”更多地称为“特征”,由此提出了他的自然界分类观点,对“物”分类依据的是它能做什么以及它有什么特征。可以说,亚里士多德比他的老师更相信“感官”,没有像他的老师那样陷入对完美“理型世界”的眷念而不可自拔。
联想到我们在使用静态OO语言(比如java)试图去描述现实世界的场景,我们总是试图先设计出一些类(class),这些类秉承我们的意志,我们预期它们能完美地描述事物,并且试图去符合所有的现实的场景。可以注意到,这样的想法不正是柏拉图式的偏执?我们用头脑中出现的“理型”(具体到语言中的类)去描述现实世界,可现实世界往往是模糊的、粗糙的,两者的冲突不可避免,导致类不再按照我们的设想发展,它变的庞大,变的不是那么清晰,因此我们又造出“设计模式”“重构”的“诡辩之术”去弥补、去完整,可这并不是治本之道。首先我们必须承认世界是不完美的,完美的“理型”或者说完美的类是不存在的,类型的划分不能依赖于头脑中的完美“理型”(类型的划分不是取决于类),而应该根据事物的特征以及事物能做什么来划分。放弃对类描述世界的追求,转而构造模糊的类型,对象的类型不再预先构造,它的类型取决于它能干什么,它有什么特征,这正是动态语言中的“Duck-Typing”以及一些函数式语言中的模式匹配希望做到的,两者都是为了描述模糊的现实世界。再比如ruby中的mixin和open class特性又提供了方式让我们去慢慢完善“粗糙”的类,放弃一蹴而就,选择有机成长。
不是很清晰的想法,只是看《苏菲的世界》里对希腊古典哲学的描述突然想到的,各位权当荒唐言。
文章转自庄周梦蝶 ,原文发布时间2007-07-17
相关文章
- 在 Go 里用 CGO?这 7 个问题你要关注!
- 9款优秀的去中心化通讯软件 Matrix 的客户端
- 求职数据分析,项目经验该怎么写
- 在OKR中,我看到了数据驱动业务的未来
- 火山引擎云原生大数据在金融行业的实践
- OpenHarmony富设备移植指南(二)—从postmarketOS获取移植资源
- 《数据成熟度指数》报告:64%的企业领袖认为大多数员工“不懂数据”
- OpenHarmony 小型系统兼容性测试指南
- 肯睿中国(Cloudera):2023年企业数字战略三大趋势预测
- 适用于 Linux 的十大命令行游戏
- GNOME 截图工具的新旧截图方式
- System76 即将推出的 COSMIC 桌面正在酝酿大变化
- 2GB 内存 8GB 存储即可流畅运行,Windows 11 极致精简版系统 Tiny11 发布
- 迎接 ecode:一个即将推出的具有全新图形用户界面框架的现代、轻量级代码编辑器
- loongarch架构介绍(三)—地址翻译
- Go 语言怎么解决编译器错误“err is shadowed during return”?
- 敏捷:可能被开发人员遗忘的部分
- Denodo预测2023年数据管理和分析的未来
- 利用数据推动可持续发展
- 在 Vue3 中实现 React 原生 Hooks(useState、useEffect),深入理解 React Hooks 的