Diary?

2008-03-28
Fri

(05:42)

俺は時々睡眠時間がとんでもなく不規則になって、昨日なんかは帰ってきて風呂に入ったらすぐに眠くなり、結局 21:00 ぐらいには寝付いてしまった。まあ、全然眠らないよりかはだいぶマシだろ。そして今日は健康診断があるのだが、そういや昨日の夜にオレンジジュースをしこたま飲んじまった気がするなー。まあどーでもいいか。

ところで pyFLTK なんて物があるんだね。この FLTK ってのはとにかく軽量な事が売りらしくてそれはとても結構な事なんだけど、どうにもプログラミングモデルが気にくわない。これが PyGtk とかだったらシグナル形式のプログラミングになるんだけど、 pyFLTK はどうにもハンドラ関数で一旦全部受け止めさせる方式らしい。シグナルの便利さを実感している身としては、今更ウィジェットそれ自体にハンドラ関数を書く気にはさらさらなれんのだよな。暇ができたらシグナルでイベントリスナを登録させるようなラッパークラスでも作ろうかなー。

(20:36)

談合消滅後の建設業界で何が起きているか」ってこりゃ IT 業界も似たような所が多々あるな。っていうか

  • コスト削減のプレッシャー
  • 優秀な人材の枯渇
  • 何もわかってない連中主導の標準化・ルール作成

なんてのはどこの業界も似たようなもんだろうな。特に共感を覚えたのは次のところ。

問 「安値受注は品質に影響を与える」という懸念も出始めています。

答 もっと品質が悪くなってくると思うよ。職人の腕がぐんと落ちている。教育してないもん。親方も教育に回すカネがない。それで、私がゼネコンに言うやん。「職人の育成にゼネコンも力を入れてくれませんか」って。そしたら、「落ちてもいい。誰にでも作れるようにしているから」と。こんな言い方あるか。

ここは IT 業界もその通り。というか、より悪い気がする。だって「プログラミングって何ですか」レベルの人間が平気で面接にやってきて、それで通っちゃうからな。あのな、せめてそんぐらい調べろと。ちったぁ事前に学習しとけと。プログラマという職業が他の専門的な職業 (医者とか大工とかその他諸々) に対して圧倒的に有利なのは、それらの職業に比べると法外といっていいぐらい金銭的なコストを負わずに学び始めることができるところで、もしも別分野からの転職を考えている人がいるなら、とにかく処理系とテキストエディタを揃えてやってみろと言いたい。書籍の類だって自分への投資だと思えば安いもんだろ。

それでも間違いなくより問題なのは彼らを雇ってしまう方で、雇うことも問題だし雇った後にする教育のダメさ加減は筆舌に尽くしがたい。上司は俺が新人に理論的な事を教えるのに時間を割くのを嫌がっているようだが、前から書いてる通り理論と実践は車輪の両軸でどっちが欠けても成り立たん。ただひたすらコードを打ち込んで、それでまともなプログラムが書けるようになるというのは極めてバカげた考えなんだよ。大体だな、ポインタやメモリ管理の概念をろくすっぽ知らずにどうやって Java なんかのオブジェクト参照や GC を理解できるってんだ?

何かまた話が脱線してきたが、いつも通りなので無視して話を進める。俺は大学の一年次によりによってアセンブリ言語を手書きで書かされるという経験をして、その時は非常にムカついて仕方がなかったが、結局そういった下位層の知識無しでは本当にプログラミングについて理解したとは言えないことがわかり、やり方はともかくとしてそういった知識を叩き込むのは正しいことだったと思うようになった。ちなみに俺の大学ではλ計算を扱うような講義がなく、当然これは非常に良くないことで、俺は今そっち方面の遅れを取り戻そうとしているんだけどやっぱ大学の頃にやっときたかったな。

俺はこういったことを正直に新人に話していて、一人前になるには 10 年にわたって絶えず修練を積むことが必要で、偉そうな事を言ってる俺だってまだ道半ばだから間違っても俺を目標とするな、もっと上を見ろとも言っている。俺はこれまでの会社のやり方からしたら相等にずれているのだろうが、未だに「動物クラスがどうのこうの、犬クラスを継承してどうのこうの」なんて事をやってプログラミングについて何かわかったつもりにさせるのは凄まじくプログラミングを舐めた行為なので、そういう愚かな行為から思いっきり離れたところにいるのは極めて正しいことだという確信がある。

(22:34)

Shadows Fall の "Redemption" という曲には次のような歌詞が出てくる。

All the world will hear you
Our voices can't be bound
All the world will hear you
Redemption in the power of the sound

この歌詞のニュアンスは絶対に日本語には訳せないだろう。何故なら、 Redemption という単語は救済という意味を持つが、俺の知る限りそれは「キリストが十字架に架けられたことによる救済」という意味を持ち、恐らくはそこには「贖罪」とか「対価」のニュアンスも含まれるのだろう (今辞書を引いてみたら、「金品を等価な物と交換する」みたいな意味もあった。やっぱりね)。そして日本じゃ贖罪と救済はどう考えても結びつかない。何か別の言語を学ぶということは、間違いなくその言語圏の文化を学ぶことにもなることを改めて実感。

プログラミング言語の話になるけど、何かプログラミング言語を学ぶということは、その言語の思想やプログラマたちの文化を学ぶことでもある。例えば Python プログラムはメンテナンスが容易な事が多いといわれていて、それは確かに言語仕様によるところもあるけど、やはり Python が体現している思想とそれによって作られた文化の影響も大きいだろう (プログラミング言語に思想・文化などないというのならご勝手に。俺はそういう奴を心の底から軽蔑する)。

実際のところ、俺は Python を学んだことで他の言語でのプログラムの書き方が大きく変わり、例えば C++ のコーディング何かは相当に改善された。 Perl しか使える言語が無いときにも、やはり Python で学んだことは生かされていたようにも思う。それどころかドキュメンテーションに対する考え方も変わり、もしかしたらこの部分への影響が一番大きいかもしれない。プログラミング言語を本当に学ぶということは、その言語の思想や文化も学び、そのいいところが他の言語にも適用できるなら適用するということだろう。最近はちょろちょろと Haskell の学習を進めているが、 Haskell に限らず関数型言語からは既に多大な影響を受けている。

だからもしも新しくプログラミング言語を学ぶとしたら、既に使えている言語とはまったく違うものを学ぶべきなんだろう。設計思想が大きく違えばそこから生み出される文化もまた違った物になるだろうからだ。俺が Haskell に手を出したのは Python からかなり遠そうだと思ったからで、じゃあ実際どうだったのかというとまだわからない。わかるほどまだ Haskell を学んでないし、 Haskell から学んでない。

Creative Commons
この怪文書はクリエイティブ・コモンズ・ライセンスの元でライセンスされています。引用した文章など Kuwata Chikara に著作権のないものについては、それらの著作権保持者に帰属します。