猫もあきれるプログラミング日記 -8ページ目

猫もあきれるプログラミング日記

部活や家でちまちま作っているゲームについてのブログです。
⇒2014年末ごろから競技プログラミングもはじめました
今はほぼそちらメインです

※ヘッダー画像:2015年文化祭で展示したゲームから、主人公のリーフ君

友人に勧められて情報オリンピック日本委員会の夏季セミナーに応募してみました。
実績もないので受からないだろうと思っていたのですが、受かってしまいまして、
競技プログラミング自体は問題を見たことぐらいしかなかったので焦りました。
ちょっとだけ勉強して行きましたが、やっぱりすごい難しかったです。

というわけで、夏季セミナー参加記です。
すごく長いですが適当に読み飛ばしてください。

私はこの本を選択しました。

『並行コンピューティング技法-実践マルチコア/マルチスレッドプログラミング』(ClayBreshears(著)千住 治郎(翻訳))
・選んだ理由は
 ・ソースコードがC言語で書かれていてかろうじて理解できそうだったから
 ・ゲームを作っていて処理の遅さに嫌気がさしていたから
 でした。


一日目(8/25)
・本が並べられているのを見てみる→どれも分からない
・本を選んだ
・読み始める
 ・第1章 「ふーん( ´_ゝ`) 
 ・第2章 「ふーん( ´_ゝ`)」
 ・第3章 「ふーん( ´_ゝ`)」
 ・第4章 「ふーん( ´_ゝ`)」

 ・第5章 「OpenMPは1行でいろいろできて楽そう」
・このような感想を持つときはだいたいわかってない
・データ競合がめんどくさいのは分かった
・第6章を読んでいくつかソースコードを適当に写した
・バグったので寝ることにした

二日目(8/26)
・また読む
 ・正直OpenMP以外の使い方よく分かってなかった
 →前の章に戻りつついろいろやってみる
 ・使うスレッド数を変えてみたりといろいろ改造してみる
 →πを数値積分で求めるプログラムですごくAmdahlの法則に近い結果が出たので
   平均をとって保存してみた
 ・ほかのプログラムはいい結果が出ないかバグる
 ・ネットが使えなくて調べ物ができないのがつらい
・講義『1つ、2つ、たくさん~列挙アルゴリズムの入門から応用まで~』があった
 ・最初の方は聞いたことのある話が出てきてちょっと安心
 ・途中から難しくなりわからないところで瞼が落ちてきてつらかった
 ・図が分かりやすい
 ・敷き詰め模様に感動した(小並感)
 ・やはりわかっていないような感想しか書けない
・まわりの人の会話を聞いていてもわけがわからないよ!
 ・競プロの知識が全くないため

3日目(8/27)
・講義で寝かけたのを反省して毎食カフェインを摂取することにする
・いろいろ実装してみるが、自分で考えた領域が多いほどバグる
・周りの人がめっちゃ実装してるのを見聞きし心拍数が上がる
・つらい
・むしろスレッドって何?とか考え始める(混乱する)
・交流があった
 ・最初の方ボーっとしててすいませんでした
 ・トランプに参加させてもらいました
 ・黒板に言語がいっぱい書いてあってJOI合宿すごいと思いました。
 ・すごい楽しかったです。ありがとうございました!
・ネットが使えなくて調べ物ができないのがつらい
・余裕ができて周りの会話が少しだけ分かってくる

4日目(8/28)
・コーヒー苦い。
・「発表準備」と書いてあるのに実装の段階
 ・バグりすぎるのでほとんどあきらめてスライドを書き始める
 ・これによって1~3日目にやったことを半分くらい放棄することになる
 ・本に忠実にまとめることにする
 ・一日目に「ふーん( ´_ゝ`) 」とか言ってたせいでよく分からない
・保存しておいたπプログラムの結果使おう
・あとは実装の際、工夫するときとしないときの違いが分かりやすい
 クイックソートの並列化について書くことに決めた
・スライドのアニメーションに凝っていたらスライドに書いたことは分かるようになった
 ・まとめ直すことは大事なんだね
・講義『Webアプリケーション開発におけるセキュアプログラミング手法』があった
 ・ハックとかよく聞くけど具体的にどんな仕組みなのか不思議に思っていたので興味深かった
 ・しかしコードはよく分からない
 ・情報漏洩の流れが分かりやすい
 ・社名の頭文字でだいたいどこか分かった。こんなことあったんだ、へぇ…
・夜に作業すればいいやとか思ってたらあんまり集中できなかった
 ・結局深夜にスライドが完成
 ・ネットが使えなくて調べ物ができなかったのがつらい

5日目(8/29)
・カフェインに依存して目覚める朝
・発表会
 ・発表の順番が二番目になり焦る
 ・発表はだらだらしゃべってしまったと思う(戒め)
 ・理解のなさをスライドに救われた感
・他の人はすごく難しいことを話しているなあ
 ・この短時間で本読んで調べてここまで実装できるのがすごいと思った
 ・説明が分かりやすいので難しい数式以外はついていけた
 ・他の人の発表を聞いて色んなものに興味を持てた
 ・コンピュータが学習する系統が特に好きかも。
 ・すごく面白かった
・ペンもらった。

全体としてのまとめ
・最初は全然わからなくて、正直本を投げ捨てたいとか思いましたが
最後の日にはとりあえず見れるスライドを作ることができたのでよかったです。
いい経験ができた、成長したと感じました。
また、今回学んだことは作品作りにも生かせそうです。

・圧倒的なプログラミング脳の足りなさ。つらかったです。
でも、競技プログラミングも面白そうだなと感じました。
とりあえず9月までは部活で作っている作品を完成させなきゃいけないけど、
終わったら本格的に競技プログラミングの勉強始めてみます。

・JOIerには面白い人がいっぱいいらっしゃいました。
今回はちょっと余裕なくてあんまりお話しできませんでしたが、
勉強して余裕を付けてきます。
次回参加できたらたくさんお話ししたいです。

・建物にネット環境をください

関係者の皆様には本当にお世話になりました。ありがとうございました!

※なお、発表の時につかったスライドはネットのどこかにあるので
 諸事情によりここからはリンクしませんが気になる方はどうぞ、探してみてください。