せでぃのブログ

ブログ初心者おいどんのどうでもいい愚痴やどうでもいい愚痴やどうでもいいマメ知識などを披露するチラシの裏です。

サンデープログラマーの愚痴5つ

20150508修正:愚痴が1つ増えましたwanond.hatelabo.jp
 アプリのチューニングをチマチマするより大局的にハードウェアの処理速度向上を待った方が早いだろ? ってことね? マジレスするなら、同一ハードウェア上でのアプリ間の競争は常に起こっているので、ハードウェアの進歩は待っていられないという感じか。カルテルでも結ばない限り常に競争になるからね。
f:id:Sediment:20150415141122j:plain
 プログラミングは趣味の範囲なので、専業の方には当てはまらないかもしれませんが、まとまらないなりに不満を上げてみた。

日付処理

 普段なにげなく当たり前なものとして扱っているものであり、システム自体引いては社会全体への影響力が大きく厳密で間違いが許されないもの。
 1国ですら複数の暦を使うのが当たり前で、7進数から60進数まで複数の進数を使い、祭日に至っては規則性などまったくない。西暦1つ取っても、年月日の順序は国によって異なる。それでいて、ミリ秒単位をうるう秒などとして修正が必要とされ、正しく処理できて当たり前とされる。
 これほど扱いづらく、理不尽なものもなかなかない。どのプログラミング言語でもカレンダー専用のdate変数や変換・計算APIが用意されていながら、誰もが面倒くさいと口を揃えて言う。それだけ問題そのものの複雑さが根底にあると言える。

 要は、いつになっても"文字列を計算する"という不毛な作業を強いられる。一刻も早いアブソリュートタイムの解析が待たれる。

数学との非親和的な部分

 プログラミング技術向上のために、数学をたしなんだ方がいいというのはよく言われるが、その一方で、プログラミングに向かない数学の分野があるのもまた事実。手書きの式では初歩的なことでもプログラミングで解決するのが意外と難しい場面が多々あるのだ。
 それはマクロ・ミクロに長大な桁数であり、分数の計算であり、そもそもの数式・数学記号の記載である。小学校の先生が、分数のプリント作るのに苦労してたなぁ。
組合せ爆発 - Wikipedia

APIフレームワーク、開発環境の一貫性の無さ

 基本的なループやクラスなどは2つ3つの言語を習うと違和感はほとんどなくなるが、ボタンや通信、DB等との接続のために用意されたAPIフレームワークと呼ばれるものの記述形式、使い方が煩雑なのだ。正にこのためにプログラミング言語があって開発を楽にするためにあるもののはずなのだが、これが言語ごと、同じ言語でもアップデートの都度、一番変化が激しく面倒くさい。
 開発環境の操作の違いも、慣れるまで時間がかかるね。10年前にC#で電卓か何か作ったはずだけど、もう覚えてないし、動かないだろうなぁ。

バージョンサポート

 それがどんなアプリケーションであれソフトウェアであれ、実用性を考えるとベースとなるクライアントのOSやブラウザのメジャーバージョン2つくらいはサポートしなければならない。CSSを書くwebデザイナーがすげぇなと思うのはここ。
 これが理由で綺麗なコードが書けないことにもなる。新旧のバージョンで、それぞれ排他的なフレームワークを作られると、場合分けをして自分の手でコードを汚さなければならない。

無常さ

 自然言語についても言えることで、常にアップデートが繰り返され、枯れた技術・書き方というものがなかなか定着しない。どれだけ普遍的で美しいコードに感動しようとも、デバッグの喜びに打ち震えようと、5年後どころか1年くらいで開発環境が警告メッセージを出してくる。覚えても覚えてもキリがないのだ。

 おいどんが嫌だなぁと思う理由は、保守アップデートの問題からフリーランスの開発者の時間を束縛してしまうところかな。有能な開発者であればあるほど、優秀なソフトウェアであればあるほど、ユーザ規模が大きければ大きいほど束縛されてしまう。秀丸Ethereal、マインクラフトの開発者などがわかりやすい。ライセンスを売ればいいだけだとは思うけど、開発者の意図が失われて勿体無いと思うんだよね。



 結論として、言いたいことはすげーわかる。先日あがったandroidの無料テキストをやってる最中に、ラムダ式がどうこう言う記事が上がってきたら腹も立つってもんすわ。Objective-CもいつAppleに切られるかわからんし。何やってるんだろうね、おいどんたちは。
 deprecated,deprecated,deprecated....うおおおおおおおおおおおおおおおおおおおおおおおおおおおおおおおおおおおおおおおおおおおおおおおおおおおお。