YU2TA7KA's BLOG ~take one step at a time~

派生開発、組み込み開発周りのこと。

2020年のふりかえりと2021年の抱負

2020年やったこと

No. やったこと
1 競技プログラミング(Rust/python/C++)
2 ベアメタルプログラミング
3 Javascript入門
4 C++入門
5 C言語再入門
6 アセンブリ言語入門

2020年わかったこと

競技プログラミング

f:id:yuji-tanaak:20210101145722p:plain
今年一番の収穫、最終スコアは650茶。諸事情+ギックリ腰で継続が難しくなってしまい残念ながら11月で中断。緑diff埋めなどやるべきことは明確であとは時間確保できたらいけそう、という感覚があった中での中断なので悔しい。21年の夏か秋ごろに再開したいと思っている。

さて、わかったこと、、、はたくさんある。

何よりもプログラミングは面白い!競プロで競っているデータ構造とアルゴリズムは非常に奥が深く、一見解けなさそうな(処理時間がとてもかかってしまうと思う)問題でも、工夫することで解ける。これがわかって実装してacceptできたときの快感がたまらない。競プロはこの快感を手軽に味あわせてくれる。
様々なプログラミング言語でそれを実装するのも面白い。各言語でいろいろな表現ができ、その差分をみると言語ごとの特性の理解が捗る。また、抽象化して実装する工夫とかできると良い感じにコーディングできている実感が得られて気持ち良い。そして、つよつよな人のコードをみるとそれは魔法詠唱に見える。気軽に高レベルなモノを見れる環境って素晴らしいと思う。
ここまで競プロの魅力。

競プロ訓練のためにデータ構造とアルゴリズム以外のこととして、数学の勉強をした。具体的には数学ガールを読んだ。数学も面白い。これまで数学は方程式を解いたり、図形で表現するくらいの雑すぎる認識だったが、数学ガールを読んでようやく数学とは何かをなんとなくつかめた気がする。数学は数の具体化と抽象化を扱い現実をモデル化する技術として便利、とひとまず理解。同時にもっと奥が深く面白いことが数多あるとも思っている。数学ガールは2020年に 10/19冊読了したので、21年中に残り半分を読み切りたい。

ベアメタルプログラミング

tatsu-zine.com
競プロを中断したあとの活動として、ベアメタルプログラミングを実施。スタートアップ関数から始まる起動処理を一つずつ理解して実装していくプロセスはとても楽しい。現在のパソコンが抽象化されていることを改めて体感できた。また、組み込みシステム開発で欠かせない割り込みについてかなり理解を進めることができたのは最大の収穫。「割り込み」についてWebで調べると概念は説明されているが実装レベルの具体的な話はややこしすぎてイメージしにくい。ベアメタルで実際にやるのが一番近道と思う。
古い書籍だが、BareMetalで遊ぶ Raspberry Pi - 達人出版会は非常に親切に書かれており良著。

Javascript入門


業務でフロントエンド周りのコードを書く必要があり、入門。
手軽に始められて、ブラウザですぐにGUIで結果を得られるのは面白い。
そして奥が深くいろいろできるのがかっこいい。
関数の定義方法が4種類あってややこしい。
HTMLとの連携は難しいと感じる。

C++入門


業務で読み書きする必要があり入門。
最低限の読み書きはできるようになった程度。
書き方、型の扱い、ライブラリの使い方などがしんどい。

C言語再入門


業務で読み書きする必要があり再入門。
いかに自分が今まで理解しないでC言語に触れてきたかわかった。
ポインタ、メモリ、配列まわりの理解が進んだ。
C言語は「奇怪」で「妙」な部分がある言語。
C言語は行き当たりばったりに機能拡張され、こんなに普及することを想定していなかった。

アセンブリ言語入門


基礎的なARMアセンブリ命令をなんとなく理解。
ARMプロセッサの動き方をなんとなく理解。
割り込み処理の流れをなんとなく理解。

2020年の総括と抱負(つぎやること)

2020年は改めていろいろなプログラミングに触れた。2019年にRust入門して、そこからプログラミングの面白さを再発見したことがきっかけ。特に、競プロを通してプログラミングを行うことで楽しんで飽きないで悔しい思いをしながら継続することができた。レーティング機能、毎週定期開催、競プロerのTwitterアカウントフォローなどが継続できた重要な要素と思う。*1
さて21年の抱負、、、(ここではあまり具体的に言えないが)、たくさんのやるべきことが押しよせてくると予想される。なので、それらを一つ一つ着実にクリアしていきたいと思う。その際は視野を広くもって、完了条件(ゴール)は何か、関係者と一緒に勝つ方法は何かを探って、実行に移していくことに注意したい。

2019年の抱負の振り返り

私はいろいろなことをすぐ実践する積極性はそれなりにありますが、そこに戦略性が無く着実な成長に繋がっていないように考察しております。簡単に言うと、ただやるは駄目ちゃんとやれ、ということです。頭を使いながら練習しろ、意味を考えろ、戦略性を持て、とかそういう感じの能力が必要なのかなと。。来年がんばります。

「戦略性を持つ」ということを20年の抱負とした。「戦略性を持つ」を噛み砕いて、「ゴールの設定を上手にして、ものごとに取り組む」くらいを意識した。結果、ある程度達成できたと思う。競プロである程度レーティングを上げることができたことは達成できた一例。一方で、他者から視野狭窄になることがあるとの指摘ももらったので、まだまだ精進していく。

*1:コロナについてもいろいろあるがノーコメント