我从来没见过比面向对象更糟糕的编程范式和语言

2023-02-14 12:31:17 +08:00
 soclearn

来看 java 的 hello world

public class HelloWorld {
    public static void main(String[] args) {
        System.out.println("Hello world");
    }
}

好一个蠢字了得。为了输出二个字,要写这么多样板和层次

不能像 shell 一样平坦化吗

而且以后,你还要学”继承,保护,ducking type ,mixed in, 参数类,原型链,面向 interface ,设计模式,并发加锁,信号量“ 而且到最后,你会被告知”py,cpp 的 oo 都是山寨,只有 smalltalk,ruby 那种 oo 才是纯的“

并且最最后,你会发现先它们一步的函数式语言无须厚重的数据抽象,也能获得更好的代码结构和范式,并且天然并发,自带 dsl

11400 次点击
所在节点    编程
135 条回复
zapper
2023-02-14 12:34:35 +08:00
你说得对,给你 5 铜币
Eiden
2023-02-14 12:36:31 +08:00
下面请双方辩手入场
kop1989smurf
2023-02-14 12:37:00 +08:00
每种设计都有其擅长的领域和既定的历史背景。

你非拉着 2022 年的姚明跟 2004 年的刘翔比跨栏,结果姚明输了就是一文不值。
soclearn
2023-02-14 12:40:29 +08:00
@kop1989smurf oo 绝对不是,oo 是一种滥用,oo 应该到面向 adt ,面向 class 就够了。然而,它却走向了“W 物 OO”的不归路
ligiggy
2023-02-14 13:53:23 +08:00
一个标题仿佛把世界上 90%的写程序的人都喷了,真有你的。
oneisall8955
2023-02-14 14:02:28 +08:00
soclearn
2023-02-14 14:04:00 +08:00
@ligiggy oo 毒害了以 c ,cpp 为教科书成长起来的一代专业和非专业程序员。后来的语言都是简化或参照它们。oo 它在简化问题的时候,制造了更多复杂的东西。,它的被使用方式与设计方式是割裂的,中间损耗太大,放在谁身上都是。
**对设计者是个挑战。甚至有人为了抽象而抽象,或过度抽象**
**对复用者也是个挑战,加大了使用门槛**
**对初学者更是致命的**
BingoXuan
2023-02-14 14:06:34 +08:00
<amp-youtube data-videoid="m4-HM_sCvtQ" layout="responsive" width="480" height="270"></amp-youtube>?t=85
Chaconne
2023-02-14 14:07:55 +08:00
我技术小白,学啥语言好
wangpugod2003
2023-02-14 14:08:48 +08:00
有没可能是,真实的世界就是很复杂呢?
有没可能是,真实场景的需求比 hello world 还是复杂多了呢?
soclearn
2023-02-14 14:11:34 +08:00
最初的 oo 类似于 smalltalk 用于 gui 这样的场景和语言组合
如果 oo 仅用于抽象数据而不是代码结构,那么足够。
可是 oo 最后终于变成一种范式,W 物都 oo ,
面向对象必然会导致数据抽象的不断堆叠,形成数据的巨集,最后接口是一个个数据“层次子世界”背后透出的东西
容易让人数据接口和代码接口不分
巨大的抽象数据。带来的问题不大
巨大的抽象代码结构。光是这条设计,带来的问题就足够大

从此,
设计者,复用者,初学者,调试者,都要从分析那坨树形的层次开始。
不复以前命令行中像修改命令式代码那样改动几个字,一行下去就能看到变化的快感了
tyzandhr
2023-02-14 14:11:42 +08:00
写 fp ,你有这个本事吗?
centralpark
2023-02-14 14:12:20 +08:00
首先,是 duck typing ,不是 ducking type……
其次,你说的这些 Go/Rust 早就知道,所以直接把继承去掉了,再说这些,感觉好像穿越到了 2010 年代
soclearn
2023-02-14 14:12:41 +08:00
@wangpugod2003 oo 绝不应该是对某种需求一比一的建模。没有哪种范式应该这么做。
shinsekai
2023-02-14 14:13:54 +08:00
我没有对象,所以我喜欢用 Matlab
Seanfuck
2023-02-14 14:15:14 +08:00
不用 java 这种强制面向对象的语言就好了
TWorldIsNButThis
2023-02-14 14:18:06 +08:00
duck type
跟 oo 有什么关系

semaphore 也 oo ? dijkstra:原来我还懂 oo 啊
libook
2023-02-14 14:22:41 +08:00
Java 是 1995 年问世的,J2EE 是 1999 年问世的。在当时那个技术市场上,Java 的设计正好可以被用于解决很多企业的痛点。
不过确实后面由 Java 刮起的 OO 风有点吹歪了,很多新手被教育为了 OO 而 OO ,任何问题都套框架和目录结构,全然忘记了它们只是个工具,有的场景可以极大提升开发维护效率,有的场景就很鸡肋。
踩一捧一不可取,有人可以找出 100 个不适用 OO 的场景,也有人可以找出 100 个不适用函数式的场景。
Bigglesworth
2023-02-14 14:24:06 +08:00
让我想到一句话,oo 不绝对,就是绝对不 oo
SuperManNoPain
2023-02-14 14:27:52 +08:00
对于我这种打工人来说能赚钱的就是好语言,不能赚钱还是拉倒吧

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/915980

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX