なんか調子よくコーディング
2008.04.14 Monday 23:49
今日は昼過ぎから夜までPythonのコードを書いてた.GUIで作ろうと思ったけど挫折しそうだったのでとりあえずコンソールでインタラクティブなアプリ,と作り始めた物の結構思ったより量が増えちゃって動作確認とかちょこちょこやりながら7時間で380行くらい.
Pythonの cmd モジュールを初めて使ったが,これは結構楽にできるかも.do_xxx()を定義するとxxxコマンドが自動で使えるようになるし,関数のドキュメントがそのままコマンドヘルプになる.
半年ほど前は何をやるにもわからなくて1行ごとにマニュアルを引いていたように思うが,今日は文字列中心とはいえあまり引っかからずにすらすら進んだのが実は結構進歩ではないかとちょっと思った.引っかからずにというのは設計の話ではなくて,英語で言おうとしてもうまく言いたいことが言えずに立ちすくんでしまう,みたいなことがなかったってこと.感覚的にはPerlで書く感覚にかなり近いところまで来ている.
やっぱりプログラミング「言語」は自然言語とは異なるとはいえ,習熟のステップは結構近い物があるんじゃないかな.プログラミング言語は,(特に最近注目されているCでもJavaでも無いようなものは)文法に奇妙な部分があったりするし,また今回は一つだけだったけど,いろいろなことをしたければ色々なライブラリで躓くことになる.それを使いこなすにはやっぱり1つずつ使ってみるしかないよね.
最近iknowで少しずつ英単語覚えているけど,案外最初は「なんだこいつ」「人種が違う!」と思っていた単語でも,何度も出てくると間違いやすそうな綴りも無意識に正しく入力するようになることがわかった.Python以上に奇妙に見える言語でも使い始めれば結構慣れちゃうし,(最初の頃は)トラップに見えた場所もすっと避けるようになる.「フツーこんなことしないだろ」って自分の感覚とずれがあることでかえって印象づけられて覚えちゃうのかもね.archaeologyのaeとかplatitudinousのnとか.少しずつ,繰り返し,毎日やれば,自分で気づかないうちに高いところまで登れちゃうものだと思う.
本当に調子よく進んでいると,途中で全く休む気がしない.お茶を飲もうとも思わない.でも,突っ走りすぎて休んだとたんに疲れがどっと出たりするけど.この本当に調子よく感じていても380行.1日1000行ってやっぱり無理だよなぁ...CやJavaと違ってPythonは閉じ括弧が無いからそこで1行違う.けど二倍は違わないか.というか,1つのことを記述するのが短くなれば同じ行数でも実現できることが異なるわけだから,異なる言語で比較することに意味がない...とまでは言えないか.うーん,どうだろ.
Pythonではメソッドやその挙動がわからないとき,マニュアルを引く代わりにインタラクティブモードを起動して,
>>> import xxxxx
>>> dir(xxxx.unknown_class)
とすることで,メソッド一覧を取得できる.Pythonは動的型付けだから戻り値の型がよくわからないこともあるけど,それもここで実行してみればすぐわかる.これは便利.
一部を作って最初に動かしたとき当然失敗した訳だけど,そこでネットワークにつなぎに行くから次が続かなくなっちゃった.で「やばい」と思ってすぐにネットワーク部分をダミーデータを返すスタブで置き換えたのが良かったと思う.それ以降はローカルデータの処理だから気兼ねなく進められるようになった.unittestもそうだけど,ちょっと面倒くさいなと思っても枠組みは早めに作った方が結局得.
あっ,ファイルをソース管理に入れてない!これは一番最初に(がらくたになって捨てるかもしれないものでも)最初に行わないといけないのに!! 明日ハードディスクがクラッシュしないことを祈る.
といつになくハイテンション.
翌朝追記: ハイテンションだったのは,単に夜9時頃コーヒーを飲んだからだと気づいた.
半年ほど前は何をやるにもわからなくて1行ごとにマニュアルを引いていたように思うが,今日は文字列中心とはいえあまり引っかからずにすらすら進んだのが実は結構進歩ではないかとちょっと思った.引っかからずにというのは設計の話ではなくて,英語で言おうとしてもうまく言いたいことが言えずに立ちすくんでしまう,みたいなことがなかったってこと.感覚的にはPerlで書く感覚にかなり近いところまで来ている.
やっぱりプログラミング「言語」は自然言語とは異なるとはいえ,習熟のステップは結構近い物があるんじゃないかな.プログラミング言語は,(特に最近注目されているCでもJavaでも無いようなものは)文法に奇妙な部分があったりするし,また今回は一つだけだったけど,いろいろなことをしたければ色々なライブラリで躓くことになる.それを使いこなすにはやっぱり1つずつ使ってみるしかないよね.
最近iknowで少しずつ英単語覚えているけど,案外最初は「なんだこいつ」「人種が違う!」と思っていた単語でも,何度も出てくると間違いやすそうな綴りも無意識に正しく入力するようになることがわかった.Python以上に奇妙に見える言語でも使い始めれば結構慣れちゃうし,(最初の頃は)トラップに見えた場所もすっと避けるようになる.「フツーこんなことしないだろ」って自分の感覚とずれがあることでかえって印象づけられて覚えちゃうのかもね.archaeologyのaeとかplatitudinousのnとか.少しずつ,繰り返し,毎日やれば,自分で気づかないうちに高いところまで登れちゃうものだと思う.
本当に調子よく進んでいると,途中で全く休む気がしない.お茶を飲もうとも思わない.でも,突っ走りすぎて休んだとたんに疲れがどっと出たりするけど.この本当に調子よく感じていても380行.1日1000行ってやっぱり無理だよなぁ...CやJavaと違ってPythonは閉じ括弧が無いからそこで1行違う.けど二倍は違わないか.というか,1つのことを記述するのが短くなれば同じ行数でも実現できることが異なるわけだから,異なる言語で比較することに意味がない...とまでは言えないか.うーん,どうだろ.
Pythonではメソッドやその挙動がわからないとき,マニュアルを引く代わりにインタラクティブモードを起動して,
>>> import xxxxx
>>> dir(xxxx.unknown_class)
とすることで,メソッド一覧を取得できる.Pythonは動的型付けだから戻り値の型がよくわからないこともあるけど,それもここで実行してみればすぐわかる.これは便利.
一部を作って最初に動かしたとき当然失敗した訳だけど,そこでネットワークにつなぎに行くから次が続かなくなっちゃった.で「やばい」と思ってすぐにネットワーク部分をダミーデータを返すスタブで置き換えたのが良かったと思う.それ以降はローカルデータの処理だから気兼ねなく進められるようになった.unittestもそうだけど,ちょっと面倒くさいなと思っても枠組みは早めに作った方が結局得.
あっ,ファイルをソース管理に入れてない!これは一番最初に(がらくたになって捨てるかもしれないものでも)最初に行わないといけないのに!! 明日ハードディスクがクラッシュしないことを祈る.
といつになくハイテンション.
翌朝追記: ハイテンションだったのは,単に夜9時頃コーヒーを飲んだからだと気づいた.
Comments