2012/09/12

プログラミングを勉強しなくちゃと思ったら


なんとなく,プログラミングを勉強しなくちゃと思った時,まず,プログラミング言語を選んでいる(決めてしまっている)人が多いと思います.もちろん選択の余地がない人もいるかもしれませんが,もし,自分で選べるならこんなに幸運なことはないでしょう.もし,使ったことがある言語があったとしても,再考してみるのもよいかもしれません.

今回はすこし,プログラミング言語をどう選ぶかについて考えてみます.


ちなみに,誰でも,自分を無意識に正当化する傾向があるために,自分が使っている言語の短所が見えなくなりがちです.自分が使っている言語の長所を過大評価しがちです.プログラミング言語についての評価には必ずと言っていいほど,評価者が使っている言語が影響を与えていると理解した上で,情報収集することを推奨します.


まず最も重要なことは,プログラムを書いて実現したいこと(目的)をはっきりさせておくことです.

データ処理なのか? ライブラリ・アプリケーション・システム開発なのか? 等


特に各領域に特化した言語(DSLやそれに準ずるもの)であるほど,できないことが多いです.
(しかし,これは欠点ではなくむしろシンプルさを追求した長所でしょう.)


そんなこと,初心者にはわからないよーってときは有識者に聞くか,自分が達成したいことに近いことをしている言語を探すといいでしょう.ついでに,プログラミング以外の方法も検討するとよいかもしれません.既存のアプリケーションを使えばできることも多いと考えられます.小規模なデータ処理が目的ならExcelで十分な場合が多いです.Excel(VBAじゃなくて)はデータがフロントエンドのプログラムだという人もいます.


そして,次に拡張性と使いやすさ,簡単さを天秤にかけます.



どんな項目で判断していけばいいか列挙してみます.


フレームワーク

  • 簡単にプログラムを動かせるのか?
  • 環境は簡単にインストールできるか?
  • そもそもどうやって動かすか?
  • ツールのサポートは?

言語の入力しやすさは 文法の簡単さ単純さ・ツールによる補完 によって決まると考えられますが,両方を追求することは難しく,トレードオフの関係にあるといってもよいでしょう.文法の簡単さ有利なのが,動的と呼ばれる言語で,使う関数の数などがあまり大きくならない分野での,素早い開発に適しているといえます.一方,ツールによる補完には静的と呼ばれる言語が有利です.入力補完は開発者の記憶までも補完してくれると考えられます.


ライブラリ

  • 言語デフォルトのライブラリは充実しているか?
  • 目的を簡単に達成させられる既存のライブラリは存在するか?手に入るか?

とある言語を学ぶ上で,ライブラリの存在は大きく,そのライブラリを調べる作業が必要になってきます.そのためにはライブラリの調べ方と,調べたい内容についての知識が必要です.

コンピュータは人が考えたものなので,法律みたいに決まりごとが沢山あります.うまく使うにはコンピュータ自体の理解も必要になります.処理速度を上げたいならCPUの仕組み,ファイルを扱いたいならファイルシステムについてよく知っているほど,ライブラリを調べるのが容易になるでしょう.更にライブラリ自体にもプログラミングのノウハウが詰まっています.よってプログラミングパラダイムなどの知識も調べる役に立ちます.


リファレンス

  • どのくらい情報が出回っているか?どうやって情報を取得するか?
  • その言語が有名かどうか?
  • 使える人が周りにいるか?

勉強するなら情報は多いに越したことはありません.本屋での書籍数・Web検索結果でおおよそのその言語の普及具合がわかります.Web上の情報量を示したTOIBE Indexっていうのもあります.どうせ学ぶなら注目されているものを学びたいものです.


文法

  • 学びやすいか?
  • 記述しやすいか?

文法は上の3つに比べたら些細な問題です.最近はほとんどの言語が他の言語の長所を取り入れる形で文法とライブラリの拡張が行われています.



ほとんどの言語は拡張すれば(簡単かどうかは別にして)いろんなことができるようになっていきますが,面倒なことに変わりはないので,言語デフォルトのライブラリやフレームワークがその言語を特徴づけていると言えるでしょう.


最終的には上にあげたことを踏まえたうえで何を使うか自分で決めるしかありません.
おおまかな指針としては,
小規模な問題には動的な言語でライブラリが充実しているものを,
大規模な問題には静的な言語でリファレンスが充実しているものを利用するのがよいと考えられます.

0 件のコメント:

コメントを投稿