写点什么

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:359518
用户头像
小智 让所有人认同的文字称不上表达

发布了 410 篇内容, 共 410.5 次阅读, 收获喜欢 1986 次。

关注

评论

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

Matlab常用图像处理命令108例(二)

timerring

图像处理

将老人拉出无声的世界,AI是怎么做的?

脑极体

AI医疗

强强联合:Neovim+ChatGPT | 社区征文

SkyFire

ChatGPT neovim

统一观测丨使用 Prometheus 监控 E-MapReduce,我们该关注哪些指标?

阿里巴巴中间件

阿里云 云原生

架构实战 8 - 消息队列MySql表格设计

架构实战营 「架构实战营」

JavaScript异步编程的深入理解,使用回调函数实现异步编程

兴科Sinco

JavaScript 前端 前端开发 异步编程

从混乱到完备:我的研发流程之路

SkyFire

研发流程

初识大热的ChatGPT的几点思考|社区征文

穿过生命散发芬芳

ChatGPT

订单超时怎么处理?我们用这种方案

阿里巴巴中间件

阿里云 云原生

阿里云消息队列 Kafka 生态集成的实践与探索

阿里巴巴中间件

kafka 阿里云 云原生 消息队列

一天吃透Git面试八股文

程序员大彬

git 面试

大型供应链物流企业的数字化转型方法论

明道云

架构训练营-模块9秒杀系统

张Dave

AutoCompleteTextView的基本使用

芯动大师

android 控件 AutoCompleteTextView

经验分享:高德地图如何短时间快速完成春节出行备战工作?

阿里巴巴中间件

阿里云 云原生 函数计算

LeSS敏捷框架高效生产力实践

俞凡

敏捷开发 大厂实践

国内AGV调度系统到底是什么水平?

申扬科技

调度系统 AGV

前端学习路径

阡陌r

极氪汽车 APP 系统云原生架构转型实践

阿里巴巴中间件

阿里云 云原生

Kubernetes容器状态探测的艺术

俞凡

Kubernetes 云原生

Orika JavaBean映射工具使用

京东科技开发者

JAVA开发 京东云 JavaBean 企业号 3 月 PK 榜

28岁小公司程序员,无车无房不敢结婚,要不要转行?

程序员晚枫

程序员 收入

巧用GenericObjectPool创建自定义对象池

京东科技开发者

京东云 API 编排 对象池 京东物流 企业号 3 月 PK 榜

工作一年,我重新理解了《重构》

阿里巴巴中间件

阿里云 云原生 重构

前端学习

阡陌r

在前端领域摸爬滚打7年,我终于掌握了这些沉淀技巧

小鑫同学

使用OpenAI接口释放ChatGPT API 的力量

devpoint

React nextjs ChatGPT

如何设计一个优秀的 Go Web 项目目录结构

江湖十年

Go 设计 后端 项目 Web Service

【分布式技术专题】「分布式技术架构」一文带你厘清分布式事务协议及分布式一致性协议的算法原理和核心流程机制(上篇)

码界西柚

分布式 2PC 3PC 原理分析 分布式协议

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