发布在即!企业 AIGC 应用程度测评,3 步定制专属评估报告。抢首批测评权益>>> 了解详情
写点什么

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

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

关注

评论

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

区块链矿机挖矿游戏开发,区块链矿机游戏开发

v16629866266

最最新版钱包tok量化区块链挖矿系统源码

luluhulian

webpack | 进阶用法4:如何进行构建速度和体积分析

梁龙先森

大前端 webpack 28天写作 2月春节不断更

漫话递归与迭代

Justin

算法 方法论 成长 心灵鸡汤 28天写作

从JNOS商业操作系统,看京东零售商业化之路新探索

京东科技开发者

零售 数字化转型

火出圈的Clubhouse,究竟有什么奥秘?

拍乐云Pano

flutter RTC 语音聊天室 社交APP出海 clubhouse

智汇华云 | ArSDN之多集群简介

华云数据

华云数据

KubeEdge@MEC:Kubernetes容器生态与5G的结合

华为云开发者联盟

5G 边缘计算 网络 kubeedge 5G MEC

程序员成长第二篇:如何快速入门

石云升

程序员 28天写作 2月春节不断更

手机里什么APP都没有,一个很无趣的人 | 视频号28天(27)

赵新龙

28天写作

盘点软件开发中那些有趣的边际效应

架构精进之路

认知提升 七日更 28天写作 2月春节不断更

【CSS】css控制鼠标点击事件(pointer-events)

德育处主任

html/css CSS小技巧 28天写作 纯CSS 2月春节不断更

深入理解 ProtoBuf 原理与工程实践(概述)

vivo互联网技术

数据结构 序列化 protobuf

2天完成17TB数据量迁移,华为云数据库是如何做的?

华为云开发者联盟

数据库 mongodb 大数据 智慧地图 地理信息服务

京东扫描平台EOS—JS扫描落地与实践

京东科技开发者

大前端

浅谈OKR工作法

一笑

管理 OKR 28天写作

考前复习必备MySQL数据库(关系型数据库管理系统)

我是哪吒

MySQL 程序员 面试 后端 2月春节不断更

浏览器同源策略,听说过么?

华为云开发者联盟

浏览器 jsonp CORS 同源策略 跨域

【经验分享】如何融合CMMI与企业需求,自定义推进数字化转型

嘉为蓝鲸

DevOps 敏捷 持续交付 CMMI 能力成熟度模型

怎么和小伙伴语音连麦,你造吗?

anyRTC开发者

ios android WebRTC sdk 语音通话

资本市场发展趋势学习笔记

JiangX

28天写作

熬夜肝了个IDEA插件整合程序员常用的工具,总有你能用上的

Silently9527

程序员 IDEA idea插件

GitHub 标星 167k!你要的优质书籍这都有,还开源!

沉默王二

GitHub 开源 电子书

【LeetCode】双指针反转字符串

Albert

算法 LeetCode 2月春节不断更

超好用的文件转换神器!拿走不谢~

白色蜗牛

程序员 软件工具 生产工具

工业互联网的“第一高地”,在哪?

浪潮云

工业互联网

数据中心网络技术新贵:VXLAN与园区网络虚拟化

华为云开发者联盟

网络 数据中心 虚拟化 VXLAN 二层网络

腾讯基于 Flink SQL 的功能扩展与深度优化实践

Apache Flink

flink

Elasticsearch Document 查询内部原理

escray

七日更 28天写作 死磕Elasticsearch 60天通过Elastic认证考试 2月春节不断更

并发队列:ArrayBlockingQueue实际运用场景和原理

叫练

阻塞队列 LinkedBlockingQueue 并发队列 阻塞List ArrayBlockingQueue

你需要的Docker知识点都在这里了。

后台技术汇

28天写作 2月春节不断更

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