4/18/2007

工程師的美麗與哀愁5--軟硬之間

前言:
  這邊提的軟硬,不是李敖說的軟硬,那相差很多。甚至八竿子打不著。

正文:
  工程師,有分成軟體和硬體。
  軟體又有分成純軟體和韌體。硬體也分成純硬體和系統整合硬體。
  怎麼分這四種工程師呢?
  微軟這家公司,就是純軟體。他可以根本不鳥你的硬體到底好還是壞,反正你只要照著他推薦的機器來跑就是了,如果出了什麼問題,千萬別到微軟大門抬棺抗議,因為他們根本懶得理你。
  那什麼是韌體呢?就是工程師寫出來的一個程式,只能在某種特定的機器上跑。就好像你的PDA這種東西。
  純硬體工程師,現在這種工程師比較少了。就是用電子零件兜一兜,一起銲在一塊版子上。能發光,能做事,這樣就算大公告成了。
  最淺顯的例子就是你唱歌用的麥克風,以及叫你起床用的鬧鐘。不是電子式的鬧鐘喔,是那種很單純,指針式的鬧鐘。
  系統整合硬體,簡單的說就是做一台小型的電腦就對了!

  因為所學的不同,所以硬體要跨越軟體是一件很辛苦的事情,不過只要用心苦學,還是辦的到。
  但是軟體要跨越硬體,那就很困難了,除非軟體工程師身體裡面流著硬體工程師的血液,不然根本不可能踏到硬體這一區,頂多只是寫一些驅動程式而已。

  硬體所涵蓋的範圍很廣,從電子物理到電路學,電路學學完之後還有電磁學和電子電路等著你。
  好不容易把那些東西都學通了,抱歉,還有數位邏輯等著你。就算你懂了數位邏輯,還有高頻電路學,無線通訊等著你。
  接著呢?系統架構,訊號分析,積體電路設計......多的讓你眼花撩亂。
  全部學完而且學通了之後呢?抱歉,除非你做的是高頻電路,或是像音響放大器之類的電路,不然你還得學一點程式,最好會寫驅動程式。
  我這只有寫出該學的東西,我並沒有提到其他工具課程喔!像是微積分,工程數學,高等數學,線性代數,數值分析等等這些工具。

  這只是學科,術科要學會怎麼拿烙鐵,怎麼銲接才電路,才不會因為冷銲或空銲而導致開路。照子要放的很亮,不然的話搞不好一個短路,就可以讓你哭上好幾個月。
  接著就是要學會怎麼在最短的時間,做出測試用的手工具。
  這種東西我都稱之為手工藝品,市面上根本沒有人在賣這種東西,材料也只有你手邊所有的東西,就算請人打造,要不是得花上好幾百萬,就是得花上好幾個月才做好。
  再來就是要學會使用各種量測工具,三用電表,示波器,邏輯分析儀等等。
  高頻電路的話,可能需要用到頻譜分析儀,向量分析儀。這兩種東西都很貴,貴到可以買一輛賓士轎車了。
  當你把術科和學科都學的很好之後,在社會上工作個幾年之後,要不就是因為每天都在吸一些的有毒氣體,而得到肺癌買單掛點(台語:拖出去種),就是當上主管,荼毒一些剛畢業的工程師。

  軟體?最粗淺的就是該怎麼寫應用程式,深一點的就是寫作業系統,高手一點,就是寫驅動程式。
  學科就是怎麼學寫程式,術科就是懂得程式當中的邏輯,或是暫存器要怎麼控制。器材也只有一台電腦而已。
  沒有研發電路板?放心,有模擬器。PS/PS2的模擬器就是在模擬PS/PS2核心CPU所寫出來的程式。
  依照歷史的演進,先是有機械,在發現電這種東西之後,才有電機。當電話發明出來之後,才有電子。當第一台電腦出來之後,才有軟體的出現。
  所以,硬體涵蓋的範圍,比任何人想像的還要廣大。而且,絕對不能犯錯。
  軟體如果出了錯誤,只要找出錯誤點,做出修正程式,把錯誤彌補過去就好了;但是硬體如果有一點點的小錯,需要改版的話,輕則只是幾十萬的代價(消費性電子公司而言),嚴重的話,很可能是幾百萬的代價(IC設計公司而言)
  而且苦哈哈的。

  老樣子,Andy是硬體工程師,Liu是客戶,Joe是業務(這次沒他們倆個的戲),Lin是軟體工程師(新人,請鼓掌歡迎。)

  Lin:Andy(大吼著)!為什麼板子不會動?
  Andy:怎麼不會動?我確認過可以動之後才給你的啊!是哪裡不會動。
  Lin:不知道,他就是不會動!
  Andy:看的到東西嗎?
  Lin:看的到東西還要找你嗎?
  Andy:我是說有看到LED在亮嗎?
  Lin:哪有!
  Andy站起了身子,來到了Lin的身邊,看到Lin身旁的電源供應器的電流計已經跳到了不該出現的極高數值。
  Andy大叫了起來,趕緊把電源給扯掉,這才發現,Lin竟然灌了16V的電壓到板子上,但是整個板子只需要5V的電壓!
  Andy:你剛剛有沒有發現什麼異常狀況?
  Lin:沒有啊!只不過冒煙而已。
  Andy咬牙切齒的說到:下一回,下一回如果冒煙的話,我一定會把你給掐死!

  像這種類似的例子,曾經活生生血淋淋的發生在我身上過。
  我和業務帶了一塊老外做的開發板,那塊開發板不貴,一點都不貴,只不過幾千塊……美金而已。到客戶那邊,客戶在試的時候,我看到板子的某處冒出了一縷白煙,我急忙的關掉了電源,循線拔出了那個變壓器,看到上面的標示是12V,而板子的耐壓只有5V而已。
  輸入電源搞錯,這是根本不被允許發生的事情,會發生這種事情,不能怪別人,只能怪那傢伙笨的可以,或是粗心到不行。
  附帶一提,燒零件這種事情,是硬體工程師的特權。因為硬體工程師必須要實驗這個料件能不能用,能不能在這樣的需求之下正常工作。冒煙,燒零件這種事情很常見。

  Lin:Andy!
  Andy心想:這傢伙又怎麼了?
  Lin:板子又不能動了!
  Andy:怎麼不能動?
  Lin:我哪知道,我程式寫到一半,他就給我當機了。
  Andy:重開機試試看。
  Lin:還是不行。
  Andy再度翻山越嶺的走到了Lin的身邊,看著板子上的跳線。
  這時Lin說到:剛剛我不小心碰到了一條線,他就給我當機了。
  Andy惡狠狠的回頭瞪了Lin一眼:我剛剛怎麼跟你說的?你到底有沒有在聽我說話?我花了好大的功夫才把他給固定住,你竟然有本事把這條線給搞斷,是不是我太久沒踹你了,不知道我的鞋子穿幾號了是不是?
  翻成文言文是:汝父吾久未贊汝,汝不知汝父吾履著幾番矣。

  我並不是想讓軟體工程師和硬體工程師互相吐口水,我只是想說:沒有了軟體,硬體只是一堆廢鐵,就算不是廢鐵,功能也很有限。要是某些功能是你所不需要的,或許還有廢物利用的價值。就算拿去給收破爛的,也可以換到幾塊錢。
  沒有了硬體,軟體注定是一堆沒有意義的東西。一點功能都沒有,想都別想。就連印列出來也只是浪費資源,破壞森林而已。

  不過要做出一個完美的產品,真的需要軟體和硬體之間的配合。
  硬體這邊需要懂一點軟體,這樣可以加快測試的時間。軟體也得懂一些硬體,這樣才不會因為一些蠢到極點的事情,而打擾硬體工作的時間。

PS1.
  老樣子,本文只是將極少部分的公司,以及極少部分的工程師所發生的事情,加油添醋以達到誇張的效果。事實上或許不會發生,尤其是不可能會發生在本人所任職的公司的工程師身上。

PS2.
  李敖曾經說過:男人小的時候關心長短,大的時候關心粗細,老的時候關心軟硬。
  說的就是男人的生殖器官。

(本篇原發表日期:2005/12/14 21:10:46)
Google
Creative Commons License markscat的異想世界markscat製作,以創用CC 姓名標示-非商業性-相同方式分享 2.5 台灣 授權條款釋出。