プログラム言語との付き合い方

よくプログラミングの勉強を始めようとする人から、「まずどのプログラム言語を勉強したらいいの?」という声を良く聞くのですが、多くの人と同じように僕も独学でやみくもに勉強してきたクチなので、非常に答えづらい質問であります。「何をしたいかによる」というのがその場しのぎの回答になってしまうのですが、もう少しそれを僕なりに突き詰めてみたい。

結局、言語の勉強に限らず、何か技術を取得したいと思う際はまず教科書を開くわけですが、少なくとも僕の周りの優秀なプログラマーから「学校の授業で勉強した」聞いたことはまずありません。彼らは自分で最適な情報ソース(本に限らずWebサイトも重要な情報源となるし、ある程度になると公式リファレンスも重要な情報源ですね。)を自分なりのやり方で取得しているように見えます。

結局、プログラマーが10人居れば10人それぞれ違う道を通ってきたことになります。これは実は技術取得の方法としては珍しいことのような気がするのです。身近な化学の分野でいえば、各研究室で合成方法や分析方法など秘伝のやり方があり、それは先輩や先生から見よう見まねで少しずつ吸収していきます。技術は実際に見て自分の手で動かしてみないと継承できないというのが通説なのです。英語の勉強でも体系化された方法があり、中学生の時には文法を5文形に分け体系的に学びます。それぞれ○○レベルと決められた語彙集に沿って少しずつ試験を乗り越えながら学んでいくわけです。

それでも、プログラム言語の習得というのはそのどちらとも違うやり方が「普通」になっているのは驚くべきことのように思えます。これはプログラミングの技術が情報化社会と密接な関係にあり、情報元がインターネット上に豊富にあることがその一因であると言えますが、この方法が他の技術学習にまで普及していくのか、それともプログラミングの学習も「体系化」され、優秀なプログラマーが外的な教育によって生まれていく時代になるのかは興味深いところです。

さて、ここまでづらづらと無駄話をしてしまいましたが、僕のこれまでの経験から得られた各プログラム言語の雑感を記しておこうと思います。中には勘違いもあるかも。過去の記事を見てもわかるとおり、僕は趣味レベルの初心者なので。現時点での感想として記録に残す程度にしておきます。


プログラムと言えるかどうかわからないが、テキストの編集作業やLinuxでプロセスを連続投入する際の便利ツールとして。最初はコマンドの羅列から試す。徐々にForやWhileやIfで少し複雑な処理をするようになり、一時はbcコマンドで数値計算までやり始めたがとにかく処理が遅いので断念。とにかく遅い。

あえて言語の一員として取り上げる程の優等生。テキスト処理専用。これを使うようになってから数値計算の結果を解析する際に使っていたエクセルの集計作業の一部を担当するようになり、だいぶ効率が上がった。

これもエクセルの機能の一部を使うようになってから効率が上がった。特に数値計算系のモジュールが強化されているのが嬉しい。いちいちコンパイルしなくてもこれだけの高速解析ができるのは、C言語でちまちまプログラムをしていた事を考えると革命的。TkinterでGUIプログラムを組むことも。まだまだ未知の力を秘めているような気がするのでこれから力を入れて勉強したい。

Webサーバーで動くということで、ブラウザで動くプログラムを作りたいとき(HTMLでグラフィカルに操作したいとき)に重宝。慣れている人はこれでテキスト処理から数値解析までやるそうだが、自分はほとんどやらない。Web系のサービスを作るときは迷わずこれを選択するが、デバッグ環境の構築がやたら面倒。比較的習得が簡単な言語のはずなのに、Webの複雑な仕組みも同時に勉強する必要があることから(加えてフレームワークの勉強やデータベースなども)、あまり素晴らしい言語というイメージは持ってない。まだまだ勉強が足りないとコンパイラ氏の指導を受けながら書いているようなイメージ。

残念ながらあまり出番がない。ただ、C言語に似ているので読みやすい気はする。Webサービス系で使われるときは例によってデバッグが面倒なのであんまりいい印象が無い。

非常に学習が簡単なのだけど、個人的な用途はソフトウェアを作るよりも解析のための小さいスクリプトを組む法が多いので、いつも書き方を忘れてしまって難儀な思いをする。Excelで高度なソフトをつくり上げている人は尊敬するけど師ではない。

  • C

自己満足の言語。個人的には見た目が一番美しいのでマスターしたいと常々思っているのだが、開発に時間がかかる上にPythonのような数値解析で便利な言語があるので出番が減ってきた。

C言語が一躍クラスのおしゃれさんに。まだ仲良くなれてない。

  • Fortran77

大嫌い。制約が多くて見づらくて書きにくいのにまだまだ数値解析では現役というその立ち位置も。バグだらけのコンパイラも。

勉強したことは無いけど敬遠してる。マルチプラットフォームとか何とかで、初心者向きとか。でも速度が出ないし数値解析向きじゃないんだよなぁ。いつか勉強する。

HTML5も流行りだしてきてるし、Webアプリなんかはこれ必須。感触としては、オブジェクト指向で冗長でつかみどころがない感じ。最初はめちゃくちゃ戸惑ったけどWeb上に情報はたっぷりあるし、最近、好きになってきた。


これらはあくまで言語に対する雑感なので、OpenGLとかのライブラリだったりSmartyフレームワークだったりそういうのに対する感覚がごっちゃになってる可能性はあります。結局、言語を取り巻く環境もその言語に対する評価を左右してるよねということで、あまり上の記録は役に立たないかも。

僕はC言語で挫折、Visual Basic.NETで挫折、C#.NETで挫折、LISPで挫折して、やっとVB6.0で光が見えてPerl, PHPC言語と進んだ。この間約4年。少しずつ言語の根本的な部分がわかりかけてきて新しい言語習得に壁を感じなくなってきたけど、これまでやたら寄り道したなぁ。手を広げすぎて全てが中途半端なので、何か一つでもいいから○○使いと自信を持って言えるようにしたいな。