前段时间, 人类登月 50 周年, 我们推送阿波罗飞船制导软件的负责人 Margaret Hamilton 的文章, 她是上世纪六七十年代的先锋人物.
image
此外, 我们还在微博发了另外一个阿波罗计划女程序员的故事, 母女两代都是程序员.
(有人误解成 Lin Clark 的妈妈是 Margaret, 其实不是)
在 Reddit/programming 看见到之前的一篇热文, 看标题的第一眼, 我以为又是和阿波罗计划相关的故事.
image
打开后发现, 虽然不像阿波罗计划故事那样伟大, 但还也是一个两代都是程序员的故事. 那个时代, 大学里都没有编程课, 我们可以从中了解到当年第一批程序员是怎么样学习和工作流程......
原作者 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 年开始编程培训. 我们是两个女生和两个男生.
image
(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, 开始了我的第一个实践项目. 我们四个人做了一个约会程序, 你可以输入男性和女性的特征, 然后用我们自己发明的算法计算匹配, 然后我们开始编写项目代码!
后来我学了更多的课程, 比如汇编. 我们有一位主管在工作中帮助我们.
image
(我画流程图的模板)
你的工作怎么样?
我们先画流程图, 然后用铅笔写代码. 然后把代码交给打孔机, 代码将被打孔到打孔卡上. 打孔卡有 80 列, 其中 72 列用于代码, 8 列用于排序, 所以每一行代码最多可以有 72 个字符宽.
(程序员的那些事 注: 打孔卡有 80 列, 这个 80 是不是很熟悉呢?[图片上传失败...(image-24c627-1583198215516)]
现在有些编程规范中, 仍然在强调每行代码不要 80 个字符.)
你必须把代码写清楚, 这样操作打孔机的女性才能读懂. 在 SJ 工作了几年之后, 我们找到了几个专门负责读取我们代码的人, 他们真是帮了大忙. 他们主要会打数据卡: 来自 SJ 的时间报告, 每节火车车厢行驶了多远等等. 打孔机看起来像一台普通的打字机, 可以在卡片上打孔. 在每一列上面, 它还将以明文输入字母.
image
(IBM 的打孔卡)
我们也曾经在打孔卡上放蛋糕, 所以打孔卡的用途很广的.
刚开始的时候, 程序很小, 但后来可能变成几米长的卡片盒. 每一行代码都变成了一张打孔卡. 每一行和每一张卡片有一条指令. 所以打孔机会把程序 (成千上万张卡片) 还给我们.
我们还必须创建 "控制卡", 由它来决定某个穿孔卡是要编译还是要执行, 以及它是什么语言等等. 控制卡有一个单独的颜色. 第一张卡片是一张工作卡, 上面有我的名字, 所以打孔机操作员知道该把东西还给谁.
我们把打孔卡盒放在一张特殊的桌子上. 操作员穿着白大褂来了, 拿着盒子去运行程序.
有时候, 我们每天只有一次运行程序的机会, 因为我们程序员在机器大厅中的优先级最低.<mpchecktext style="margin: 0px; padding: 0px; max-width: 100%; box-sizing: border-box !important; word-wrap: break-word !important;">[图片上传失败...(image-ee8b46-1583198215505)]</mpchecktext> 所以我们不得不同时做几个项目, 以保持忙碌, 不至于闲着.
最后, 这些卡片连同 "睡衣纸" 一起送还, 其中包含错误代码和行号.
image
(Pajama paper / 睡衣纸)
我们有机会打几个孔, 这样我们就可以自己做一些小的修正.
然后我们必须创建测试文件, 看看程序是否产生了预期的结果. 如果没有, 你就会坐下来做 "桌面测试"(用笔和纸思考), 试着想想 "到底出了什么问题?" 因此, 要使程序正确运行, 可能需要相当长的时间.
我们有几台机器. 我们从一开始就有 IBM 360 大型机, 还有一些更老的机器. 后来我们得到了 IBM 370.
在 70 年代末, 公司有了 Alfaskop 终端机, 但我们没有个人的终端机, 而是共用一个终端机室. 如果我们想要对程序进行更改时, 不得不争用终端机的时间. 程序会在屏幕上出现, 我们可以修改. 在 1979 年离开 SJ 之前, 我从未拥有过自己的终端机.
image
Alfaskop 3700
说说你的同事
SJ 的计算机部门大约有 40 名程序员和系统工程师. 我所有的同事都像我一样, 在公司内部接受培训, 只有少数例外: 有几个和我年龄相仿的人参加了我之前提到的索尔纳为期 6 个月的课程. 但除此之外, 没有其他的方法来学习编程 -- 因为这是一个全新的职业! 有些同事曾经是司机! 大多数人甚至没有高中文凭.
系统工程师的工作主要与规格, 程序的输入和输出等有关. 作为程序员, 我们是问题的解决者, 我们制作流程图并找出解决问题的方法.
在机器大厅里大约有 10 名机器操作员. 他们穿着白大褂, 处理磁带存储, 磁盘和打孔卡. 我们很少被允许进入机器大厅的内室. 入口处有一个 "关门" 的牌子.
机器大厅很大. 早期的机器 (IBM 1400) 占地约 10~20 m², 但后来的机器是小冰箱那样的体积.
打孔卡部门由 50 名年轻女性组成. 如果 SJ 其他部门想拜访计算机部门, 最有趣的肯定是打孔卡部门, 因为在 SJ 的大多数人是男性咯!
在我们 40 名程序员中, 只有 5~6 个女性. 我是这群年轻人中的一员, 但大多数程序员都比我大 10 岁左右(我出生于 1947 年). 在 70 年代末, 我们招了一些新员工, 他们接受了为期 12 个月的培训.
你做了什么?
1969 年春天, SJ 在线预订服务推出了, 24/7 运行时间. 它在当时非常先进, 完全是用汇编程序编写的. 这是 SJ 非常出色的一点, 在瑞典没有其他公司能和我们相提并论. 我很幸运能在这样一家敢于冒险的公司接受教育!
我们创建程序, 一旦完成并经过测试, 就把交给别人. 其他人负责维护, 我们负责编写新的程序! 主要是收集关于铁路运营的统计数据(例如工资单), 然后这些程序将定期运行(例如每个月).
1979 年, 在 SJ 工作了十年之后, 我跳槽去了银行部门工作.
大家在入门学习前端的过程当中有遇见任何关于学习, 行业方面的问题, 都可以申请加入我的前端学习扣扣裙, 缺乏相关的基础教程也可以直接来找我要, 我这里整理了 - 套最新的前端基础教程, 学习前端的这个过程当中我也收集了很多前端学习手册, 面试题, 开发工具, PDF 文档书籍教程, 可以直接分享给你们.
.PNG
资料. jpg
需要的评论或者留言
来源: http://www.jianshu.com/p/27d10558d1c2