作者: wolflord (呆呆小狼) 看板: Pirate_Union 標題: Re: 資訊類工作的前景? 時間: Thu Jul 31 07:03:56 2003 其實歪著頭想一想,上一篇的回答應該不是 KIMCHEN想要知道的,而且也對於 真心想從事這一行的人一點幫助都沒有。基於還是期盼後進者能夠有水準,我 還是重新來討論這個問題好了。 首先,關於現存常見的幾種語言我先簡單分析一下: JAVA:這種語言現在是資科資管的主力語言,其實JAVA的出現是所有軟體教師 的一個夢想。早在UNIX時代,資訊界就存在著一股推動虛擬機器的力量。所以 會出現COFF之類的執行碼標準,不過硬體的變化實在太快,這些標準常常隨著 硬體的改良而規格無法統一,甚至分崩離析各自為政。直到近年,硬體的成長 趨緩,而且速度也能夠彌補直譯器的缺憾。所以JAVA這種虛擬機器才又有敗部 復活的空間。但是也由於他使用虛擬機器執行中界碼的關係,所以程式效能幾 乎打上了三到一折(ONLY 30%-10%)。因此,就系統設計而言,能夠允許這 種沒效率的程式存在的狀況幾乎都是為了能夠跨平台使用為目的。因此幾乎全 是客端程式或網頁元件。而無法進入處理核心以及中樞系統的應用。在業界這 類語言產品幾乎全是附屬贈品或附屬工具,幾乎沒有直接商業價值可言。(產 業界給薪講究的是產值問題,只能寫些沒有產值僅能以推廣費支應的東西。這 類程式師如果是專職的,大概薪水不會太好。而且主系統部門如果有人能兼職 撰寫(其實是很可能發生的,會寫 C語言的人沒理由需要花什麼力氣學習JAVA ),更可能職位不保。)。 VB:這種語言基本上也是類似於JAVA使用虛擬機器的語言,但是在微軟的改善 與力推下,他能夠整合二元碼與中介碼交叉執行,所以效率比JAVA好很多。但 是一則他無法撰寫大型系統程式,另外微軟對於BASIC 的政策一直搖擺不定也 導致於他無法成為主流的產品設計語言。而VB最致命的一個缺點則是他只能在 微軟的環境下執行。因此他應用最多只到 MIS解決報表問題而已。在深層的應 用則完全沒有施力的空間。(有人用VB做自控程式,但是這也僅於實驗機器, 因為真正內嵌系統跑不起VB這麼昂貴的環境。) PASCAL/OBJECT PASCAL:這個語言在寶蘭的力推下基本上應用很廣,凡舉VB的 領域他都有涉入。但是由於PASCAL的一些先天限制使得他與系統的結合度不是 很好,因此也多應用於客端或中小型單機系統的程式應用。鮮少有大型系統或 離散系統使用PASCAL做為核心語言(整合或應用語言仍有不少使用PASCAL,但 核心元件卻機乎沒有) C++ :基本上C++ 語言很合適做各類大型系統與超級運算,而且事實上各種RDBS ,SQL SERVER也幾乎多是使用C++ 撰寫的。事實上,現今許多著名系統軟體以 及商業軟體都是使用C++ 撰寫的。但是,C++ 與C 有密不可分的關連與關係, 甚至是經常交互使用的。所以一個自認會使用C++ 卻對C 不熟的程式師是不可 能寫得出有軟體品質的C++ 程式的。因為物件有毛病或底層的FUNCTION寫錯了 卻無能力除錯,只能以上層物件包覆有問題的程式碼。這樣只會使問題更難被 追蹤出來。因此業界招攬程式師時,都是把 C/C++相提並論的。 C++的另一個 問題是C++ 的程式碼大量使用堆疊以及區塊觀念,因此程式碼較C 肥大,執行 效率也比較差。因此在系統應用上很多,但是降低至內嵌系統上時使用的比例 就又大幅降低了。(C++ 能做的C 一定能做,而且可能更好更小,所以如果不 是有開發時間壓力的情況下選擇C 語言的會比C++ 還多) C :C 語言可以說是最低階的高階語言了,幾乎大家都知道,UNIX是用 C寫的 LINUX 也是用C 寫的。而軟體產業界中C 語言程式師的施展空間也是最廣的, 小到內嵌系統的韌體,大到作業系統都可以是C 程式師的施展空間。但是,C 的指標與抽象轉型之類的思考對於沒有抽象思考天分的人的確是一大挑戰(所 以JAVA為了討好老師與學生,怕老師教不會,學生考不好所以就將這個功能強 大的特性予以閹割了>"< )。 ASM :基本上現代沒什麼商業程式是直接以組合語言寫的,但是底層模組,多 媒體邊解碼......等等講究直接發揮CPU 性能的程式區段才會使用組合語言撰 寫。不過組合語言在單晶片家電產品市場上卻炙手可熱,因為單晶片的系統資 源少得可憐,不使用組合語言根本無法達成最少資源下的最大利用。 -------------------------------------------------------------------- 以前我在龍門網時代曾經在程式語言(我是主持人之一)論壇上倡導程式語言 無界線的觀念,事實上如果真的藥學程式語言做為職業這也是必備的基本修為 與功力。以單晶片來說,現行流行的單晶片系統有十多種(主流)要一一學會 這些組合語言以一般的學習觀點來說......根本就瘋了。可是程式語言怎可能 無界線? 其實,撰寫程式的邏輯思考不論在那個語言都是一樣的,就好比語言一樣,都 有其原本的意義。不論是英文或中文或日文 早安 good moring (Oh-Hi-yo)其 表達的內容都是一樣的。因此學習程式要先理解程式的原理以及邏輯解決方法 ,並且要對要執行的硬體模型有一些基本的瞭解。這樣不管是用什麼語言撰寫 對於你而言頂多就是查查指令表對應所要的功能罷了。 所以學程式,我的觀點是要先對計算機原理有真實(物理層)的體認,明確瞭 解記憶體,處理器,周邊之間的關係與關連(對應,或映射)。然後選一種語 言先對各種操作的邏輯進行探索與瞭解,主要學習的是邏輯思考觀念而不是執 著在語言本身。這樣你學會的電腦程式能力才會是真實是你自己的,而不是建 構在別人的程式庫裡面(必須依賴別人幫你完成你所不知道的事與物)。