埋沒的神器Lazarus

最近需要寫一個(gè)Windows平臺下的小工具,技術(shù)選型上思考了很長時(shí)間,最后調(diào)研之后還是決定拿Lazarus來寫,開寫之前還有些猶豫的,結(jié)果一寫之下發(fā)現(xiàn)無比利索,不禁感嘆,真是個(gè)埋沒的神器!

Lazarus來源于曾經(jīng)赫赫有名的Delphi,不知道這個(gè)古老的工具還有多少人記得,但對我來說那就是一個(gè)時(shí)代的烙印。想當(dāng)年剛學(xué)編程的時(shí)候,因?yàn)榛ヂ?lián)網(wǎng)還不發(fā)達(dá),學(xué)校的機(jī)器上安裝的還是Turbo Pascal,從它開始踏入編程之路。雖然畢業(yè)以后的工作跟編程八竿子打不著,但仍然作為業(yè)余愛好,Delphi我曾把玩良久,雖然后來逐漸走向末落,但不妨礙我為之一再驚嘆。

Lazarus的發(fā)起是在Delphi 7之后,由于Microsoft .net的推出,Delphi從版本8開始轉(zhuǎn)向Delphi .net,包括IDE也轉(zhuǎn)為Dock風(fēng)格。這個(gè)時(shí)候,有一批程序員們,他們不喜歡.net模式,也不喜歡Delphi的閉源,便開始籌建Lazarus,力圖讓其繼續(xù)沿著Delphi 1~7的風(fēng)格繼續(xù)發(fā)展,并吸收Kylin的成功經(jīng)驗(yàn),使之適應(yīng)跨平臺開發(fā)的需要,最終一直發(fā)展到今天。Lazarus這個(gè)名詞來源于圣經(jīng),是個(gè)曾在死后被耶穌喚醒復(fù)活的人物,應(yīng)當(dāng)也是寓意著開發(fā)者對它的厚望。

這是Lazarus在Win10 1709版本上運(yùn)行的截圖:
win10_1709上運(yùn)行的Lazarus

那么Lazarus的強(qiáng)大之處在哪?

第一,RAD開發(fā),快速構(gòu)建UI和應(yīng)用程序框架。我在寫這個(gè)工具之初,考慮過很多辦法:Electron坑太多且難以訪問系統(tǒng)底層,C++開發(fā)速度慢,VC的話還要依賴VC_redist,C#要依賴.net平臺,各個(gè)不同Windows版本的.net版本不一樣,又不能完全兼容。但用Lazarus,開發(fā)速度快,不需要依賴別的庫,普通的界面拖拖拉拉就可以搞定。

第二,底層API無縫訪問。作為Delphi的移植,Lazarus保留了對Windows平臺API的直接訪問,并有著堪比C++的速度。這一點(diǎn)讓C#和Electron望塵莫及。尤其Electron,訪問底層API得自己寫C++依賴包,運(yùn)氣好的話可能會有現(xiàn)成的包,但安裝和使用體驗(yàn)同樣可能讓人崩潰。

第三,跨平臺移植性。Lazarus可以支持Windows、Linux、Mac以及Android、iOS、WinCE等多個(gè)平臺,如果開發(fā)的程序需要跨平臺,那么在依賴底層API的地方加上條件編譯即可。就拿Windows平臺來說,Lazarus能夠支持的版本包括Win95、Win98、WinMe、WinNT3.51一直到最新的Win10,生成的可執(zhí)行文件尺寸較小,并有著閃電般的運(yùn)行速度。這一點(diǎn)恐怕絕大多數(shù)開發(fā)工具難望其項(xiàng)背。點(diǎn)擊這里可以查看Lazarus在各個(gè)不同平臺上運(yùn)行的截圖

第四,完全開源并免費(fèi)。Lazarus及它所基于的Free Pascal都是開源免費(fèi)的,用它不需要有任何負(fù)擔(dān)。

但是使用Lazarus也不是那么容易的。它的劣勢在于:

第一,小眾的語言。Lazarus基于Free Pascal,當(dāng)今還在使用Pascal語言的人數(shù)實(shí)在不多,對于喜歡跟風(fēng)的國內(nèi)程序員恐怕就更少了。相比于常勝不衰的Java、C/C++、Javascript、PHP,以及近年來風(fēng)頭正盛的Python、Go、Swift等,它實(shí)在是個(gè)偏門語言,甚至我估計(jì)大多數(shù)人連Lazarus這個(gè)名字都沒聽過。

第二,古典的IDE。Lazarus使用的是Delphi 7式的IDE,沒有Git集成,沒有像Sublime那樣好用的編輯器,沒有高度智能的代碼提示,尤其是編輯器和熱鍵仍然還是古老的Borland風(fēng)格,純粹的現(xiàn)代程序員適應(yīng)起來,恐怕很需要費(fèi)一番功夫。

第三,稀缺的文檔。Lazarus跟曾經(jīng)的Delphi一樣,架構(gòu)優(yōu)秀然而文檔極缺。當(dāng)你需要幫助的時(shí)候,不要指望能輕易找到合用的文檔,如果恰好可以用Delphi的舊經(jīng)驗(yàn)?zāi)沁€算幸運(yùn),如果沒有,要么自己去看LCL源碼,要么去Lazarus官方論壇去查詢或提問,所以英文基礎(chǔ)必須要好。

說了這么多,其實(shí)最終歸結(jié)起來,任何一種語言、平臺、技術(shù)都有它好用的地方,也都不能包打天下,關(guān)鍵在于學(xué)好用好,根據(jù)不同的需求,選擇最合適的工具而已。如同Lazarus,雖然如今想要用它并不容易,但只要能用起來,適合你的需求,你就能感覺到它的強(qiáng)大和變態(tài)。


經(jīng)驗(yàn)之談,與君共享。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容