memorandums

日々の生活で問題解決したこと、知ってよかったことなどを自分が思い出すために記録しています。

C++のめげないリハビリ

まず、いつものながーい前フリ。

前期に2年生向けのゼミ授業で以下の本を扱いました。

プログラミングコンテスト攻略のためのアルゴリズムとデータ構造 www.amazon.co.jp 3,544円 (2021年09月09日 09:33時点 詳しくはこちら) Amazon.co.jpで購入する

受講者の皆さんからはAOJの自動評価の仕組みがとても良かったとの意見がありました。

競技プログラミングの存在はもちろん知っていましたので、関連する本はとりあえず買ってゼミ室に置いていました。ただ、以下の本はアルゴリズムを習いたての人にはあまり向かない感じです。上記の本がなんとか扱えるかな。。。という感じでした。

最強最速アルゴリズマー養成講座 プログラミングコンテストTopCoder攻略ガイド www.amazon.co.jp 2,772円 (2021年09月09日 09:36時点 詳しくはこちら) Amazon.co.jpで購入する
プログラミングコンテストチャレンジブック [第2版] ~問題解決のアルゴリズム活用力とコーディングテクニックを鍛える~ www.amazon.co.jp 2,641円 (2021年09月09日 09:36時点 詳しくはこちら) Amazon.co.jpで購入する

それでも、授業で扱ってみて競技プログラミングについてネットで色々見聞きするうちに競技プログラミングに少しずつ関心が出てきました。AtCoderなんかも問題をみたりコンテストに一部参加したり。

YouTubeなんかを検索すると、様々な方々がGAFAMなどの企業へ就職するためのコーチングといいますかプログラミング解説なんかをしています。

その方々が勧めるサービスの1つが今日のタイトルのHackerRankだったわけです。

HackerRank HackerRank is the market-leading technical assessment and rem www.hackerrank.com

他にも以下のようなサービスがあるようです。国内ですとAOJはもちろん、AtCoderが有名なようです。毎週のようにコンテストが開催されていて非常に活発に活動されているようです。

Codeforces Codeforces. Programming competitions and contests, programmin codeforces.com
CodeChef | Competitive Programming | Participate & Learn | CodeChef CodeChef | Competitive Programming | Participate & Learn www.codechef.com
LeetCode - The World's Leading Online Programming Learning Platform Level up your coding skills and quickly land a job. This is t leetcode.com

で、話を戻して。

3週間くらい前にこのHackerRankというプログラマー向けのキャリア支援的なサービス?に登録しまして、何か挑戦しようかと思った1つに 30 Days of Code がありました。

Solve Tutorials Code Challenges Improve your coding skills by coding for 30 days in a row www.hackerrank.com

今日で21日目です。毎日、小さな課題が出題されます。メール通知があるので忘れることがありませんし、メールが未読のままだと「あーやらなきゃな」といういい意味での心理的なプレッシャーもあり。いいエクササイズになっています。

内容はC++の基本的な文法からちょっとだけ応用的な使い方の問題であり、コード全体のうち一部だけを書き換える感じでコードを完成させる課題です。

忙しい日々の中で、ポイントを絞って練習(というか思い出し)ができるのがミソです。ブラウザ上にエディタが表示されるため、特に開発環境を準備する手間も起動する時間も必要ありません。

最初の問題は以下のような感じです。

入力の文字列の前に「Hello, World. (改行)」を出力しなさい、という問題です。

例えば、標準入力から「Welcome to 30 Days of Code!」があると、答えは「Hello, World. (改行)Welcome to 30 Days of Code!」とするだけです。

所属している学科では2年生後期にC++の授業がありますが、3・4年生でアプリ開発や応用開発をするとき先があまりありません。

もちろん、コンピュータシステムのコア部や、バックエンドなどでC++が活躍しているとは聞きますが、初心者〜中級者が扱うような問題では出会うことがあまりなく、だんだん離れていきました。

大昔、SEだったころにEWS(Sun等)&UnixC++を使って開発することがありました。C言語は使ったことがありましたが、C++ははじめてで、インターネットもあるにはありましたが今のような情報は流通していませんでした。

C++プライマーを片手に小さなコードを書いて動作を確かめては自分のコードに組み入れていった記憶があります。STLもまだメジャーではなかった時代でしたので、データ構造やアルゴリズムの基本クラスも自作しながら開発していきました。OOPの再利用性の恩恵に恵まれることはなく、生産性はかなり悪かったと思いますが。。。個人的にはとてもいい経験でした。

それから20年以上。。。C++もかなり変化していると風のうわさでは聞いていましたが、確かにコードを一見してもわからないものも多いように思います。

ということで、長くなりましたが、私のような感じの人がいればですね。。。

リハビリしたいな。。。という方がいましたら、ぜひ、トライしてみてください。コードを提出して通ったときに紙吹雪のような演出があります。あれはなかなか気持ちいいですよ😁

でわ!