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

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

12450 次点击
所在节点    编程
135 条回复
krixaar
2023-02-15 11:40:27 +08:00
@tool2d #116 我怎么感觉按照这个逻辑,根据 DRY 原则,封装着封装着就把面向对象给做出来了呢🤣……
uni
2023-02-15 12:49:34 +08:00
太同意了!!这么久了我也仍然保持着跟 lz 一样的想法,这也是我一直抗拒搞后端的原因

前端的实践早就证明了不用面向对象,用偏向函数式的写法完全可以处理复杂的问题,我觉得那些眼里只有面向对象的人真的很落后
bk201
2023-02-15 12:57:41 +08:00
说了半天,你就 show 了我一个 hello world ,do not talk more ,show me your code
uni
2023-02-15 13:00:19 +08:00
@546L5LiK6ZOt 我觉得这反而应该是软件工程应该反思的问题,人类对这个世界的思考与建模有着几千上万年的历史,而数学正是人类探索出来的对这个世界进行建模的伟大框架,看看其他学科(物理学、经济学等等)只要是涉及应用工程计算的都是在用数学作为其最底层的工具,而函数就是数学里面的一个最为基础的东西,所以函数对于人类的思维来说才是最自然的

反而软件工程自己搞出的面向对象这种扭曲的东西,每次我用数学思考完问题之后写代码的时候又得被迫用面向对象来思考,感觉自己像被强奸一样
WebKit
2023-02-15 13:03:38 +08:00
楼主多大了?
krixaar
2023-02-15 15:26:17 +08:00
@uni #124 面向对象也是数学思想,“因为 X 是一种特殊的 Y ,所以 X 具有 Y 的性质,适用于 Y 的公式同样适用于 X”,甚至很多讲继承的教程都在用 class 正方形 extends 矩形 来举例,因为学数学 /物理的时候都是这么学的,从特殊的简单概念入手,一步步往更广的方向上推。
只不过某些时候 OOP 非得 class 正方形 extends 矩形 extends 平行四边形 extends 四边形 extends 多边形 extends 平面图形 巴不得继承个祖宗十八代才是该喷的点。
dqzcwxb
2023-02-15 16:12:23 +08:00
DNA
2023-02-15 16:15:59 +08:00
You can you up , no can no BB
546L5LiK6ZOt
2023-02-15 17:09:55 +08:00
@uni 我是实践派哈哈~ 数学是很好,但是不是所有人都懂。用数学语言跟各方人员沟通,感觉现实不太可行。。。
netabare
2023-02-15 20:07:08 +08:00
@tool2d 函数式编程不是写函数,是探讨怎么以函数为最小可复用单位去进行各种组合和抽象。状态与否也不是函数式所关心的,状态本身在常见的函数式编程语言里可以用数据结构来表达。

如果您说的写函数是指,`void fun() { foo(); bar(); baz() }` 这种写法,这和函数式完全没有任何关系,这叫过程式,写的其实也只是子过程而已。

函数式编程至少要求可组合的函数,比如说,`f x`,`g (f x)`,这里的函数和数学上的函数是可以一一对应的。那么对编程语言的要求也是最少要支持以函数为参数或者作为返回值来计算(也就是高阶函数)。至于其他更复杂的构造都是后话了。
huijiewei
2023-02-15 20:38:47 +08:00
我精通 100 种语言,都会写 hello world!

我自己做了 200 种编程语言,都能输出 hello world!
Cooky
2023-02-15 20:56:44 +08:00
这是 java 的问题,不是面向对象的问题

java 的编程范式只适合堆屎山
markx
2023-02-16 03:14:31 +08:00
你见过几种程范式和语言?
apostleChan
2023-04-18 23:20:19 +08:00
营销就是制造冲突
soclearn
2023-04-27 03:43:28 +08:00
@netabare 才发现你说得这么好

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

https://ex.noerr.eu.org/t/915980

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

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

© 2021 V2EX