「#月間競技プログラミングは役に立たない」が変わってきたという話 と 俄然出ないやるきの話

こんばんえるえる〜

研究が一向に進まない四年生のガナリヤです。
本当に進まないです、どこから手を出していいかも分からず、そういう状況になるとさらに研究のやる気がアになります。

そいういう状況なのでTNPのブログに逃げています(おい)
久々のポエム枠です。


競技プログラミングとは

上記を参考にしてください。
日本でいちばん有名な競技プログラミングのサイトのAtCoderが去年書いたブログです。
競技プログラミングの説明や、最近の社会の変化に対する流れが出てきました。

https://atcoder.jp/contests/abc142/tasks/abc142_b

初めて競技プログラミングの問題を解くなら上の問題などがよいです。

– for
– scanf
– printf

が使えれば解ける問題ですね、意外と競技プログラミングは他のアプリ制作やウェブ制作に比べると簡単だったりします


月間競技プログラミングは役に立たない

このブログのタイトルは「月間競技プログラミングは役に立たない」に関するものです。

この#月間競技プログラミングは役に立たない とはなんでしょうか?

競技プログラミングは、いわゆる「アルゴリズム」や「計算量」を考えて、如何に素早くコーディングするか?を競うスポーツです。


例えば上記に上げた問題なら

– forを書ける
– ifを書ける
– scanfが使える

をどれぐらいのスピードで間違いをすることなく書けるか?
という力が身につきます。

また、競技プログラミングはいわゆる「プログラミング筋肉」が身につきます。
どういうことかというと
「ぷよぷよ作りたいんだけど、ぷよが繋がっている判定どう作ろう」
というのが、一瞬で書ける力です。

昔はさっぱり出来ませんでしたが、競プロを初めて一年半ほどたった今は、迷うことなく書けるようになっています(実際に書いていないのでおそらくですが(おい))

競プロの楽しさといえばやはり、土曜日の夜21:00~22:40のコンテストで、リアルタイムに順位が変化するところと、それの結果によって、レートがダイレクトに決まるという点だと思います。
出るだけだとレートは伸びないし、下がることのほうが多く、強くなるしかレートは伸びないです。
ただ、それだけレートが伸びると非常に嬉しい気持ちになれまs

そんなこんなで、ハマると楽しい競プロなのですが、10年ほどまえから「競技プログラミングは実務で役に立たない」という論争が毎月のようにTwitterで行われていました。

特に、このころはまだ競技プログラミングの名前が世間で非常に薄く、情報オリンピックもまだ影が薄かった時代です。

そのため、いわゆるアルゴリズムを得意としない(得意分野がアルゴリズムではなく、他の開発系に向いている人)としばしばTwitterで論争が起きていました。


役に立たない時代から(一部)必要とされる時代へ

そんな論争もこのまえもまたTwitterで起きてました。

「競技プログラマーのコードは簡潔で、計算量のためなら可読性を下げたコードを書く。実務にとって、邪魔だし読み辛い」

みたいな論争でした。

ここらへんが勘違いされやすいところですが
「競技プログラマーはできるだけ計算量を減らす人間」ではないです

どちらかというと「計算量考えなくていいなら、簡単な実装・読みやすい実装を選ぶ」人間に、強くなるほどなっていきます。

理由は単純で、計算量の制約ないなら別にどんな解法でも良いからで、楽に書いて早めに提出したほうがレートが上がるからですね。

そんなこんなで、競技プログラマーはたしかに「アプリ」や「システム」「ファイル構成」などは苦手ですが、「汚い」コードとは必ずしもは言えないかもしれないです。


話がそれてきたので戻します(何も考えないで書いているので)

最近(僕はまだ二年弱しかやっていないですが)、非常に競技プログラミングの幅が就活・社会で広がってきているなと感じています。

先週の日曜日、コンテストで東京に行ってきました。

スポンサーは軒並みに太いです(僕は頭わるいし開発がガバなので入れませんが・・・)

競技プログラミングのスポンサーは、ここ数年非常に強いところが揃っています。

  • Google
  • Yahoo Japan
  • KEYENCE
  • MUGEN(画像処理+ロボットアーム 三ヶ月で収入が倍になってるらしい、こわいね)
  • Sky(人工知能)
  • Free
  • KLab(ラブライブの開発とか)
  • Future(アルゴリズム、人工知能)

今回のコンテストのスポンサーもYahooと電通で太い感じでした。

どうしてコンテストのスポンサーが比較的強いのかというと、新しい企業ほど(成長率の高い企業ほど)、より強い改革・そして海外に勝つための新しい技術を必要としています。

特に、競技プログラマーの

  • アルゴリズム力
  • 考察力
  • 実装力

を必要としています。(これは罠で、別に競技プログラミングやってない天才のほうが多分多いのですが)

また、DeepLearning系の会社も競技プログラマーを非常に欲しています。

新しいDeepLearningの開発や実装をするとなると、論文の公式を読んでそれを再現すること、そしてさらに拡張することが必要になります。
そういう力が競技プログラマーはすでに持っているため、必要とされるわけです。

先週のコンテストでFutureの人も、競技プログラマーを取る率が高く、競技プログラマーは他のこともできると言ってました


海外だとHackerRankを筆頭に、既に競技プログラミングで就職・転職することが当たり前になってきています。
日本だと情報の流通と、そもそもやる気の差が激しいので広まりません。

ただ、競技プログラミングが求められている仕事があるので
全員がそれにつくべきでないし、ウェブもアプリもゲームもありとあらゆるジャンルが必要であるため、そういうことになってほしくはないのですが
やはりこれからのプログラミングの3大テーマ

  • 人工知能
  • ビックデータ
  • IoT

を考えると、さらに競技プログラミングをやっている人間ほど有利になっていくんじゃないかと思います。
月間競技プログラミングが役に立たない が 簡単には否定できない時代が来たように思えます。
僕は開発ができないのでアですが・・・


やる気の話

ポエム枠なので、あとまだ寝る時間にははやいのでやる気の話をします。

というのも現在研究室で新しく入るB3と勉強会を一緒にしたい、といろいろとねっているのですが、結局「やる気」の話に陥ってしまうからです。

大学生は結構プログラミングができる子・できない子が非常にはっきりします。
文法が分からず、アプリなど動くものを作ったことがない子も居て、いわゆる下から上まで幾度となく居ます。

ただ、僕が思っているのはみんなプログラミングができないということはなく、むしろ「そういうプログラミングができるようになる機会がなかった」
が正しい表現だと思っています。

僕は1,2年生のころ、文法を暗記することに必死で、無駄な努力をしていました。

当然楽しくありませんし、しょうもないこと(C#のIE系とか)で時間を無駄にしていました。(これは無駄)ラムダ

ただ、僕はゲーム制作、そしてなにより競技プログラミングに出会って、レートが伸びて、オンサイトにいって、ある程度の満足感を得ることが出来ました。

プログラミングができない、やる気のないという人はおそらく、この「成功体験」や「承認欲求」を満たしたことがないんだと考えています。

一度、レートが伸びる、ゲームをプレイしてもらう、アプリを作ってTwitterにあげてFavをもらう、Qiitaに投稿する

こういう成功体験 をしているかいないかで、プログラミングに対する目的意識などが変わるんだなぁって思っています。

話がまとまらないので、まとめるとB3との勉強会でどうやる気を引き出すか?や、そもそもやる必要がないんじゃないか、迷惑なんじゃないか

など色々考えて、僕は何が楽しいんだろうなぁって考えるようになったということです

僕はやる気が他の人よりも強い人間ではなく、趣味もなく、お金をかけたいと思うことがないので(にゃん)

僕はゲームジャムは非常に賛成で、きっかけさえあれば、プログラミングが嫌い・できないが少しずつ変わると思っています。(コンテストがあって出れませんでした、ごめんなさい(次は是非出たいです!))
ゲームジャム・アプリ制作・競技プログラミング・Qiita・ウェブ制作、など、何でもいいのでなにか作ると決めて、それを外部に公開して遊んでもらう、成功体験をするのが大事なのだなぁと(終りが見えなくて焦っています)


寝る時間になったのでにじさんじ見て寝るます

グダグダ書きましたが、研究が進んでいません。
こういうダメ人間にならないように、やる気がモテる人間になってください
僕はそういう人になれなかったので、きょうも進んでいません

なんかつまらない話・ポエムすぎるのと、暗いので次の記事では「本当の技術系(Neo4jらへん)」か「にじさんじの推しライバー」を書きます

見返してないので、結構変なこと書いてるかも