本網(wǎng)友在樓下轉(zhuǎn)貼了薩蘇先生講的一段故事《“只會做加法不會做減法”和“只會做減法不會做加法”的計算機(jī)》,引發(fā)了一些網(wǎng)友的議論。其中,彭聯(lián)邦和拾遺補(bǔ)缺兩位先生似乎算是“懂行”人士,另有一位匿名人士也跟貼稱頌“這才是明白人”。
比較遺憾的是,本網(wǎng)友發(fā)現(xiàn),這兩位“懂行”的“明白人”發(fā)的跟貼,有些內(nèi)容相當(dāng)?shù)夭豢孔V。當(dāng)然,也不能就說是缺乏常識,畢竟計算機(jī)知識目前還不算普及型的常識。不過,本網(wǎng)友覺得還是有必要說一說的。
先說重要的事情。
來看這兩個跟貼:
能請你談?wù)勎母锲陂g,你們廠以及你們廠科研人員的情況嗎??為什么改開,國門一打開,我們看到竟然落后了那么多??[ 彭聯(lián)邦 ] 于2011-10-15 17:57:21 上帖
的確,“春天”從國外引進(jìn)了大規(guī)模集成電路。稍后就引進(jìn)了集成塊生產(chǎn)線。中國人就變?yōu)榱畠r的勞動力,民族資本就只剩“分紅”的分了。[ 彭聯(lián)邦 ] 于2011-10-15 18:08:00 上帖
發(fā)這種跟貼的人,顯然是絲毫不了解“春天”之前的狀況。
答案是:其實(shí)當(dāng)時并沒有落后多少。
電子計算機(jī)從誕生到“春天”,大致上經(jīng)歷了四代:第一代是電子管,第二代是晶體管,第三代是小規(guī)模集成電路,第四代是大規(guī)模集成電路。
第一代開始時間:國際1946年,我國1957年,落后11年;
第二代開始時間:國際1958年,我國1964年,落后8年;
第三代開始時間:國際1964年,我國1969年,落后5年;
第四代開始時間:國際1971年,我國1974年,落后3年,基本算是追平了。
隨著一聲春雷,“在毛主席病重期間喪心病狂地迫害毛主席”、“瘋狂破壞無產(chǎn)階級文化大革命”、“企圖復(fù)辟資本主義”的“四人幫”被斷然處置,他們支持的那些“勞民傷財”的“自主研發(fā)”也就基本停滯了。現(xiàn)在國內(nèi)的工業(yè)化集成電路生產(chǎn)線都是進(jìn)口的,所以也就談不上什么落后不落后了。只要人家給,那就能夠不“落后”。不給的那些呢?那就只好“落后”了。
問:為什么都是進(jìn)口的?答:做出來的必須要沒有缺陷,現(xiàn)在國內(nèi)工藝已經(jīng)做不到這一點(diǎn)了。
問:為什么做不到這一點(diǎn)了?答:技術(shù)這種東西,“三天不練,就成門外漢”雖然夸張了一點(diǎn),但是如果三十年不練,那肯定是要成門外漢的。
再來看這個“追問”:
組裝是改開年代的詞匯。中國的計算機(jī)設(shè)計制造,在毛澤東時代一直到改開前,都是獨(dú)立自主的自行設(shè)計自行制造的(包括用于計算機(jī)的操作系統(tǒng)及應(yīng)用軟件的設(shè)計開發(fā)都是自己的軟件設(shè)計師和程序員設(shè)計調(diào)試出來的)。原子彈、導(dǎo)彈、衛(wèi)星的發(fā)射都離不開計算機(jī)的控制,那些都是我們自己設(shè)計制造出來的。[ 老泥頭 ] 于2011-10-15 15:55:26 上帖
只是屬于高精尖的國家級科研項目??[ 彭聯(lián)邦 ] 于2011-10-15 17:49:12 上帖
答案很簡單:從第一代開始,電子計算機(jī)就是“屬于高精尖的國家級科研項目”。
研制電子計算機(jī)的想法產(chǎn)生于第二次世界大戰(zhàn)進(jìn)行期間。當(dāng)時激戰(zhàn)正酣,占主要地位的戰(zhàn)略武器就是飛機(jī)和大炮,研制和開發(fā)新型大炮和導(dǎo)彈就顯得十分必要和迫切。為此美國陸軍軍械部在馬里蘭州的阿伯丁設(shè)立了“彈道研究實(shí)驗(yàn)室”。美國軍方要求該實(shí)驗(yàn)室每天為陸軍炮彈部隊提供6張火力表以便對導(dǎo)彈的研制進(jìn)行技術(shù)鑒定。千萬別小瞧了這區(qū)區(qū)6張火力表,它們所需的工作量大得驚人!每張火力表都要計算幾百條彈道。按當(dāng)時的計算工具,實(shí)驗(yàn)室即使雇用200多名計算員加班加點(diǎn)工作也大約需要二個多月的時間才能算完一張火力表。
為了改變這種不利的狀況,當(dāng)時任職賓夕法尼亞大學(xué)莫爾電機(jī)工程學(xué)院的莫希利(John Mauchly)于1942年提出了試制第一臺電子計算機(jī)的初始設(shè)想——“高速電子管計算裝置的使用”,期望用電子管代替繼電器以提高機(jī)器的計算速度。美國軍方得知這一設(shè)想,馬上撥款大力支持,成立了一個以莫希利、埃克特(Eckert)為首的研制小組開始研制工作、預(yù)算經(jīng)費(fèi)為15萬美元,這在當(dāng)時是一筆巨款。最終花掉的總經(jīng)費(fèi)高達(dá)48萬美元,是最初預(yù)算的三倍多。要不是為了戰(zhàn)爭,誰能舍得出這么大的錢?
此后的歷代電子計算機(jī)項目,也都是各國軍方最積極資助的“高精尖的國家級科研項目”。為什么會這樣?不用說別的:聽說過“核爆炸的計算機(jī)模擬實(shí)驗(yàn)”吧?
任何“高精尖”項目,只要有可能用于軍事,軍方就是最積極的資助者,最先進(jìn)的成果也總是首先用于軍事,這也屬于“常識”了。當(dāng)然,IBM等“私人”公司是實(shí)際的研制者,但是最大的資助者是美國軍方。
重要的事說完了,來說點(diǎn)不重要的“常識”。
來看這個跟貼:
1958年大躍進(jìn),中科院確實(shí)研制出了第一臺計算機(jī)。但沒法運(yùn)行,因?yàn)閲a(chǎn)電子管的平均壽命不超過5000小時,有上萬個電子管,平均1小時損壞1-2個。所以必須無論好壞同時換掉。[ 拾遺補(bǔ)缺 ] 于2011-10-15 14:56:00 上帖
所謂“平均壽命”,其實(shí)是一個統(tǒng)計數(shù)據(jù)。簡單地說,就是選取同一批生產(chǎn)出來的“國產(chǎn)電子管”,進(jìn)行試驗(yàn),測出每個的使用壽命,再來平均一下。
所謂“國產(chǎn)電子管的平均壽命不超過5000小時”,通常的含義就是說:平均而言,每只“國產(chǎn)電子管”的預(yù)期壽命大約在5000小時左右。
如果“平均1小時損壞1-2個”,那就是說:“國產(chǎn)電子管”的“平均壽命”其實(shí)應(yīng)該是在半小時到一小時之間,或者說“平均壽命不超過1個小時”當(dāng)然,不超過1小時也仍然是“不超過5000小時”,但是“平均壽命不超過5000小時”顯然不會是指不到一小時。
這就出現(xiàn)了問題:從“國產(chǎn)電子管的平均壽命不超過5000小時”和“有上萬個電子管”,是如何“推導(dǎo)”出“平均1小時損壞1-2個”的呢?
本網(wǎng)友估計,拾遺補(bǔ)缺先生是這樣進(jìn)行“推導(dǎo)”的:把“有上萬個電子管”里的“一萬”,除以“國產(chǎn)電子管的平均壽命不超過5000小時”里的“5000小時”,然后就得到了“1—2個/小時”,于是就“推導(dǎo)”出了“平均1小時損壞1-2個”的結(jié)論,從而得出了用這“上萬個電子管”組成的計算機(jī)“沒法運(yùn)行”的結(jié)論。
這個“推導(dǎo)”的錯誤究竟出在哪里,本網(wǎng)友沒有興趣搞科普,就不說了。不過,正常人都能根據(jù)“常識”確認(rèn):這個“推導(dǎo)”和得到的結(jié)論都是完全錯誤的。
再來看一位“明白人”的跟貼:
計算機(jī)都是只做加法不做減法的。硬件電路就叫加法器。減法也是通過加法實(shí)現(xiàn)。電脈沖發(fā)出去(加)不可能收回來(減)。這是你自己無知。[ 拾遺補(bǔ)缺 ] 于2011-10-15 14:24:24 上帖
這才是明白人。( 117.136.9 11-10-15 16:11:05 ) 7字 ( 0/4/1 )
“計算機(jī)都是只做加法不做減法的”是事實(shí),“硬件電路就叫加法器”是事實(shí),“減法也是通過加法實(shí)現(xiàn)”也是事實(shí)。但是,這些事實(shí)并不構(gòu)成完整的事實(shí)。
完整的事實(shí)是:計算機(jī)不僅不直接做減法,也不直接做乘法、除法、乘方、開方。
計算機(jī)的乘法運(yùn)算是由兩次對數(shù)運(yùn)算、一次加法運(yùn)算和一次指數(shù)運(yùn)算構(gòu)成的:先把兩個乘數(shù)分別做對數(shù)運(yùn)算,然后把兩個結(jié)果相加,再做一次指數(shù)運(yùn)算。除法只需要把第二步換成減法就行了,而“減法也是通過加法實(shí)現(xiàn)”的。乘方(開方)則是由一次對數(shù)運(yùn)算、一次乘法(除法)運(yùn)算和一次指數(shù)運(yùn)算來完成,其中的乘法(除法)用前述的方式完成。
但是,之所以“計算機(jī)都是只做加法不做減法的”,是因?yàn)閷?shí)現(xiàn)加法比實(shí)現(xiàn)減法要簡單,而不是因?yàn)橛嬎銠C(jī)“只能”做加法而“不能”直接做減法。不過,這位先生既然能夠用“國產(chǎn)電子管的平均壽命不超過5000小時”和“有上萬個電子管”來“推導(dǎo)”出“平均1小時損壞1-2個”,那么,他為了“證明”“計算機(jī)都是只能做加法不能做減法的”而發(fā)明出“電脈沖發(fā)出去(加)不可能收回來(減)”,也就不奇怪了。
當(dāng)然,簡單地說,加法器就是接收到一個電脈沖就加1,而“電脈沖發(fā)出去不可能收回來”也算是事實(shí)。問題在于:這并不成為“計算機(jī)不能做減法”的理由。
電子計算機(jī)最基本的運(yùn)算操作的對象是兩個只有一位的二進(jìn)制數(shù)。對于不帶符號和進(jìn)位的兩個只有一位的二進(jìn)制數(shù)而言,加法和減法的結(jié)果是完全一樣的:0+0=0-0=0,0+1=0-1=1,1+0=1-0=1,1+1=1-1=0。所以,如果只進(jìn)行兩個一位二進(jìn)制數(shù)之間的運(yùn)算,那就根本不需要區(qū)分加法和減法,所以也就談不上“不能做減法”。
要實(shí)現(xiàn)多位數(shù)的加法和減法,關(guān)鍵在于:如何正確處理兩個一位二進(jìn)制數(shù)的加法可能導(dǎo)致的進(jìn)位和減法可能導(dǎo)致的退位與負(fù)數(shù)。進(jìn)位和退位本身的區(qū)別其實(shí)也不那么要緊,因?yàn)檫M(jìn)位和退位無非就是加1和減1,而不帶符號的加1和減1的結(jié)果本來就是一回事。所以,真正關(guān)鍵的問題是如何區(qū)分正負(fù)號的問題。
于是另一位(也可能是同一位)“明白人”出來說話了:
這只能說明,<>是一群對科技一無所知的蠢貨,對計算機(jī)算法來說,加,減是一樣,不過是換用補(bǔ)碼罷了.[ 124.133.126 ] 于2011-10-15 14:47:48 上帖
這才是明白人。[ 117.136.9 ] 于2011-10-15 16:11:54 上帖
沒錯,對于不帶符號的兩個一位二進(jìn)制數(shù)而言,“加、減是一樣”;減法用加法替代,也確實(shí)是“換用補(bǔ)碼”。
然而,這仍然只是事實(shí)的一部分。全部事實(shí)是:“補(bǔ)碼”這東西的發(fā)明,并非“不過”和“罷了”那么簡單。
加法的進(jìn)位很容易解決,反正都是加法嘛,所以多位的加法是容易實(shí)現(xiàn)的。正數(shù)和負(fù)數(shù)的正負(fù)號如何表示,人們想到的解決辦法也很簡單直接:在最高位的前面增加一個“符號位”,0表示正,1表示負(fù)。剩下的問題是如何用加法來代替減法。
這樣看來,剩下的問題似乎很簡單了:要減去一個數(shù),只需要把這個數(shù)的符號位從0改為1,然后直接與這個負(fù)數(shù)做加法,不就行了么?
很遺憾:這樣的計算結(jié)果會導(dǎo)致錯誤的結(jié)果!
來看一個例子:1-1=?我們當(dāng)然知道是0。
現(xiàn)在我們用加法1+(-1)來代替。按照上面的正負(fù)號表示方法,1記為001,-1記為101,于是1+(-1)=001+101=110。按照上述表示方法,110=-2(第一位1表示負(fù)號),于是我們得到1+(-1)=-2!
問題出在哪里呢?簡單地說,就出在0上。我們知道+0應(yīng)該等于-0,但是上面標(biāo)記正負(fù)數(shù)的這個辦法要求+0不等于-0,必須成為兩個不同的數(shù)。
這個問題困擾了人們很長時間。如果要堅持用加法來替代減法,看起來就必須修改正負(fù)號的標(biāo)記方法了,那樣不是太麻煩了么?
最后的解決辦法是“補(bǔ)碼”,它保留了用最高位表示符號,也實(shí)現(xiàn)了用加法代替減法。究竟是哪位牛人首先提出“補(bǔ)碼”來解決這個問題?這件事情已經(jīng)無法考證,只能認(rèn)為“補(bǔ)碼”的提出是“集體智慧的結(jié)晶”了。
至于“補(bǔ)碼”是什么玩意,“明白人”們當(dāng)然都是知道的,即便“不明白”,隨便搜一搜就能找到,這里就不浪費(fèi)時間了。
「 支持烏有之鄉(xiāng)!」
您的打賞將用于網(wǎng)站日常運(yùn)行與維護(hù)。
幫助我們辦好網(wǎng)站,宣傳紅色文化!