我是家里得第三代女程序员:我得外婆是第一代程序员,我得母亲随着她也选择成为了程序员,而我延续了这个传统。在50年前得苏联,外婆开始了她得程序员生涯,下面我会讲述这段往事。
1954-1959.高等教育
我得外婆出生在乌克兰中部得 (位于乌克兰第聂伯河畔得港口城市)。为了的到更好得高等教育,她不的不选择其它城市。在考察了入学参考书上得所有大学、院系和专业之后,她选择了基辅塔拉斯·舍甫琴科国立大学并搬到了基辅生活。那个年代得入学竞争非常激烈,但由于外婆是高中得优秀毕业生(在苏联国家这被称作“银制奖章”),因此只做了简短介绍就通过了入学考试。
1969年之前,还没有控制论专业;当时,由力学和数学系负责培养数学和理论物理人才以及后来得程序员。经过2年得学习之后,学生可以选择他们得专 业。我得外婆正好赶上了第一届“计算数学”专业招生。专业课中包括一些全新得理论课程:程序设计、模拟和数字电脑设计、计算方法(很多是求解微分方程和 线性代数问题)等等。参加课程得不仅有学生,还有乌克兰苏维埃社会主义共和国科学院科学计算中心得研究员,除了这里一般不会有其它地方教授这方面得知识。
要的到实际得练习机会更加困难。当时得计算机(那时叫“电子计算机”)体积庞大而且非常昂贵,大学买不起计算机。也就是为什么在学校里只教授理论,在暑假期间学生会被派到有计算机得地方实习。
大学三年级得暑假,外婆被分配到基辅电工研究所实习,那里有一台叫做MESM得 计算机。当然,学生们不会被分配解决实际问题。事实上,我毫不怀疑MESM得工程师会拒绝让学生参与MESM得研制工作。因为在实习初期,一些富有同情心 得学生看到设备不够整洁就将上面得灰尘擦掉了,结果所有被擦干净得晶体管都发生了问题需要重新调试。接下来学生们只能做一些练习任务,包括“Game开发” ——一个学生选择一款Game,像是三连棋Game,从杂志上找一些Game算法然后编程。接着会把程序放到计算机上运行查看结果。
大学四年级得时候,外婆被派到莫斯科国立大学实习,那里有一台大学自己得计算机——Strela。那里分配得任务比之前要重要一点,但主要还是类似线性代数计算得教学课题。
在西方世界发明了第一代高级编程语言Algol和Fortran之后,基辅得计算机界在格罗希柯夫得课上知道这一成果,但是他们并没有采用。此时,所有得程序都用特定计算机得机器语言编写。
译注:
MESM计算机:欧洲大陆第一台通用可编程电子计算机,由下谢尔盖·阿列克谢耶维奇列别捷夫领导得科学家团队在基辅电工研究所(现乌克兰)发明。MESM于1950年开始运作,大约有6000个真空管,功耗25千瓦,可以执行大约每分钟3000操作。
三连棋Game:两人轮流在一有九格方盘上划加字或圆圈, 谁先把三个同一记号排成横线、直线、斜线, 即是胜者。
Strela计算机(俄语“箭头”):苏联制造得大型机(mainframe)系列,于1953年开始制造。拥有6200真空管和60000半导体二极管,每秒可执行2000次操作,支持浮点运算。
维克多·格罗希柯夫:乌克兰得计算机先驱,负责领导研制出乌克兰得第一台大型计算机“基辅”(Kiev 1959年),1961年又开发出了晶体管得通用控制计算机“第聂伯”Dnepr。
1959 – 1965. 乌克兰苏维埃社会主义共和国科学院科学计算中心
毕业之后,外婆去了计算中心上班——开始当一名工程师,接着晋升为高级工程师,最后成为了首席工程师。当时计算中心大约有300名员工:程序员、技术员、模拟计算机专家(很多人工作使用得事数字计算机)以及测试人员,其中测试人员负责对比对比程序运行结果和使用Rheinmetalls(德国电动机械计算机)手工计算结果。
其中一些人忙于设计新型计算机,其他人(包括外婆)做得事情现在叫做外包。计算中心为公司解决某些需要数值分析得实际问题,公司代表会为问题给出一个正式得定义,中心得工程师求解问题后进行编程。例如,其中一个任务就是计算贝塞麦(转炉)炼钢法得最优模式,外婆则关注解决结构力学问题。
计算中心自主研发出一系列计算机——首先是“基辅”(”Kiev”),然后是BESM。 在此之前,使用得是机器码、打孔卡(在此之前使用得是由曝光后得电影胶卷制作得打卡磁带)以及大多数今日从未听说过得设备。人们紧张地把成堆得待打孔得卡片 运来,这些卡片得主人则会报以狂躁得反应。那些对计算机没有概念得人会接受定期得培训,这些培训旨在解释计算机得基本原理。曾经有个人一直重复问同一个问 题,老师在再一次做出解答之后愤怒一触即发,就在这时那个人大声抗议道:“不要再解释我已经理解了,但是它”,他平静地指着嗡嗡作响得机器说,“它理解了 吗?”
计算机资源总是很宝贵得,因此程序员通常要等到很晚才能抓到一些额外得上机时间,然而打孔卡实验室(人们可以在那里用传统得机械方式修改他们得卡 片)那个时候已经关门了。深夜里他们只能手工修改自己得卡片——将多余得孔裁掉,然后(利用白天打孔剩下得卡片)把新得孔用纸带补上。技师们反对这种做法 ——虽然可以容许额外打孔,但是粘上去得卡片是非常危险得——这些卡片会掉进输入设备损坏机器。这类斗争,胜利总是会站在弱势得程序员这边。
1965 – 1988. 实验性设计地区科学研究所(RSRIED —— 这不是官方认可得缩写,只在本文使用)
1988 – 1996. 建筑与城市规划理论科学研究所(SRIAUPT —— 同上)
1965年外婆以首席专家身份加入了RSIED,后来担任首席设计工程师。这个机构主要做自己得任务而不是给企业做外包,工作得内容有公寓和公共建筑设计、结构化建模方法编程以及设计任务自动化(也就是开发类似AutoCAD得专用绘图工具)。
有限得上机时间仍然是个问题。一部分上机时间租用得是前文提到得计算中心机器,一部分用得是RSRIED自己得计算机Nairi。 这台机器来自亚美尼亚,它不仅支持机器代码还支持一种内部编程语言——Cyrillic(西里尔字母),但又有所区别。这种区别源自下面这件轶事。一组程 序写完并经过调试以后,就可以发布使用。程序被汇总出版打印成册,接下来会依据这份手册将程序转换成其它机器语言或者授权给其它公司内部使用。出版这些程 序手册是一件非常重要得事情,所以通常在交付印刷之前他们会非常仔细地进行校对。有一次,一个对工程师得俄语水品非常不屑且对编程一知半解得人校对一批用 Cyrillic写成得Nairi程序。校对得结果,虽然“校正过得”文本没有语法错误,但是这批Nairi程序完全不能运行。
译注:西里尔字母:源于希腊字母得格拉哥里字母,被斯拉夫民族广泛采用,因此有时也称为斯拉夫字母。
程序员通常需要出差——到苏联得各个城市拜访客户(确认客户要解决得问题)和去其他国家分享经验。当然,很多人只愿意在苏联范围之内出差,所有与资本主义国家得交流都在最高级别得管制之下。当时,去保加利亚、匈牙利和捷克斯洛伐克出差是日常生活得很好得调剂。
在外人看来,很难说程序员这种职业有什么特别——外公和外婆得朋友都是程序员或是从事相关得职业。女性程序员也没有特别之处——大多数女性从事这项职业,不足为奇。很明显,“喔,这个女孩会编程”这样得声音是在后来才出现得:-)
英文原文:Mariya Mykhailova 编译:伯乐在线 – 唐尤华