2009-10-18 61 views
0

我爲開發OLPC項目的一款軟件有什麼選擇。從各種網站和維基看,我可以誠實地說,我仍然完全困惑。它是糖,C++,smalltalk還是python?幫幫我!OLPC開發選項

感謝,

回答

5

首先,簡單的答案:你想使用Python,和你想使你的Python程序「sugarized」。

糖不是一種編程語言或開發工具包。這是一個GUI環境和「活動」框架。孩子們在OLPC筆記本電腦上使用的應用程序稱爲「活動」,Sugar爲他們提供了一系列工具供他們使用,以便他們可以將信息存儲在版本化的對象數據庫(從用戶角度來看「日記」),可以顯示在可用的活動列表等

爲了製作糖化應用程序,你可以用python編寫它們,使用pygtk和/或pygames API進行圖形化工作,並使用其他Sugar服務的Sugar API(如存儲,訪問相機,麥克風,網絡非常酷的東西等)。您還可以使用Sugar API將該程序作爲Sugar活動提供。

您可以爲OLPC編寫C++代碼,但Python是首選語言。

對於Smalltalk,OLPC項目確實提供了一個Squeak環境,但主要是爲了孩子們使用Smalltalk編程,而不是作爲一個工具來構建旨在分發用於OLPC的活動。不是說你不能這樣使用它(我認爲Smalltalk應用程序的糖化是可能的 - 不確定),但它會成爲一個記憶豬。 Smalltalk本質上並不比Python更渴望內存,但OLPC開發者已經做了一些聰明的事情來優化Python內存的使用。基本上,Python解釋器所消耗的幾乎所有內存都是在所有基於Python的活動中共享的。將Smalltalk活動添加到混音中將意味着運行另一個解釋器。

你可以在http://activities.sugarlabs.org找到很多活動來看(源代碼)。如果您爲OLPC開發任何產品,強烈建議您獲得一個Sugarlabs帳戶並使用其git基礎架構(http://git.sugarlabs.org)。

我還強烈建議你加入Sugar開發郵件列表。它主要用於討論Sugar平臺的開發,但是那裏有非常有幫助和非常有知識的人員,他們可以回答問題並向您指出正確的資源。 http://lists.sugarlabs.org/listinfo/sugar-devel

編輯:入門另一個有用的資源是:

http://wiki.sugarlabs.org/go/Development_Team/Quickstart

1

Swillden的帖子非常出色。我會再添加幾點:

人們已經成功創建了糖化吱吱聲活動(請參閱several games from Potsdam University以及OLE Nepal的工作)。 OLE尼泊爾認爲Squeak環境的快速原型設計能夠快速創建滿足尼泊爾教師需求的課程。不過,我相信這些活動需要更長時間才能完成。 Swillden指出,他們缺乏Python的「主場」優勢。

我推薦使用Python,除非你是明顯更適合Squeak環境。我開發Sugar活動(Implode)時使用的方法是首先在標準桌面(Windows或Ubuntu)上使用Python/pygtk作爲應用程序開發活動,然後將其移植到Sugar。代碼/調試周期在桌面上更快,因爲您不必切換到模擬器或在「日誌」活動中檢查錯誤消息。如果您正確地構建代碼,您可以將大部分桌面/ Sugar差異隔離到幾個模塊,以便您可以繼續在兩種環境中進行開發和測試。我寫了一個pygtk活動,但我希望可以用類似的方式創建一個基於pygame的活動。當然,如果您的活動依賴於訪問某些特定於Sugar的功能(如語音合成或網狀網絡),則此方法可能無法正常工作。

如果您希望以C或C++編寫代碼,無論是對於性能關鍵還是遺留代碼,我都建議將它編寫爲基於Python的活動調用的Python擴展模塊。我相信這是如何實現Write活動(包裝Abiword)和Browse活動(包裝Firefox)。如果您在C/C++中有現有的X應用程序,可以使其在Sugar下運行(請參閱SimCityEtoysXaoS活動),但它缺少其他Sugar活動的外觀。

最後,我發現向Sugar活動添加一些特定功能的最簡單方法是首先找到一個已經存在的活動,然後閱讀代碼以瞭解他們是如何做到的。 Sugar系統還沒有特別詳細記錄;在某些情況下,唯一的文檔就是代碼本身。正如Swillden所指出的,大多數活動的代碼以及糖本身的代碼可在SugarLabs git repository中找到。

5

Faisal Anwar和JediErik開發出優秀的Sugar Almanac,涵蓋了許多您需要知道的爲糖開發的知識。它有庫描述和主題,如

  • 創建有效Sugar活動束
  • 處理存在,線程和國際
  • 與雜誌和其他糖特有的系統範圍內的功能的接口的示例代碼。
  • 處理鼠標,視頻和其他輸入