アカウント名:
パスワード:
つまり、生の機械語とアセンブラから。何事も基礎が大事です。
アセンブラはCPUによる・・・ というか,子供の個性しだいかな。私自身は,高1の時にアセンブラの勉強をしようと思ってモトローラの6800の教科書を読んで7つのアドレッシングモードに挫折したトラウマがあるので。ただ,今から思いだしてみると,インハラントとかイミディエートとかのカタカナ英語に理解を阻まれた印象はある。親父は高級言語(PL/1とか)の人だったんで,聞いても要領得なかったし。
ただ,私が考えるプログラミングの基礎は,ブール代数とオートマトンなので,子供が理解できるなら,という条件付きで賛成。
私が教えるのだったら,12歳前後だと,そろそろ学校で電卓を使った授業があるはずなので,そこで,逆ポーランド電卓を与えてみるとか。で,学校でハブられて「選ばれた人間の孤独と孤高」を理解してもらうと。まずは,そこらへんからかな。はじめてのプログラミングは「月着陸ゲーム」とか,そこらあたりで。
あと,スペースシャトルのコクピットの映像をみせて,そこに写ってる(はずの)16進キーを指して「君が宇宙飛行士になりたいなら,16進数と逆ポーランド演算が理解できないとだめだ」と教える。
それから,子供がプログラミングを覚えたあたりで,「君のためにプログラムを作ってみたんだが・・・」といって,BASICプログラムの入ったフロッピーディスク(笑)を渡す。それから子供の後をつけて「こんなもの!」といって,叩き割るのを見て子供の成長を楽しむ。
自分も機械語から始めたんで、壁と言われてるCのポインタもアッサリ通過だったから、後を考えるとコレが良さそう。
壁と言われてるCのポインタもアッサリ通過だったから
プログラムとメモリの関係(というより「コンピュータの動作原理」を理解するにはアセンブラは有用でしょうね。私もCの前はアセンブラ(Z80)だったのでポインタは「HLと(HL)の違い」という理解でアッサリ通過でした。
初心者にも分かるとか前置きの付いた本でC言語を学習しようとしたらポインタをまったく理解できませんでした。その後本をプログラミング言語Cに変えたらすんなり理解できたので、クソ本を掴まないのも重要かなと
1足しただけで2や4増える理不尽な挙動に困惑しましたが
> 壁と言われてるCのポインタもアッサリ通過
私も今振り返ると、あっさり通過してしまったのですが、当時は概念的にあっさり理解をしてしまっていたので、なぜポインタが壁なのかが理解できなく、もしかしたら、他に自分では気づいていない壁があるのではないかと、存在しない壁を探し回って逆に苦労しましたよ。。。
私も機械語から入ったので、ポインタの何処が難しいのかまるで分からなかったですよ^^
Cで難しいのは、ポインタの概念というより表記法でしょう。pが指す先を*pで表記するのはわかる。でもポインタを宣言する時はchar *pとするわけで、「これはpが指す先を宣言するわけだから…」と考えてわけがわからなくなった記憶があります。
非常に共感します.初めは74LSロジック回路,つぎにPIC16F877でアセンブラ,さいごにCでしたから.
ちなみにPICにはポインタがハードウェアで実装されているので,アセンブラでも間接アドレス指定できます.
根気のある子は伸びるだろうけど、苦手な子は二度とプログラムなんてゴメンだとなる予感
反対に高級言語から始めるとハードの事を全く考えずコードの読みやすさを重視して、非効率的なコードを書くようになってしまうかもしれないので、どっちがいいかとは一概には言えませんが。
より多くのコメントがこの議論にあるかもしれませんが、JavaScriptが有効ではない環境を使用している場合、クラシックなコメントシステム(D1)に設定を変更する必要があります。
※ただしPHPを除く -- あるAdmin
基本から教えるべきでしょう (スコア:3, すばらしい洞察)
何事も基礎が大事です。
最初は、こんなの [otonanokagaku.net]を与え、概念を「体験」させます。
つぎに、本番 [otonanokagaku.net]と田宮のリモコンロボット製作セットを渡します。
(インタフェース部分は大人が作ってあげないと無理なので、そこは各自で工夫を)
目の前で「プログラムの通りに実物が動く」ので興味が長続きすると思うのです。
notice : I ignore an anonymous contribution.
Re:基本から教えるべきでしょう (スコア:2)
つまり、生の機械語とアセンブラから。
何事も基礎が大事です。
アセンブラはCPUによる・・・ というか,子供の個性しだいかな。私自身は,高1の時にアセンブラの勉強をしようと思ってモトローラの6800の教科書を読んで7つのアドレッシングモードに挫折したトラウマがあるので。ただ,今から思いだしてみると,インハラントとかイミディエートとかのカタカナ英語に理解を阻まれた印象はある。親父は高級言語(PL/1とか)の人だったんで,聞いても要領得なかったし。
ただ,私が考えるプログラミングの基礎は,ブール代数とオートマトンなので,子供が理解できるなら,という条件付きで賛成。
私が教えるのだったら,12歳前後だと,そろそろ学校で電卓を使った授業があるはずなので,そこで,逆ポーランド電卓を与えてみるとか。で,学校でハブられて「選ばれた人間の孤独と孤高」を理解してもらうと。まずは,そこらへんからかな。はじめてのプログラミングは「月着陸ゲーム」とか,そこらあたりで。
あと,スペースシャトルのコクピットの映像をみせて,そこに写ってる(はずの)16進キーを指して「君が宇宙飛行士になりたいなら,16進数と逆ポーランド演算が理解できないとだめだ」と教える。
それから,子供がプログラミングを覚えたあたりで,「君のためにプログラムを作ってみたんだが・・・」といって,BASICプログラムの入ったフロッピーディスク(笑)を渡す。それから子供の後をつけて「こんなもの!」といって,叩き割るのを見て子供の成長を楽しむ。
斜点是不是先進的先端的鉄道部長的…有信心
Re:基本から教えるべきでしょう (スコア:1)
自分も機械語から始めたんで、壁と言われてるCのポインタもアッサリ通過だったから、後を考えるとコレが良さそう。
the.ACount
Re:基本から教えるべきでしょう (スコア:2)
プログラムとメモリの関係(というより「コンピュータの動作原理」を理解するにはアセンブラは有用でしょうね。
私もCの前はアセンブラ(Z80)だったのでポインタは「HLと(HL)の違い」という理解でアッサリ通過でした。
Re: (スコア:0)
初心者にも分かるとか前置きの付いた本でC言語を学習しようとしたらポインタをまったく理解できませんでした。
その後本をプログラミング言語Cに変えたらすんなり理解できたので、クソ本を掴まないのも重要かなと
Re: (スコア:0)
LDA #$4000
LDA $4000
のみたいな違いで色んなバグを作ったことがあったなw 殆どは#の入れ忘れだけどw
ちなみに前者がZ80で言うHLで、後者が(HL)
Re: (スコア:0)
1足しただけで2や4増える理不尽な挙動に困惑しましたが
Re:基本から教えるべきでしょう (スコア:2)
> 壁と言われてるCのポインタもアッサリ通過
私も今振り返ると、あっさり通過してしまったのですが、
当時は概念的にあっさり理解をしてしまっていたので、
なぜポインタが壁なのかが理解できなく、
もしかしたら、他に自分では気づいていない壁があるのではないかと、
存在しない壁を探し回って逆に苦労しましたよ。。。
Re:基本から教えるべきでしょう (スコア:2)
私も機械語から入ったので、ポインタの何処が難しいのかまるで分からなかったですよ^^
Re: (スコア:0)
Cで難しいのは、ポインタの概念というより表記法でしょう。
pが指す先を*pで表記するのはわかる。でもポインタを宣言する時は
char *p
とするわけで、「これはpが指す先を宣言するわけだから…」と考えて
わけがわからなくなった記憶があります。
Re: (スコア:0)
>とするわけで、「これはpが指す先を宣言するわけだから…」
「pが指す先」なんて、どこにも宣言していません。まずはそこからか!
a*bと*pの*が同じじゃないことを理解できる?、
じゃあ、char*pと*pと(char*)pの*は区別できる?
区別できれば、意味が違うことも理解できるでしょ?
もしかして、/*p*/の*も区別できないのか :-p
Re: (スコア:0)
Re: (スコア:0)
char *p;
でポインタが指す先の領域も確保されると思っている人が多いのですが、
(驚くべきことに、90年代にはそう断言している本すらありました)
その半数ぐらいがこの文法の勘違いに起因しています。良く考えると
なぜこういう体系になっているのか分かるのですがね。
>a*bと*pの*が同じじゃないことを理解できる?
私はこれが理解できませんでしたね。いや、理解はしていましたが
「人間がそう区別してコードを書いても、機械がどうやってそれを判別するんだ?」
という感じで。その後、レキシカルアナライザーやらの存在を習って、ああ
そういうことなのかと感心しました。
char *p;の勘違いをしている人の一部は、やはりそういう疑問を持っていましたね。
Re:基本から教えるべきでしょう (スコア:1)
私も機械語→アセンブラ→Cという流れでしたので「他の人がポインタを理解できない事」が理解できていません。
なので、他人に説明するとき、非常に苦労します。
(CPUとメモリの説明を行う、ハードウェアべったりの説明しか出来ていません……)
notice : I ignore an anonymous contribution.
Re:基本から教えるべきでしょう (スコア:1)
非常に共感します.
初めは74LSロジック回路,つぎにPIC16F877でアセンブラ,さいごにCでしたから.
ちなみにPICにはポインタがハードウェアで実装されているので,アセンブラでも間接アドレス指定できます.
新人。プログラマレベルをポケモンで言うと、コラッタぐらい
Re:基本から教えるべきでしょう (スコア:1, 興味深い)
たとえLEDだけでも、プログラム通りに制御されているのを見ると楽しいものです。
(ってことで次号の大人の科学はちょっと期待してます)
頑張ればロボットの制御もできるでしょう。
簡単だけど実際にはC++なので将来的にも役立つだろうし。
Re: (スコア:0)
根気のある子は伸びるだろうけど、苦手な子は二度とプログラムなんてゴメンだとなる予感
反対に高級言語から始めるとハードの事を全く考えずコードの読みやすさを重視して、
非効率的なコードを書くようになってしまうかもしれないので、どっちがいいかとは一概には言えませんが。