競プロ
学校でパソコン同好会があり,僕はそのプログラミング部門で後輩に C/C++ を教えています。人にものを教えるというのは結構難しいんですね。
人にプログラミングを教えるにあたって最も苦労したのが「何を作ればいいのか分からない」ということ。
プログラムは書いた分だけ上手くなります。逆に言うと,自分で書かないと上達しません。
僕が小学生のときにプログラムが上達しなかったのも,作るべきものが特に無かったからです。
同好会でも,後輩たちはこれまで何をするともなく適当にコードを書いているだけでした。(ちなみに僕は自分が書いたバグだらけのコードを頑張って修正していました)
とにかく何かテーマが欲しい。何を作ればいいのかを提示して欲しい。
そんなとき僕が出会ったのが,競技プログラミングでした。
競技プログラミング。略して競プロ。
正しいプログラムをいかに早く書けるかを競う競技。
atcoder(https://atcoder.jp/) や codeforces(http://codeforces.com/)などのサイトで定期的にコンテストが開催されています。
例えば,「入力されたいくつかの数のうち,1が何個あるかを出力せよ」という問題が出たら,数を1つずつ読み込んで1の個数を数えるようなプログラムを書いて提出します。提出したら即座にジャッジ(正誤判定)が始まり,いくつかのテストケースが実行されます。プログラムが全て正しい出力をしたら「AC」(accepted),出力が間違っていたら「WA」(wrong answer),プログラムが重くて実行に時間がかかりすぎたら「TLE」(time limit exceeded)と表示されます。ACすると得点を得ます。
一回のコンテストでいくつかの問題が出題され,得点の合計を競います。
僕は今年1月に競プロを始め,その効果に驚きました。
競プロは実用的なプログラミング力をつけるのに適しています。
自分の書きたいものを書くより,与えられた問題を解くほうが,すぐに力がつきます。
というわけで,今年度からは同好会で競プロをやることにしたのです。
競プロをやる人のことを「競プロer」と呼びます。僕は単に「er」*1と呼びます。
日本人のerは,twitter上にたくさんいます。(僕が競プロを知ったのもtwitterを始めてからです)
twitter上のerは不思議な日本語を使います。「プロ」「はい」「いいえ」「これは罠」「太陽」などの言葉の使い方や,括弧の使い方が特徴的です。
また,過度な謙遜による煽りが多い世界なので,強くなるまでは会話に参加することができません。
ここら辺の詳しいことに関しては,また改めて記事を書きたいと思います。
ではまた。
…というかこの記事,書き方が下手だな。誰だこれ書いたやつ。
*1:口を半開きにして,「あー」と発音します。