看OOP的东西看的很晕,总觉得面向对象编程很像是数学里的某些东西,但又总觉得有些地方很不一样。然后就在寻思能不能完全按照自己所习惯的集合论语言来设计一种程序语言,比方说把“类”改成“集合”,把“实例”改成“元素”,把“方法”改成“映射”……结果google一搜,果然找到了,就是SETL这东西,貌似很少有人讨论……上维基百科上看了看,有这么一段:
[quote]Print all prime numbers from 2 to N:
print([n in [2..N] | forall m in {2..n - 1} | n mod m > 0]);[/quote]
作为数院出来的,看到这里当时就泪流满面了……看着那个forall,恍然间都以为自己在用LaTeX打公式了……
--------------------------------
又找了些资料来看,发现这东西确实还是老了点。最大的不足之处是它把“集合”概念仍然理解为类似于其他语言中的数组或者是向量一类的特定数据类型,而不是真正抽象意义上的“具有某种性质的变量的全体”(当然,数学上的集合大多数都是无限集,而计算机不能处理无限,这个矛盾也许可以通过在建立集合的时候强制要求指定一个有限的全集来解决)……
好吧我的想法其实是,我总觉得OOP跟集合论有点隐隐的神似,如果能做一些修改使其拥有更明确的集合论与关系代数的基础,有一天看语言手册感觉就像是看抽象代数课本那就再好不过了……