於是馮諾又對製表機的數據處理模式進行了調整。
之前製表機被設計成逐列讀取穿孔卡的模式,這種模式下,即便每列的讀取僅需0.1秒時間,80列讀完也要8秒,這還不算卡片傳送所需的時間。馮諾仔細思考後,認爲在實際應用中,每張穿孔卡實際並非所有列都需要做統計或累加操作。
以工資統計爲例,穿孔卡上不可能僅有工資數額的相關數據。相反,更多的列應該用於保存工人的姓名、性別、部門、工種、工號等信息,而姓名區位碼、部門代碼、工種代碼、工號之類的信息是沒有必要做統計的。
因此,現有條件下,每次僅對一項數據進行統計就足夠了,甚至如果某項數據是多位數、分佈在穿孔卡的多列上,每次僅處理一位也是可行的,反正統計結果最後也需要人工再求和。
如此一來,製表機在處理每張卡片時,就僅需讀取卡片上的某一列數字並累加,速度自然大大加快了,而且也更省電。
馮諾又花了兩天簡化改造裝置,終於使製表機的每小時卡片處理能力穩定在3000張以上,這應該能夠滿足元老院的一般性統計計算需求了。美中不足是,如果要計算的某項數據有3位數,就需要過3次機器。從易用性的角度來說還是不夠方便。不過現在馮諾是爲了驗證技術思路,具體到實用化階段還要做更多的改進。
攻克了製表機,實際上大部分機械機構和繼電器控制機構已經研發成功,其它類型的機器不過是更改設計、增減和組合部件而已。在穿孔卡機系統中,重要性僅次於製表機的分類機,就是把製表機上用於控制撥動數盤、實現累加功能的繼電器,改爲分別控制多個送卡機構、把在基準列的不同數字上穿孔的卡片送到不同卡袋。
然而,正當他磨拳擦掌地準備一鼓作氣拿下分類機時,新的問題出現了。
由於卡片質量問題,已經運來的卡片資料在這幾天對製表機的密集測試中損壞嚴重,實驗材料很快就要短缺了。
馮諾只好把對分類機的躍躍欲試丟到一邊,先開發複製機,有了複製機,可以隨意複製現有的卡片,卡片短缺的問題也就不存在了。
他找來了舊時空IBM公司的IBM513型複製機的資料,全稱是“自動複製穿孔機”(Automatic Reproducing Punch)。這是20世紀40年代纔出現的機型,原理不難,但機器結構略複雜,馮諾不打算原樣複製,根據原理造出一個原型機就好。
他儘量工整地在紙上畫出示意圖,複製機的核心部件是一套可放置雙排卡片的聯動傳動機構,當模板卡片經過處理單元時,讀卡機構的電刷掃過卡片,在穿孔位置連通電路激活對應位置的繼電器,從而控制新卡片處理單元的穿孔機構在新卡的相同位置穿孔。這一次,讀取和穿孔需要逐列進行了。
不過馮諾在琢磨穿孔刀的控制時卻卡住了:穿孔卡上每列的各個孔位之間僅有幾毫米的距離,他搞得繼電器那麼大,怎麼可能同時控制多個刀頭穿孔呢?想了很久也沒想通,只好第二天拿着半吊子的示意圖又去求教機械口的元老。
還是來找孫立,一進辦公室,發現展無涯也在這裡。馮諾長期蝸居在機械廠裡面,和展無涯算是熟悉,知道他是個實在人,也不虛禮客套,直接把“圖紙”一攤,提出了問題。展無涯哈哈大笑,指着旁邊一臺臨高自產的英文打字機說,“你去看看那個打字機怎麼就能把40多個按鍵的字符都打到同一個位置上?”
馮諾一拍腦袋,對啊,他的辦公室也有英文打字機,可是從來沒想到過這一點。
展無涯接着說,“這是機械設計裡最基本的問題了,除了用打字機那種弧形字排結構可以解決外,還有不少種方案都能解決。你就別自己瞎琢磨機械設計的事了,這事交給咱們專業的辦,你還是老老實實設計你的繼電器控制方案吧,昨天督公還問過這個項目的進度。”
因爲馮諾實際上並不懂機械設計,所以他交到機械廠的圖紙基本上只算是個“原理圖”,某些可以抄現成的構造他是照抄了過去的設計圖紙,但是具體到生產環節還是要靠機械廠的技術人員重新設計。
馮諾連忙彙報了一番進展,又拍胸脯保證最近一定加快研發速度,請領導放心。
複製機卻不像製表機那樣順利地通過了測試。
樣機送來時已經是傍晚了,首先分別測試了複製1張和10張卡片,經人工檢查後,沒發現什麼問題,複製的新卡片與模板卡片完全一致。於是馮諾交代讓錢羽之和李加奈一次性複製1000張卡片試試。
由於是逐行復制,複製機的速度大致與未優化前的製表機類似,1000張卡片大概需要3個多小時,馮諾交代後就下班了。領導很關心,故而馮諾這段時間經常加班,今天好不容易有不需要什麼技術含量的活,可以只讓錢羽之二人盯着。
複製少量卡片時,重疊新舊卡片對着光看看即可檢查穿孔是否一致。1000張卡片卻不能再用人工方法檢驗正確性了。因此,馮諾囑咐他們複製好後用製表機檢查穿孔是否一致。方法是分別統計兩疊卡片每列的0-9的數量是否一致,如果結果相同,有問題的概率就可以忽略不計了。不過按當前製表機的速度,每列的檢查時間大概在20分鐘左右,80列需要20多個小時,只好讓兩人晚上輪班了。
第二天早上,馮諾去企劃院開了個小會,快中午的時候纔來到辦公室。
他發現馮珊正領着錢羽之和李加奈二人一張張地對着光線檢查卡片穿孔是否一致。——大概已經檢查了半天,三人的眼神均有些渙散,錢羽之和李加奈更是頂着黑眼圈。馮諾十分奇怪,連忙過去詢問。
原來,錢羽之和李加奈昨晚一直用製表機檢查1000張卡片的複製結果,卻發現新舊卡片在某列的0-9數量並不相同,複製的卡片少了一個3,卻多了一個4。也就是說,複製機出現了錯誤,在某張卡片上錯把3打成了4。所以他們現在正在找究竟是哪張卡片出了問題。
“工作態度可嘉,工作方法愚蠢。”馮諾評論道。他走過去拿起三人還沒檢查過的兩疊卡片,問:“檢查多少了?”
“122張。”
“114張。”
“107張。”
三個人分別答道。
“看看,三個人一上午才查了三百多張。以後我們要測試1萬張卡片,得找多少人來?”說着他把手中的一疊卡片遞給馮珊,說:“查出330張來。”
然後他問錢羽之是哪一列出了錯,調整了製表機的讀卡電刷位置。又把自己手裡剩餘的一疊也分成330張和327張的兩疊。
隨後,馮諾先後把馮珊查出來的的330張新卡和自己分出的330張舊卡用製表機統計了一遍。
十幾分鍾後,統計結束了,結果是相同的。
“所以,錯卡肯定在另外一半里面了。”馮諾指了指剩餘的兩疊卡片。
於是他從剩餘的兩疊327張卡片中,各分出了160張卡片,輸入了製表機。這次結果顯示錯誤的卡片就在這160張之中。
馮諾把這批卡片又分爲兩份,每份包括一一對應的新舊卡片各80張,隨便拿了一份再次重複上面的操作。
……
幾分鐘後,嫌疑範圍縮小到了10張,馮諾把卡片分給馮珊三人,很快找出了錯誤卡片。
馮諾把錯卡放到了桌子上,沒有去看。而是對馮珊說:“我們做計算機,目的就是爲了代替人力完成機械性的計算工作。機械的工作它來做,不用你來做。你要做的是什麼呢?是思考怎麼驅使它工作達到你的目的。你來說說,剛纔這樣找錯誤卡片是什麼原理?”
“二分查找法?”馮珊不確定地問到。
馮諾點點頭,“不一樣,但思路是類似的。如果你稍微思考一下,昨天我爲什麼讓羽之和加奈用製表機檢查兩疊1000張卡片是否一致,就能想到很多方案。最起碼,你可以每次輸入100張卡,最多10次,你們也就能知道錯卡在哪個100張裡面了。——當然,如果你能想到這個,也就能意識到二分查找是最快的。”
“我們這麼做有個前提,就是複製出錯的概率很低。否則多張穿孔卡都在同一列出錯,這方法就不靈了。所以,昨天我們先檢查了1次和10次複製的結果,都沒問題。”
“事實也表明我們的估計符合實際情況,1000張卡片,也就是有80000列的複製操作,他們兩個昨晚到今早檢查了30多列,實際只發現1列出錯,而且統計發現只少了一個3,並且只多了一個4。這是在查找錯誤卡片之前你們就知道的,對吧?我們沒有別的先驗知識,所以只能假設複製機的出錯概率爲1/30000,不考慮目前的錯誤是多張卡片在同一列的出錯累積而成,因爲那概率更低,暫時可以忽略。
--------------------------
下次更新:第七卷-兩關攻略篇52節