Upload
yoshiori-shoji
View
3.653
Download
4
Embed Size (px)
Citation preview
世界一言語トークスby PythonYoshiori SHOJI
2009年12月12日土曜日
世界一を目指す理由は何か2位ではだめなのか
2009年12月12日土曜日
2009年12月12日土曜日
私の事好き?
2009年12月12日土曜日
好きだよ
2009年12月12日土曜日
世界で一番好きでいてくれる?
2009年12月12日土曜日
世界一を目指す理由は何か
2位ではだめなのか
2009年12月12日土曜日
!?
2009年12月12日土曜日
2009年12月12日土曜日
name:$>
2009年12月12日土曜日
Yoshiori SHOJI
2009年12月12日土曜日
email:$>
2009年12月12日土曜日
site:$>
2009年12月12日土曜日
company:$>
2009年12月12日土曜日
DWANGO Co.,Ltd.
2009年12月12日土曜日
2009年12月12日土曜日
yP t h o n2009年12月12日土曜日
yP t h o n2009年12月12日土曜日
yoshiori $
2009年12月12日土曜日
import this
2009年12月12日土曜日
Beautiful is better than ugly. Explicit is better than implicit. Simple is better than complex.
Complex is better than complicated. Flat is better than nested.
Sparse is better than dense. Readability counts.
Special cases aren't special enough to break the rules. Although practicality beats purity. Errors should never pass silently.
Unless explicitly silenced. In the face of ambiguity, refuse the temptation to guess. There should be one-- and preferably only one --obvious
way to do it. Although that way may not be obvious at first unless
you're Dutch. Now is better than never.
Although never is often better than *right* now. If the implementation is hard to explain, it's a bad idea.
If the implementation is easy to explain, it may be a good idea.
Namespaces are one honking great idea -- let's do more of those!
The Zenof
PythonPython のなかの’禅’
2009年12月12日土曜日
2009年12月12日土曜日
Pythonは汎用の高水準言語である。プログラマの生産性とコードの信頼性を重視して設計されており、核となるシンタックスおよびセマンティクスは必要最小限に抑えられている反面、利便性の高い大規模な標準ライブラリを備えている。
Unicodeによる文字列操作をサポートしており、日本語処理も標準で可能である。 多くのプラットフォームをサポートしており(動作するプラットフォーム)、また、豊富なドキュメント、豊富なライブラリがあることから、産業界でも利用が増えつつある。
2009年12月12日土曜日
Pythonは汎用の高水準言語である。プログラマの生産性とコードの信頼性を重視して設計されており、核となるシンタックスおよびセマンティクスは必要最小限に抑えられている反面、利便性の高い大規模な標準ライブラリを備えている。
Unicodeによる文字列操作をサポートしており、日本語処理も標準で可能である。 多くのプラットフォームをサポートしており(動作するプラットフォーム)、また、豊富なドキュメント、豊富なライブラリがあることから、産業界でも利用が増えつつある。
Wikipedia 見て!!http://ja.wikipedia.org/wiki/Python
2009年12月12日土曜日
簡単に言うと
2009年12月12日土曜日
Guido っていう人が作ったイカした言語
もちろんオブジェクト指向プログラミングだ!!
教育用として設計されたので言語仕様がシンプル!!
インデントでブロック構造あらわしてるぜ!!
電池が付属しています("Battery Included")
2009年12月12日土曜日
Ruby のように動的な型付けの
LL であり、C で簡単に拡張が書けるようになっていて、Scala や Groovy のように JVM
上でも動き、JavaScript のようなスコープと prototype 的な事も出来る言語
2009年12月12日土曜日
良くある
誤解
2009年12月12日土曜日
良くある
誤解
2009年12月12日土曜日
インデントがブロックってキモイ!!
2009年12月12日土曜日
えっ!?
2009年12月12日土曜日
ブロックでインデントしない方がキモイよね?
if(foo == bar){foo.hoge();} bar.hoge();foo.hoge(bar);bar.hoge(foo);if(hoge != foo) hoge.hoge(); foo.hoge();
2009年12月12日土曜日
実行時にワーニング出したり、スタイルチェックのために他のプログラム走らせるくらいなら、そもそも適切にインデントされてなければ動かなければいいよね
2009年12月12日土曜日
次
2009年12月12日土曜日
閉じタグが無いのがキモイ
2009年12月12日土曜日
えっ!?
2009年12月12日土曜日
書けばいいじゃん
end = None::def foo(): print ‘hoge’end
2009年12月12日土曜日
書けばいいじゃん
end = None::def foo(): print ‘hoge’end
2009年12月12日土曜日
書けばいいじゃん
end = None::def foo(): print ‘hoge’end
2009年12月12日土曜日
逆に考えるんだ!! Python は閉じタグを”強制”しない。書きたければ書けばいいし他の言語のように”強制”しないだけだと
2009年12月12日土曜日
次
2009年12月12日土曜日
関数呼び出しでカッコが必須なのがめんどくさい
2009年12月12日土曜日
えっ!?
2009年12月12日土曜日
def foo(): return 'hoge'
こういう関数があった場合
foo()
これは関数呼び出しになりますが、
foo
これは関数自体のオブジェクトを表わします
2009年12月12日土曜日
def foo(): return 'hoge'
def bar(func): print func()
bar(foo) # ‘hoge’
なので例えば関数の引数で関数を受けとった時にも、普通にカッコを付ければその関数を呼べます。
(call など特別な処理はいらない)
2009年12月12日土曜日
カッコを省略出来無いというよりは、カッコを付けた時と付けてない時で違う意味を持っているのです。(どちらが優れているとかでは無く)
2009年12月12日土曜日
次
2009年12月12日土曜日
インスタンスメソッドとか
self だらけでめんどくさい
2009年12月12日土曜日
えっ!?
2009年12月12日土曜日
class Hoge(object): pass
hoge = Hoge()
hoge.a = 10 // hoge に a を追加hoge.b = 'hoge'
print hoge.a // 10 と表示されるprint hoge.b // hoge と表示される
例えばオブジェクトの初期化を考えた時
2009年12月12日土曜日
def initialize(obj, a, b): obj.a = a obj.b = b
class Hoge(object): pass hoge = Hoge()initialize(hoge, 10, 'hoge') //関数print hoge.a // 10 と表示されるprint hoge.b // hoge と表示される
関数として切り出す
2009年12月12日土曜日
class Hoge(object): def initialize(obj, a, b): obj.a = a obj.b = b
hoge = Hoge()Hoge.initialize(hoge, 10, 'hoge') //クラス関数として呼びだし
print hoge.a // 10 と表示されるprint hoge.b // hoge と表示される
関数をクラスに持たせる
2009年12月12日土曜日
class Hoge(object): def initialize(obj, a, b): obj.a = a obj.b = b
hoge = Hoge()Hoge.initialize(hoge, 10, 'hoge') //クラス関数として呼びだし
print hoge.a // 10 と表示されるprint hoge.b // hoge と表示される
関数をクラスに持たせる
hoge.initialize(10,'hoge')// インスタンスメソッドとして呼びだし
2009年12月12日土曜日
class Hoge(object): def __init__(obj , a, b): obj.a = a obj.b = b
hoge = Hoge(10,'hoge') // 引数付きでコンストラクタ呼び出しprint hoge.a // 10 と表示されるprint hoge.b // hoge と表示される
コンストラクタとして呼びだす
2009年12月12日土曜日
class Hoge(object): def __init__(obj , a, b): obj.a = a obj.b = b
hoge = Hoge(10,'hoge') // 引数付きでコンストラクタ呼び出しprint hoge.a // 10 と表示されるprint hoge.b // hoge と表示される
コンストラクタとして呼びだす
selfself.a = aself.b = b
2009年12月12日土曜日
this などを明示的に書くか書かないかの違いだけど、書くのも悪くないでしょ?
2009年12月12日土曜日
次
2009年12月12日土曜日
PHP とか Perl みたいに気軽で安いレンタルサーバとか無いじゃん
2009年12月12日土曜日
えっ!?
2009年12月12日土曜日
あるよ!!
2009年12月12日土曜日
あるよ!!
2009年12月12日土曜日
基本タダなのに超スケールするらしいよ
2009年12月12日土曜日
2009年12月12日土曜日
hyP noイ カ ス 所
2009年12月12日土曜日
hyP noイ カ ス 所
2009年12月12日土曜日
予約語
2009年12月12日土曜日
オブジェクトを表わすのに最低限必要な5つのもの
2009年12月12日土曜日
オブジェクトを表わすのに最低限必要な5つのもの
nil
2009年12月12日土曜日
オブジェクトを表わすのに最低限必要な5つのもの
nil
true
2009年12月12日土曜日
オブジェクトを表わすのに最低限必要な5つのもの
nil
true
false
2009年12月12日土曜日
オブジェクトを表わすのに最低限必要な5つのもの
nil
true
false
this
2009年12月12日土曜日
オブジェクトを表わすのに最低限必要な5つのもの
nil
true
false
this
super2009年12月12日土曜日
オブジェクトを表わすのに最低限必要な5つのもの
nil
true
false
this
super
None
True
False
self
super2009年12月12日土曜日
オブジェクトを表わすのに最低限必要な5つのもの
nil
true
false
this
super
None
True
False
self
super
予約語じゃないw
2009年12月12日土曜日
そんなALGOL系
オブジェクト指向言語
2009年12月12日土曜日
DRY
2009年12月12日土曜日
2009年12月12日土曜日
2009年12月12日土曜日
help(fizzbuzz)
2009年12月12日土曜日
help(fizzbuzz)
2009年12月12日土曜日
help(fizzbuzz)
テストコードです
2009年12月12日土曜日
ドキュメントが古くて実装の動きと違うとか
サンプル書いてテスト書いてとかの
2度手間が無い2009年12月12日土曜日
もちろん「電池が付属しています("Battery Included")」なのでこれも標準搭載
2009年12月12日土曜日
結論
2009年12月12日土曜日
世界一を目指す理由は何か2位ではだめなのか
2009年12月12日土曜日
ダメです
2009年12月12日土曜日
現状で
2009年12月12日土曜日
世界一である必要は無い
2009年12月12日土曜日
世界一を目指す
2009年12月12日土曜日
心意気
2009年12月12日土曜日
大事
2009年12月12日土曜日
世界一使いやすい言語にしようとGuido が頑張っていて、その思考が感じれる言語
2009年12月12日土曜日
ご静聴ありがとうございました
2009年12月12日土曜日