プログラミングの難易度は質によりけり

今更ですが、プログラミングのジャンルと難易度(および Web プログラミング批判) – 黎明日記に反応してみる。
*コンパイラって難しい?*
コンパイラは最も簡単なものでもある程度難しいという意見が出てますが、
実際のところ、そうでもないかと思います。
まともな言語のまともなコンパイラを作るとしたら非常に難しいかともいますが、
ふざけた言語のふざけたコンパイラならそこまで難しいこともないでしょう。
(例えば、アセンブラに毛が生えたようなものを作るとか。)
それに、講義で実際にコンパイラを作る大学も結構あるのではないでしょうか(*1)。
そう考えると毎年、結構の数の学生がコンパイラを作っているはずかと思います。
ただ、そういった学生が自分のブログなどで
「俺はコンパイラを作ったZE☆」
と自慢している姿を見かけることはあまりありません。
また、Webで「コンパイラ作りましたよー」と発表しているものは大抵質がいいものだったりします。
質が良い => ネットで公開される
質が悪い => ひっそりと作者の記憶の中に埋もれていく。
このような図式が成立しているため、
「コンパイラは最も簡単なものでもある程度難しい」
という気がしてしまうのではないでしょうか。
(というか、質が悪かったら「そんなものコンパイラとは言えんわ!」で済まされるのかも。)
*Webプログラミングの程度*
Webプログラミングはコンパイラの話と逆で、
どんな簡単なものでも、自分のブログで
「こんなもの作ったZE☆ 俺スゲー!」
と書いている人が非常に多いようです。
そのため、
1. 質の悪いものがどんどん発信されていく
2. 全体として質の悪いもの割合が非常に大きくなる
3. あれ、Webプログラミングって程度低くない?
こうなるのではないでしょうか。
まあ、WebプログラミングだからWebに公開するもんなんでしょうか。
なによりも問題は、
金をもらってコンパイラを作ってる人はほぼ確実に凄いものを作り上げるでしょうが、
金をもらってWebアプリケーションを作っている人の中には、
タダだとしても使いたくないようなものを作る人がいることかもしれません(*2)。
*個人的なWebプログラミングへの思い*
私としてはWebプログラミングというのはあまり好きな分野ではありません。
理由は何故だか良く分かりません。好きじゃないものは好きじゃないからしょうがない。
さっとモノがつくれてすぐ動くのは楽しかったりします。
高校のときにPerlで書いた、
『全自動掲示板』(ランダムに生成された文章が勝手に書き込まれ、その書き込みにレスまで勝手に付くすぐれもの)
といったものは、友人の間で非常に受けがよく、大学でも非常に好評でした。
大学に入ってからも『Web CLANNAD』(ブラウザでCLANNADをプレイするためのもの。文字しか表示されないが、選択肢とジャンプは作った)
というふざけたものをPHPで書いたりもしました。
どちらも実用性の全くないものですが、
作っていて非常に楽しかったですし、またすぐに完成するのも気持ちよかったです。
楽しかったんですが、こればっかしやろうという気にはとてもなれませんでした。
また、まともなWebアプリケーションを作ろうという気にはもっとなれませんでした。
不思議。
*結論*
無駄に長くなったけど、
「質がいいものを作るのは難しいよね。」
これで十分じゃないでしょうか。
ちなみに私は質が悪いものを次々作っていくのが好きです(笑)
*どうでもいいこと*

Web アプリケーションを構文解析に劣る程度の文字列処理、あるいは GUI プログラムの焼き直しで終わらせちゃいけない。違いませんか?

構文解析で文字列処理はあんまりしないでしょ。
別に構文解析が文字列処理やっちゃいけないことはないけど、
個人的には面倒な文字列処理は字句解析で済ませて楽したいです。

(*1)
少なくても私の大学ではやっています。おまけに必修です。
(*2)
私の大学の履修登録が今年からようやくWebで登録できるようになったんですが、
そのシステムの使いにくいこと。使いにくいこと。
どこの誰がどれだけお金をもらって作ったのかは知りませんが、
いくら安くてもお金がMOTTAINAIと感じるような酷いシステムでした。
講義一つを登録するたびにページ遷移するな。
講義名で登録させてくれ。登録コードしか受け付けないってなんだよ。
講義の登録コードがPDFで配布ってなんだ。しかも全角文字で書くな。
正直紙に書いて登録していたときの方が楽だった気がしてきました……

(追記)
最初タイトルが「プログラミングは難易度は質によりけり」になってたwwww
テラハズカシスwwww

One Response to “プログラミングの難易度は質によりけり”

  1. m0h1can より:

    僕も昔はそう思ってたけれど、仕事で所謂Webアプリを作るとなると、
    ・セッションごとの消費リソース
    ・コンプライアンスに合わせた構成
    ・データベース負荷のスケジュール
    ・ルータが瞬間的に抱えるパケット量
    ・システム移行計画(常に
    ・ストレージ容量の運用法
    ・消費電力
    といった多岐の要因と、
    ・ユーザの利便性
    ・システムの拡張性
    ・特殊な商慣習
    ・(リソースじゃなくてユーザの)モニタリング
    というアプリ本体の目的を突き合せないといけない
    もっともそういうことはベンチャーでもしないと知らない世界だと思うけど

Leave a Reply