パスワードを忘れた? アカウント作成
179530 story

12歳から始めるプログラミング、何からスタートすべき? 205

ストーリー by soara
行き着く先はオレ言語 部門より

あるAnonymous Coward 曰く、

本家「How To Teach a 12-Year-Old To Program?」より。

年の離れた弟にプログラミングを教えたいと思っている。自分の時代は BASICやApple BASICから始め、Pascalをいじり、徐々に Cや Javaに行きつくといった感じだったように思う。弟でもまずは簡単なものから始め、いずれは Cを扱えるようにしてあげたいと思うのだが、何からスタートするのがいいだろうか。例えば Pascalはまだプログラミングを習うにあたって現役で使われている言語だろうか?

最終的には Cを修得するのがベストだと思っているのだが、面白いことができるパワフルさがあり、それでいて取っつき易く、いずれは Cや C++に繋がるオススメの言語などあるだろうか。

この議論は賞味期限が切れたので、アーカイブ化されています。 新たにコメントを付けることはできません。
  • by Dobon (7495) on 2010年01月01日 9時57分 (#1696521) 日記
    つまり、生の機械語とアセンブラから。
    何事も基礎が大事です。
    最初は、こんなの [otonanokagaku.net]を与え、概念を「体験」させます。
    つぎに、本番 [otonanokagaku.net]と田宮のリモコンロボット製作セットを渡します。
    (インタフェース部分は大人が作ってあげないと無理なので、そこは各自で工夫を)

    目の前で「プログラムの通りに実物が動く」ので興味が長続きすると思うのです。
    --
    notice : I ignore an anonymous contribution.
    • つまり、生の機械語とアセンブラから。
      何事も基礎が大事です。

      アセンブラはCPUによる・・・ というか,子供の個性しだいかな。私自身は,高1の時にアセンブラの勉強をしようと思ってモトローラの6800の教科書を読んで7つのアドレッシングモードに挫折したトラウマがあるので。ただ,今から思いだしてみると,インハラントとかイミディエートとかのカタカナ英語に理解を阻まれた印象はある。親父は高級言語(PL/1とか)の人だったんで,聞いても要領得なかったし。

      ただ,私が考えるプログラミングの基礎は,ブール代数とオートマトンなので,子供が理解できるなら,という条件付きで賛成。

      私が教えるのだったら,12歳前後だと,そろそろ学校で電卓を使った授業があるはずなので,そこで,逆ポーランド電卓を与えてみるとか。で,学校でハブられて「選ばれた人間の孤独と孤高」を理解してもらうと。まずは,そこらへんからかな。はじめてのプログラミングは「月着陸ゲーム」とか,そこらあたりで。

      あと,スペースシャトルのコクピットの映像をみせて,そこに写ってる(はずの)16進キーを指して「君が宇宙飛行士になりたいなら,16進数と逆ポーランド演算が理解できないとだめだ」と教える。

      それから,子供がプログラミングを覚えたあたりで,「君のためにプログラムを作ってみたんだが・・・」といって,BASICプログラムの入ったフロッピーディスク(笑)を渡す。それから子供の後をつけて「こんなもの!」といって,叩き割るのを見て子供の成長を楽しむ。

      --
      斜点是不是先進的先端的鉄道部長的…有信心
      親コメント
    • 自分も機械語から始めたんで、壁と言われてるCのポインタもアッサリ通過だったから、後を考えるとコレが良さそう。

      --
      the.ACount
      親コメント
    • by Anonymous Coward on 2010年01月01日 12時47分 (#1696603)
      Processingという意見もあったけど、意外とArduinoってのもいいかも。
      たとえLEDだけでも、プログラム通りに制御されているのを見ると楽しいものです。
      (ってことで次号の大人の科学はちょっと期待してます)
      頑張ればロボットの制御もできるでしょう。

      簡単だけど実際にはC++なので将来的にも役立つだろうし。
      親コメント
  • PythonかPerlかJavascript (スコア:3, すばらしい洞察)

    by kousokubus (37099) on 2010年01月01日 11時27分 (#1696567)

    最終的にCを教えたいのでそれに繋がるようなものってことなので、Pythonあたりがオススメ。覚えることが少なくてスタイルを強制されるし。
    次点でPerl。簡単で強力だけど、臓物をぶちまけた鯨みたいなソースを書いたり読んだりするのに慣れてもCには行き着きづらいかな……
    Javascriptも単純な構成でいろいろできるけれども、少し実行するまでにハードルがあるので第三位。
    弟がコンピュータそのものになれてないならマインドストームあたりからで。

    昔なら確かにBASIC一択だったよーな。
    # しかし部門名もそうだがみんなせめてストーリーの本文くらいは目を通そうぜ。
    # 「いずれはCやC++に繋がるような言語のオススメ」で「オレ言語」とか「CやJava」を勧めるか?

  • 見た目が派手が一番 (スコア:3, すばらしい洞察)

    by ahomin (34823) on 2010年01月01日 12時59分 (#1696606)
    大学生に教えていたことがありますが、 実行したものが出力するものが派手じゃないと脱落していく率が高かった記憶があります。
    Cでハノイの塔を作らせても、キャラクタで表示するようにするより、Xlibを使って絵を描かせた方が食いつきが良かった。
    Xlibを使う方が面倒なはずなんですけどね。

    今時であれば、 Flashでアニメーションとかを書かせるところから始めて、ActionScriptへ行くのがいいんじゃないかなと思います。
    将来、そのまま役に立つ場面も多そうだし。
    • by hirachan (7458) on 2010年01月01日 15時35分 (#1696655)

      見た目は重要ですね。
      僕の場合も、10歳頃line文やpset文から入りました。
      lineで線や四角を書いていると円を描きたくなるので、sin(), cos()と
      radianの概念とループを覚えました。
      その内楕円を描いてると回転させたくなったので、行列と一次変換を覚えました。
      その後球を描きたかったのですが、やり方が見つからなかったので、あきらめました。

      自由に絵が描けると、データをグラフ化したり、絵を動かしたり、
      ゲームを作ったり、色々したくなるのでやりたいことが出て来て、目標が
      はっきりするのもポイントだと思います。

      さぁ、文字列を逆順に並び替えてみましょう、とか言われても興味わかないですよ。

      今時はお手軽なのはFlashくらいしかないんでしょうかね。

      個人的にはPythonが好きなので、Python + Python Imaging Library (PIL) [pythonware.com]かなぁ。

      親コメント
  • by saratoga (23467) on 2010年01月01日 17時48分 (#1696677) 日記
    プログラミング言語の選択の話題なのでオフトピですが、「プログラミング=コーディング、じゃなくて仕様書、テストもあるよ」ってぜひお伝えください。
    トンデモPGのおかげで、去年は紅白歌合戦が始まっても帰宅できなかった哀れなオヤジからのお願いです。
  • 外で遊ばせろよ (スコア:3, すばらしい洞察)

    by Anonymous Coward on 2010年01月01日 19時23分 (#1696701)
    家の中にこもる様な趣味を子供に持たせるのは良くない。
    スポーツでの経験は大きな財産となるだろう。

    だからまず、エクストリーム・プログラミング の楽しさを子供に教えてあげるべきだ。
  • by Anonymous Coward on 2010年01月01日 9時59分 (#1696523)

    レゴ マインドストーム [legoeducation.jp]とか。
    やはり子供だと目に見えて動くものの方がとっつきやすそうですし。

  • by NOBAX (21937) on 2010年01月01日 10時59分 (#1696545)
    12歳の子どもがプログラムを書いて、何を実現するかといっても
    人生経験の少ない子どもに、実務的なものはハードルが高いだろうから、
    ゲームとかツールみたいなものになるでしょう。
    そうすると結果の見えやすい、イアンタプリタのBASICあたりが入りやすいと思います。
    昨今なら、JavaScriptでもいいでしょう。
    しかし、高級言語は基本部分をライブラリに下請けに出してしまうので、
    コンピュータの原理を学ぶために、アセンブラは勉強しておくのがいいと思います。
    そこで、BASICからアセンブラを呼ぶといった方法が役に立つでしょう。

    大切なことは、プログラムは、何かを実現するための手段であって、
    目的ではないということです。
    そこを理解してもらうことが肝要でしょう。
  • 同じようなテーマで悩んでるんですけど、言語よりもそれ以前の問題で、
    「電源を入れてから→開発環境に辿り着くまで」が、今のOSは複雑すぎ
    ると思います。
    (まあ、ゲームとかでもっと複雑な事をやってるので、「すぎる」は
    言い過ぎかもしれませんが・・・)

    昔のPC-8001なら、電源を入れて、

    10 print "Boo!!"
    run

    これだけで「プログラム」が動いた事を思えば、やっぱり手順が多すぎる。

    DSとかで、プログラミング(BASIC)を学べるゲームが出たら良いのにな、
    と思います。下の画面にプログラムを書くと、上の画面が実行結果、とか。

  • by watanabe_aki (10227) on 2010年01月01日 15時52分 (#1696661)

    一通り実際に色々な言語で簡単なコードを書いて見せ、興味を示したものから手をつけるのが良いと思います。教えてやろう、という態度だと小さい子供は付いてこないと思いますよ。しかし興味があるなら、案外しっかりと付いて来る可能性が高い。あと、興味があるなら予習や自習も苦にはなりませんし。

    よくあることですが、子供に無理やり習い事をやらせると、長続きしないことが多々あります。

  • 最初からCではダメな理由がちょっと思い当たらない。おいらの場合、最初はBASICでしたが、BASICの理解もそこそこにアセンブラを習得したので、最初からCでも普通にいけると思うけど。

    もっとも、なぜCを学んでほしいと思うのか。そこには共感しないけどね。Cがベストな世界なんて、今やハードウェア寄りなところだけじゃない? おいらが息子にプログラムを教えるなら、まずはSmalltalk、続いてScheme。高校に入ったらHaskellをやらせると思う。そして「Common Lispが結局最強だけどな」と伝え続けるよ。

  • by inoue04 (26256) on 2010年01月02日 0時57分 (#1696787) ホームページ
    仕事に役立つという点では、最強。
    チンケな小企業でも、自前のホームページを備え、必要に応じて更新する必要があるから、誰かHTMLを書ける人が必要になる。
  • by ji-ko (18006) on 2010年01月02日 8時09分 (#1696814) 日記
    家の子(当時11才)にやらせてみたら、はまりました。
    プログラミングの概念を教えるのに、 ROBO DESIGNER http://www.japan-robotech.com/robodesigner/product/set.html [japan-robotech.com] はなかなか良かったですね。
    付属のタイル言語(TiCOLLA)は、タイルをフローチャートの様に並べてプログラムを作成します。
    それをロボットにダウンロードして動かせるので、プログラムの結果を実物の動作で確認できます。

    次のステップとして、C言語の開発環境も用意されています。
    こちらの方には、組み込みで面倒な割り込み処理も良く考えられており、秀逸です。
  • どれでもいいかなと思ったり。
    とりあえずなにか目に見えるモノのほうが飽きが来ないようです。
    子供向けにJavaのプログラミングを教えたことがあるのですが、
    ループや条件判定などを教えるにもその結果がグラフィカルに
    見えると試行錯誤しやすいと思います。

    言語仕様としてどれがいいのよって話になると宗教戦争になるだろうし。

    --
    屍体メモ [windy.cx]
  • by masakun (31656) on 2009年12月29日 18時27分 (#1695675) 日記

    12歳なら「はじめてのC」 [amazon.co.jp]を電車の中で読んでいて JK に笑われたっていいじゃない。

    --
    モデレータは基本役立たずなの気にしてないよ
  • by duenmynoth (34577) on 2010年01月01日 9時18分 (#1696509) 日記
    順当にいってCかJava
    次点でVBでしょうか

    #CASL?
  • Proce55ing (スコア:1, 興味深い)

    by Anonymous Coward on 2010年01月01日 9時37分 (#1696514)

    ドキュメントが少ないですが、手取り足取り教えてやれる教師がついているならProcessingがいいのではないかと。
    私が初学者だったころ、自分のプログラムの変更結果が絵で見てすぐに分かるというのが「自分でやっている」感があってBASICで絵を描いていました。
    Processingならクロスプラットフォームで、スキルはJavaにも持って行けますし、その場にとどまってオブジェクト指向を理解したりゲーム(的なインスタレーション)をつくったりと極めることもできて良さそうです。

  • 構造化を学ぶならCでしょうし、Cなら職に就くのにも役に立つし。

    でも、12歳ならもっとお手軽にいろんな画面効果が見られるものが良さそうです。
    というわけで、ActionScriptがお勧めだと思います。

  • GNU Pascal Compiler (スコア:1, 参考になる)

    by Anonymous Coward on 2010年01月01日 10時26分 (#1696531)

    Linuxシステムを与えて、CUIの基本的操作はマスターしている@厨1、とします。
    とりあえず、GPC(GNU Pascal Compiler)で遊んでもらうのが良いのではないかと。
    テキストだけだとちと寂しいものがあるので、grx(グラフィックスライブラリ)を
    仕込んでおくことがポイント。そして、森口先生の「Pascalプログラミング対話」
    でいろいろ遊んでもらう予定。

  • 12歳子供って意外と大人なものだよ。
    子供だからって馬鹿にしたりせず、きっちり本人の希望を聞いて教えてやろうぜ。
    WEB系と、OS系と、ゲーム系と、ロボット系・・・やりたい事により、覚えるべき言語は違うからね。

  • by moiz (15876) on 2010年01月01日 13時54分 (#1696625)
    自分が初めてプログラミングを覚えたとき(11くらい?)の一番最初の壁は、「コンピュータに命令与えるってどいうこと?」でした。 なので、もし相手のプログラミング知識がゼロだとしたら、コマンドラインで簡単な命令実行させて(たとえばWindowsのコマンドプロンプトでECHO Helloみたいな)、「ほらコンピュータが君の命令を実行してくれたでしょう?」的なことを最初の最初にやった方がいいのでは?
  • Mindは出てたけど。

  • by Technobose (6861) on 2010年01月01日 14時30分 (#1696639) 日記
    案外、身近にあって実用的に使えそうなものということで、Officeの
    VBAなんかどうでしょうね。
    事務用プログラムの場合、データ処理が必要なのでAccessでデータベ
    ースの基本を教えて、その後、フォームと自動化あたりをネタにVBA
    を結構使えるようになれば、Cへの移行の基礎はできるのでは。

    VBAって、ActiveXとかOCXとか使って、FA用ボードの制御もできたり
    結構強力ですし。

    Basic系でいったらFreeBASICって、どうなんでしょうね。
    Quick Basic互換らしいので、構造化プログラミングを学ぶには十分
    だと思うんだけど。

    本命のCに移行する際にとまどいそうなのが、Cではライブラリで
    主要な関数が提供されることだよね。
    Basic系だと主要な命令・関数は組み込みで拡張部分のみライブラリ
    だけど、Cの場合、そうではないということと、似たような関数が
    いくつもあって迷うのが最初の難関だと思う。
  • 今30代くらいのシステム屋さんって、何割かは確実に子供の頃MSXユーザーだったと思う。
    職場によってはMSX持ちが半数超えてた事もある。

    あの時代は凄かったと思うよ。
    なにせ一般の子供向け雑誌にサッカーとかプラモとかと同じノリでBASIC入門が載ってたんだから。

    逆に、今の子はいきなりWindowsでいきなりVB.netなんだな、って思うとちょっと敷居が高いんじゃねーの?って気はする。
typodupeerror

皆さんもソースを読むときに、行と行の間を読むような気持ちで見てほしい -- あるハッカー

読み込み中...