V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
TWorldIsNButThis
V2EX  ›  编程

Java8+的 OOP 含量似乎并没有高过它的 FP 的含量

  •  1
     
  •   TWorldIsNButThis · 25 天前 · 928 次点击
    阅读了一些关于 OOP 语言 smalltalk 的资料

    发现 OOP 对于 java 来说,仅仅是一个 a.b()的 notation 和把数据和函数定义在一起的 class 而已,所谓的 everything is an object 没有任何意义,完全是句空话。
    这就好像是说 java 其实是一门 FP 语言,因为它支持 higher order functions

    object 在 smalltalk 里是非常灵活、高度可交互的

    The basic idea of “object” is to invest a “full virtual computer” so it can provide useful services via messages in a machine independent way and with enough encapsulation to be safe against attack.

    This also means that everything can and should be an object because (a) a full virtual computer can simulate any other kind of thing, and (b) because this also allows objects to be self-defining, self-documenting, etc.

    对了作为高度可互动性的一部分,smalltalk 自然也支持 First-class functions

    这帮奉承又不是不能用哲学的、源自机械的死板的汇编的 C 语言的后代真是摧毁了一切富有生机的奇思妙想,而且还到头来还喜欢装模做样的用这些思想的闪光点装点自己的门面

    更装模做样的是明明就抄了个皮毛,反倒还规定起了 oop 的三大特性,什么封装继承多态,幽默

    还有更典的是那个 receiver ,如果只学过 C like 的所谓 oop 语言,很难理解为什么 a.b()里的 a 叫 receiver 。而在 smalltalk 里这叫向 a 发送一条 b 消息,a 自然就是消息的 receiver
    5 条回复    2024-04-09 10:38:48 +08:00
    ecnelises
        1
    ecnelises  
       25 天前
    除开 Ruby 这类解释型动态语言不谈,Objective-C 显然更符合 Smalltalk 的理念。可惜的是除开其奇怪的语法,大多数人可能也没有多喜欢这种程度的动态性。
    lambdaq
        2
    lambdaq  
       25 天前
    为什么 a.b()里的 a 叫 receiver 。而在 smalltalk 里这叫向 a 发送一条 b 消息,a 自然就是消息的 receiver

    发起消息的为啥是受,而不是攻?
    june4
        3
    june4  
       25 天前
    那你说 smalltalk 里的发消息和 java 里的调用方法本质的差别是什么?
    zjsxwc
        4
    zjsxwc  
       25 天前
    “封装、继承、多态”这套以及在最近的现代语言里被抛弃了,
    看看 go 、rust 这些谁还有用,

    “组合”优于“封装、继承、多态”
    poembre
        5
    poembre  
       21 天前
    @zjsxwc 👍 “组合”优于“封装、继承、多态”
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   2167 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 24ms · UTC 16:07 · PVG 00:07 · LAX 09:07 · JFK 12:07
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.