wiki:PyCon2007/20070223

PyCon2007/20070223

PyCon2007 >> 20070223

カンファレンス1日目。 16時をすぎた辺りから、眠いのと寒いのとでリタイアしてしまった。 テキサスだからといって、この季節にクーラーってのは何か間違ってる気がします。

pyweek: making games in 7 days

16:15から。アルゼンチンの人?通訳付き。

pyweekルール:

  • 1 week
  • themed
  • code from scratch
  • published libraries ok
  • free or new assets
  • no prizes

Creating WhatWhat Status with TurboGears

15:40から。定刻通り。

Optio Software
  • 小さいソフト開発会社
  • 4人~16人のチーム
  • アジャイル開発

どのようにプロジェクトのステータスレポートを得るか?

"WhatWhat?"のアプローチは:

  • Dashboard -- status at a glance
  • Project Page -- detailed project info
    • issues, risks, notes, questions & files.

最初のバージョンは、たった4日間で書いた。TurboGearsがあったから!

Python on Parrot -- under the hood

14:37~。

ひとつのVMの上にPerlとPythonの両方を乗せようという野望。 元々はLarry WallとGuidoの冗談から生まれた?

Parrot 0.4.9 released on Feb 22, 2007.

Compilers for Perl6, Tcl, Ruby, Python, JavaScript?, Common Lisp in progress.

新しくバイトコード(とアセンブラ言語)を定めている。PIR

  • "Higher-level assembly language"
  • "This is not your typical assembly language"

Native Calling Interface (NCI)

  • Cライブラリ関数を呼び出すことができる。

Towards and Beyond PyPy

13:52開始。遅れ気味。時間が過ぎてから、わらわらと聴衆が増える。

ぱいぱい。 Python in Python。 コンパイラ、インタプリタのフレームワークでもある。

  • CPythonに比べて、2~4倍遅い。
  • .net CLIのバイナリをはき出すこともできる。

モチベーション

  • JITやよりよいガベコレを使うことによるパフォーマンス向上
  • add expressiveness -- stackless style coroutineとか。
  • 移植を簡単にする。
  • Standard Interpreter
  • Compiler Framework
    • Flow Analysis
    • Annotator

バックエンド

Cバックエンドは、Stacklessの機能を持つ。-- coroutines, tasklets

  • JITコンパイラ
  • 透過プロキシ

@lazyデコレータ

未来:

  • もっといいGC
  • JavaScript?, Prolog, Ruby, Perlなどの動的言語に適用する。JITがすぐに手に入る。

Using Stackless

12:00開始。

「Stackless」はPython。ただし、ちょっと機能追加してある。

「協調型スレッド」

import stackless
stackless.tasklet(writeln)("Hello!")
stackless.run()

stackless.schedule()でCPUを譲ることができる。

stackless.channle()でチャンネルを作成し、チャンネル経由でデータを送受信できる。

タスクで捕まえなかった例外は、メインタスクに転送される。

再帰呼び出しを行う代わりに、タスクを作成して制御を移し、値をチャンネル経由で返す。 再帰呼び出しが不要になる。

  • Scalable, light-weight threads
  • Fast inter-tasklet communication

ネットワーク処理への応用。asyncoreといっしょに使う。

Turn it into a library? -- Maybe.

Richard Tew's "stacklesssocket.py" module.

Some stdlib modules "just work".

Some stdlib modules aren't thread-safe -- but Stackless has weaker requirements than system threads.

Grant Olson's excellent tutorial "Introduction to..."

Will not be part of CPython.

ゲームソフトで、100,000タスク並列という実例があるらしい。

 http://stackless.com/

Writing a Python Extension module in C++ using SWIG

11:25から。

MySQLの人らしい。

  • Python自体はC++でモジュールを書くことをサポートしてはいない。
  • C++のメソッドを呼び出す、C関数を作らなきゃいけない。

SWIG以外の選択肢:

  • Boost
  • pycxx
  • ctypes

複数の言語に対応したモジュールのソースをはき出すことができる。 しかし、エラー処理、typemapなど、一部は特定の言語専用のコードを書く必要がある。#ifdef SWIGPYTHON

Writing Your Own Python Types in C

10:55から始まりました。

数独を解くプログラムを作るのを題材にする。 ビットセットを実現する型をCで作り直したら、30秒だったのが20秒になった。

  • Pythonソースは、例として最適。
  • grepしてみよう。
  • 特定の目的の型を作ると高速化できる。

Keynote: One Laptop per Child project

09:00始まりました。

OLPC「XO」では全面的にPythonを採用。 例外は、X.org、mDNS、サウンドデーモンなど。

  • GUI "Suger"という名前。
  • デーモン
  • ファイルシステム?!--内蔵ドキュメントはPythonオブジェクトだ!
  • 検索
  • ユーザスペースのセキュリティ
  • init、起動プロセス!
  • コマンド類

全てをいじることができる。 キーボードに、「ソースを見る」キーがある!

sourceview_key

"Python one button away" comp.lang.pythonはきっと大混雑だよ! "This is a dangerous idea."

ここまで違っていて「Fedoraベース」と言ってるのはどういう意味だろう?

"We can really use your help!"  http://dev.laptop.org/

Pythonを採用した理由は:

  • 全てをいじれるようにしたい。「オープンソースの理想と嘘」ソースがついてても普通はリビルドなんてできない。
  • メモリもストレージも限られている。128MBメモリ、512MBフラッシュ。

その他マシンスペック:

  • Geode-500 366MHz 16KB L1、L2無し。
  • 白黒高解像度、カラー低解像度のデュアルモード液晶。専用チップを開発した。
  • IEEE 802.11sメッシュ。802.11b/g。ダイバーシティアンテナ。
  • USB×3ポート
  • SDカードスロット
  • 30fpsカメラ
  • マイクロフォン

実機2台がプレゼントされた。1台はクイズに正解した人。もう1台はGuidoに。

スライドを映していたのは普通のPC。これがXOだったらかっこいいのだけど。いや、VGA出力なんて無いんだろう。

Attachments