0

为 OLPC 项目开发软件时,我有哪些选择。通过查看各种站点和 wiki,老实说,我仍然完全糊涂。是sugar、c++、smalltalk还是python?帮助!

谢谢,

4

3 回答 3

5

首先,简短的回答:您想使用 Python,并且想让您的 Python 程序“糖化”。

Sugar 不是一种编程语言或开发工具包。它是一个 GUI 环境和“活动”框架。孩子们在 OLPC 笔记本电脑上使用的应用程序称为“活动”,Sugar 提供了一系列工具供他们使用,以便他们可以将信息存储在版本化对象数据库中(从用户的角度来看是“日志”),可以显示在可用活动列表中,等等。

要制作糖化应用程序,您可以用 python 编写它们,使用 pygtk 和/或 pygames API 进行图形工作,使用 Sugar API 进行其他 Sugar 服务(如存储、访问相机、麦克风、非常酷的网络东西等) . 您还可以使用 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

于 2009-10-18T15:16:12.563 回答
5

Faisal Anwar 和 JediErik 开发了出色的Sugar Almanac,其中涵盖了为 Sugar 开发所需的大量知识。它具有库描述和主题示例代码,例如

  • 创建一个有效的 Sugar 活动包
  • 处理存在、线程和国际化
  • 与 Journal 和其他特定于 Sugar 的系统范围功能的接口。
  • 处理鼠标、视频和其他输入
于 2009-12-21T06:47:57.420 回答
1

斯威登的帖子很棒。我再补充几点:

人们已经成功地创建了 Sugarized Squeak 活动(参见波茨坦大学的几场比赛以及OLE 尼泊尔的工作)。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 所指出的,大多数活动的代码——以及 Sugar 本身的代码——都可以在SugarLabs 的 git 存储库中找到。

于 2009-12-14T22:09:35.150 回答