ポール#
2017 年、私は大学の 2 年生でした。その時、私はプロとしてコンピュータプログラミングを学び始めてから 1 年も経っていませんでした。
ポール・デンプスターは私たちの大学の教師の一人です(ノッティンガムで 10 年を過ごした後、彼は現在ランカスターで教えています)。私は彼の教室での姿を今でも覚えています — 簡潔な PPT のレイアウトに伴い、彼は素早く巧みに IDE とターミナルを使って、無知な子供たちに基本的なプログラミング知識を教えてくれました。
他の教師が教えるコンピュータ理論のコースと比べて、私は彼の C 言語のコースを受けることを好みました。なぜなら、私の意見では、これはより実用的で新鮮だからです。彼が私たちのために毎週設定してくれた 30 分のクイズは新しくて面白く、時には制限時間内にリンクリストのメソッドを実装することや、誤って入力した C 言語のソースファイルのフォーマットを尋ねるなど、挑戦に満ちていました(当時、私は IDE のフォーマッターを使わずに手でフォーマットを入力するほど愚かでした)。この興味のおかげで、最終プログラミング課題で 99/100 を得ることができました。
私の初めての AdventOfCode#
第一学期の試験復習シーズンが来ると、ポールは私たちにAdventOfCode.comを紹介するメールを送ってくれました(卒業後、学校のメールにログインできなくなったため、メールの原文を失ってしまったことをお許しください)。
メールの中で、長短の段落を交えて、このウェブサイトはプログラミングパズルのウェブサイトであることが紹介されました。12 月 1 日からクリスマスまで、毎日 1 つの問題が出題され、各問題には難易度が増す 2 つの部分があります。あなたは完了した各部分に対して星を獲得し、25 日間で合計 50 個の星を獲得します。世界中の多くの人々が参加しています。人々はそれを使ってスピードゲームをしたり、面接の準備をしたり、プログラミングスキルを磨いたり、互いに競い合ったり、ただ楽しむために使っています。
ポールはまた、私たちを招待して一緒に遊ぶためのプライベートリーダーボードを設定しました。結局、参加した学生は 10 人にも満たなかったのですが。
私はウェブサイトをクリックし、数分で初日の問題を解決し、2 つの星を獲得しました。私は興奮しています。
私と同じくらい興奮しているのは、私のルームメイトの一人です。
次の数日間、私たちは毎日午後 1 時(中国の GMT+8、つまり EST の午前 0 時)に問題が解除されるのを待ち、急いで問題を解決しました。
しかし、毎日うまくいくわけではなく、進むにつれて問題はますます難しくなります。私たちはしばしば、問題の意味を誤解したり、間違った答えを提出したりした後、しばらくの間凍りついてしまい、効率の悪いロジックを書くために長い時間待たされることがよくあります(プレイすればわかります)。
私たちはコードをうまく書けませんでしたが、それが問題を解決したのを見てとても嬉しかったです。私たちはコードを最適化するために努力し、より効率的に実行できることを願っていました。
ある日、私は問題解決プロセスの可視化さえ書きました。
最終的に、私たちは 25 日間でそれを解除しました。
私たちはとても幸せでした。
毎年 12 月の AdventOfCode#
2015 年以降、毎年クリスマスには AdventOfCode に背景ストーリーがあります。問題解決の進捗が毎日更新されることで、ストーリーは徐々に展開し、クリスマスの日に結末を迎えます。そして、問題を解決したすべての人にとって、楽しく挑戦的な 1 ヶ月があり、本当に祝う価値があり、良い深い思い出を残しました。
そして、私はその後の年に毎年このイベントを新しいクラスメート、新しい友人、新しい同僚など、さまざまな人に紹介しました。
(スクリーンショットは、私が WeChat のモーメンツでこのイベントを中国語で共有しているものです。)
2019 年の最初の数日間、私は毎日異なる言語で問題を解決しようとさえしました(Songkeys/advent-of-code-2019)。
残念ながら、さまざまな理由で、私は毎年 20 日以上続けることができず、すべての星を獲得することができませんでした。もはやそれに多くの時間を費やすことができず、あのクラスメートや友人たちの仲間もいなくなってしまったからです。
それでは、再び遊びましょう#
あっという間に 5 年が経ち、2022 年になりました。
私はもはやあの無知なコーディング初心者ではありません。今では、私が書くコードは学びや興味のためではなく、仕事やプロジェクトの目的のためがほとんどです。さまざまな楽しみはありますが、最初と比べると、何かが欠けているように感じます。
私はここで旗を立てることに決めました — 今年は何があっても、クリスマスの日に 50 個の星を獲得しなければなりません。次の数日間、私は過去の年のチェックポイントをゆっくりと埋めていきます。
私に感動したなら、今年の 12 月 1 日はあなたを待っています!
コミュニティ#
ところで、これらのコミュニティにも参加できます:
- Discord:私はこの Discord サーバーで数年間遊んでいます。世界のトップ 100 のマスターや、さまざまな言語のマスター、新人たちがいます。異なるタイムゾーンの人々が、トピックが解除されるのを一緒に待ち、トピックについて話し合い、お互いにヒントを与え合っています。
- Reddit:このサブレディットでは、他の活動(特定の年の詩など)や、神々や人々からのさらなる説明を見ることができます(例えば、誰かが問題を解決するために arduino を使った、問題を解決するために minecraft を使った、折りたたみ式スマートフォンを使って問題を解決した、問題解決方法について論文を書いた)、そして多くの面白いミームがあります。
- 舞台裏(動画):著者エリック・ワストルが数多くの機会に舞台裏のストーリーを共有しました。
一緒に遊びましょう。