关于静态与动态之辩的一点想法

    先让我们来了解下柏拉图对世界的理解,柏拉图认为,自然界中有形的东西是流动的,但是构成这些有形物质的“形式”或“理念”却是永恒不变的。柏拉图指出,当我们说到“马”时,我们没有指任何一 匹马,而是称任何一种马。而“马”的含义本身独立于各种马(“有形的”),它不存在于空间和时间中,因此是永恒的。但是某一匹特定的、有形的、存在于感官 世界的马,却是“流动”的,会死亡,会腐烂。柏拉图把这个永恒不变的“形式”称为“理型”,他认为这个世界分为两个部分,一部分是完美的由“理型”组成的世界,另一个就是我们现实的“粗糙”的世界,真实世界是按照理型世界的标准设计的,总是努力达致完美的理型世界,但总是存有偏差。 因此他相信人类的灵魂是不朽的,灵魂苏醒后会向往回到完美“理型”的世界,人生来就有“理型”的观念。总之,柏拉图深信“理性”远比“感官”可靠。而他的学生亚里士多德却反驳他的老师,在亚里士多德看来,他也赞成世界是有变化的“质料”与不变的“形式”组成,比如具体的某只马是有一些“质料”组成,它有马的“形式”在里头,因此它被称为马。而“形式”存在于具体的“物”之中,比如“马”的含义就存在具体的千千万万只马之中, “形式”的观念并不是人与生俱来的,而是借助于“感官”去感知外界事物而得来的。他把这种“形式”更多地称为“特征”,由此提出了他的自然界分类观点,对“物”分类依据的是它能做什么以及它有什么特征。可以说,亚里士多德比他的老师更相信“感官”,没有像他的老师那样陷入对完美“理型世界”的眷念而不可自拔。
    联想到我们在使用静态OO语言(比如java)试图去描述现实世界的场景,我们总是试图先设计出一些类(class),这些类秉承我们的意志,我们预期它们能完美地描述事物,并且试图去符合所有的现实的场景。可以注意到,这样的想法不正是柏拉图式的偏执?我们用头脑中出现的“理型”(具体到语言中的类)去描述现实世界,可现实世界往往是模糊的、粗糙的,两者的冲突不可避免,导致类不再按照我们的设想发展,它变的庞大,变的不是那么清晰,因此我们又造出“设计模式”“重构”的“诡辩之术”去弥补、去完整,可这并不是治本之道。首先我们必须承认世界是不完美的,完美的“理型”或者说完美的类是不存在的,类型的划分不能依赖于头脑中的完美“理型”(类型的划分不是取决于类),而应该根据事物的特征以及事物能做什么来划分。放弃对类描述世界的追求,转而构造模糊的类型,对象的类型不再预先构造,它的类型取决于它能干什么,它有什么特征,这正是动态语言中的“Duck-Typing”以及一些函数式语言中的模式匹配希望做到的,两者都是为了描述模糊的现实世界。再比如ruby中的mixin和open class特性又提供了方式让我们去慢慢完善“粗糙”的类,放弃一蹴而就,选择有机成长。
    不是很清晰的想法,只是看《苏菲的世界》里对希腊古典哲学的描述突然想到的,各位权当荒唐言。

文章转自庄周梦蝶  ,原文发布时间2007-07-17

时间: 2024-12-02 09:34:31

关于静态与动态之辩的一点想法的相关文章

静态、动态、伪静态的URL结构到底哪种更利于SEO

静态.动态.伪静态的URL结构到底哪种更利于SEO 如果对SEO有了解的朋友都应该比较清楚,常见的URL表现形式有静态.动态.伪静态三种.如果是严格分类来说,伪静态也是动态的一种,只是表现形式为静态URL结构. 基 本我们对一个网站进行系统的SEO操作,都会去分析一个网站的URL,如果URL里面带有比较复杂的符号参数的动态形式,一般我们都会进行伪静态 的处理.这样去做,就是为了提高网站的收录,因为之前一直有着这样一种说法,搜索引擎对于网址的分析识别能力有限,如果是参数过于复杂是比较难抓取的.那

静态和动态编译Apache+php+mysql全过程

静态/动态编译Apache+php+mysql 所需软件: apache:1.3.27 php: 4.3.2 mysql:4.0.13 首先来安装mysql tar zvxf mysql-4.0.13.tar.gz cd mysql-4.0.13 ./configure --prefix=/usr/local/mysql --sysconfdir=/etc --localstatedir=/var/lib/mysql make make install 安装完成. 然后初始化数据库 /usr/l

杨亮高:如何简单从网址判别网站是静态还是动态

网站是静态还是动态,这个问题如果是对于程序员来说的话,那是再基本不过的概念,两眼抹黑也能分判得出网站是用什么程序建计,是静态还是动态.但是对于半路出家做SEO优化的同学位们来说,那真是个不小的门槛,因为做SEO的很多都是网站设计师或者文科专业的人居多,大多数是没有程序这方面的基础,所以对于网站是静态还是动态,这点区分上有很大的困难,只是知道搜索引擎的规则是比较喜好静态页面.前几天有几个SEO优化的朋友在深圳网络推广网站问我,如何能简单分清网址是静态还是动态,从网址上能看出来不.下面深圳网络推广说

Linux 静态库&动态库调用

1.什么是库在windows平台和linux平台下都大量存在着库.本质上来说库是一种可执行代码的二进制形式,可以被操作系统载入内存执行.由于windows和linux的本质不同,因此二者库的二进制是不兼容的.本文仅限于介绍linux下的库.2.库的种类linux下的库有两种:静态库和共享库(动态库).二者的不同点在于代码被载入的时刻不同.静态库的代码在编译过程中已经被载入可执行程序,因此体积较大.共享库的代码是在可执行程序运行时才载入内存的,在编译过程中仅简单的引用,因此代码体积较小.3.库存在

深入Android中BroadcastReceiver的两种注册方式(静态和动态)详解_Android

今天我们一起来探讨下安卓中BroadcastReceiver组件以及详细分析下它的两种注册方式. BroadcastReceiver也就是"广播接收者"的意思,顾名思义,它就是用来接收来自系统和应用中的广播.在Android系统中,广播体现在方方面面,例如当开机完成后系统会产生一条广播,接收到这条广播就能实现开机启动服务的功能:当网络状态改变时系统会产生一条广播,接收到这条广播就能及时地做出提示和保存数据等操作:当电池电量改变时,系统会产生一条广播,接收到这条广播就能在电量低时告知用户

wpf 静态资源 动态资源的使用

问题描述 wpf 静态资源 动态资源的使用 刚开始接触并学习wpf 对资源的使用不太明白 代码如下(没有定义应用程序级的资源) 第二个按钮为什么不采用自己的资源而采用了window的资源?静态资源和动态资源的使用有何区别呢? <Window.Resources> <SolidColorBrush x:Key="ButtonBrush" Color="Red" /> </Window.Resources> <StackPane

《圣殿祭司的ASP.NET4.0专家技术手册》----2-2 静态与动态语言的比较

2-2 静态与动态语言的比较 圣殿祭司的ASP.NET4.0专家技术手册程序语言若按照类型检查的时机来划分,可分为: 静态语言(statically typed languages).若一种程序语言的类型检查(Type Checking)工作是发生在编译时期(Compile Time),则称为静态语言.C#与Java都是静态语言代表,程序编写时必须使用明确的类型声明,编译的当下,编译程序就会进行类型检查,且变量或对象的类型一旦声明后,在运行时就无法任意更换类型,否则会发生Exception错误.

静态库动态库链接分析

本文为验证后的结果,准确性较高,适合任何人阅读 静态库和动态库链接分析 1.文件组成结构 静态库:lib   头文件 动态库:lib   dll  头文件 从组成上看,动态库和静态库的差异在于动态库多了一份dll文件,导致动态库可以独立存在, 2.链接方式 静态库:只能静态链接 动态库:动态链接和静态链接 3.运行效果 静态库:相当于直接把代码段写入到exe或dll文件中 动态库:相当于与exe或dll形成了一种关系,exe或dll可以到动态库中去查找所需要的函数   4.差别: 静态库:不需要

详细介绍kvm虚拟机静态和动态迁移(图文介绍)_Kvm

本文主要介绍了kvm虚拟机静态和动态迁移,具体如下: 一.kvm虚拟机静态迁移 1.静态迁移就是虚拟机在关机状态下,拷贝虚拟机虚拟磁盘文件与配置文件到目标虚拟主机中,实现的迁移. (1)虚拟主机各自使用本地存储存放虚拟机磁盘文件 本文实现基于本地磁盘存储虚拟机磁盘文件的迁移方式, (2)虚拟主机之间使用共享存储存放虚拟机磁盘文件 该方式只是在目标虚拟主机上重新定义虚拟机就可以了. 2.静态迁移过程如下(1)确定虚拟机关闭状态 (2)准备迁移oeltest02虚拟机,查看该虚拟机配置的磁盘文件 (