作者 Bruce Eckel 翻譯 喜來樂哈哈
原文 http://www.artima.com/weblogs/viewpost.jsp?thread=196792
在這里您可以找到大會的所有報告。把鼠標停在某個報告上,將顯示一個說明框,里面可能會有它的筆記,錄音或者錄像。要是您沒有看到,可能您還要等幾天或者幾個星期。
一孩子一筆記本電腦(One Laptop Per Child)
Ivan Krstic是一位軟件構架師和哈佛大學的研究員。他主管一孩子一筆記本電腦項目中的信息和安全體系結構。 他向大家介紹了這個項目, 介紹了他們面對的一個又一個幾乎不可能克服的困難,以及他們怎樣克服這些困難。他帶來了幾臺電腦,大家可以參觀筆記本電腦的具體樣子。
除了一些底層驅動類的代碼,這個項目的所有軟件都是用Python寫的。包括文件系統。通過按鍵盤上的一個"查看源代碼"按鈕,小孩可以查看各種程序的源代碼,甚至修改源代碼。
Ivan正在尋找可以幫助他們的人,全職的或者實習的都可以,他們計劃8月份開始交貨。我很想抽出幾個星期的時間去幫助這個項目。我認為這是一個改變時間的項目。
在接下來的一個早上,Adelle Goldberg (著名的Smalltalk專家)報告了美國教育界和世界教育界面臨的困難。它混亂的超出我的想象。一孩子一筆記本電腦項目將幫助孩子更好的學習,即使教育系統是如此的混亂。我希望這個項目可以促進世界上的教育系統的改進。您可以讀讀Neal Stephenson的小說"The Diamond Age"(個人認為它比"Snow Crash"更好),您會更深刻的理解這個項目的意義。
Adelle介紹的奇聞之一是,一個學校有的班級有兩臺電腦,有的只有一臺電腦. 學生輪著到電腦室里練習。他們發現只有一臺電腦的學生做的要更好一些。因為只有一臺電腦的班級是兩個學生一塊練習,他們會相互幫助。Adelle指出在很多情況下我們現有的教育體系沒有培養甚至抑制了學生相互幫助的能力。哎. 這一點讓我們想到,很多管理層和程序員經常認為結對編程(pair programming)是不可能的。
譯者注:
一孩子一筆記本電腦是MIT和一些公司(包括Google)發起一個非盈利項目,目的是制造10億臺價值約100美元的筆記本電腦,主要是幫助一些貧窮國家里6歲以上的孩子學習電腦。通過組裝現有的硬件和軟件,建立教育學習平臺XO。除了部分硬件,其他硬件和所有軟件都來之開源社區。一個修剪過的Linux內核(基于Red Hat的Fedora),用Python開發的GUI和窗口管理器,所有的應用軟件都是用Python寫的。
Python的它山之石
- Extension methods/Open classes
- Multicore Concurrency (like Erlang?)
- Better support for metaclass programming. It has gotten better in Python, but it still requires an intellectual leap -- to the point that many Ruby programmers don't think metaclass programming is possible in Python.
- XML Direct Support (or more trivial). Groovy has XML support that allows you to completely treat XML as an object tree -- you don't have to see or type a single angle brace. The inclusion of elementree has helped the situation, but I like the idea of being completely shielded from XML.
- Macros -- a'la Lisp. This might throw open the door to tremendous power. I've never seen a Lisp macro, but I've heard Lisp programmers wax poetic about them.
- Restricted Execution (sandbox). Similar to Java's applet sandbox. Might allow an applet-like mechanism for Python on the web.
- Forking Interpreter/Cached Interpreter. A potential way to deal with the concurrency issue, if it's very fast to start up a new interpreter in a separate process.
- Improve Interprocess Communication. (Posh?)
- Built in application packager. It would be really helpful to be able to have zero-configuration, one-button creation of an application distribution.
- Direct support for useful Idioms/Patterns. For example, the reactor pattern has direct support in the form of the asyncore library.
- Trigger SQL from SELECT, etc. Take inspiration from C# Linq query expressions, which look like list comprehensions for data selection. Database programming becomes fully integrated into the core of the programming language.
- Agents/Actors. This may have some support through Pygame extended agent. Apparently an agent framework on top of Pygame. Pyro -- Python Remote Objects -- apparently has some agent behavior.
- Precompiler for domain-specific languages -- library and other tools. It would be nice to have some kind of support for creating DSLs in the way Ruby does. This could be a precompiler, the aforementioned Lisp-style macros, or something else. IPython is embeddable, and something like that might be a good start.
其他記錄
- Crunchy (formerly crunchy frog) is a very impressive way to create interactive tutorials that work inside a browser (for full functionality, requires Firefox).
- I saw a very impressive lightning talk about a new game and multimedia library from Pyglet. This apparently uses ctypes to directly connect to the built-in operating system facilities on Linux, Mac OS X and Windows. Looks quite promising.
- IronPython gets around the global interpreter lock. So you can create fully threaded programs that run in true parallel on multiple cores using IronPython. It also provides an easy interface to Windows Forms.
-
ctypes are built into Python 2.5. These allow fairly easy connection to C dlls. This provides a way to reuse C libraries, but it also seems like a good way for speed optimizations. Numpy supports ctypes. There's also COMtypes, which is a Win32 COM wrapper. Swig seems to have improved, as well (but doesn't support nested C++ classes).
- Bazaar-vcs.org. A new distributed version control system. The next step up from subversion.
- Trac (written in Python) has a plugin framework, might be useful as an example plugin architecture.
- Enthought: SciPy, visualization support.
- Itertools talk. Very powerful stuff here. Look for Itertools recipes. Talk slides at http://us.pycon.org/common/talkdata/PyCon2007/028/IteratorsInActionWithNotes.pdf
- It seems likely that TurboGears and Pylons will merge. This looks like a good thing.
- Pylab has good plotting support. Also Matplotlib.
- There's a 300-page book out soon about Numpy (Numerical python).
- Checking tools: Pychecker, Pylint, pyflakes.
- The Zeroconf Python library uses multicast DNS to broadcast configuration information among machines. Also see mod_rendevous.
- Guido's current project information can be found by looking him up on Google video.
- Pymock appears to be a very powerful mock object framework.
- Nose: discovers and runs unit tests. Eliminates unit test scaffolding. Also provides code coverage, and uses the hotshot profiler.
- Nosy: "cruise control" style system for Nose tests.
- Stackless python seems to have evolved significantly. Gained many benefits from PyPy project (Python written in Python). It doesn't seem to get around the global interpreter lock problem, and thus is a code organization technique rather than allowing true parallel programming on multiple processors.
- RPython allows you to write Python that is compiled to C, in order to execute 30-40 times faster.
Pycon 2008將于2008年3月14-18日在Chicago舉行。
全文地址
http://m.tkk7.com/xilaile/archive/2007/03/19/104645.html