从社会分工谈编程语言发展

2018-03-26 12:04:46 +08:00
 wangbenjun5

马克思曰:“经济越发达,社会分工越细”

在富士康,一个简单的数据线大概要经过 20 多道工序,由不同的人负责不同的部分。放到宏观来看,小公司的员工一个人身兼多职,要写前端,还要写后台,甚至运维也是他干,但是大公司呢,大部分人都是螺丝钉,一个人只负责一小块,是不是和富士康流水线上的工人差不多?

从编程语言这块来看,我一个写 html+css+js 的不必了解你操作系统原理吧?更没必要去了解 CPU 中断机制吧?就如普通工厂组装汽车的工厂,他需要懂发动机原理吗?很多计算机的底层知识已经超越了普通开发者的知识范畴,想把这些弄的清清楚楚很难,虽然说计算机才发展了几十年而已!那 100 年后呢?一个人的知识储备是有限的。

比如说某些计算机科研机构,他们大部分人不会去写 js,但是我肯定他们每天都在研究计算机底层,想着怎么优化 CPU 设计,优化算法以提供性能。

这种分层分工在计算机网络的设计上体现的非常明显,设计者把计算机网络分为 7 层,对于大部分应用开发者来说,只需要了解应用层协议基本上就够用了,你有必要去搞明白数据链路层怎么传输数据吗?

9791 次点击
所在节点    程序员
101 条回复
jinsongzhao
2018-03-26 14:29:54 +08:00
因为人的精力和脑力有限,所以需要社会分工才能做出足够大的工程。
因为需要要降低人力成本,所以需要对生产流程分工,这样可以使用廉价劳动者。
工程和流水线是不同的概念,谈完社会分工和编程,你又能改变什么呢?回去写好你的代码吧。;-D
xwhxbg
2018-03-26 14:58:01 +08:00
一个个搬砖的还真把自己当工程师了。。。
是的,软件工程师是要懂各种底层原理,但是你们写个增删改查,业务逻辑也说自己是工程师,怕不是有点膨胀

况且你又不是要去写个操作系统,就是人家封装好的 API 去调几下,干嘛要懂原理?
人家封装好就是不给你暴露细节,结果你到好,还非要去抠细节,说的好像你能修 kernel 的 bug 一样,还不是坐等大神去修

社会分工就是让专业的人做专业的事,专业不是搞底层驱动,看了也就拿来装逼忽悠小白了
loopback
2018-03-26 15:03:26 +08:00
用知乎的说法,“知道了就很爽啊”。
比如看一遍 csapp 又不难是不是。
wangbenjun5
2018-03-26 15:05:30 +08:00
@jadec0der 好吧,你说的对,你大学深入了解计算机操作系统了,完了毕业呢?你去找工作设计操作系统还是设计 CPU ?
zachguo
2018-03-26 15:08:01 +08:00
趋势就是愈发抽象、高层,各行各业都是。

下海工作的其实都是开挖掘机的,不是设计挖掘机的,你光会开的话也够了。有些在技校里学过挖掘机是怎么造的,所以机器出小毛病时可以自己捣鼓捣鼓,有点优越感罢了。
jadec0der
2018-03-26 15:25:22 +08:00
@wangbenjun5 写 Java 后端啊,我一直说的就是写代码也要懂操作系统啊,为什么你老是觉得只有写操作系统的人才需要懂操作系统呢?

我去年给一个十几个服务,一百多台机器的小系统做优化,把峰值 QPS 提高了十倍左右,你觉得不需要懂操作系统,也不需要懂网络?来试试?

你这个阅读理解能力…我现在连你为什么考不上大学都知道了
echaos
2018-03-26 15:32:10 +08:00
那掌握所有技能的是不是可以成为资本主义大佬
HongJay
2018-03-26 15:32:19 +08:00
@jadec0der 兄弟怼的有水平啊
soralley
2018-03-26 15:35:29 +08:00
题主有点傻,知识很难定义知道或者不知道的,看程度罢了。程序员不管哪种,了解一些硬件,操作系统相关的概念还是很好的,先不说有没有用,不学这个那你时间都干嘛去了。
codermagefox
2018-03-26 15:37:45 +08:00
chenguoyu
2018-03-26 15:38:22 +08:00
看了上面的回复,总结下。
你如果有颗成为大神的心就去学原理,如果只想成为码农就不必学。不过你觉得流水线能干一辈子?
ecnelises
2018-03-26 15:39:39 +08:00
在网上搜一下关于 Web 系统缓存机制设计的文章,再回头找一本计算机体系结构的教材看看 Cache 的章节。更遑论前端界走过的路和若干年前 GUI 开发界发展历程的一致。

历史总是惊人地相似。
codermagefox
2018-03-26 15:41:12 +08:00


只发图,不评论
jadec0der
2018-03-26 15:41:49 +08:00
@HongJay 见笑了,开始是不想看新人走弯路,越说戾气越重。说完感觉自己像中学老师,求着学生学习。
owenliang
2018-03-26 15:56:00 +08:00
随着工作的深入,对基础知识的理解程度是有实际意义的。

单纯增删改查一个 PV 几千的站点,的确是很表面的工作技能啊;但是你做一个今日头条和京东试试?
vincenttone
2018-03-26 16:02:22 +08:00
按照经济发展来讲,分工越明细,越容易提高生产效率——这对企业主来讲,的确是有益处的。
但是
如果楼主是工人的话?
lerp
2018-03-26 16:12:43 +08:00
类比医生
nicevar
2018-03-26 16:15:48 +08:00
对于大部分应用开发者来说,只需要了解应用层协议基本上就够用了?楼主你这句话有点扯蛋了,作为一个合格的应用开发者,应该要了解到传输层,否则很蠢,出了问题半天定位不到原因,一直在那瞎猜,我想起原来有一个 android 时间戳导致 https 传输出错问题,一家小公司的几个员工折腾了很长时间都解决不了
baoyexi
2018-03-26 16:25:23 +08:00
@jmc891205 所以很多时候我们只需要了解框架。然后在细分的领域深入研究。其他不熟悉的领域由别人负责,但是出了问题知道去找谁解决。
baoyexi
2018-03-26 16:30:21 +08:00
万一汽车不跑了,我就说是你轮胎的问题,你不了解和你轮胎相关的部分,你怎么怼回去。软件不光是你做出来就行了,你还得跑起来啊。在整个系统中,你依赖的模块,和依赖你的模块,一旦出了问题能够迅速定位。
不过我们也需要安心在流水线上只做轮胎的人,不然怎么提现设计汽车系统人的价值呢

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

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

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

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

© 2021 V2EX