宮崎駿「テレビ、ゲーム、携帯が子供たちから力を奪っている。火のおこし方、ナイフの使い方を教えるべき」
http://blog.livedoor.jp/dqnplus/archives/1595701.html
もはや↑これは笑えてしまうほど正論すぎるベタベタな正論ではあるまいか。
わたしはこの意見には必ずしも賛成しない。
なぜ賛成しないか?
それをプログラミング言語で例えるとわかる人には多分わかる。
プログラムはなぜ動くか?
この疑問に答えるにはプロセッサのアーキテクチャを理解しなければならない。
たとえばアセンブラでコードを書いてみるというのも解の1つである。
それがなぜ重要なのか?
プロセッサのアーキテクチャを意識してコードを書けるほうが良いものができるからである。
たとえば、
int i;
float f;
(中略)
f = (float)i / 4.0;
とするより
int i;
float f;
(中略)
f = (float)(i >> 2);
としたほうが速い理由は、プロセッサのアーキテクチャを理解していなければ説明できないからである。
(この例は桁落ちを許せるかどうかという別の問題もあるが、まあそれはおいといてだね(笑))
では、人類はアセンブラを習い、手動で機械語に翻訳するところから勉強をはじめるべきか?
これは正論でいえばYESになる。
だが一般論としてNOである。
レジスタを直叩きして、いちいち手動でアキュムレータに値を転送するほど低い階層から始めたら、たぶん大多数の者がやってらんねぇと感じるはずだ。
ただ、DSPを使うときにはアセンブラは必須かもしれない。
しかし現代なら、アセンブラを勉強するよりオブジェクト指向で記述できる高級言語をマスターしたほうが遥かに役にたつ。
人類がZ80と格闘していた時代ならばきっと大いに役に立ったろうが、現代では真空管なみの古代遺産のようなものではなかろうか。
なぜこのような違いが出たのだろうか?
現代は、原始的なレベルでの活動(この例でいえば低レベル言語でのプログラミング)が必要なくなったからである。
さて。
話を元にもどす。
宮崎駿氏の
「テレビ、ゲーム、携帯が子供たちから力を奪っている。火のおこし方、ナイフの使い方を教えるべき」
という意見。
これについてはどうだろうか?
現代で火をおこす機会はあるだろうか?
現代でナイフを使う機会はあるだろうか?
現代ではレンジでチンすれば何でもできてしまう。
キッチンのコンロすら使わなくても良くなっている。
キッチンで包丁すら使わなくても良くなっている。
だから宮崎駿氏の意見に対しては以下のように答える。
これは正論でいえばYESになる。
だが一般論としてNOである。
太古の昔、かつては木をこすりあわせて火をおこせるヤツは優秀だと認められる時代があったかもしれない。
しかし現代では、木をこすりあわせて火をおこせるヤツよりも電子レンジの内部構造を理解しマグネトロンを操れるヤツのほうが遥かに優秀だと認められる。
文明とはそういうモノである。
現代のプログラマーは仮想化によりアセンブラのコーディングから解放されたように、現代の文明人は作業分担と技術革新の恩恵というある種の仮想化により、原始人なら必須だった作業のほとんどから解放された。
文明人なら文明人らしく、原始人ができなかったもっと抽象度が高く生産性も高いスキルを優先的に身に付けるべきであろう。
火のおこし方やナイフの使い方なんて、使えればキャンプではヒーローになれるかもしれないが、せいぜい核戦争でもおきてリアル北斗の拳の世界になった時くらいしか役にたちやしない。
これは、
「数学なんて俺の人生に何の役にも立たねえよ!」
って言って理系科目を投げている私立文系志望の高校生に数学を教えることくらい不毛である。
まあ・・・
テレビやゲームや携帯で遊んでるくらいなら、火のおこし方やナイフの使い方でも教えてやったほうがナンボかマシな気はするが。
http://blog.livedoor.jp/dqnplus/archives/1595701.html
もはや↑これは笑えてしまうほど正論すぎるベタベタな正論ではあるまいか。
わたしはこの意見には必ずしも賛成しない。
なぜ賛成しないか?
それをプログラミング言語で例えるとわかる人には多分わかる。
プログラムはなぜ動くか?
この疑問に答えるにはプロセッサのアーキテクチャを理解しなければならない。
たとえばアセンブラでコードを書いてみるというのも解の1つである。
それがなぜ重要なのか?
プロセッサのアーキテクチャを意識してコードを書けるほうが良いものができるからである。
たとえば、
int i;
float f;
(中略)
f = (float)i / 4.0;
とするより
int i;
float f;
(中略)
f = (float)(i >> 2);
としたほうが速い理由は、プロセッサのアーキテクチャを理解していなければ説明できないからである。
(この例は桁落ちを許せるかどうかという別の問題もあるが、まあそれはおいといてだね(笑))
では、人類はアセンブラを習い、手動で機械語に翻訳するところから勉強をはじめるべきか?
これは正論でいえばYESになる。
だが一般論としてNOである。
レジスタを直叩きして、いちいち手動でアキュムレータに値を転送するほど低い階層から始めたら、たぶん大多数の者がやってらんねぇと感じるはずだ。
ただ、DSPを使うときにはアセンブラは必須かもしれない。
しかし現代なら、アセンブラを勉強するよりオブジェクト指向で記述できる高級言語をマスターしたほうが遥かに役にたつ。
人類がZ80と格闘していた時代ならばきっと大いに役に立ったろうが、現代では真空管なみの古代遺産のようなものではなかろうか。
なぜこのような違いが出たのだろうか?
現代は、原始的なレベルでの活動(この例でいえば低レベル言語でのプログラミング)が必要なくなったからである。
さて。
話を元にもどす。
宮崎駿氏の
「テレビ、ゲーム、携帯が子供たちから力を奪っている。火のおこし方、ナイフの使い方を教えるべき」
という意見。
これについてはどうだろうか?
現代で火をおこす機会はあるだろうか?
現代でナイフを使う機会はあるだろうか?
現代ではレンジでチンすれば何でもできてしまう。
キッチンのコンロすら使わなくても良くなっている。
キッチンで包丁すら使わなくても良くなっている。
だから宮崎駿氏の意見に対しては以下のように答える。
これは正論でいえばYESになる。
だが一般論としてNOである。
太古の昔、かつては木をこすりあわせて火をおこせるヤツは優秀だと認められる時代があったかもしれない。
しかし現代では、木をこすりあわせて火をおこせるヤツよりも電子レンジの内部構造を理解しマグネトロンを操れるヤツのほうが遥かに優秀だと認められる。
文明とはそういうモノである。
現代のプログラマーは仮想化によりアセンブラのコーディングから解放されたように、現代の文明人は作業分担と技術革新の恩恵というある種の仮想化により、原始人なら必須だった作業のほとんどから解放された。
文明人なら文明人らしく、原始人ができなかったもっと抽象度が高く生産性も高いスキルを優先的に身に付けるべきであろう。
火のおこし方やナイフの使い方なんて、使えればキャンプではヒーローになれるかもしれないが、せいぜい核戦争でもおきてリアル北斗の拳の世界になった時くらいしか役にたちやしない。
これは、
「数学なんて俺の人生に何の役にも立たねえよ!」
って言って理系科目を投げている私立文系志望の高校生に数学を教えることくらい不毛である。
まあ・・・
テレビやゲームや携帯で遊んでるくらいなら、火のおこし方やナイフの使い方でも教えてやったほうがナンボかマシな気はするが。