從學生時代開始,就不斷的學習各和種不同的程式語言,那時沒特別的想法,就是有興趣就學一下。到我研究所畢業的時候,履歷上面大概寫了有五六種之多的程式語言技能吧。包括,《C》 《C++》《Visual Basic》《PHP》《Perl》《Delphi》《BCB》。說專精的好像也沒有,就是可以靠著毅力東拚西湊寫出想要的功能,談不上什麼軟體架構或工程。
工作之後,在 Embedded Linux 的領域內工作,大部份用的都是C,由其是 Linux Driver 更是C的天下。C++ 有時會在一些 OpenSource 軟體內看到,不過通常都不需要怎麼修改,自己寫的還是以C為主。PHP、Perl 則在自己管理或架設內部伺服器時,也許會少少的用到一點。VB, Delphi, BCB 可以說是再也沒用過了。
人有生老病死,程式語言也有。最近因為工作需要,要寫個GUI的程式,才發現沒半套是自己熟的。Delphi, BCB 好像還在,但母公司 Borland 早就 GG 了,產品在不同廠商間賣來賣去。做了一些失敗的嚐和研究後,最終用 QT +Python 完成了功能。
之後盤點了一下自己的程式語言工具列表,發現還真的沒辦法單靠一套工具就打遍天下。今天就寫篇文章把這些可以用的程式語言介紹一下。這邊是以一個 Embedded Linux 軟體工程師的觀點來看,相信在不同領域的程式高手們,會有不同的看法。
1. Linux Shell Script - 產量最高的語言
這邊所講的是 BASH,當然也可以部份套用到 Busybox 的 ASH。會說 Shell Script 產量最高,是因為他可以很快速的打造出你想要的功能。透過與各種其它工具程式的搭配組合,可以方便的完成簡易的工作。
當然,他速度不快,強在方便。簡單的說,Shell 透過 Pipe 將其它程式的輸出剪剪貼貼,加上一些內建的數值判斷功能,就可以完成想要的功能了。在 Embedded Linux 上,更是可以直接編寫,無需編繹,可以說是大部份上線系統還可以編程的唯一工具。雖然寫出來的 Shell Script 並不是通用在所有的系統上,但大多都只要經過小小的修改,就可以達到同樣的功能了。
2. C 語言 - 最有用的語言
本來要寫最通用,但後來上網查了一下,好像第一名是 Java。會說 C 最有用,是因為在大部份的平台上,C 的編繹器是最普遍的。比起C++,C的library空間比較小,速度比較快。有些小專案,甚至沒有放C++的 library。C提供的功能,對於瞭解程式語言的運作方式是比較好瞭解的。一段C語言轉成組合語言,人肉編繹器應該辦的到。但是一段C++要轉成組合語言,光想可能就另人頭皮發麻。
3. Python - 跨平台解譯語言
Python 是最近才學的,也算是跟著流行,說什麼 Google 都用這個。好吧,那就學吧。Python 和 QT 都是我最近才學的東西。本來工作這十幾年來,都安穩的用著 Shell Script 和 C,也過的挺好的。直到最近要寫一個自動測試程式,才開始搜尋可以用的工具。由於在 Windows 和 Linux 上,我一直沒有一套通用的腳本語言,Python 剛好可以補上這個位子。解譯語言的優點大家都說的很多了,開發比較快,功能比較簡便,速度可接受的慢。做為一種要在PC上執行為用途的語言,Python是可以堪任的。
「你不是會 Perl,為什麼不用 Perl?」因為Perl讓我感覺「重重的」,有種肥大的感覺,我也不知道這印像是哪來的…另一點,就是選 Python 比較潮 XD
4. QT - 跨平台 RAD 工具
不曉得有沒有記錯,QT 是 Quick Toolkit 的縮寫。其實他跟其它很多 Windows 上的開發工具類似,VisualC, BCB, Delphi。就是那種拉一拉就可以跑個視窗程式出來的工具,基本上是以 C/C++為撰寫語言。會選用 QT ,是因為之前有用過 QT 寫過一二個小程式,感覺上比較熟悉。另外就是他是有專門為跨平台在維護的工具,撰寫的程式,只要重新在目標平台上編繹,就可以使用。做為與Python搭配做自動測試的主控角色,負責GUI的呈現與架構的定訂。Python Script 則實際對裝置做控制與下達測試命令。
「為什麼不用 Java,才是真正跨平台」之前我還會反駁說 Java 太慢,但聽說有 JIT 後已經跟 Native code 差不多了。不選 Java 可能跟我之前使用的經驗有關吧,老是 JDK/JRE 沒設好跑不起來。QT 沒這個問題,所有的東西都打包在一起了,保証可以跑。
近年來程式語言種類增加很多種,大家都以開發新的程式語言為樂。Apple 的 Swift,Microsoft 的 C#,Google 的 GO,還有一個沒認真研究過的 Lua。這麼多語言學哪個都不是,就怕押錯注白學了…這就是老的象徵吧,以前為興趣學的,現在是為工作學的,用不上的話,學習的時間就浪費掉了。
上面列出的四個語言/工具,就是目前可以包含我目前工作上的所需。Shell Script 用來在實機上或開發時快速達成簡單功能。C 語言做為主要實現功能的語言。QT 則做為需要圖形化介面時的工具。Python 則被採用為腳本工具,以實現彈性效率兼顧的搭配。