AtCoder始めました。
こんにちは、揚げパンです。
最近自分のプログラミングスキルを向上させたいなと思い友人に相談しました。
すると、競技プログラミング楽しいしプログラミングスキルもあがるよと言われたのをきっかけにAtCoderを始めてみました。
競技プログラミングとは...
僕も友人に競技プログラミング楽しいよと言われても何それ?とピンとこなかったので競技プログラミングについて少し調べてみました。
調べてみた結果、競技プログラミングとはプログラミングを使って問題を解くことでプログラミングの技術を競うコンテストの総称のことを指しているようです。
実際に過去問を解いてみた
実際にAtCoderのAtCoder Beginner Contestの問題を何問か解いてみました。
A問題やB問題は割とすぐに解けたのですが、C問題やD問題あたりから全く手が動かなくなってしまいました。
僕は大学に入学してからプログラミングの勉強を始めたのですが、インプットの作業を行うばかりで実際にコーディングを行うことがなかったためか、自分のアルゴリズム力とプログラムの実装力が全然ないことに気づきました。
これから
アルゴリズム力と実装力が今後、僕の課題であることがはっきりと知ることができたので、今後徐々にAtCoder Beginner ContestのC問題やD問題から徐々に過去問に取り組んでいきたいと思います。
なかなか予定が合わなく実際にコンテストに参加する機会がないのでまだレートがないのですが、コンテストに参加する機会ができたときに良い結果を残せるように日々頑張りたいと思います。
カーネルについて学び始めた(1日目)
こんにちは、揚げパンです。
Linuxカーネルに興味をもちだしたのでこちらの本を購入しました(僕がカーネルに興味を持った理由は前日の記事で詳しく話しています。)
超例解Linuxカーネルプログラミング~最先端Linuxカーネルの修正コードから学ぶソフトウェア品質~
- 作者:平田 豊
- 出版社/メーカー: シーアンドアールケンキュウジョ
- 発売日: 2019/07/18
- メディア: 単行本(ソフトカバー)
僕が参考書を購入してから(1日目)
こちらの本を購入して早速読み始めました。
前提知識
まずはじめに必要な前提知識についての記載がありました。
前提知識では、LinuxでC言語を使って簡単なプログラムを作ったことがあれば問題なく読み進められるとのことだったので、数年前に大学の講義でC言語について学んだので大丈夫であろうと思い読み進めることにしました。
動作環境
次に動作環境のセットアップとのことでした。
僕のマシンには開発ツールがまだ整っていなかったため本の支持に従いaptコマンドを使って開発ツールをインストールしました。
カーネルのバージョンの見方やカーネルソースコードの見方
この部分はこれから本を読むにあたり、スムーズに読めるようにカーネルソースコードの探し方などを書いていたので流し読みしました。
ソフトウェアの品質について
この章では、有料ソフトウェアは品質が大事であるが、無料で提供しているソフトウェアではどこまでの品質が求められるのかについて書いていました。
また、クロスチェックや、テストなどを行うことによりソフトウェアの品質を高めることができるということについても触れていました。
最後に
購入初日では、2章まで読み進めました。
カーネルを学ぶにあたり最低限の知識を手に入れたような気になれました(まだこの部分を読んだだけでは知識は全然足りない)。
更に読み進めて、カーネルについての理解を深めるぞ!
Linuxカーネル上で動くプログラムが作れるらしい
どうも、揚げパンです。
先日先輩と話しているとどうやら先輩の友人にカーネル上で動くプログラムを書いている人がいるらしくとてもおもしろそうだと思った。
カーネル上で動くプログラムとは...
聞くところによるとカーネル上で動くプログラムを書くことができると、osのプログラムが実行するよりも先にプログラムを実行することができるらしい。
そのようにすることで、ウイルス対策ソフトなどに検知されないようにすることができるとかできないとか...
そのプログラムを作成するためには、C言語の'stdio.h'などのヘッダファイルも自作する必要があるとかないとか...
話を聞いて
僕は'stdio.h'のようなヘッダファイルは自作できるものではないと思っていたため驚いたのと同時にどのようにして作っているのだろう、自分もカーネル上で動くプログラムを書いてみたいと不覚にも思ってしまった。
その後
ブログ書いてる人はできるイメージ
先日LT(lightning talk)の傍聴をする機会がありました。
その際、皆さんのLTを聴いていて、とてもレベルの高いことをしているんだなと言う印象を受けました。
さらにLTを聞いているうちに発表者の方の内多くの人がブログを書いているということがわかりました。
そこで、僕の中で、ブログを書いている人は凄いという印象を受けました。
何故ブログを書いている人に対して凄いという印象を受けるのか、そして僕はどのようにするとスキルアップができるのかについて僕なりに考えてみました。
僕が考えついた結論は、他人が見ることを意識してブログを書くことで、必然的に何も考えずに学習を行うより理解が深まるということでした。
また、ブログを書くことで、必然的に自分がインプットしたことをアウトプットするようになるので僕もやってみようと思いました。
ということで、学習への理解を深めるために僕もブログを始めてみたいと思います。