この10年間のプログラミングの変化

はじめましてnoteの皆さん、名人を倒した将棋プログラムPonanzaというものを作っていた山本一成と言います。この度ははてなから引っ越してきました。2018年になったので新しくブログ書いてみようかなぁ〜ってはじめました。

私がプログラミングをはじめたのは大学生だった時ちょうど10年前でした。そして今2018年になって、同じプログラミングにしても色々変わったなぁという印象です。今日はそのへんを皆さんと共有できたらなぁ〜と書きました。

あくまで私の観測範囲内での話をすればですけど、10年前のプログラミングの世界は速く動くことがかっこよかったです。実際にかっこいいだけでなく、必要とされる場面も多かったような気がします。私が愛用しているプログラミング言語はC++(シープラスプラス)と言って、まあそれは高速に動作することだけを意識して作られた言語でした。

加えて、今から考えれば一体なんでそんなトリビアルなことをみんなで一生懸命やってたんだみたいなことも沢山ありました。AIブームに沸き立つ現代とは違って、当時はなにをすればいいのかよくわからかったのが原因だと思います。

それから10年、プログラミングの変節をたった一つの言葉に無理やり集約するとそれはコンポーネント化です。コンポーネントというのは部品、つまり今のプログラミングは出揃っているコンポーネントをいかに組み合わせるかというところがプログラマの良し悪しを分けるようになってきました。

コンポーネント化がもっとも進んでいるプログラミング言語はpython(パイソン)という言語です。DeepLearningや機械学習をするには現状python一択だと思います。また他の分野のコンポーネントもまずpythonを探せば見つかる状況になっています。この10年本当にpythonの地位は上昇しました。

今のプログラミングはビルを立てるようなレベルになってしまって、コンポーネントを使わないとうまく組み立てれないところまできてしまいました。昔のようにDIY的に家を立てるようなレベル感では無くなっています。

昔のプログラマは力を失いはじめています。コンポーネントをうまく駆使するようなプログラミングをしないと高い生産性を出せなくなってくるでしょう。逆に言えば、今はプログラミングを始めるにはとてもいい時代になっています。


追記


この記事が気に入ったら、サポートをしてみませんか?気軽にクリエイターを支援できます。

ありがとうございます😄 RTしてくれるともっと喜びます😁
111

#エンジニア 系記事まとめ

noteに投稿されたエンジニア系の記事のまとめ。コーディングTIPSよりは、考察や意見などを中心に。
5つのマガジンに含まれています

コメント2件

Pythonで高性能なライブラリとして最も使われるのはnumpy、他にはscipy、pillow、pillow-simd、cupyなどありますが、いずれもBLASなどと比べるとチューニングの余地は沢山あります。そういうコンポーネントを築く部分では古いプログラマの出番がある、ちょっとがんばれば数倍速にできるのに、と現在機械学習系の仕事を行っていて痛感します。BLAS本体にせよ、MKLは非常に巨大なライブラリで、OpenBLASもループアンローリングの鬼ですが、GPUではなくCPU上での行列乗算が全体の処理に比重が少ない状況であんなコードを使うのは命令キャッシュを汚染しているだけに
(途中で切れてしまいました)感じます。より命令サイズが小さく、OpenBLASの9割くらいの性能が出せるBLASライブラリの必要性を感じます。自分でもGotoBLASの論文を参考にsgemmだけ作ってみたのですが、野心的な設計方針を取りすぎて、性能が思うほど出なかったり実装が非常に面倒になったりして、投げ出してしまいましたが……。

あるいはデータベースなんかも、その中身は古い言語で最適化されているでしょう。仮想化の時代ですが、ハイパーバイザーの実装なんてPythonではできません。コンピュータサイエンスを専門にしているような一部のプログラマは、そういったところでいくらでも古いプログラムを書いて活躍できる余地があると個人的に感じています。まだ社会経験が浅く、勘違いしていることも多いかもしれないですが。
コメントを投稿するには、 ログイン または 会員登録 をする必要があります。