我的外婆是個程序員
我是家里的第三代女程序員:我的外婆是***代程序員,我的媽媽隨著她也選擇成為了程序員,而我延續(xù)了這個傳統(tǒng)。在50年前的蘇聯(lián),外婆開始了她的程序員生涯,下面我會講述這段往事。
1954-1959.高等教育
我的外婆出生在烏克蘭中部的(位于烏克蘭第聶伯河畔的港口城市)。為了得到更好的高等教育,她不得不選擇其它城市。在考察了入學(xué)參考書上的所有大學(xué)、院系和專業(yè)之后,她選擇了基輔塔拉斯·舍甫琴科國立大學(xué)并搬到了基輔生活。那個年代的入學(xué)競爭非常激烈,但由于外婆是高中的優(yōu)秀畢業(yè)生(在蘇聯(lián)國家這被稱作“銀制獎?wù)?rdquo;),因此只做了簡短介紹就通過了入學(xué)考試。
1969年之前,還沒有控制論專業(yè);當(dāng)時,由力學(xué)和數(shù)學(xué)系負(fù)責(zé)培養(yǎng)數(shù)學(xué)和理論物理人才以及后來的程序員。經(jīng)過2年的學(xué)習(xí)之后,學(xué)生可以選擇他們的專業(yè)。我的外婆正好趕上了***屆“計算數(shù)學(xué)”專業(yè)招生。專業(yè)課中包括一些全新的理論課程:程序設(shè)計、模擬和數(shù)字電腦設(shè)計、計算方法(大多數(shù)是求解微分方程和線性代數(shù)問題)等等。參加課程的不僅有學(xué)生,還有烏克蘭蘇維埃社會主義共和國科學(xué)院科學(xué)計算中心的研究員,除了這里一般不會有其它地方教授這方面的知識。
要得到實際的練習(xí)機會更加困難。當(dāng)時的計算機(那時叫“電子計算機”)體積龐大而且非常昂貴,大學(xué)買不起計算機。也就是為什么在學(xué)校里只教授理論,在暑假期間學(xué)生會被派到有計算機的地方實習(xí)。
大學(xué)三年級的暑假,外婆被分配到基輔電工研究所實習(xí),那里有一臺叫做MESM的計算機。當(dāng)然,學(xué)生們不會被分配解決實際問題。事實上,我毫不懷疑MESM的工程師會拒絕讓學(xué)生參與MESM的研制工作。因為在實習(xí)初期,一些富有同情心的學(xué)生看到設(shè)備不夠整潔就將上面的灰塵擦掉了,結(jié)果所有被擦干凈的晶體管都發(fā)生了問題需要重新調(diào)試。接下來學(xué)生們只能做一些練習(xí)任務(wù),包括“游戲開發(fā)” ——一個學(xué)生選擇一款游戲,像是三連棋游戲,從雜志上找一些游戲算法然后編程。接著會把程序放到計算機上運行查看結(jié)果。
大學(xué)四年級的時候,外婆被派到莫斯科國立大學(xué)實習(xí),那里有一臺大學(xué)自己的計算機——Strela。那里分配的任務(wù)比之前要重要一點,但主要還是類似線性代數(shù)計算的教學(xué)課題。
在西方世界發(fā)明了***代高級編程語言Algol和Fortran之后,基輔的計算機界在格羅??路?/a>的課上知道這一成果,但是他們并沒有采用。此時,所有的程序都用特定計算機的機器語言編寫。
譯注:
MESM計算機:歐洲大陸***臺通用可編程電子計算機,由下謝爾蓋·阿列克謝耶維奇列別捷夫領(lǐng)導(dǎo)的科學(xué)家團隊在基輔電工研究所(現(xiàn)烏克蘭)發(fā)明。MESM于1950年開始運作,大約有6000個真空管,功耗25千瓦,可以執(zhí)行大約每分鐘3000操作。
三連棋游戲:兩人輪流在一有九格方盤上劃加字或圓圈, 誰先把三個同一記號排成橫線、直線、斜線, 即是勝者。
Strela計算機(俄語“箭頭”):蘇聯(lián)制造的大型機(mainframe)系列,于1953年開始制造。擁有6200真空管和60000半導(dǎo)體二極管,每秒可執(zhí)行2000次操作,支持浮點運算。
維克多·格羅??路颍簽蹩颂m的計算機先驅(qū),負(fù)責(zé)領(lǐng)導(dǎo)研制出烏克蘭的***臺大型計算機“基輔”(Kiev 1959年),1961年又開發(fā)出了晶體管的通用控制計算機“第聶伯”Dnepr。
1959 – 1965. 烏克蘭蘇維埃社會主義共和國科學(xué)院科學(xué)計算中心
畢業(yè)之后,外婆去了計算中心上班——開始當(dāng)一名工程師,接著晉升為高級工程師,***成為了***工程師。當(dāng)時計算中心大約有300名員工:程序員、技術(shù)員、模擬計算機專家(大多數(shù)人工作使用的事數(shù)字計算機)以及測試人員,其中測試人員負(fù)責(zé)對比對比程序運行結(jié)果和使用Rheinmetalls(德國電動機械計算機)手工計算結(jié)果。
其中一些人忙于設(shè)計新型計算機,其他人(包括外婆)做的事情現(xiàn)在叫做外包。計算中心為公司解決某些需要數(shù)值分析的實際問題,公司代表會為問題給出一個正式的定義,中心的工程師求解問題后進行編程。例如,其中一個任務(wù)就是計算貝塞麥(轉(zhuǎn)爐)煉鋼法的***模式,外婆則關(guān)注解決結(jié)構(gòu)力學(xué)問題。
計算中心自主研發(fā)出一系列計算機——首先是“基輔”(”Kiev”),然后是BESM。在此之前,使用的是機器碼、打孔卡(在此之前使用的是由曝光后的電影膠卷制作的打卡磁帶)以及很多今天從未聽說過的設(shè)備。人們緊張地把成堆的待打孔的卡片運來,這些卡片的主人則會報以狂躁的反應(yīng)。那些對計算機沒有概念的人會接受定期的培訓(xùn),這些培訓(xùn)旨在解釋計算機的基本原理。曾經(jīng)有個人一直重復(fù)問同一個問題,老師在再一次做出解答之后憤怒一觸即發(fā),就在這時那個人大聲抗議道:“不要再解釋我已經(jīng)理解了,但是它”,他平靜地指著嗡嗡作響的機器說,“它理解了嗎?”
計算機資源總是很寶貴的,因此程序員通常要等到很晚才能抓到一些額外的上機時間,然而打孔卡實驗室(人們可以在那里用傳統(tǒng)的機械方式修改他們的卡片)那個時候已經(jīng)關(guān)門了。深夜里他們只能手工修改自己的卡片——將多余的孔裁掉,然后(利用白天打孔剩下的卡片)把新的孔用紙帶補上。技師們反對這種做法 ——雖然可以容許額外打孔,但是粘上去的卡片是非常危險的——這些卡片會掉進輸入設(shè)備損壞機器。這類斗爭,勝利總是會站在弱勢的程序員這邊。
1965 – 1988. 實驗性設(shè)計地區(qū)科學(xué)研究所(RSRIED —— 這不是官方認(rèn)可的縮寫,只在本文使用)
1988 – 1996. 建筑與城市規(guī)劃理論科學(xué)研究所(SRIAUPT —— 同上)
1965年外婆以***專家身份加入了RSIED,后來擔(dān)任***設(shè)計工程師。這個機構(gòu)主要做自己的任務(wù)而不是給企業(yè)做外包,工作的內(nèi)容有公寓和公共建筑設(shè)計、結(jié)構(gòu)化建模方法編程以及設(shè)計任務(wù)自動化(也就是開發(fā)類似AutoCAD的專用繪圖工具)。
有限的上機時間仍然是個問題。一部分上機時間租用的是前文提到的計算中心機器,一部分用的是RSRIED自己的計算機Nairi。這臺機器來自亞美尼亞,它不僅支持機器代碼還支持一種內(nèi)部編程語言——Cyrillic(西里爾字母),但又有所區(qū)別。這種區(qū)別源自下面這件軼事。一組程序?qū)懲瓴⒔?jīng)過調(diào)試以后,就可以發(fā)布使用。程序被匯總出版打印成冊,接下來會依據(jù)這份手冊將程序轉(zhuǎn)換成其它機器語言或者授權(quán)給其它公司內(nèi)部使用。出版這些程序手冊是一件非常重要的事情,所以通常在交付印刷之前他們會非常仔細(xì)地進行校對。有一次,一個對工程師的俄語水品非常不屑且對編程一知半解的人校對一批用 Cyrillic寫成的Nairi程序。校對的結(jié)果,雖然“校正過的”文本沒有語法錯誤,但是這批Nairi程序完全不能運行。
譯注:西里爾字母:源于希臘字母的格拉哥里字母,被斯拉夫民族廣泛采用,因此有時也稱為斯拉夫字母。
程序員通常需要出差——到蘇聯(lián)的各個城市拜訪客戶(確認(rèn)客戶要解決的問題)和去其他國家分享經(jīng)驗。當(dāng)然,大多數(shù)人只愿意在蘇聯(lián)范圍之內(nèi)出差,所有與資本主義國家的交流都在***級別的管制之下。當(dāng)時,去保加利亞、匈牙利和捷克斯洛伐克出差是日常生活的很好的調(diào)劑。
在外人看來,很難說程序員這種職業(yè)有什么特別——外公和外婆的朋友都是程序員或是從事相關(guān)的職業(yè)。女性程序員也沒有特別之處——很多女性從事這項職業(yè),不足為奇。很明顯,“喔,這個女孩會編程”這樣的聲音是在后來才出現(xiàn)的:-)
英文原文:Mariya Mykhailova