私はFKです。これまで5年間プログラマーをしてきました。現在はサンプルに力を注いでいます。最近知乎(Zhihu)を見ていて、何か書かねばと感じています。いつか自分の回顧録になるかもしれません。

考えた末、大学でどうやってプログラミングを学んだかから話し始めることにしました!!!

私は福建省の二流大学を卒業しました。専攻はバイオテクノロジーです(次から「非コンピュータ専攻でもプログラミングに適しているか」と聞かないでください)。大学2年のとき、「21世紀で最も将来性のある専攻(どうやら最大の嘘でもある)――バイオ」を断固として放棄し、図書館に行って『C言語プログラム設計』(譚浩強著)を借りました。

当時、それを手にして異常なほど興奮しました。学べば良い仕事が見つかってお金を稼げると思ったのです。しかし、人生の頂点に立つとか、CEOになるとか、裕福で美しい女性と結婚するなどとは考えていませんでした。

次に、本のチュートリアルに従ってC言語のコンパイル環境をインストールし始めました。そして本に載っている最初のプログラム「Hello World!」を見ました。この「Hello World!」を出力するために、本の手順通り、非常に不器用に一文字ずつコンパイラに入力しました。当時はこの学び方が正しいのか分かりませんでしたが、とりあえずそのままやっていました。

入力し終わるとすぐに実行ボタンをクリックしました。もうすぐすごくなって、ハッカーへの道を歩み始めると思っていました。ところが、実行しても「Hello World!」ではなく、めちゃくちゃなものが出力されたのです。全く分かりませんでした。戻って「注意深く」照合しましたが、くそっ、間違いない、一字一句同じです。まさか譚浩強が間違えているのか。

その後さらに30分かけて、目を大きく見開き、非常に非常に集中して(まるで世界が静かになるような状態で)私のコードと本のコードを比較しました。すると、セミコロンや中括弧などがいくつか足りないことに気づきました。結局、ただの記号でした。そこで初めて、自分の「注意深さ」がどれほど当てにならないかを知りました。午前中いっぱい格闘して、ようやく念願の「Hello World!」を出力できました。

突然、頭の中に二人の人物が浮かびました。仮に彼らをA、Bと呼びましょう。

  • A:なんでプログラミングなんて学ぶんだよ。こんなに難しいのに、朝からずっとこの変な出力だけかよ。いっそ「Frozen Throne」で一戦やろうぜ。
  • B:仕事を探してお金を稼ぐんじゃないのか。選んだなら諦めるな。
  • A:まだ大学2年生だろ、そんなに考えなくていいよ。まずはしっかり遊ぼうぜ……
  • B:お前の環境は遊んでいられるようなものじゃない……

その時、自分の学費が家族があちこちからかき集めてくれたものだと思うと、やはり仕事を見つけてお金を稼ぐことが優先で、家族の負担を減らさなければと思いました。そのため深く考えず、本格的にC言語の学習段階に入りました。

当時は周りに交流できる同級生がとても少なかったので、基本的には本のプログラムを一文字ずつ打ち出していました(今思うとかなりバカっぽい)。今のIDEのように入力補完を直接してくれるわけでもありません。そうして2か月かけてC言語の変数、ループ、条件分岐などを学び終えました。一番頭を悩ませたのは後のポインタで、長い間やっても理解できませんでした……

結局、C言語はほんの表面的な部分しか学べませんでした……

……(続く)