9/08/2007

AK47 與 M16 補充

大家好,我又放假了。看到有人問我,上篇文章,意味著誰代表RoR。我只能說,沒有特別的誰代表誰。

在技術水準差不多的狀態下,所謂的設計好壞其實只是取捨。Ak47 取了簡單,但是失去了準度。M16 強調準度,但是輕巧的設計卻換來了些許的不穩定,以及較高的訓練時間。換來的結果也沒有誰輸誰贏,只是剛好第三世界國家適合 AK47 ,美國適合 M16。

越戰這個 case ,Ak47 遠勝於 M16,但是這是在叢林戰這個 domain。其實美軍打贏那麼多場戰役,很多其他的戰爭 case,M16 說不定在其他 case 壓的死死的。只是越戰名氣大而已。

一切都只是需求的不同而已。

軟體開發也是如此。在工程師水準相近的情況下,你的選擇通常都只是因為這個任務的需求,而非這個設計方式比較好。

我所陳述的,是一段歷史,是一個工程設計哲學的頂尖對決,是一個值得去瞭解的他山之石。而非誰代表誰。

9/01/2007

AK47 與 M16

大家好,我是 thegiive,我正在服國防役新訓,先跟大家打個招呼。最近一直沒時間碰 Ruby on Rails ,不過軍中倒是花了點時間研究步槍。賢者總是說到「觸類旁通」這件事情,我也剛好從步槍這種殺人兵器中,看到了一些東西,很值得軟體開發借鏡。在此先警告一下,我只是在陳述輕兵器設計哲學之間的比較,並非鼓吹輕兵器,戰爭等東西,如果認為槍枝是邪惡不能被提及之人,請勿進入本文。

我研究的東西,就是號稱 20世紀最偉大的武器 AK47 ,跟屈居第二的 M16 的之間的瑜亮之爭。

AK47 是由蘇聯槍械設計師米哈伊爾·季莫費耶維奇·卡拉什尼科夫設計的自動步槍。這款武器號稱槍中之王,很多第三世界國家的戰爭都看到他的身影。可以說是哪裡有戰爭,那裡就有 AK47。有這樣一句話:「美國出口的是可口可樂日本出口的是Sony電器,而蘇聯出口的是AK47。」

這不是沒有原因的。 AK47 當初設計的哲學,就是為了「簡單」。他被設計成為任何民眾,在沒有人教導,沒有任何工具,依舊可以在三個小時之內可以徒手拆解結合,並且裝子彈射擊,由此可以知道他的「簡單」,到底是簡單到什麼程度。

再來因為俄羅斯環境氣候糟糕,他將內部機構組織設計為較粗糙,這代表不容易因為沙土,泥水進去而導致不能擊發,也就是他當初就是為了設計為可以穩定的擊發子彈,就算再惡劣的環境也是如此。後來因為 AK47 大流行,參加了許多場戰爭,擁有相當多的實戰測試,導致他的擊發穩定性更上一層樓。有人戲稱「AK47 掉到泥水中,沒關係甩一甩,繼續打」。

但是當初社記者因為為了「簡單」,「穩定」,損失了些許射擊準度。導致 300M 外射擊準度很差。

M16 系列是屬於美國系統,他當初設計的哲學就是為了擁有穩定的設計準度,以及良好的射擊距離。所以他採取相當巧妙的設計(我們輕兵器教官是這樣講的,我沒有研究很深),但是越精巧的系統代表容錯率越低, 第一版 M16 對於環境的容忍程度較差,很容易因為環境因素導致卡彈。美軍在沙漠風暴之中,就常聽說美軍為了避免沙子進入槍口,用保險套套住槍口,形成一種很詭異的情況。

綜合比較兩者優劣,很明顯的 M16 在射擊準度上面優於 AK47 許多,但是耐用度上面,第一版的 M16 可以說是遠遠輸了 AK47,一直到 M16A2 才比較好一點,不過還是輸給 Ak47 。

使用率上面,AK47遠遠的贏過 M16,傳說 AK47 有一億隻之多。造成 AK47 大流行的原因很多,
  1. 一來是因為構造簡單,上手簡單,士兵幾乎不用訓練就可以擊發,所以許多第三世界國家喜歡使用 AK47。
  2. 再來就是因為構造簡單,容易仿造,所以很多國家都自己仿冒 AK47,傳說十支 Ak47 只有一支是正版的 AK47。
  3. 再來就是如果你有看軍火之王這部片子,裡面講到蘇聯瓦解,許多將軍失去以前的榮光,為了錢,他們將軍火庫裡面成千上萬的 AK47 盜賣給軍火商,導致黑市 AK47 大流行,既便宜又好用。
  4. 最後雖然 AK47 不準,但是第三國家沒有資源去花時間訓練士兵射擊準度,所以使用 AK47 根本沒差

這裡必須要提一件題外話,如果你看過血鑽石這部片子,就知道他們是怎麼訓練娃娃兵的。而娃娃兵雖然知識水準不高,但是因為 AK47 實在是使用上太簡單了,所以導致軍閥隨隨便便訓練娃娃兵,他們都可以上手,拿槍來殺人, AK47 的簡單某種程度導致娃娃兵的大流行。這是讓我每次看到都覺得很荒謬的一件事情。

真正決定 AK47 王者地位的戰役就是越戰。越南一方使用 AK47,美軍使用 M16。越戰是叢林戰為主,叢林戰的攻擊射程可能根本不到 10 m ,在叢林 AK47 跟 M16 射擊射程都是一樣的,也就是 M16 的強項射擊距離跟經準度就跟廢了一樣。再加上叢林環境太過惡劣了,M16的低容錯率造成大量卡彈的發生,很多美軍屍體旁邊都有卡彈的 M16,代表他們是因為卡彈才死去的。到後來,甚至出現許多美軍將自己 M16 放在一旁,反而使用搶來的 Ak47 來打越南軍的怪現象。

事後想想,AK47 早就已經實戰好幾年了,那時的穩定度以經是 3.0 版。M16 在越戰時穩定度還是 1.0 Pre release 版。再來剛好遇到 M16 強項被極小化,所以才會遇到被 AK47 八的那麼慘的情況。

雖然剛剛講了那麼多 M16 的壞現象,但是他依舊美軍最佳的利器。因為美軍戰爭時需要「減少傷亡」,減少傷亡最好的方式就是拉遠戰鬥,所以 Ak47 只能較近距離的特性依舊不適合美軍。也就是說,沒有最好的槍枝,只有最適合這次任務的槍枝。

所謂的簡單就是美,在 AK47 留下的最好的證明。簡單的設計容易修改,複製。產品正確率也較高。並且容易上手就容易造成流行。軟體又何嘗不是如此。

穩定性的重要,在輕兵器的領域優先權是相當高的,畢竟子彈往身上跑過來的時候,誰都不希望自己手上的槍枝卡彈。越戰時,AK47就在這個領域上面遠遠勝過 M16,也為這次比試留下了勝利。當某個領域的要求穩定性,已經高到一個很重要的程度時,我們應該選擇比較穩定的設計,而非功能比較強大的設計。

最後,沒有最好的槍枝,只有最合適這次任務的槍枝。同樣的,沒有最好的軟體,只有最符合這次任務需求的軟體。

我們在這些輕兵器的歷史中,是不是看到許多軟體開發的影子呢。