NVIDIA 初创加速计划,免费加速您的创业启动 了解详情
写点什么

1969 年的编程什么样?

  • 2019-11-29
  • 本文字数:2991 字

    阅读完需:约 10 分钟

1969年的编程什么样?

在 1965 到 1966 年间,我决定成为一名程序员。我读过一篇文章,里面有一张流程图的图片,我想“这对我很合适”。1967 年我高中毕业的时候,还没有大学教授编程,但索尔纳有一门为期 6 个月的课程,后来变成了 12 个月,而且还可以申请学生贷款。所以我申请了。

那时为什么想成为一名程序员?

在 1965 到 1966 年间,我决定成为一名程序员。我读过一篇文章,里面有一张流程图的图片,我想“这对我很合适”。1967 年我高中毕业的时候,还没有大学教授编程,但索尔纳有一门为期 6 个月的课程,后来变成了 12 个月,而且还可以申请学生贷款。所以我申请了。


与此同时,SJ(瑞典国有铁路公司,当时是一家垄断企业)发布了一个培训项目的广告,该项目提供为期一年的带薪培训,你可以学习 SJ 运营的所有不同部分。SJ 有一个计算机部门,所以我也申请了 SJ 项目,希望最终能留在那里。


然而,SJ 最终有 700 人申请 50 个职位,所以要经历一个艰难的筛选过程,需要通过各种测试。我进去了!因为我需要工资来买房子,所以我接受了。


顺便说一句,当 SJ 管理层发现培训生项目手册被同时发给了男女学生时,他们非常不高兴!被这个项目录取的女性不多,但我们是少数。


在培训期间,我们参观了 SJ 的所有部门,了解了从火车、铁路到通讯方式的一切(SJ 有自己的电线和电话线!)一年之后,我找到了一份工作,但是很无聊。最后,在 1969 年,我听说 SJ 开始了一个内部的编程培训项目,所以我申请了这个项目。经过更多的测试,我和另外三个人在 1969 年开始了编程培训。我们中有两个女孩和两个男孩。



1976 年的 IBM System/370 参考资料。我在右边写了ÅÄÖ(5B、7B 和 7C),因为瑞典字母不包含在 EBCDIC 中。

那时的培训怎么样?

首先,我们参观了 SJ 的计算机部门,对什么是计算机有了大概的了解。然后,我们到 IBM 上课,IBM 在斯德哥尔摩的一幢大楼里有一台“培训机”。我们一个班大概有 50 到 100 人,但我们被分开了,每个房间 8 个人。我们看着教室前面的两块电视屏幕。在另一个房间的老师和黑板在屏幕上播放。每个老师大概有 10 个教室,每个教室都可以用麦克风提问,用按钮吸引老师注意。超现代!


首先,我们学习了一点 IBM 操作系统,然后我们学习了 PL/I,这是 IBM 自己的编程语言。那是Cobol的一个更现代化的版本,具有 Cobol 当时尚不具备的特性,比如生成表和查询。所以 PL/I 在当时是一种更好的语言,也更简单:你可以使用英语单词、DO WHILE 等编写代码。一个非常好的编程语言!


在瑞典,政府机构处于数据处理的前沿。银行和其他机构远远落在后面。因此,在 IBM 的课程中,大多数是来自其他机构的人员,不过 SJ 走在最前沿。


在第一次上完 IBM 的课程后,我回到了 SJ,开始了我的第一个实践项目。我们四个人做了一个约会程序,你可以输入男性和女性的特征,然后用我们自己发明的算法在他们之间产生一个很好的匹配。在那之后,我们开始编写产品代码!


后来我参加了更多的课程,比如我用同样的方式学习汇编语言。我接受的教育实际上只有这里的一周和那门课,然后我们有了一位可以在工作中帮助我们的主管。



我画流程图的模板,用于可视化数据是如何流动的以及事情发生的顺序。

那时的工作怎么样?

首先,我们会画流程图,然后用铅笔写代码。然后,我们将代码交给打孔部门,代码将被打在穿孔卡上。穿孔卡有 80 个列——72 个用于程序,8 个用于顺序——所以每一行代码最多 72 个字符。


你必须把代码写得很清楚,这样操作打孔机的女性员工就能读懂。在 SJ 工作几年之后,我们有了一个专门阅读我们代码的人,这帮助很大。他们主要打数据卡:来自 SJ 的时间报告、每节火车车厢行驶了多远等等。这台打孔机看起来像普通的打字机,可以在卡片上打孔。在每一列上,它也会打出明文字符。


刚开始的时候,程序很小,但后来可能会装满几米长的卡片盒。每一行代码都变成了一张穿孔卡。每行一条指令。打孔部门将程序(数千张卡)返还给我们。我们还必须创建“控制卡”,其编码包括穿孔卡是否要编译或执行以及它是什么语言等等。控制卡有一个单独的颜色。第一张卡片是工作卡,上面有我的名字,所以他们知道该把东西还给谁。


我们把打孔卡盒放在一张特殊的桌子上。操作员穿着白大褂来,取走盒子然后运行程序。


有时我们每天只有一次运行机会,因为我们程序员在机器大厅中的优先级最低。所以我们不得不同时做几个项目来保持忙碌的状态。


最后,这些卡片连同“睡衣纸(pajama paper)”一起返回,这是一个列表,其中包含错误代码及行号。



睡衣纸


我们有机会使用多台打孔机,这样我们就可以自己进行小的修正。


然后我们必须创建测试文件,看看程序是否产生了预期的结果。如果没有,就坐下来做“桌面测试”(用笔和纸思考),设法找出“到底什么出了问题?”因此,可能需要一段时间才能使程序正确运行。


我们有好几台机器。我们从一开始就有 IBM 360,还有一些更老的机器。后来我们有了 IBM 370。


70 年代末,我们有了终端机。我们从来没有自己的终端机,而是共用一个终端机房。当我们想要修改一个程序时,我们极力争取才能获得使用终端机的时间。程序会在屏幕上闪现,我们可以修改它。我们有黄色和棕色的 Alfaskop 终端机。在 1979 年离开 SJ 之前,我从未拥有过自己的终端机。



Alfaskop 3700

那时有什么挑战?

SJ 的计算机部门大约有 40 名程序员和系统工程师。我所有的同事,和我一样,都是在公司内部接受培训的,只有少数例外:有几个和我年龄相仿的人,参加了我之前提到的在索尔纳为期 6 个月的课程。但是除此之外,没有其他的方法来学习这个——这是一个全新的职业!有些同事曾经是司机!大多数人甚至没有高中文凭。


系统工程师的工作内容主要包括编写说明书、程序的输入和输出等。作为程序员,我们是问题的解决者,我们制作流程图,找出解决问题的方法。


机器大厅里大约有 10 名机器操作员。他们穿着白大褂,处理磁带存储、磁盘及将穿孔卡送入机器。我们很少被允许进入机器大厅的内室。入口有一个“封闭作业”的牌子。机房很大。早期的机器(IBM 1400)占地 10 到 20 平方米,但后来就和台小冰箱那么大了。


打孔部门由 50 名年轻女性组成。如果有来自 SJ 其他部门的任何访问,那么打孔部门总是最让人感兴趣的,因为 SJ 的大多数员工是男性!


在 40 名程序员中,我们有 5 到 6 名女性。我是那群年轻人中的一员,但大多数程序员都比我大 10 岁左右(我出生于 1947 年)。20 世纪 70 年代末,我们招募了一些新员工,他们完成了 12 个月的培训课程。


在我刚入职的时候,我遇到了 Solveig,她在 SJ 计算机部门工作。她告诉我,所有的门都有写着“X 小姐”或“X 夫人”的牌子。但男士的门上没有相应的婚姻状况信息。女士们对这件事非常生气,以至于她们拧下了牌子。所以当我入职的时候,他们只是看着我说:“我猜你也不想要一个小姐/夫人的牌子吧?”“是的,谢谢!”,我说。

那时你都做什么?

1969 年春天——在我入职之前——SJ 推出了网上预订,24x7 运行。那在当时非常先进,完全是用汇编语言编写的。这是 SJ 非常出色的一点——在瑞典没有其他公司能与我们匹敌。我很庆幸能在这样一个开拓型的公司接受教育。


我们创建了这些程序,一旦完成并进行了测试,我们就把它们交给别人。其他人负责维护它们,我们只是编写新的程序!主要是收集操作统计数据(例如工资表),这些程序将定期运行(例如每个月)。


1979 年,在 SJ 工作了 10 年后,我辞职去了银行工作。

英文原文

Programming in 1969


2019-11-29 15:359191
用户头像
小智 让所有人认同的文字称不上表达

发布了 408 篇内容, 共 377.6 次阅读, 收获喜欢 1972 次。

关注

评论

发布
暂无评论
发现更多内容

还在计划转Go么,聊聊程序员的成长

架构精进之路

3月日更 Go 语言

桶排序,计数排序,基数排序

一个大红包

3月日更

如何隐藏融云输入框语音按钮

融云 RongCloud

融云聊天页面长按消息后“翻译”功能的实现方法

融云 RongCloud

集成融云 IMLib 时,如何实现一套类似于 IMKit 的用户信息管理机制

融云 RongCloud

使用融云 IM 点击最近聊天记录时跳转到 @ 自己的消息

融云 RongCloud

Hystrix技术专题-基础配置说明

洛神灬殇

Hystrix

LeetCode题解:221. 最大正方形,动态规划,JavaScript,详细注释

Lee Chen

算法 大前端 LeetCode

如何设置融云用户信息

融云 RongCloud

为融云聊天页面的输入框添加 Placeholder

融云 RongCloud

给融云的输入框上方加个功能按钮,怎么整?

融云 RongCloud

融云自定义消息不显示

融云 RongCloud

30 分钟集成融云 IM 即时通讯

融云 RongCloud

融云 IM SDK 如何插入消息

融云 RongCloud

飞桨框架2.0正式版重磅发布,一次端到端的“基础设施”革新

百度大脑

AI 分布式 框架 #百度#

融云 SDK 如何实现群组操作

融云 RongCloud

如何利用融云 IMLib 来实现一个阅后即焚功能

融云 RongCloud

应对“角色爆炸”,PBAC 真香!

龙归科技

权限控制 管理系统 权限管理

融云 IMKit 音频录制参数

融云 RongCloud

大作业

eva

文档 用例

关于融云 SDK 在使用 p8 证书的坎坷~

融云 RongCloud

Java-技术专题-挖掘陷阱系列(1-10)

洛神灬殇

Java

使用融云 SDK 避坑指南之 iOS13 推送失败

融云 RongCloud

几张图解释明白 Istio!

xcbeyond

Service Mesh istio 3月日更

融云的聊天页面在 iOS14 出现崩溃的解决办法

融云 RongCloud

自定义融云会话列表 cell 选中背景

融云 RongCloud

干货分享——使用融云通讯能力库 IMLib 实现单群聊的阅读回执

融云 RongCloud

融云会话页面刷新不及时问题

融云 RongCloud

作为小白接融云 IM SDK 新路体验~

融云 RongCloud

MMMDeFi智能合约(MDF互助)系统开发方案

薇電13242772558

智能合约 数字货币

唠一唠融云的消息补偿机制

融云 RongCloud

1969年的编程什么样?_文化 & 方法_Emil Ernerfeldt_InfoQ精选文章