互联网之前
Source: Dev.to
记忆没有 WiFi 的世界
想象互联网出现之前的生活是很困难的,尤其是对开发者来说。我们的日子被推送通知、云部署和 Stack Overflow 标签页所塑造。就在不久前,编码——以及整体生活——看起来截然不同:没有在线文档,没有 GitHub 仓库,当然也没有关于 CSS 选择器的表情包。
那么,在互联网把我们全部连接起来之前,开发者的世界是怎样的呢?让我们深入了解这个前 Web 时代的几个关键方面:代码的存放位置、知识的传播方式、协作的样子,以及创意如何在(或因)限制中蓬勃发展。
编码的工作方式
纸上先行
代码手写在纸上。开发者(或有时是他们的助理)在把程序输入终端或送入打孔卡机之前,先在纸上起草程序。
打孔卡
手写的代码被转换成打孔卡——一叠纸板矩形卡片,每张代表一行代码。卡片被送到计算机实验室,结果往往要等上一整夜。
实体软盘
后来,代码通过软盘进行交换。想分享你的程序?把软盘递给别人。没有下载,没有 git clone,只有字面上的交换。
想象一下调试程序,但不是在控制台日志中查看,而是批处理运行后把输出打印在纸上。如果出现拼写错误,你必须修正卡片,重新运行批处理,并等待下一次输出。效率显然不是这场游戏的名字。
学习资源
书籍与手册
任何程序员的“圣经”都是官方手册——厚厚的卷册随手放在身边。如果你没有一本,你会去图书馆查找或向朋友借阅。
用户组
本地聚会很重要。程序员下班后聚在一起交换技巧、分享示例代码,并为 bug 感到沮丧。许多此类小组成为早期技术社区的支柱。
杂志
每月的杂志如 BYTE 或 Dr. Dobb’s Journal 充满了文章、代码清单和新闻。如果你想尝试一个程序,可能需要把它从杂志上逐字符输入。
想象一下,仅凭少量书籍和偶尔的杂志文章去学习一门新编程语言的情景。如果遇到瓶颈,你的选择只有:向本地小组求助,给杂志写信(并等待数月回复),或者硬着头皮自己摸索。
协作
共享代码
团队交换物理磁盘或磁带。没有版本控制——只能靠大家记住更改。
电子邮件(后来)
一段时间里,电子邮件仅限于学术或企业网络。即便如此,发送文件也笨拙且不可靠。
面对面会议
同步的最佳方式是面对面。开发者围在终端前,讨论算法,共同编辑。远程工作几乎不可能。
想象两个不同城市的开发者通过邮寄磁盘来交换最新版本。如果出现问题,他们会通过电话讨论,甚至可能亲自去见面一起调试。每一次协作都很慢,但非常个人化。
创意与约束
优化代码
内存和存储非常昂贵。开发者必须编写精简且巧妙的代码。循环展开或位操作等技巧是日常实践。
自制解决方案
需要工具吗?自己动手打造。程序员经常自行编写实用程序、调试器,甚至游戏,并与本地小组分享。
社区共享
早期软件自由流通。开源精神正是在这里萌芽,即使当时没有正式的许可证。
假设你想制作一款游戏。面对有限的文档和硬件,你自行发明图形例程,压榨每一个字节,并在本地用户组分享成果。反馈循环虽然较慢,却别具一格且令人满足。
现代福利 vs. 传统优势
| 现代福利 | 传统优势 |
|---|---|
| 来自论坛和文档的即时答案 | 无干扰的深度专注 |
| 轻松的代码共享与协作 | 强大的本地社区 |
| 版本控制和备份 | 足智多谋与创造力 |
结论
互联网带来了速度、便利和民主化的访问。今天的开发者可以比以往更快地学习、构建和部署。但有些东西被抛在了后面:实体代码的触感满足、面对面的友情以及源于稀缺的创造性需求。
在互联网出现之前,开发者是探索者,而不仅仅是消费者。每修复一个错误、每交换一个程序、每参加一次聚会都是一次冒险。我们通过网络获得了速度和规模,但失去了一些早期编程所定义的亲密感和足智多谋。
也许下次当你因构建缓慢或棘手的错误而感到沮丧时,停下来欣赏我们走了多远——以及昨天的挑战激发了多少创造力。互联网改变了一切,但发现的精神是永恒的。