プログラミングの難しさは三種類ある。

プログラミングにはいくつかの難しさがあると考えています。
こういうのは難しいですか?と、聞かれるときにうまい説明がなかなかしづらい事があるので、とりあえず自分の考えをまとめておきたい。

Type1:どうすればいいかは簡単にわかるが、必要手順が多く時間がかかる

時間がかかるとは、実装に必要なコード量が多かったり、やってることは簡単でもミスが出ないように積み上げていくのが大変だったりと、おおむね単純作業ではあるものの、量が多い場合に該当する「難しさ」です。
正確に言えば「難しい」と言うよりは「面倒くさい」のほうが正しいんですが、面倒くさいって言うと角が立つ場合は「難しい」って言いますよね。
もしくは仕事だったら「納期に間に合わせるのは難しい」とか。

Type2:やるべきことはわかるが、うまくいくかはわからない

今流行の機械学習などを含めた、統計的に動作するアルゴリズムの実装が必要な場合にぶつかるケースです。
どういうパラメータを、どういった手法で学習させればいいのかは、経験があれば多少なりともアタリがつくものです。
ただ実際にデータを流してみないと、どの程度の精度が出るのか正確なところはわかりませんし、想定の要件で実用を満たすのかもわかりません(レコメンデーションの精度とか)。
幾つか手法が候補に上がることも普通なので、パラメータの選定や、学習などのチューニングも含めると、統計モデルがどの程度の時間で実用に達するかはわからないですし、ひょっとすると1年あってもできないかも・・みたいなことも。
だいたいうまいこと学習できたとしても、データセットの規模いかんによっては高速化的なタスクが積み上がる場合も。

Type3:どーすればいいのか皆目検討がつかない

やりたいことはわかるが、何をどうすればいいのかわかららないという状況。
例えば「Hello, Worldは書けたけど、何をどうすれば3Dゲームになるんじゃい?」みたいな。
どうすればいいのかわからないので、当然何をすればいいのかわからない。手がかりを基に調べたり考えたりするしか無い。
色々なアルゴリズムや、様々なシステムの概要などを知っていくことで、ホントに何の手がかりも無い、全くわからないというケースは減っていく。
検索エンジンだろうがコンパイラだろうがOSだろうが、3Dエンジンだろうが、とりあえず構成要素自体はどこかしらから知識として入ってくると思うので、その辺をとっかかりに調べるなり考えるなりすれば全く手が出ないということは早々ないはず。
実際に完成できるかは知らないが。

番外:やりたいことがわからない

知らん。

スポンサーリンク
Sponsored Link
Sponsored Link

シェアする

  • このエントリーをはてなブックマークに追加

フォローする