当马工OOP知识也没用吗?

z
zongxiong
楼主 (未名空间)

刷那些leetcode可能平时用不到,但OO的技能难道不是必备的吗?我念CS之前就写了很多代码,都是procedural式的,各种错综复杂,写大一点程序,很难拓展。念了CS,学了OOP课程,知道is/has的区别,知道用interface给两个模块之间解绑,知道用
Factory,Strategy,Builder patterns来让代码更加灵活高效。这些在我现在工作中每
天都用。其他stream,lambda expressions, concurrency之类技巧都非常实用,很大
程度提高编码效率。

我念完CS再看之前写的代码简直不能看。我觉得科班马工和非科班还是有区别的
y
yxzc

科班马公也不学这些啊
科班的是在框架上添一个小os kernel ,
实现一个玩具版的raft什么的

你这是啥速成班啊

【 在 zongxiong (棕熊) 的大作中提到: 】
: 刷那些leetcode可能平时用不到,但OO的技能难道不是必备的吗?我念CS之前就写了很
: 多代码,都是procedural式的,各种错综复杂,写大一点程序,很难拓展。念了CS,学
: 了OOP课程,知道is/has的区别,知道用interface给两个模块之间解绑,知道用
: Factory,Strategy,Builder patterns来让代码更加灵活高效。这些在我现在工作中每
: 天都用。其他stream,lambda expressions, concurrency之类技巧都非常实用,很大
: 程度提高编码效率。
: 我念完CS再看之前写的代码简直不能看。我觉得科班马工和非科班还是有区别的

k
kz80

leetcode用不到

OOP这几年问的少了,一般考你OOP还会问SOLID
z
zongxiong

你肯定野鸡学校毕业的,任何一个正规CS学位不可能不介绍OOP:
https://catalog.caltech.edu/current/courses/department/CS
https://ocw.mit.edu/courses/electrical-engineering-and-computer-science/6-
01sc-introduction-to-electrical-engineering-and-computer-science-i-spring-
2011/unit-1-software-engineering/object-oriented-programming/

【 在 yxzc () 的大作中提到: 】
: 科班马公也不学这些啊
: 科班的是在框架上添一个小os kernel ,
: 实现一个玩具版的raft什么的
: 你这是啥速成班啊

r
reklam

写CSS也要学oo?

写好CSS随便找工作

cs科班出身反而很多不会写CSS也不愿意写

r
reklam

不要不把写CSS的当码农

水明对CSS码农充满敬意

尤其是那些胸大屁股大的金发碧眼白妞

z
zongxiong

小代码肯定不需要,OO是用来对付大型程序的,方便维护,方便不断增减功能。

【 在 reklam (reklam) 的大作中提到: 】
: 写CSS也要学oo?
: 写好CSS随便找工作
: cs科班出身反而很多不会写CSS也不愿意写

z
zmmyzmmy

我面试别人都会问oop, 这是对软件工程的基本理解。不理解oop的,都会被我刷掉。
n
niuheliang

OOP这个框架能把一千枝们都比下去。

物理千老们试图解释这个世界。

码工们用OOP在创造无数新的世界。

【 在 zongxiong (棕熊) 的大作中提到: 】
: 你肯定野鸡学校毕业的,任何一个正规CS学位不可能不介绍OOP:
: https://catalog.caltech.edu/current/courses/department/CS
: https://ocw.mit.edu/courses/electrical-engineering-and-computer-science/6-: 01sc-introduction-to-electrical-engineering-and-computer-science-i-spring-: 2011/unit-1-software-engineering/object-oriented-programming/

n
niuheliang

举例说,玻璃二相性,不就是OO里的方法(波)和属性(粒)嘛。

【 在 niuheliang (别问我是谁) 的大作中提到: 】
: OOP这个框架能把一千枝们都比下去。
: 物理千老们试图解释这个世界。
: 码工们用OOP在创造无数新的世界。

n
normal

OOP不是必需的。写算法C就够了,Knuth就用C, 从不用C++.
programs = data structures + algorithms. still true today.
Unix就是用C写的,应用程序也可以。实际上,大部分真正的核心应用程序
包括数据库和网络库都是存粹C写的。

l
lsunspot

OOP是anti pattern。应该是算法绑数据(FP/Category theory),丫给整成数据绑算法了,满拧。所有OOP的小pattern在FP中都是显而易见,不言而喻的。现在像java这样的都在不停的找补,lambda,trait,type inference,pattern match等等越来越像
scala了,不如直接把scala拿过来就完了

n
niuheliang

OOP和C之间的差别是世界观。C的世界是平的,等价于只有一个(全局)类/对象。对大系统而言,C代码难以维护。

从刷题和算法而言,用OOP就是找抽。但真实编程里没有那么简单的情况。算法的代码
要放到具体的类下面。

【 在 normal (normal) 的大作中提到: 】
: OOP不是必需的。写算法C就够了,Knuth就用C, 从不用C++.
: programs = data structures + algorithms. still true today.
: Unix就是用C写的,应用程序也可以。实际上,大部分真正的核心应用程序
: 包括数据库和网络库都是存粹C写的。

h
helpme

现在都functional programming,lambda啥的了,OOP尤其是design patterns早就out
了。

【 在 zongxiong (棕熊) 的大作中提到: 】
: 刷那些leetcode可能平时用不到,但OO的技能难道不是必备的吗?我念CS之前就写了很
: 多代码,都是procedural式的,各种错综复杂,写大一点程序,很难拓展。念了CS,学
: 了OOP课程,知道is/has的区别,知道用interface给两个模块之间解绑,知道用
: Factory,Strategy,Builder patterns来让代码更加灵活高效。这些在我现在工作中每
: 天都用。其他stream,lambda expressions, concurrency之类技巧都非常实用,很大
: 程度提高编码效率。
: 我念完CS再看之前写的代码简直不能看。我觉得科班马工和非科班还是有区别的

n
normal

flat is better than nested. 这也是Python的世界观。
premature categorization is second root of all evil.

【 在 niuheliang (别问我是谁) 的大作中提到: 】
: OOP和C之间的差别是世界观。C的世界是平的,等价于只有一个(全局)类/对象。对大
: 系统而言,C代码难以维护。
: 从刷题和算法而言,用OOP就是找抽。但真实编程里没有那么简单的情况。算法的代码
: 要放到具体的类下面。

s
skitidet

是水明的Python面试题把你这位Python大牛炸出来的吗?

【 在 normal (normal) 的大作中提到: 】
: flat is better than nested. 这也是Python的世界观。
: premature categorization is second root of all evil.

n
niuheliang

(You are still) too young, too simple, sometimes naive

CS里也有CP。30年河东、30年河西。我是OOP之前的古人。古诗云:

滚滚长江东逝水,浪花淘尽英雄。是非成败转头空。青山依旧在,几度夕阳红。

白发渔樵江渚上,惯看秋月春风。一壶浊酒喜相逢。古今多少事,都付笑谈中。

给小年轻们讲讲历史。

注释:CP是Coupling或Couple的缩写,即配对、情侣的意思。 本意是指有恋爱关系的
同人配对,也指对于漫画、小说、电视剧中的角色,粉丝根据自己的喜好进行配对形成的假想情侣。

【 在 normal (normal) 的大作中提到: 】
: flat is better than nested. 这也是Python的世界观。
: premature categorization is second root of all evil.

n
nayinian

我一个野鸡背景的同事code写的跟S一样。完全没有OOP概念,比我反而高两级。。。

n
niuheliang

有啥奇怪的。人家三哥不会写循环照样20万base。现在都还在弯曲某厂没被开。也就一小撮老中每天吹茴香豆有多少种写法。

【 在 nayinian (那一年) 的大作中提到: 】
: 我一个野鸡背景的同事code写的跟S一样。完全没有OOP概念,比我反而高两级。。。

n
nayinian

尼玛我就是天天研究茴香豆有几种写法,外加几种炒法。。。

【 在 niuheliang(别问我是谁) 的大作中提到: 】

: 有啥奇怪的。人家三哥不会写循环照样20万base。现在都还在弯曲某厂没被开。也就一

: 小撮老中每天吹茴香豆有多少种写法。

h
hardpack

leetcode里最有意思的一类题,就是设计+简单实现,比如335 design twitter。

这题点赞最高的“解法”,其实毛病巨多,现实中,上线就死球。

可见大部分刷lc的,没什么实战设计经验。

n
niuheliang

有时间正派斜派武功都学学没坏处。不过大多除了吹牛用不上罢了。娇娃现在还是永远的1.8呢。

每一把锤子都有它的优缺点。不能说我钉木板好用人家钉铁轨的锤子就是傻逼。

【 在 nayinian (那一年) 的大作中提到: 】
: 尼玛我就是天天研究茴香豆有几种写法,外加几种炒法。。。
:
: 有啥奇怪的。人家三哥不会写循环照样20万base。现在都还在弯曲某厂没被开。
: 也就一
:
: 小撮老中每天吹茴香豆有多少种写法。
:

W
WPF

你真是不学无术,开口就是笑话

【 在 niuheliang (别问我是谁) 的大作中提到: 】
: 举例说,玻璃二相性,不就是OO里的方法(波)和属性(粒)嘛。

n
niuheliang

属实。谁拦着你笑了呀。

【 在 WPF (清七对) 的大作中提到: 】
: 你真是不学无术,开口就是笑话

s
sleeper7

早就FP了还OOP
什么design pattern,visitor 什么的 最坑爹, 都是简单事情复杂化,给马公凑工作量的
m
mccoy

科班的也不见得

最大问题是跟不上形势

比如问起新进关于云来,概念还是清晰的,但具体的,啥也不会

就跟前面说的,说起八大菜系jjyy,炒个鸡蛋,还不如本版名媛

我们这里店小,就一Panda Express,没有哲学部,实在供不起这样的大神们
i
iamwq


OOP是用来堆业务逻辑用的,堆业务逻辑的工作比较好找,所以OOP算是挺有用的一门技术。但是要注意,堆业务逻辑的工作,就是那种996,三十五岁就面临被淘汰失业的工
作。

【 在 zongxiong (棕熊) 的大作中提到: 】
: 刷那些leetcode可能平时用不到,但OO的技能难道不是必备的吗?我念CS之前就写了很
: 多代码,都是procedural式的,各种错综复杂,写大一点程序,很难拓展。念了CS,学
: 了OOP课程,知道is/has的区别,知道用interface给两个模块之间解绑,知道用
: Factory,Strategy,Builder patterns来让代码更加灵活高效。这些在我现在工作中每
: 天都用。其他stream,lambda expressions, concurrency之类技巧都非常实用,很大
: 程度提高编码效率。
: 我念完CS再看之前写的代码简直不能看。我觉得科班马工和非科班还是有区别的

m
minquan

我有个问题——

为啥go又取消了类?

只提供数据类型struct?
h
helpme

system programming里面class的意义不大。

【 在 minquan (三民主义) 的大作中提到: 】
: 我有个问题——
: 为啥go又取消了类?
: 只提供数据类型struct?

n
niuheliang

FP在OOP之前就很火。搞些小玩意没问题。

【 在 sleeper7 (海景别墅) 的大作中提到: 】
: 早就FP了还OOP
: 什么design pattern,visitor 什么的 最坑爹, 都是简单事情复杂化,给马公凑工作
: 量的

h
helpme

没觉得,90年代Java的出现让OOP大行其道,FP基本销声匿迹了。

【 在 niuheliang (别问我是谁) 的大作中提到: 】
: FP在OOP之前就很火。搞些小玩意没问题。

n
niuheliang

我说的当然是90年代以前。虽然我(看起来)很年轻,我的CS资历等于小将的祖师爷。

BTW,OOP现在也很火。REST不就是OOP。

【 在 helpme (名虚胖字满肥) 的大作中提到: 】
: 没觉得,90年代Java的出现让OOP大行其道,FP基本销声匿迹了。

z
zongxiong

1. FP正规科班都要学,和学OOP并不是二选一的问题
2. OOP离out还老早,你找个大厂工作的人问下,或者去查查统计数据,工业界远远比
你想象的要保守的多,FP现在也就在学术界比较流行,在工业界开始流行,但离把OOP
赶走还差太远

【 在 helpme (名虚胖字满肥) 的大作中提到: 】
: 现在都functional programming,lambda啥的了,OOP尤其是design patterns早就
out
: 了。

z
zongxiong

你做过大型项目就知道了,design pattern确实是把简单事情复杂化,但对于几万以上行的大项目几乎是唯一解决途径。

【 在 sleeper7 (海景别墅) 的大作中提到: 】
: 早就FP了还OOP
: 什么design pattern,visitor 什么的 最坑爹, 都是简单事情复杂化,给马公凑工作
: 量的

n
niuheliang

属实。用lambda的还很少。永远的Java 1.8。

【 在 zongxiong (棕熊) 的大作中提到: 】
: 1. FP正规科班都要学,和学OOP并不是二选一的问题
: 2. OOP离out还老早,你找个大厂工作的人问下,或者去查查统计数据,工业界远远比
: 你想象的要保守的多,FP现在也就在学术界比较流行,在工业界开始流行,但离把
OOP
: 赶走还差太远
: out