2012年6月21日 星期四

電子自學學習心得回憶(五)--- 軟體篇

如果說起寫軟體這件事,應該就得從學校說起,但是以前在學校寫的程式,

都是純粹學術用軟體程式,也沒有什麼美美的畫面或是像樣的人機介面。

但也不能怪學校啊~因為那時唸書時,所謂PC 個人電腦也都還是 80286 時代,

而且還分那個AT/XT 等級...那就更不用有什麼圖形介面卡了,怎麼寫美美的程式啊?

---

記得...我以前為了學寫程式,還特地去別系的電腦課上課,因為他們上的是PASCAL 語言,

結果我發現我這個旁聽的~比他們原班上同學還認真,雖然很低調的每次都盡量坐在

教室的角落裡...結果都因為蹺課的人數多,我總覺得我好像是坐在第一排似的!

(關於跑到別人系上上課這件事也不只這門課,也跑去過工程科學系去旁聽微處理器課~

不過,兩者相較之下...微處理器課比較吃力,二來他真的離我的宿舍比較遠...)

後來之所以可以找到第一份工作,也不是因為念的科系,竟然是我在學校寫過程式,

在WorkStations 操作上有一些經驗...(這是我事後問我的部門主管錄取的原因!)

以那個年代來說:已經很不容易了。因為我在學校摸過的WorkStation 有SGI ,

Sun,HP,還有Digital (迪吉多)...等等。(因為幫系上教授打工,幫忙管理這些

Workstation...所以,打工還是蠻有用的。)...結果很諷刺的是:後來去上班要用的

WorkStation 竟然是沒碰過的:IBM 的AIX 系統。 

----

後來一進入職場之後,PC 個人電腦的裝置就一日千里...只不過那時候的電腦配備如果

要好一點的,譬如幾十MB 的硬碟啊...或是有一張可以顯示彩色的顯示卡...都是貴森森的。

不過~因為我們是研發一線單位,所以這些東西還是比較容易接觸得到。

雖然學校基本的啟蒙語言是那個 10... 20... 30 ...的BASIC 語言。工作部門用的是:

Quick BASIC...但對BASIC 就是覺得很不上手。當然畢業做研究用的是 FORTRAN。

---

後來呢?我看到另一個部門的一位工程師是用 Turbo C 寫了一支測試軟體,

畫面還蠻好看的...我就很主動的跟他要了程式碼,然後也剛好在工作上需要寫一支類似的

測試程式,從此就完成了我生平第一支比較像樣完整的程式:


當然啊,這一種測試程式多多少少還是需要一些外接控制卡...

不過,我自己用的是:RS232...也算是我第一支有PC 介面程式吧。

當初也只是很單純的想寫這樣一支程式,也沒有特地的目的。但我的主管還是給予我

很大的發揮空間...讓我盡情的發揮,也讓我這一支程式可以納入計畫的成果與績效。

後來我也才知道:單位還賣了這一套軟體給了機車廠。

我還是非常謝謝當初一直很支持我的主管,就是今年電視廣告很紅的宏佳騰機車的

研發副總 --- 黃先生。他今年年初還跟我說:他後來看了許多引擎調教軟體,還是覺得

我寫的軟體對於他們這些一線的引擎工程師來說:還是比較簡潔明確的感覺。

---

後來因為Windows 的作業系統出現了,我還一度用了VB (那時好像是VB3.0) 寫了

一隻程式。雖然可以很快的寫出一隻畫面美美的程式,但總決得不怎麼喜歡,也沒特別的

成就感。...所以,這一隻程式也沒有留下任何蛛絲馬跡了。

------

後來去了園區上班,因為專業分工的原因,就很少有機會碰到寫AP 的機會了。

最後呢?還是為了幫我的USB ROM emulator 寫一隻USB 應用程式,我就不得不硬著頭皮

下來寫VC 的MFC 程式,比起以前寫那個簡單的Turbo C 來說:多了許多OOP 或是

奇奇怪怪的繼承...的語法,的確讓我吃盡了苦頭。...我記得我整整關在家裡摸熟這些東西

還真的花上三個月,還讓賈老師誤以為我整天無所事事,後來搭配了ROM Emulator 出貨

時,賈老師才真正體會到:原來研發工作真的是要要蹲一陣子的~然後就可以回收成果的!

所以這一隻軟體程式是搭配硬體的商業軟體...它是屬與MFC 裡那一種所謂Dialog 型軟體。

當然我自己的感覺是:應該還不算寫得很好的一隻軟體,...您看我後來寫的那一支

ISP 燒錄器的範例程式,是不是就漂亮多了?!

----

您看還包括了一些燒錄器常用的畫面:

但畢竟這些都不是主要的功能,這個東西主要的還是在於銷售硬體的。

這也是我們台灣搞電子的習性,其實後來我有機會跟國外合作開發一些東西...

我們老是習慣說:當老外客人有什麼需求時,我們都很樂意的幫忙修改程式,因為我們心裡

想的還是如何賣硬體...結果每次我們跟客人說:我們需要修改程式時,老外都很緊張...

因為在他們觀念裡,改軟體程式那是要額外Charge 費用的。我想這是一種行銷觀念。

但我們相對的老中的業務生意頭腦喜歡交朋友,半買半相送...結果無形中被犧牲的就是

軟體工程師的價值,也無形中扼殺了軟體工程師追求自我成長的機會。

------------

後來,我的老長官當初需要一位可以幫忙USB 介面,甚至可以寫一點PC AP 軟體的人,

我就跑去幫忙,也算很雞婆的把一些東西接下來做:就是寫一支很初步的MCU 的IDE Tools。

當然我自己心裡也很明白,我是不可能可以寫出一支像Keil C 這樣子的一支程式的。

但我還是願意嘗試說:做做看。--- 我想我在這裡講應該沒有太多問題了,因為這已經是

五六年前的事了,而這一支程式也在市場上消失了。(如果有意見者再跟我說吧!)

寫IDE Tools 是一定會用到所謂的MDI 環境(相較於SDI 或是Dialog )。

他的複雜程度真的很高,然後還要做出Debug 環境中許多Watch/View 甚至Break Point

的攔截...當然啊...他的重點也還是在於USB 硬體介面的處理...

當然為何要自己一個人搞定?!很簡單..因為這中間還牽涉到硬體介面的通訊協定,

自己一個人可以搞定的話,效率最好了。驗證時間可以大大縮短,對於那一種

一開始都不知道系統如何架設時,最有效率的!

----

對於 Keil C 的開發環境來說:最令人詬病的地方是,他就只是一個單純的IDE Tools ...

他沒有硬體上燒錄功能,這些往往需要各家硬體公司自行處理。

所以我當初也就順便把燒錄功能也整合到IDE Tools 裡了...

其實,寫軟體可以寫到這樣子,我想應該也可以"出師"了...至於要不要寫到像人家那一種

動輒要Licence code...又要Upgrade Fee 的...說真的...我能搞的還是台灣人的那一套:

軟體是拿來促銷硬體的一個商業手法。那您覺得您要花多少開發成本在軟體開發工作上呢?

這也就是我為何還是得自己多多少少寫寫看了...說來說去~連我也跑不掉這樣的宿命。

至少據我所知:以前有人問過我關於USB 從底層打通上層AP 時,要花多少錢?!

現在行情我不知道...但在約五六年前聽過一個數字:45 萬元,還不包括給Source Code。

其實,他也只不過幫您建了一套類似USB Tools 的功能。

您不要覺得很貴~說真的~若真正以一個產品來看:我覺得還好~當然啊,您總不能拿那些

阿貓阿狗的那一種隨機附的軟體或系統工具來算...因為從這樣子的USB的程式來看產品

背後的許多眉眉角角,有時您真的很難從帳面上的數字來論斷。--- 這個就是人家老外一聽

修改程式軟體時,會以很嚴肅的態度來考量。我想這是我一直在文中強調的系統整合價值。

這也就是我也為何一直想自己寫寫這些應用軟體程式的原因。

當您只是寫寫一個單純的單晶片應用韌體時,您看到的也只不過是一個單純的產品觀念。

但當您再把這樣的產品觀念又可以延伸到另一個平台時,那就又代表您可以把您的產品

觀念又帶進另一個領域:這不就是我們近年來一直強調的雲端產品觀念嗎?!

所以,如果您是一位軟體工程師,您也不要常常會有一些抱怨,或是您是在搞韌體程式的

工程師...真的~現在在這個行業裡,您說您會寫程式,不管是VC 、VB 或是什麼Delphi...

或甚至寫那個Andriod 或一個APP...說真的~那些都不是重點,難道以老外他們創造這些

軟體開發工具時,他不知道他們寫軟體的功力會比您們老中好?!比得上印度人嗎?

重點還是我說的:您真的要去想的是:當我一旦會了這些東西,那我該拿來做什麼?!

我可以拿來創造出怎樣的一個不同的系統產品觀念?!我想這是我這一篇文章想傳達給各位

或由衷的一種期望吧!---也算是拋磚引玉的一個楔子吧!

------------------

-----------------------

電子自學學習心得回憶(四)

電子自學學習心得回憶(三)

電子自學學習心得回憶(二)

電子自學學習心得回憶(一)

6 則留言:

  1. 前輩,您的ROM emulator公司還在用呢,只是DIP的ROM停產很難買,改用PLCC封裝的.

    回覆刪除
    回覆
    1. 謝謝您們的支持。
      至於DIP 轉PLCC 的東西就自己想辦法吧,...因為還有很多客人只是拿來
      開IC 用的...最後根本也不會上任何ROM 的啦!

      刪除
  2. 請問一下,您當時有C++ Bulider可以用嗎? 為何要用VC+MFC這麼痛苦的方式呢?

    回覆刪除
    回覆
    1. Borland 這家公司搞 Builder 跌跌撞撞的...
      現在C ++ Builder 也不屬於Borland 了,然而Borland 也做別的
      領域了。...
      您以為大家用Microsoft 的產品會很爽嗎?!但是,大家還是在用啊!
      學高科技產品開發工具,就像學徒拜師學藝一樣,您說:廚師一把菜刀,
      可以行遍天下。水電師傅也就那一套手工具箱...這一種老師傅,誰在
      想一天到晚老是在學新工具?...只要在工作上可以幫您使得上力,
      又可以幫您輕鬆應付。辛苦本來就應該的!只是還是要挑好工具啦!
      瞭解?! :)

      刪除
  3. 樓下的問題讓我這個有C++Builder 10年經驗的人來回答最洽當不過,通常Windows上只要是第三方工具,通常或多或少都有相容性的問題,比方呼叫同樣的win32 API,VC++就100%正常,BCB就會跑出靈異現象,原本的工作就做不完了還要幫BCB debug...那不如一開始就辛苦點,用VC開發就好,畢竟寫程式是要解決自己的問題而不是幫Borland解決問題

    再說,如果微軟發現Windows有bug,非得要VC更新不可,他會很好心的通知競爭者Borland哪邊要改嗎?

    如果真的很討厭學MFC(說實話,微軟也不主推這個了,他希望您用C#),可以考慮改用Qt,他有一個絕大的好處是UI可以用類似BCB的方式來寫,但是compiler可以用VC++,這樣就可以一兼二顧了~

    回覆刪除
    回覆
    1. 非常謝謝您所提供的軟體開發經驗。
      ---
      尤其這一句話:"畢竟寫程式是要解決自己的問題而不是幫Borland解決問題.."
      這也可以適用於硬體觀念:像選用MCU 也一樣!
      說真的啦~我自己也很清楚:我自己用MFC 真的有點落伍了,
      但想一想我幾十歲的人了?落伍本來就是"罪有應得"的!! :))  ...
      況且如果我現在還得要覺得我MFC 落伍還要趕快去學新的 C# 或Qt...
      那我更應該要好好的自我檢討了:年紀一大把還要靠這些過活?
      我真的入錯行了...在台灣高科技的這一種環境裡,應該沒有人會認為
      您五六十歲還在寫程式的人是非常有價值的人吧!

      刪除