在计算机刚被发明的初期,那时还没有互联网,更不用提IDE、丰富的在线文档、Google以及Stack Overflow,那时的程序员是怎样编程的呢?
前几天看恰好看了国外老哥一篇很有意思的文章讲解了这个问题,这里翻译一下,注意,本文略有改动,以下为正文:
关于上古时期程序员编程这个话题我想我得从头开始讲起,当我开始编程时使用的计算机是这样的:
是的,你没有看错,当时的计算机没有键盘也没有鼠标,你能看到的只有一些开关和灯,那么你怎么知道该打开或者关闭哪些开关呢?以及它们的含义是什么?你需要参考这本书:
想要这本书的同学直接后台回复“神器”即可下载pdf版。
你可能会问没有键盘也没有鼠标,那么程序写在哪里呢?很显然你需要一些朴实无华的介质:
当想用代码解决某个问题时,你必须手写汇编代码,然后纯手工在内存中找到存储数据和代码的位置,即人工寻址,而且你的内存只有1024字节,这在现代程序员看来简直不可思议。
这还不算完,写好代码后还需要转为手动转为十六进制,检查无误后输入到这台设备运行。
这一时期根本没有像现代的磁盘一样的持久存储设备,当然,除了纸之外,每次运行程序时你都需要手工输入这个设备,注意,是每一次,不过这个时期很快就过去了,纸带的时代到来了。
这东西噪声很大,也不可靠,但比每次纯手工输入好多了,那时打印机以及键盘还没有什么用,然后我自己制作了一个IO卡,接到了这个小东西上面:
可以用磁带加载以及存储程序,足足每秒有110比特,简直神速,不过这个过程依然很痛苦。
后来BASIC让编写真正的程序成为可能,磁带开始真正的存储程序,在大学里你开始能见到这些东西:
还有很多的这个:
以及很多很多这些书:
需要持久保存的程序开始放在装满打孔卡片的盒子里,这一时期你依然不能在机器上写代码或者调试代码,调试代码需要人肉debug——在你的大脑里运行代码,而不是在计算机中,改一下代码到看到运行结果的时间以小时计算。需要的资料多的惊人,在某计算中心有一整间屋子用来存放关于计算机系统方方面面的资料,从地板堆到了天花板。
我个人则有60多本书,涵盖了一些编程语言的实现细节,还有关于操作系统以及课程所需要的教科书等。
这一时期根本没有现在的在线社区,最接近Stack Overflow的就是跑到办公室的公共空地上对所有人喊一声“谁知道某某某是什么意思”,然后内心期待着没有人会因为这么简单的问题嘲笑你。
之后这个东西出现了:
而且能连接到:
更棒的是,这堆由开关组成的东西上运行着:
是的,运行着Unix!
现在你可以把程序保存在计算机上,当你写代码时可以在屏幕上看到,而且还能在计算机上实时的编译和测试,是实!时!的!,这简直就是程序员的天堂,难怪那时我写了那么多的代码。
之后,“互联网”,好吧还不是现在的这个互联网,而是USENET出现了,你可以在新闻组以及ARPAnet邮件列表里喊一声“谁知道某某某是什么意思”,当然你依然会在内心里期待没有人会因为一个显而易见的问题来嘲笑你,此时会有一些来自MIT(麻省理工)、或者CMU(卡内基梅隆大学)以及Berkeley(伯克利)的家伙回答你的问题。
这之后计算机革命开始了,我的故事也讲完了。