隔行如隔山

本文地址: https://blog.hoppinglife.com/?p=2

一般来说,要让程序能运行,除了你自己的代码之外,要有很多『现成的代码』来节省你的工作量,也就是所谓的『标准库』。可是光有代码还不够,我们还需要把接近英语的高级语言『编译』成机器语言的编译器,把一个大程序不同的部分『啮合』在一起的连接器。到了运行时,操作系统要分配有限的CPU和内存来处理不同程序和设备的请求,具体的指令要被CPU『解码分析』然后分配到『流水线』上执行。还有更多的细节,这里从略。

项目大了,编译的时间就会很长,于是偶尔会想,我在多大程度上,能够理解我所写下的几行代码在一台计算机上是怎么运行的呢?

『库』的部分,我大概知道该怎么写,但是真让我写,一定会『漏洞百出』且『效率极低』。至于其他的部分,编译器、操作系统和CPU的工作原理都是计算机专业最重要的核心课程。可是对于不负责设计这些的我来说,这些部分太复杂太庞大,只能了解一点点皮毛而已。更不要说集成电路如何实现这些功能,或者是如何构成集成电路——那是硬件工程师的工作了。

事实上,大多数时候,计算机对我来说就是一个『可以运行高级语言代码的黑盒子』。至于『进程调度』,『寄存器分配』,『中断处理』——我一点都不关心。这样的例子不难举:对于很多人来说,数学和物理,也只是『拿结论来用』的黑盒子。

从工业革命到如今不过数百年,现代文明已经发展到这样一个程度:全才不复存在,事实上,我们不仅无法理解别人的专长,甚至连自己的领域内的成果,也往往只能了解一个有限的梗概了。

这当然不是坏事。但是当我们享受这种『无需牵扯细节』的好处的时候,也很容易忘记,今天拿出手机就可以顺畅的让鸟撞上管子或者是看到心仪妹子的照片,蕴含着多少次的计算与多少距离的信息传递,而为了让这些计算和连接能力唾手可得,整个行业在50年间经历了多少次技术革新。

每次的性能提升,都意味着无数次的改动CPU的设计,意味着通过提高制造工艺来压榨出最后一点性能,意味着重写编译器的无数代码,意味着无数人的不分昼夜的努力工作。而对于一个外行人来说,说不定他会觉得『今年性能只增长了10%啊,比去年也没有很厉害嘛』。

这就是『专业』的含义。它意味着不同的知识架构,意味着不同的工作实践,意味着不同的能力偏重。是的,从某种意义上来说,理工科学生的『人文素养』就是比不上人文类专业的学生;文科生的『科学素养』也很难比得过理科生:这本来就是知识体系和教育背景决定的。或许有例外,但是以今天知识体系的复杂和庞大,就算有例外也很有限。而承认我们在知识结构和经验上和专业人士存在差距,尊重和信任专业人士,『让专业的人,做专业的事』是现代社会得以继续运转和创造财富的基础之一。

可是很遗憾,面对争议,往往揣测流言和廉价的质疑大行其道,仿佛专业分析遍地可见,真正的专业意见却湮没无闻——因为简单的图景和阴谋论永远受欢迎,而复杂的专业分析往往没有那么『爽』和『顺』。也因为,人人都喜欢参与感,喜欢『这些人忽悠不了我』的感觉。

可是如果一切以『常识』和好恶来做出判断,到底我们接近的是真相,还是想象呢?

隔行如隔山。

发表评论

您的电子邮箱地址不会被公开。 必填项已用*标注

此站点使用Akismet来减少垃圾评论。了解我们如何处理您的评论数据