全國最多中醫師線上諮詢網站-台灣中醫網
發文 回覆 瀏覽次數:2497
推到 Plurk!
推到 Facebook!

請問非Delphi的Pascal問題...

答題得分者是:歸木淡
chenyuchih
一般會員


發表:4
回覆:3
積分:6
註冊:2009-10-04

發送簡訊給我
#1 引用回覆 回覆 發表時間:2009-10-09 22:13:13 IP:140.124.xxx.xxx 訂閱
各位前輩們好,

我是一個原本因工作關係學用Delphi 7的一個Pascal使用者(先前僅用過VB6 / VBA),在網路上搜尋過相關的評價,看到Delphi風光的歷史,也看到它被前東家折騰的經過,甚至有人認為它已經是個過時的老語言,遲早被淘汰,曾經一度懷疑自己學的東西又是個行將就木的語言;後來看到Free Pascal Compiler / Lazarus 的資料,發現它賦予了Pascal一個新的生命,除了支援標準Pascal與大部分Delphi語法以外,它的精神標語 "Write Once, Compile Anywhere" 更是深深打動我心,由於我寫的東西大多以一些工程計算的函式為主,並沒有用到很特別的語法,加上介面相似,所以轉換起來還不致於太困難 (原始碼跨平台的可攜性對我相當重要與方便)。但是我自知自己對這個語言還有很多不了解的地方(不管程式或介面),還是會需要有人能解惑,不曉得這邊有沒有人在用Lazarus?若有FPC/Lazarus這方面的問題,適不適合在這個站裡提出?該在哪個版詢問?

除了FPC/Lazarus以外,我還在網路上找到Turbo51這個非Delphi的Pascal,它是用Pascal語法來編輯8051單晶片的一個工具,看起來還蠻吸引人的,不曉得這邊有沒有人研究?

新手上路,問題可能不太成熟,希望有相關經驗的過來人可以分享一些看法~
謝謝!
歸木淡
中階會員


發表:1
回覆:49
積分:75
註冊:2005-09-07

發送簡訊給我
#2 引用回覆 回覆 發表時間:2009-10-13 02:34:33 IP:125.31.xxx.xxx 訂閱
這完全事乎你做甚麼。

如果你完全不需要圖型界面(GUI),FPC是一個不錯的選擇。
如果你要用GUI,那麼用FPC是折磨自己,因為FPC雖然號稱寫一次,到處可以編譯,但那不過是一個美麗的謊話。看看它的源碼,便會發現到處都是{$IFDEF}。這是因為所有系統的輸入、輸出、文件系統都不同,用的API更不相同,所以除了基本的操作,其它的只能針對不同系統分開處理。

Lazarus的好處是它增加了大量的LCL(相當於VCL),所以輸入輸出統一了,但是深層的操作,例如需要API才能完成的工作,幫助仍然不大。
Lazarus的缺點是設計LCL時故意和VCL不同,所以現有的VCL很少能直接用在Lazarus中的,其次是Lazarus仍然不很穩定,對不同系統的支持差別很大,有時和該系統的程序有不一致的行為和表現。
不成熟是Lazarus的致命傷,一個只有一個Form的程式,編譯後Windows版有9M, Mac 版有12M,我當時便傻了。。。。。

不用Lazarus,理論可以用FPC加QT,不過沒有試過,也不知HEADER是否翻譯好了。

另外,傳說中Project X過一兩年會有,這是Delphi的新兄弟,別和Kylix一樣就好了。



digitraveler
初階會員


發表:89
回覆:91
積分:46
註冊:2005-06-01

發送簡訊給我
#3 引用回覆 回覆 發表時間:2010-03-04 22:14:03 IP:111.254.xxx.xxx 訂閱
小弟開了一個 Lazarus 開發的部落格 http://tw.myblog.yahoo.com/bruce0829/
不過小弟公司應用的都是簡單商業領域, 沒有太多深層(如控制硬體)的技術
公司目前也不用 Lazarus, 這個部落格完全是休閒學習的心得筆記 (目前是 win32 版, 過一陣子會裝 Linux 版玩玩)
希望在休閒沒壓力的情況下來練習撰寫跨平台上各種領域的小工具小程式
也希望在撰寫小程式的當中, 多了解一下 Lazarus 的開發能耐及能力 (看有機會以後能不能寫大工具大程式)
(部落格中有提到 Lazarus 程式執行檔 size 過大的問題, 只要把 Compile Option 一個開關關閉即可)


從第一次發現有這個東西, 到為它開部落格, 也寫了一些小程式, 到今天不過才 20 幾天一個月不到; 之前則是完全沒聽過 Lazarus, 關於學習 Lazarus, 小弟有一些心得提供分享

1.每個人都有自己的技術層次, 技術能力強的人, 可以開發及修改底層核心, 造福更多的人; 另一種就是只會使用 RAD 開發工具, 沒有 RAD 就不會寫程式的人; 小弟的能力等級是屬於後者, 曾經興忡忡把一套很有名的跨平台開放源碼開放工具 DEV C FOR WINDOWS 版灌起來, 灌好後發現它完全沒有視覺化物件, 小弟連程式怎麼起頭寫第一行都不會, 只好把它反安裝; 今天世界上實際投入商用軟體開發的人是 RAD 使用者比較多, 還是懂 VI 會玩編譯器核心的高手比較多 ? Linux 出了十幾年, 連一套 C/C 語言像樣的好用的(重點是好用) RAD 開發工具都沒有, 所以 Linux 的 utility 開發領域一值是少數人的專利; 反之, PASCAL 陣營做到了, 弄了一套還算像樣的 PASCAL RAD 工具 - Lazarus 出來,它不是很完美, 但可以接受; 它 BUG 還很多, 我到目前為止感覺我所遇到的 BUG 我都還能繞道避開或解決或忍受, 甚至我可以說它做的還比 Delphi 自家產品 Kylix 更像Delphi, 以前裝 Kylix 時發現它為了跨平台改用 CLX 元件架構, 但 CLX 跟 VCL 使用上還是有不小的差異, 編譯時也常遇到一些莫名其妙無法解決的錯誤 (聽說 Borland 為了相容性有改 QT, 但又沒開放源碼), 而現在的 Lazarus 的 LCL 元件架構幾乎完全跟 VCL 一樣 (我懷疑它是為了不侵犯 Borland 版權才不用 VCL 這個名字, 以我使用上的感覺來說- LCL 無論在屬性方法事件的使用根本就跟 VCL 完全一樣 !!)

2.關於前面大大所提 "FPC雖然號稱寫一次,到處可以編譯,但那不過是一個美麗的謊話。看看它的源碼,便會發現到處都是{$IFDEF} ..." , 小弟有不同見解, 小弟也是不信Lazarus 真的完全可以 100% 將 SOURCE CODE 連改都不用改就可跨平台, 但我相信修改幅度是很小的, 除非你寫的是對裝置依賴太深的 CODE (如多媒體用了太多 WINDOWS 東西的話), 到處都是{$IFDEF}這當然很正常, 那為何要浪費掉這個資源優勢呢? 我想 Lazarus 就是看準這點而來, 我們不必為了在 Linux 領域上開發繪圖程式, 去重新了解學習 qt 或是 gtkmm 函式庫要怎麼使用, 拿出你的回憶 - Delphi , 就可在 Linux 上寫程式, 希望大家不要放棄 Delphi (或是說不要放棄 Pascal), 我們這些使用過 Delphi 的 user 都應該希望 Pascal 陣營有所長進跟茁壯, 雖然我本身也用 Borland C Builder (公司開發程式的主力, 所以不能把我歸類為 Pascal 陣營), 不過我對 C/C 陣營經營 Linux 多年卻沒有像樣好用的 RAD 工具深感失望也不抱期望, Linux 上的 C/C 領域就留給高手去玩 , 我這種只會用 RAD 的就等 Pascal 陣營的努力, 最後還是一句話 , 雖然 "不成熟是Lazarus的致命傷", 但 Lazarus/Pascal 陣營有在長進有在努力, Lazarus 仍在持續更版中, 而 Linux C/C 上能像 Lazarus 這麼好用的 RAD 我相信應該是永遠都不會有的, 再次為 Lazarus/Pascal 團隊掌聲鼓勵

以上見解或許不夠客觀正確, 還請各位看官見諒, Lazarus 也不能取代各位公司所使用最先進開發工具的功能, 但接觸它研究它只是一種精神的傳承, 當然也有機會因為跨平台而真的使用它來開發正式的產品 (小弟正這麼打算, 所以正在試它各種元件的能耐及 bug), WINDOWS .NET 平台聲勢茁壯, 但需要依附在 .NET FRAME WORK 上, 小弟還是喜歡能獨立執行的原生碼, 平常仍用原生碼開發工具寫寫小東西, 以免以前學過的通通忘光, 各位 Delphi/Pascal 前輩及同學, 大家不要把 Delphi/Pascal 遺忘阿

編輯記錄
digitraveler 重新編輯於 2010-03-04 22:16:33, 註解 無‧
digitraveler 重新編輯於 2010-03-04 22:17:34, 註解 無‧
digitraveler 重新編輯於 2010-03-05 07:44:37, 註解 無‧
digitraveler 重新編輯於 2010-03-05 07:45:47, 註解 無‧
syntax
尊榮會員


發表:26
回覆:1139
積分:1258
註冊:2002-04-23

發送簡訊給我
#4 引用回覆 回覆 發表時間:2010-03-05 08:19:58 IP:59.125.xxx.xxx 訂閱
1. 只會用 RAD 寫程式的,某部分,根本不適合寫程式,某部分,根本不會寫程式,寫出的東西,太爛
但,這表示技術強的人不用?不盡然,同時 RAD 比較快?也不盡然,Command line 某些狀況下,會比較快。

2. Delphi 是軟體名稱,程式語言正確的名稱是 Pascal,Turbo Pascal 只是另一項 Borland 當時的作品

3. 能快速達到目標的工具,就是好工具 c 也好 c 也好 pascal 也行,而有新東西,就學

4. Linux 之所以強大,「高手」如雲,就是因為他預設使用文字界面,強迫你變強,不像 Windows 使用 GUI 無形中將你變笨,乖乖掏錢
使用者付費,是正確的,但何以 M$ 這麼有錢,因為其收費,高到不合理

5. 我們很迷「跨平台」這種東西,這根有一種藥吃了,什麼病都可以治好一樣,這是搞不清立場所言
就像跨平台的 Java ,你必須先將「該平台版本」的 JVM 裝起來,跨的真好
須要再動手修改的,都不能算跨平台

===================引 用 digitraveler 文 章===================
小弟開了一個 Lazarus 開發的部落格 http://tw.myblog.yahoo.com/bruce0829/
不過小弟公司應用的都是簡單商業領域, 沒有太多深層(如控制硬體)的技術
公司目前也不用 Lazarus, 這個部落格完全是休閒學習的心得筆記 (目前是 win32 版, 過一陣子會裝 Linux 版玩玩)
希望在休閒沒壓力的情況下來練習撰寫跨平台上各種領域的小工具小程式
也希望在撰寫小程式的當中, 多了解一下 Lazarus 的開發能耐及能力 (看有機會以後能不能寫大工具大程式)
(部落格中有提到 Lazarus 程式執行檔 size 過大的問題, 只要把 Compile Option 一個開關關閉即可)


從第一次發現有這個東西, 到為它開部落格, 也寫了一些小程式, 到今天不過才 20 幾天一個月不到; 之前則是完全沒聽過 Lazarus, 關於學習 Lazarus, 小弟有一些心得提供分享

1.每個人都有自己的技術層次, 技術能力強的人, 可以開發及修改底層核心, 造福更多的人; 另一種就是只會使用 RAD 開發工具, 沒有 RAD 就不會寫程式的人; 小弟的能力等級是屬於後者, 曾經興忡忡把一套很有名的跨平台開放源碼開放工具 DEV C FOR WINDOWS 版灌起來, 灌好後發現它完全沒有視覺化物件, 小弟連程式怎麼起頭寫第一行都不會, 只好把它反安裝; 今天世界上實際投入商用軟體開發的人是 RAD 使用者比較多, 還是懂 VI 會玩編譯器核心的高手比較多 ? Linux 出了十幾年, 連一套 C/C 語言像樣的好用的(重點是好用) RAD 開發工具都沒有, 所以 Linux 的 utility 開發領域一值是少數人的專利; 反之, PASCAL 陣營做到了, 弄了一套還算像樣的 PASCAL RAD 工具 - Lazarus 出來,它不是很完美, 但可以接受; 它 BUG 還很多, 我到目前為止感覺我所遇到的 BUG 我都還能繞道避開或解決或忍受, 甚至我可以說它做的還比 Delphi 自家產品 Kylix 更像Delphi, 以前裝 Kylix 時發現它為了跨平台改用 CLX 元件架構, 但 CLX 跟 VCL 使用上還是有不小的差異, 編譯時也常遇到一些莫名其妙無法解決的錯誤 (聽說 Borland 為了相容性有改 QT, 但又沒開放源碼), 而現在的 Lazarus 的 LCL 元件架構幾乎完全跟 VCL 一樣 (我懷疑它是為了不侵犯 Borland 版權才不用 VCL 這個名字, 以我使用上的感覺來說- LCL 無論在屬性方法事件的使用根本就跟 VCL 完全一樣 !!)

2.關於前面大大所提 "FPC雖然號稱寫一次,到處可以編譯,但那不過是一個美麗的謊話。看看它的源碼,便會發現到處都是{$IFDEF} ..." , 小弟有不同見解, 小弟也是不信Lazarus 真的完全可以 100% 將 SOURCE CODE 連改都不用改就可跨平台, 但我相信修改幅度是很小的, 除非你寫的是對裝置依賴太深的 CODE (如多媒體用了太多 WINDOWS 東西的話), 到處都是{$IFDEF}這當然很正常, 那為何要浪費掉這個資源優勢呢? 我想 Lazarus 就是看準這點而來, 我們不必為了在 Linux 領域上開發繪圖程式, 去重新了解學習 qt 或是 gtkmm 函式庫要怎麼使用, 拿出你的回憶 - Delphi , 就可在 Linux 上寫程式, 希望大家不要放棄 Delphi (或是說不要放棄 Pascal), 我們這些使用過 Delphi 的 user 都應該希望 Pascal 陣營有所長進跟茁壯, 雖然我本身也用 Borland C Builder (公司開發程式的主力, 所以不能把我歸類為 Pascal 陣營), 不過我對 C/C 陣營經營 Linux 多年卻沒有像樣好用的 RAD 工具深感失望也不抱期望, Linux 上的 C/C 領域就留給高手去玩 , 我這種只會用 RAD 的就等 Pascal 陣營的努力, 最後還是一句話 , 雖然 "不成熟是Lazarus的致命傷", 但 Lazarus/Pascal 陣營有在長進有在努力, Lazarus 仍在持續更版中, 而 Linux C/C 上能像 Lazarus 這麼好用的 RAD 我相信應該是永遠都不會有的, 再次為 Lazarus/Pascal 團隊掌聲鼓勵

以上見解或許不夠客觀正確,還請各位看官見諒, Lazarus 也不能取代各位公司所使用最先進開發工具的功能, 但接觸它研究它只是一種精神的傳承, 當然也有機會因為跨平台而真的使用它來開發正式的產品 (小弟正這麼打算, 所以正在試它各種元件的能耐及 bug), WINDOWS .NET 平台聲勢茁壯, 但需要依附在 .NET FRAME WORK 上, 小弟還是喜歡能獨立執行的原生碼, 平常仍用原生碼開發工具寫寫小東西, 以免以前學過的通通忘光, 各位 Delphi/Pascal 前輩及同學, 大家不要把 Delphi/Pascal 遺忘阿

digitraveler
初階會員


發表:89
回覆:91
積分:46
註冊:2005-06-01

發送簡訊給我
#5 引用回覆 回覆 發表時間:2010-03-05 10:00:02 IP:122.117.xxx.xxx 訂閱
1.小弟由衷承認只會用 RAD 的人不叫 "真正會寫程式", 但這樣的人 "不適合" 寫程式嗎 ? 不盡然, 要看 "適合" 的定義為何 ? 據小弟對電腦界的了解, 商用軟體開發大部分都是 "這樣的人" 撐起來的, 高手李維陳寬達錢達智(我記得起來的名人)會跟你乖乖的在那邊寫進銷存 ?? 換另種角度思考, 進銷存這種最通用最廣泛, 所有企業都會用到的軟體, 不是更應該由高手中的高高手來 "寫程式" 嗎? 但結果卻是比較 "適合" 留給那些只會用 RAD , 把精神專精在商業邏輯開發上,  所謂"不適合寫程式,但卻在寫程式" 的人身上

2.程式對人類的意義為何 ? 不就是幫人快速解決問題 ? 但用程式解決問題分兩個層面 - 程式技術跟商業邏輯(或說 domain know-how), 把一套程式的成功與否看在技術高超與執行效率快速上, 這是搞不清立場所言 (看你程式是寫給自己用, 還是當作公司產品賣給客戶用), 程式邏輯設計錯誤導致商業流程的錯誤, 不符合人性的操作介面導致操作不順暢, 系統教育訓練困難, 執行效率高又有何用 ? 只會用 RAD 但有 domain know-how 的人都不該寫程式 ? 據小弟的了解, 客戶對於程式的要求是 domain know-how 更甚於你用什麼工具開發或是你到底是否真的會寫程式, 實際在寫程式的一般來說都是公司職位最低, 面對客戶或系統最前端的人( 像是小弟我), 程式邏輯很爛都可靠經驗修正及客戶壓力迫使你去改善, 我捫也不需要因為要改善程式效率去放棄使用 RAD ( 也不可能, 公司的程式不是你一夜之間或一月之間可以換掉 開發語言或開發平台的), 為了提升效能我來 K.TOP 跟人請教及討論解決方案, 但從頭到尾我還是只用 RAD


3.小弟並不想從學術或理論角度研究什麼叫做真正的"跨平台", 須要再動手修改的,到底算不算跨平台也不重要, 小弟只想在公司業務老是抱怨 "競爭對手在 Linux 版上 有產品可賣, 而我捫沒有" , 因為這個現實層面問題, 而努力研究將我捫在 MS 上的產品, "以最快的時間, 最少的轉換成本", 想辦法怎麼能 "跨" 到 Linux 上執行的 "行動者", 微軟有不有錢, 收費合不合理, 跟我捫使不使用微軟平台沒有關係, 甚至也不應該用這個原因反制微軟,小弟的年紀也脫離了 "因為我看你不爽, 所以我不用你產品" 的幼稚心態年齡層, 使用其他平台原因應該就只有 "對公司產品競爭力有沒有提昇, 或是效率好不好" 這個原因

4.GUI 無形中將我們變笨, 但 GUI 並不是罪過而是趨勢, 今天大至太空總署超級電腦終端機, 小至手機都有 GUI; 技術能力高強者開發 GUI/RAD 工具給技術能力低者使用, 讓有 domain know-how 的使用者有快速的 Implementation 能力, 這也沒有任何罪過

編輯記錄
digitraveler 重新編輯於 2010-03-05 10:01:07, 註解 無‧
digitraveler 重新編輯於 2010-03-05 10:17:25, 註解 無‧
digitraveler 重新編輯於 2010-03-05 10:18:32, 註解 無‧
digitraveler 重新編輯於 2010-03-05 10:19:32, 註解 無‧
digitraveler 重新編輯於 2010-03-05 10:21:09, 註解 無‧
digitraveler 重新編輯於 2010-03-05 10:24:13, 註解 無‧
digitraveler 重新編輯於 2010-03-05 10:26:43, 註解 無‧
digitraveler 重新編輯於 2010-03-05 10:53:54, 註解 無‧
digitraveler 重新編輯於 2010-03-05 13:13:51, 註解 無‧
chenyuchih
一般會員


發表:4
回覆:3
積分:6
註冊:2009-10-04

發送簡訊給我
#6 引用回覆 回覆 發表時間:2010-03-05 13:07:18 IP:122.116.xxx.xxx 訂閱
兩位前輩說的都有道理......只是觀點不同,我想就跟 歸木淡 兄所說的 "完全視乎你做什麼" 是同一個意思,

有些人把程式本身當作目的、有些人寫程式只是輔助其他用途的工具,自然有的人訴求專精、高效,有的人覺得堪用就好,

像我寫程式就是在輔助我工作上一些工程、統計上繁複的計算,

手動計算、查表要花兩天才算得出來的一個工況用電腦跑不到半秒就給你答案,這就是我寫程式的目的,

所以比較注重我寫的Library Function Code是不是夠泛用(我大多都用system-independent的方式寫),

換到別個系統上一樣能在最小更動的情況下沿用,而且能被別的程式語言呼叫與使用。

因此才會對跨平台特性有那種期待、反而不是那麼重視自己寫GUI interface......

不知以後若有lazarus相關的問題,是否方便向d大請教?

謝謝!
digitraveler
初階會員


發表:89
回覆:91
積分:46
註冊:2005-06-01

發送簡訊給我
#7 引用回覆 回覆 發表時間:2010-03-05 13:49:31 IP:122.117.xxx.xxx 訂閱
Lazarus 跟 Delphi 的相容性真的很高, 開發一般 AP 用途足矣, 大家互相討論求進步


編輯記錄
digitraveler 重新編輯於 2010-03-06 12:31:23, 註解 無‧
系統時間:2024-04-28 14:37:32
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!