2009-02-20 47 views
4

據我所知,所有GUI工具包基本相同。不同的GUI工具包和語言綁定有什麼區別?

  • 他們都有某種基地的Widget的這一切,可以從繪製繼承。
  • 它們都具有基本相同的部件 - 窗口,滾動條,按鈕,對話框,FileSelector,繪圖區,菜單,集裝箱等
  • 它們都使用事件驅動的架構,一個「主循環」,通過響應用戶事件應用程序註冊回調。
  • 大多數都有某種「GUI構建器」程序(ala Glade for GTK +)。

據我所知,大多數語言綁定到每個單獨的工具包或多或少都是API的字面翻譯。這使得我覺得任何編程語言都會像其他任何編程語言一樣富有成效。

一些工具包不僅僅是一個GUI工具包,而是一個「應用程序框架」,例如wxWidgets。他們添加了API,用於網絡,數據結構,日誌記錄,線程和數據庫訪問等其他內容。考慮到其他大多數的東西通常都有更好的庫來訪問你需要的功能,所以在決定工具包之間似乎並不是特別重要。事實上,如果你知道你已經包含了這些東西,選擇一個簡單的工具包將是有益的,並且知道它是只是一個GUI工具包,如GTK +或FLTK。

那裏的GUI庫與這個模具完全不同嗎?作爲有人試圖闖入GUI編程,你會如何建議在GUI工具包之間進行選擇 - 或者它甚至不管哪一個?什麼編程語言往往是開發GUI應用程序最容易 - 或者我應該堅持我所知道的?

回答

2

你在寫這個問題就好像你從未使用過這些工具包一樣。我不確定這裏真正的問題是什麼。你有沒有使用過Swing?這看起來與.NET WinForms API的生產力水平相同嗎?真的,任何關於這些事情的言論都只會導致一場火焰戰爭或一連串的貶低言論。有差異。當然,有很多相似之處。許多事情與事件驅動的GUI編程環境中需要的許多基礎構造(如消息循環)有關。當然,可能有很多其他的方式來做到這一點,但它是一種經過驗證的方法。

我不知道有任何「從根本上」突破這一點。也許因爲我知道通用GUI應用程序的最不同的GUI庫是從REBOL其觀點:

http://www.rebol.com/docs/view-guide.html

然而,在現實中它不是「根本」不同。

生產力的一個重大差異是這些不同工具包的工具具有非常不同的成熟度級別。你有兩個問題。有一個問題更具理論性:「這些工具包中的任何一個從根本上說有什麼不同?」另一個是大約生產力那就是「各種工具包的生產力水平是否有所不同?」第一個問題是非常有爭議的。第二個問題有明確的答案:是的。

有很多問題要問。首先你將使用什麼編程語言或平臺?你需要移植到Windows,Mac OS X和Linux等不同平臺嗎?它僅僅是Windows還是Linux?顯然,你不想在Linux上使用WinForms(或者如果任何人想要迂腐,就要使用Gnome/KDE)。您可以在Windows上使用GTK +,但「窗口小部件」與本機Windows工具包提供的外觀和感覺不同。你可以選擇Swing,但它只能在Java中使用,並有其自身的問題。我個人認爲Swing的生產力水平並不高。我認爲必須添加所有這些「適配器」和連接,所有這些「佈局」勾子都沒有那麼有效。有些人雖然。

另一個方面是選擇您選擇的工具包所包含的內置小部件以及第三方免費和商業小部件中的選擇。如果你選擇一個比較晦澀的工具包,你將不會有很多異類的小工具可供選擇。例如,你會發現一個適用於.NET WinForms的Mac OS X樣式「dock」widget,可能還有其他一些,但可能不在GTK +中(實際上,它可能存在於那裏,但僅僅是它的例子)。

所以,簡而言之,我認爲你不能說所有的GUI工具包都是可以互換的。還有很多其他問題需要考慮,比如他們是否有基礎小部件和消息循環。

相關問題