火星の月に魅せられて1

開発言語に関する独善的な考察です。御託ばかりで面白くないと思います。
それでも時間をかけた思惑なので文章にして残しておきます。


ここまでLevanプロジェクトはC++とLua、wxWidgetsでまったりゆったり開発を目論んでましたが、
正確にはバインディングの目的などで、boostやluabindも必要になって使ってましたが、
正直、最初から分かっちゃいたけどC++のコーディングしんどいし、コンパイル時間もイライラさせます。
何よりバグの修正がしんどいし、依存性解決もめんどいし、記述も冗長になりがちだし、
ドキュメンテーションも(まだやってないし)やる気おきません。
/// ## --- /** 怠惰と不精と傲慢こそプログラマの三大美徳とは(略) **/


皆言うけど、やっぱりこんな化石級の言語は時代遅れだし、必要に駆られない限りは使いたくないなー、
とか思いながら、まだ何も決まってないけど、色々調べながら検討してみました。
有名どころで、すぐ候補にあがるのは、Objective-CやらC#やら、OCamlやら…
どれも一通り弄ったことはあるんですが。
スクリプティング環境を作るんだから、主軸開発はネイティブコードを吐ける言語じゃないと難しい。
JITコンパイラは許容範囲かな。


そうこう色々考えてるうちに、有力候補としてあがったのはD言語です。
コンパイラ開発の権威とも言える人が中心に開発してて、割と昔から注目されてるので、
自分もバージョン0代の時代に何度から何度か触ってみたり、
「まぁそのうち使うかも知れない」とか思って適当にGentooでコンパイラだけ放りこんだりしてました。
でもまぁ世間的にも、2007年にいきなりバージョン1が発表されて保守モード、
バージョン2の開発が始まったりでD言語熱が冷めたと言われるように、
言語仕様も定まりきらないイケてる言語なのか、イケてない言語なのか微妙…
って印象で、自分も最新情報を追ってませんでした。
でも他の言語にしたって、実行速度や汎用性は問題なくても、記述性というか使い捨て感というか、
そういうのに欠けるんだよなぁ… うまく説明できないけど。


プログラミング言語の嗜好性って、どうにも人を選ぶので、理想の言語論に答えが無いのは分かってるけど、
一般論では表現力や再利用性などが(スクリプト言語も含んで)生産的な言語の指針にされるようですよね。
とはいえ最終的には、成果物を使う人間にとって最も重要なのは、

  • 記述性(いかに書きやすいか)
  • 可読性(いかに読みやすいか)

の二つに尽きる気がするんですよね。それに実行速度が付いてこないと本物じゃないんだけど。
だから、結論としては手続き型で書き殴りが許されるべきで、
用途に応じてクラスの記述や関数の動的生成なんかも気軽にできるべきで、
それはもちろんスクリプト言語の領分なんだけど、
コンパイル型の言語もそれを見越した設計じゃないと生き残れないんじゃないかな。


D言語がそういった理想論を解決できるとは思わないし、
ある種の独善的で逆に柔軟性を欠いた言語仕様を気に入らない人も少なくないです。
ですがC/C++のコーディングを長年やって疲れた人が、今までのノウハウを生かしながら、
実行速度を殺さずに流行のパラダイムを気軽に試せたり、楽をするためのツールの揃ったD言語てのは、
悪くない選択肢だと思うんです。
何よりエントリーポイントを作る為に新規クラスの記述を要求する言語ってのバカげてると思うんだよなぁ…


次回以降は道連れになるスクリプト言語や、現存する処理系なんかの御託を並べようかと。