2008-02-01

15歳中学生「はじめてのプログラミング」その1

エスカレーター私立中学校に通う男子プログラミング独習記。(Scheme/DrScheme)

本来高校受験を目の前に控えているはずなんだけど、怠けの坊ちゃん学校にはそんなものもなく教室の空気は緩んでいる。

3年前になんだかんだで部活動に入りそびれた僕は、際立ってダラダラなカテゴリに属す。

ベタギターをやってみたり、携帯のオンラインRPGにハマったり、プロフ女の子と会ってみたけどあまりしっくりこない。モバも飽きた。

唯一ハンズで買った財布づくりキットみたいなヤツをきっかけに革を触って何か作ったりするのは続いてる。革の裁断面を磨きまくるコバ磨きをしていると何故だか落ち着く。

僕のことばかり書いてても仕方ないな。で、なんか中学生活で達成したとかそんなの全然ないし、高校生活に胸をときめかせるとかもなくて。

それじゃああんまりだと言う事で、何か新しいことを始めたいなぁと思ってたんだ。

ちょうど親がプログラマーで、(全然パソコンには詳しくないけど)モノをつくるのも好きだし、やってみようって気になった。

昨日親に話してみたら、Structure and Interpretation of Computer Programsっていう本を勧められて、MITっていう大学(?)のサイトで見てみたけど難し過ぎた。

ってそのままお父さんに言ってみたら今度はHow to Design Programsっていうもっと入門編の本を教えてくれて、これ以上簡単な解説書はないからもうこれでわからなかったら諦めろと。

なんだか悔しいし、どうにかしてモノにしたい。早速MITサイトから100ページ分ぐらいダウンロードしてみた。

親に聞くのもイヤだし、(いつの間にかできるようになってたい)2chもそれ関係スレマニアック過ぎて謎過ぎたからここで書いてみる。

書いてることが間違ってたらぜひぜひ教えて欲しいです。

今日は最初の12ページ分。なんかプログラミングって何?とかプログラミングを学ばなきゃいけない理由とかが書いてあった。

  • ()内が僕が考えたこと。それ以外は本に書いてあったことです。

プログラミングって、職業的なスキル以上のものになってきてる。

すごく楽しいし、創造性のはけ口になるし、抽象的でふわふわしたアイデアを目に見える形で表現できちゃったりする。

(このアイデアを形にする手段、っていうのはなんかイイなと思った。やっぱりなんかひとりでモノをつくれる人は尊敬できるなぁ。)

プログラミングクリティカルリーディング、分析的思考、創造的統合(?)、細部へのこだわりを教えてくれる。

(創造的統合って何だろう?creative synthesisっていわれるとイメージはできる気もするけどうまく言葉にできない。

複雑なものをformingするってことだよね。多分...)

さらに何がイイかって、すぐにフィードバックが返ってくるところ。

冒険的、実験的になれるし、自己評価もできる。達成感を味わうっていうのもあるみたい。数学ドリルをするより全然。(確かに目に見える何ができるって励みになりそう)

この本ではプログラミング言語の細かいところとかにはあまり触れずに、デザインプロセスに焦点を当てる。

つまり問題定義からオーガナイズドされたソリューションまでの一連の流れについて語る。

2つのイノベーションがこの本にはあって、以下。

・明確なデザインガイドラインがある

・めちゃめちゃ新しいプログラミング環境

まず一つ目。今までの本は抽象的でクソみたいな定義の提案しかしてこなかった。例えば「デザインはトップからボトムに」とか「構造的にデザインしろ」とか。

この本には明確なステップがあって、読むこと、分析すること、組織化すること、実験すること、システマティックに思考することを学べる。

二つ目は、初心者向けのプログラミング環境であるということ。既存の本は周りにプログラミングプロがいて、すぐにその人に質問したりできることを前提に書かれていた。

この本はそういった意味の分からない前提は捨てて、独習できるように設計してある。

1. 問題のデータのかたまり(problem dataってなんだ?)を記述する

2. 簡単にプログラムの挙動の仕様をつくる

3. 挙動を図にしてみる(例をつくる)

4. プログラムの型(program templateってなんだ?)やレイアウトをきっちりつくる

5. テンプレートを変形して、完全な定義をつくる

6. テストしてエラー発見する

(なんかプロセスとしてはわかりやすいけど、抽象的でプログラミングしたことのない僕には雲をつかむような感じ...

inputデータの記述からどうやってprogram templateが得られるんだろう?1→2がよくわからない)

プログラミングアクティビティってつまるところ、

1. ある数とある数を関係づけること

2. 名前の代わりに値を用いることで、関係を評価する

ってこと。(これもわかったようなわからないような。1はinputとoutputの間の話?2は数値化するってこと?)

プログラムを学ぶのってサッカーを学ぶのと似てるね。

最初はトラップやドリブルパスシュートの仕方を学んで、次はあるポジションの役割を学んで、戦略を学んで、どの戦略を選ぶかを学んで、時々新しい戦略をつくったりもする。フィットするヤツがない場合はね。

他にも建築家作曲家作家に似てる。

彼らが楽器技術や書く技術建築技術を学んでアイデアを形にするように、プログラマープログラムを学んでモノをつくる。

この本ではSchemeというプログラミング言語を使う。開発環境はDrSchemeで行う。

ただこの本はSchemeの解説書ではないから、Schemeの構成概念の6つだけを使う。

function difinition、application、conditional expressions、structure definition、local definition、assignmentsだ。

---

とりあえず1回目はこんな感じ。

まだ全然良く分かってない。ただ親が使ってるのがlispっていうプログラミング言語で、Schemeはその方言みたいなものってことは今調べてわかった。ふーん。

まだ何がわからないっていうか全部わからないので、アドバイスのしようもないとは思いますが、最初はこれやっとけ!とかこのサイト読めとかあったら教えてください。

  • なんという高速道路。中学生がHtDPとかSICP。計算機科学なんてその程度なのか。 読破したらぜひ情報系の大学に行って下さい。周りはアホばかりに見えるかもしれないけど、新しいことも...

    • まだ初日なので...ただなんとなく向いてる気がするんですよ! ただ今まで投げ出したのも最初はそんなシックスセンスが働いてた気もしますが。 とにかくまずはこの本をエクササイズを...

  • いいなあ。俺も高速道路引いてくれる親が欲しかった。 俺の頃はそんなの全然何もなかった。 仕方が無いから高校生のときに本屋で微分方程式の本買ってきて読んだりしてたけど 物事の...

  • なんという英才教育 ってかぶってるな。まあいいや。 推測だけでいうけど、分からんことはその親にきくのが一番良さそうだ。 あえてなにかいうなら、地道に練習問題解いて試行錯...

  • はてな記法間違ってるぞw http://anond.hatelabo.jp/20080201001641 15歳中学生「はじめてのプログラミング」その1 ここな。

  • 小4でBASICいじって今31の人生の敗者です。 まずは、実行環境を手に入れる。そして、HELLO WORLD と表示するプログラムを書いて実行する。 これが一歩目の定番です。 前向きな姿勢、尊敬...

  • まず、2進数と16進数を理解する。そしたら、光の三原色と一緒に画像合成でビット演算を覚えるのが楽しい。マスクビットでくりぬいてAND合成ね。それをやりながらグラフィックライ...

  • 15歳中学生「はじめてのプログラミング」その1 http://anond.hatelabo.jp/20080201001641 の疑問に答えるためだけにはてなダイアリーを始める。 ちなみに俺はプログラミングの専門家ではない。一応...

  • 前回から随分間が開いてしまったんだけど、その2。中高一貫校に通う15歳男子のプログラミング独習記。 http://anond.hatelabo.jp/20080201001641 (その1) さっそく文字通り初歩的な問題、すなわち...

  • 前回から随分間が開いてしまったんだけど、その2。中高一貫校に通う15歳男子のプログラミング独習記。 http://anond.hatelabo.jp/20080201001641 (その1) さっそく文字通り初歩的な問題、すなわち...

    • http://anond.hatelabo.jp/20080215014122 で練習問題で、 Find out whether DrScheme has operations for squaring a number; for computing the sine of an angle; and for determining the maximum of two numbers. Find out whether DrScheme has opera...

      • (/ 2 3)の動作を暗記するのと、これを "divide 2 by 3"と読むのは違うからな。これがひとつならともかく、積み重なってくると骨が折れそうだ。( subst a b c )を"substitute a with b in c"と読めるかど...

記事への反応(ブックマークコメント)

ログイン ユーザー登録
ようこそ ゲスト さん