ぴあぴあゆーとぴあ

雑記ブログ

Python3始めました。

Python3を先週くらいから始めました。

Python2系の入門サイトはネット上にたくさん見つかるのですが
3系のものがあまりなかったので書籍で勉強することに、、、




こちらの書籍が評判も高く、読みやすかったのでオススメです。
ただ、機械学習とかwebAPIの作成の部分は流し読みで良いと思います。
基本的な文法を理解して、コーディングできればそれで吉かと。
自分は他の言語を学んだ経験もあったので、二日で流し読みしました。
読んで、目的に応じたライブラリの使い方を学んでいくのが、ベターだと思います。


最後のオブジェクト志向の部分は、読んでも使い方が良くわからないかもですが
とりあえず毎回使ってみると良いと思います。
私はJavaみたく、1つのファイルで1つのオブジェクト、みたいに記述してますね。
また、分離できる独立性の高い機能は、別のオブジェクトにするのが良いと思います。


例えば「ファイルを開いて、解析し、結果を保存する」プログラムの場合、
①ファイルを開いたり、読んだり、閉じたりするオブジェクト
②ファイルを読み込んだ結果を受け取り、解析する。
 解析結果を、なにかしらのデータ構造に保存するオブジェクト
③②のデータ構造をファイルに保存するオブジェクト。
④①〜③のオブジェクトのデータの受け渡しを行うオブジェクト(実行ファイル)
みたいに4つぐらいのオブジェクト(ファイル)に分けますかね。


筆者のプログラミング歴はC++を2年ほど触ってます。
以下、その経験を踏まえたPythonに関する雑感

長所
・複雑なことがライブラリで簡単にできる。
・文法が簡単なため、ソースコードが短い
・ライブラリのインストールなどがコマンドで出来るため、
  ハマらなければ簡単に済ませる
・ネット上に記事が多い


短所
・確保したメモリが解放できない。スマートポインタとか欲しい。
  オブジェクトのデストラクタが呼ばれる保証なし、というのがやだ
・可読性が高いというが、個人的に疑問。
  関数の引数や返り値の型が、明示的ではないため、分かりにくいと思う。
・環境設定が大変
  ライブラリ間の相性が悪かったり、OSのアップデートなどで動かなくなったりして怖い


こんな感じですかね
最近はMeCabとかCaboChaで自然言語処理やってます。
中身のアルゴリズムが書いてある記事や論文読みましたが、
CaboChaはSVMで2値分類問題を解いて、係り受け構造を調べていているそうです。
面白かった。

でもやっぱり既存の研究だと、形態素解析構文解析がやっとみたいですね
意味解析や自然応答システムはまだまだ難しいようです。

自然な会話ができるロボットを、作ってみたいですね