找回密码
立即注册
搜索
热搜: Java Python Linux Go
发回帖 发新帖

2161

积分

0

好友

303

主题
发表于 前天 21:39 | 查看: 2| 回复: 0

在计算机诞生之初,互联网、IDE、丰富的在线文档乃至Google和Stack Overflow都还不存在。那时的程序员,究竟是如何进行编程的呢?

前几天,恰好读到国外一位开发者分享的有趣文章,详细讲解了这个问题。以下内容经过编译和整理,让我们一同回顾那个充满硬核气息的编程年代。

关于“上古时期”的程序员如何编程,我想我得从头说起。当我开始接触编程时,使用的“计算机”是这样的:

早期的计算机控制面板

没错,你没有看错。那时的计算机没有键盘,也没有鼠标。你能看到的只有一堆开关和指示灯。那么,如何知道该打开或关闭哪些开关?它们的含义又是什么?你需要参考这样一本书:

8080/8085汇编语言编程书籍封面

你可能会问,没有键盘和鼠标,程序写在哪里呢?答案是需要一些最朴素的介质:

手写代码用的纸笔

当你想用代码解决某个问题时,必须手写汇编指令,然后纯手工在内存中为数据和代码分配位置——这叫做人工寻址。而且,你的内存可能只有1024字节。这一切在现代程序员看来,简直是天方夜谭。

这还不算完。写好的代码还需要手动转换为十六进制,检查无误后,再通过面板上的开关输入到设备中运行。

那个时期根本没有像现代硬盘这样的持久存储设备。当然,除了纸。每次运行程序,你都需要手工输入一遍。注意,是每一次。不过,这个纯手工时期很快过去了,纸带的时代到来了。

打孔纸带与打字机

这东西噪声很大,也不可靠,但比起每次纯手工输入,已经是巨大的进步。那时,打印机和键盘还没什么用武之地。后来,我自己制作了一个IO卡,接上了这个小东西:

用于存储程序的磁带随身听

可以用磁带来加载和保存程序了,速度高达每秒110比特,简直是“神速”!当然,这个过程依然相当痛苦。

后来,BASIC语言的出现让编写真正的程序成为可能,磁带开始真正用于存储程序。在大学里,你开始能见到这些东西:

老式个人电脑主机与键盘

以及很多的这个:

打孔卡片与制卡工具

当然,还有堆成山的这些书:

早期的编程与调试技术书籍

需要持久保存的程序开始存放在装满打孔卡片的盒子里。这一时期,你依然不能直接在机器上写代码或调试。调试代码需要“人肉Debug”——在你的大脑里模拟运行代码,而不是在计算机中。从修改一行代码到看到运行结果,时间是以小时为单位计算的。

所需的资料也多得惊人。某个计算中心有一整间屋子,用来存放关于计算机系统方方面面的手册,从地板堆到了天花板。我个人就有60多本书,涵盖多种编程语言的实现细节、操作系统原理以及课程所需的教科书。

那个时代根本没有现代的在线社区。最接近Stack Overflow的体验,就是跑到办公室的公共区域,对所有人喊一声:“谁知道某某某是什么意思?”,然后内心祈祷不会有人因为这个“简单”的问题而嘲笑你。

之后,这个东西出现了:

运行文本界面的复古CRT电脑

而且它能连接到……嗯,一些由开关组成的设备(注:此处原文图片为模拟合成器,可能是一种幽默或比喻):

模拟合成器面板

更棒的是,这堆设备上运行着:

1984年介绍UNIX系统的AT&T技术期刊封面

是的,运行着UNIX!

现在,你可以把程序保存在计算机上了。写代码时能在屏幕上实时看到,还能在计算机上实时编译和测试——是 实!时!的! 这简直就是程序员的天堂,难怪那个时期我写了那么多的代码。

之后,“互联网”出现了——好吧,还不是现在的互联网,而是USENET。你可以在新闻组或者ARPAnet的邮件列表里提问。当然,你依然会暗自期待没人嘲笑你的“蠢问题”。此时,可能会有些来自MIT、CMU或Berkeley的家伙来回答你。

这之后,真正的计算机革命开始了。

回顾这段历史,更能体会到开发工具与社区的演进如何深刻地塑造了编程本身。这些有趣的往事,也常是云栈社区里开发者们津津乐道的话题。




上一篇:深入理解 C++ 多线程:Lock-Free 与 Wait-Free 编程实践
下一篇:缓存一致性详解:从MESI协议到多核编程与性能优化实践
您需要登录后才可以回帖 登录 | 立即注册

手机版|小黑屋|网站地图|云栈社区 ( 苏ICP备2022046150号-2 )

GMT+8, 2026-1-12 01:29 , Processed in 0.202068 second(s), 39 queries , Gzip On.

Powered by Discuz! X3.5

© 2025-2025 云栈社区.

快速回复 返回顶部 返回列表