(给
伯乐在线
加星标,看经典文章
)
转自:程序员的那些事
前段时间,人类登月 50 周年,我们推送
阿波罗飞船制导软件的负责人 Margaret Hamilton
的文章,她是上世纪六七十年代的先锋人物。
此外,我们还在微博发了另外一个阿波罗计划女程序员的故事,母女两代都是程序员。
(有人误解成 Lin Clark 的妈妈是 Margaret,其实不是)
今天在 Reddit/programming 看到一篇热文,看标题的第一眼,我以为又是和阿波罗计划相关的故事。
打开后发现,虽然不像阿波罗计划故事那样伟大,但还也是一个两代都是程序员的故事。那个时代,大学里都没有编程课,我们可以从中了解到当年第一批程序员是怎么样学习和工作流程……
原作者 Emil Ernerfeldt 是一个瑞典斯德哥尔摩程序员,他妈妈 Marianne Ernerfeldt 出生于 1947 年,高中没毕业时就想当程序员。该文是 Emil 在 2018 年 12 月采访妈妈所写。
为什么你想当程序员?
大约是 1965~1966 年,我决定成为一名程序员。
我读过一篇文章,上面有一幅流程图,看到我就想“这个适合我”。
1967 年我高中毕业,那时候的大学还没有教编程,但索尔纳有一个为期 6 个月的课程,后来变成了 12 个月的课程。而且我有资格申请学生贷款,于是我就
申请了。
与此同时,瑞典的国有铁路公司 SJ 发布了招聘实习生的广告,提供为期一年的带薪培训项目,你可以学习了解 SJ 运营的所有不同部门。
SJ 有一个计算机部门,所以我也申请了,希望能进。
然而,SJ 的 50 个实习生名额,结果有 700 人申请,所以有一个复杂的筛选过程和各种各样的测试。最终
我进去了!
还要说一句,当 SJ 管理层发现实习生项目手册同时发给了男学生和女学生时,他们非常不高兴!被录取的女性并不多,但我们是少数。
在培训期间,我们参观了 SJ 的所有部门,了解了从火车和铁路到通信工作原理(SJ有自己的电线和电话线)。一年之后,我从实习生转正了,但那是一份无聊的工作。
终于在 1969 年,我听说 SJ 开始了一个内部编程培训项目,所以我申请了。
经过更多的测试,我和另外三个人在 1969 年开始编程培训。
我们是两个女生和两个男生。
(1976 年的 IBM System/370 )
编程培训是怎么样的?
首先,我们参观了 SJ 公司的计算机部门,并拿到了计算机是什么的纲要等材料。
然后我们在 IBM 上课,IBM 在斯德哥尔摩的一栋大楼里有一台“训练机”。
我们班上大概有50~100人,但我们被分开了,每个教室里有 8 个人。
教室前面有 2 个电视屏幕。
老师在另一个房间,
每个老师大概对应 10 个教室,每个教室的人都可以用按钮吸引注意力,然后用麦克风提问。
超现代的!
首先我们学习了一些关于 IBM OS 的知识,然后我们学习了 PL/I,这是 IBM 自己的编程语言。
它是 Cobol 的一个更现代的版本,具有 Cobol 还没有(但以后会有)的特性,比如生成表和查询。
所以 PL/I 在当时是一种更好的编程语言,也更简单。可以使用英语单词编写代码,比如 DO WHILE 等。它是
一个非常好的编程语言!
在瑞典,政府机构处于数据处理的最前沿,
银行和其他机构远远落后。
因此,在 IBM 的课程中,虽然大多数是来自其他机构的人员,但 SJ 处于最前沿。
在学完第一个 IBM 课程之后,我回到了 SJ,开始了我的第一个实践项目。
我们四个人做了一个约会程序,你可以输入男性和女性的特征,然后用我们自己发明的算法计算匹配,然后
我们开始编写项目代码!
后来我学了更多的课程,比如汇编。
我们有一位主管在工作中帮助我们。
(我画流程图的模板)
你的工作怎么样?
我们先画流程图,然后用铅笔写代码。
然后把代码交给打孔机,代码将被打孔到打孔卡上。
打孔卡有 80 列,其中 72 列用于代码,8 列用于排序,所以每一行代码最多可以有 72 个字符宽。
(程序员的那些事 注:打孔卡有 80 列,这个 80 是不是很熟悉呢?
现在有些编程规范中,仍然在强调每行代码不要 80 个字符。)
你必须把代码写清楚,这样操作打孔机的女性才能读懂。
在 SJ 工作了几年之后,我们找到了几个专门负责读取我们代码的人,他们真是帮了大忙。
他们主要会打数据卡:来自 SJ 的时间报告、每节火车车厢行驶了多远等等。
打孔机看起来像一台普通的打字机,可以在卡片上打孔。
在每一列上面,它还将以明文输入字母。