-
Notifications
You must be signed in to change notification settings - Fork 6
C言語を学ぶためにはどうしたらいいでしょう? #8
Comments
|
彼には話したんですが、私の場合はCは三番目に学んだプログラミング言語でした。図書館で Scientific American のなかの Computer Recreation を読みながら、そのアイデアをプログラムにすることを楽しみにしていました。Life Game、植物の形態を文法的に記述できる L System、Mandelbrot 集合などを知りました。自宅のマイコンで BASIC を使って Mandelbort 集合の可視化プログラムを書いたんですが、計算に一週間以上もかかり高速化したかったのが C 言語を学び始めたきっかけです。あと、サークルの活動でプラネタリウム(ハードウェア)を制作したんですが、その設計のシミュレーションのためのプログラムも作りました。後にそれが転じて学園祭での星占いのプログラムにもなったりした。。。 森先生とも対話したんですが、自分の側に作りたいものがあって、それを作るために知識を求めるのが一番、勉強になるんじゃないでしょうか。 |
プログラミング言語の実装に興味があるのならば、
などはいいと思います。Boehm GC のアルゴリズムには感動しました。 |
組込み系もいいと思いますが、ぼくはあまり経験がありません。今どきなら、GPGPUプログラミングだと普通は C 言語ですよね。CPU よりも数十倍の速度の性能が得られる場合があります。 |
オペレーティングシステムの構造に興味がある場合は xv6 をお薦めします。 いずれにせよ、興味のある人で数人で勉強会を開くといいです。 |
競技プログラミングも勉強になりますね。 |
あと、知人のマニアがやっている怪しい世界もあります。 あなたの知らない超絶技巧プログラミングの世界 一例を挙げると、不動点プログラムというものがあります。プログラムを実行すると、そのプログラムのソースコードを出力するというものです。で、遠藤さんがやったのは、プログラムを実行すると 3D Printer から、円筒形の物体が出力されます。で、その物体は実は凸版印刷の版になっていて、それを使うとプログラムが印刷できる。で、それを Scanner と文字認識装置を用いると、ソースコードが再現できるという不動点なんです。さらに、3D 印刷の費用(印刷にかかるお金)を最小化するための工夫とかもしれいます。 |
そういえば、 @3tty0n のコメントを見ていて思い出しましたが、こんな本がありました。 30日でできる-OS自作入門 こちらで簡易にやって、xv6 にステップアップするという方法はありでしょうね。 |
デバイスドライバを書くのもありだと思います。昔、自分がもっている特定の USB メモリを挿すとログインできるような仕掛けを作ったことがあります。完全に忘れてしまったけれど、案外、簡単でした。 |
@3tty0n くんからのお薦めは HTTP サーバ(ウェブサーバのこと)です。ネットワークプログラミングで、通信のための API を使うので C らしさが出ます。 以下が参考になるみたいですよ。案外、短いでしょ? |
関数型言語の OCaml の VM のソースコードを読んだことがあります。2,000行くらいかな?バイトコードインタプリタとしては非常に効率のよいもので、C のプログラミングテクニックを学ぶのにもよい例だと思います。手始めにはよいかもしれません。 VM は OCaml のソースの byterun ディレクトリにあります。 現在、大学院の Functional Programming という授業で OCaml のサブセットにあたる MinCaml というネイティブコードコンパイラのソースコード (OCaml) を解説しています。みなさんが大学院にやってくるときに継続しているかどうかは??だけど。 |
標記の質問を受けました。
質問された方は、すでに C 言語に関する入門書を読み終えているので、基本的な知識は定着しているようです。あとは実践的なプログラムに触れることと、自分でプログラミングするとよいと思います。
みなさん、アイデアを提供して下さい。
The text was updated successfully, but these errors were encountered: