Go 的编程思想是什么?

2019-03-07 11:08:13 +08:00
 index90

一直 OOP,换到 Go 也是用 OOP 思想,但总感觉很别扭啊。 有没有什么指引?

13011 次点击
所在节点    Go 编程语言
94 条回复
passerbytiny
2019-03-08 16:09:57 +08:00
@abcbuzhiming #68 类不是你说的给高智商的人用的纯抽象的东西,类就是 OOP 的必须的基本的组成部分,你现在的观点就是在程序开发上一棍子打死“类”。

你的教条是对象范式的两个基本概念,然而我最早接触的 OOP 的目的可没有你那么高深的范式要求,就一个最简单的目的:像现实物体一样去看待程序。现实中有鸟、麻雀、小明家的麻雀,映射到程序中就是基类、子类、对象。在这里类、继承、封装都是直接从现实中抽取的东西,这才是凡人的东西,反而你的各种范式是曲高和寡的。

而且即使按照你的教条来看,类也没有违反那两个范式,程序只包含对象和对象之间的消息,那么类为什么不能是一种负责定义和生成其它对象的“对象”。

你在表述里极力的想将“类”描述成学术界专用的、用来做抽象的术语,然后极力的去鄙视学术界,然而学术界从来都是“在现实的基础上抽象,然后去解决现实”。你对哲学思想的理解也很有问题,哲学是“来自于现实和其它科学,并反过去帮助现实和其它科学”。你的种种表述让我想到了“数学无用”这个古老的词语

你的种种观点和表达手段,还让我想到了另一个词——民科,真没想到在无名无利的程序设计领域也能出现民科。
fox1955
2019-03-08 16:32:12 +08:00
oo 就是为了更好的解藕(可插拔)。一句话的事。
abcbuzhiming
2019-03-08 17:09:36 +08:00
@passerbytiny
你已经把“民科”的帽子扣在我头上了,你已经立于不败之地了,呵呵,你高兴就好
blless
2019-03-08 17:23:05 +08:00
@bsg1992 没说 C#不好,相反我接触 Go 之前最喜欢的就是 C#。C#的 linq lambda 都是我很喜欢用的东西。不过 c#封闭太久了,跟微软全家桶深度绑定,现在追赶醒悟过来追赶开源,也不知道会不会太晚。
index90
2019-03-08 17:23:34 +08:00
@passerbytiny 程序是用来解决现实问题的。现实很复杂,计算机太简单,为了让计算机理解人的指令,人们发明了编程语言;为了让计算机能够理解人类的世界,人们发明了数据类型,数据结构。
计算机在最初是给数学家用的,那时候还没有软件工程师,即便到了今天,计算机还不能够直接解决现实问题,而软件工程师的最重要职责,就是把现实问题转化为数学模型,而编程只是最后的一步。

DDD,对象范式,是设计思想,用于帮助我们将复杂的现实问题向数学模型转化。
以 Java,C++为代表的 OOP,是实现手段,“封装,继承,多态”都是实现手段。面向接口编程都是实现的手段。

程序员习惯以技术实现手段来倒推分析世界,这也是为什么技术人员总是被喷技术性思维的根本原因。今天我提问的标题,也犯了同样的错误。

人的理解是有局限性的,受你所处的环境,你的经验影响。加入我只是小明家的猫,我从来没有离开过小明家,我只知道小明家的麻雀,我设计一个和小明家的麻雀沟通的工具,却不知道小明家以外还有其他的麻雀,说着不同的语言。这就是凡人的局限性。与其尝试超越自身极限,去想象自己根本没见过的抽象事物,不如静下心来,想想如何和面前的麻雀沟通。

类和继承是有价值的,但不是凡人现阶段必要的。实际工作中,也会体会到,在开发一个系统足够久后,回过头来才知道“正确”的设计是什么,但你又如何保证若干年后,回过头来,依然是“正确”的呢?对世界的认知和自身经验有关。不去纠结一个类如何设计,不代表类没有用,不代表放弃程序设计,而是更坦承地面对自己的无知,承认自己是个凡人,基于眼前的活生生的对象,做出当时最有把握认为最正确的设计。
skadi
2019-03-08 17:25:53 +08:00
通信吧.
atonku
2019-03-08 17:31:37 +08:00
让语言自己 go,自己编程自己
wysnylc
2019-03-08 17:39:45 +08:00
面向对象设计,面向过程开发
dongya
2019-03-08 18:46:36 +08:00
justfortest
2019-03-08 18:48:28 +08:00
@atonku #87 就该这样,一门成熟的语言,应该会自己编程
chenqh
2019-03-08 19:20:14 +08:00
难道不是 golang 围绕 go 程建立了一套生态?
dartabe
2019-03-09 06:02:52 +08:00
看完全篇的感觉就是 java 依然万金油无可替代。。。
ihipop
2019-03-09 09:10:59 +08:00
@blless 其他语言大部分都有包的版本🔒锁
richieboy
2019-03-09 09:26:24 +08:00
一直觉得"对象"这个翻译对于中文来说不能很好的表达"object"的涵义

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

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

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

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

© 2021 V2EX