ポール#
2017 年、私は大学の 2 年生でした。その時、私はプロとしてコンピュータプログラミングを学び始めてからまだ 1 年も経っていませんでした。
ポール・デンプスターは私たちの大学の教師の一人です(ノッティンガムで 10 年を過ごした後、現在はLancasterで教えています)。私は今でも教室での彼の姿を覚えています — 簡潔な 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 日間でそれを解放しました。
私たちはとても幸せでした。
AdventOfCode 毎年 12 月#
2015 年以降、毎年クリスマスに AdventOfCode には背景ストーリーがあります。問題解決の進捗が毎日更新されることで、ストーリーは徐々に展開し、クリスマスの日に最終的に結末を迎えます。そして、問題を解決したすべての人々は、楽しく挑戦的な 1 ヶ月を過ごし、それは本当に祝う価値があり、良い深い思い出を残しました。
私はその後の年にこのイベントを新しいクラスメートや新しい友人、新しい同僚など、さまざまな人々に紹介しました。
(スクリーンショットは、私が WeChat のモーメンツでこのイベントを中国語で共有しているものです。)
2019 年の最初の数日間、私は毎日異なる言語で問題を解決しようとさえしました(Songkeys/advent-of-code-2019)。
残念ながら、さまざまな理由で、私は毎年 20 日以上続けることができず、すべての星を獲得することができませんでした。もはやそれに多くの時間を割くことができず、あのクラスメートや友人たちの伴侶もいなくなってしまったからです。
それでは、再び遊びましょう#
あっという間に 5 年が経ち、2022 年になりました。
私はもはやあの無知なコーディング初心者ではありません。今では、私が書くコードは学びや興味のためではなく、仕事やプロジェクトの目的のためがほとんどです。さまざまな楽しみはありますが、最初と比べると、何かが欠けていると常に感じています。
私はここで旗を立てることに決めました — 今年は何があっても、クリスマスの日に 50 個の星を獲得しなければなりません。次の数日間、私は過去の年のチェックポイントをゆっくりと埋めていきます。
私に感動したなら、今年の 12 月 1 日はあなたを待っています!
コミュニティ#
ところで、これらのコミュニティにも参加できます:
- Discord:私はこの Discord サーバーで数年間遊んでいます。世界のトップ 100 のマスターや、さまざまな言語のマスター、新人たちがいます。異なるタイムゾーンの人々がしばしばトピックが解放されるのを一緒に待ち、トピックについて話し合い、互いにヒントを与え合います。
- Reddit:このサブレディットでは、他の活動(特定の年の詩など)や、神々や人々からのさらなる説明を見ることができます(例えば、誰かがarduino を使って問題を解決した、minecraft を使って問題を解決した、折りたたみ式スマートフォンを使って問題を解決した、問題解決方法について論文を書いた)、そして多くの面白いミームがあります。
- 舞台裏(動画):著者Eric Wastlが数多くの機会に舞台裏のストーリーを共有しました。
一緒に遊びましょう。