トーク:JavaScript/変数
話題追加導入部が抽象的すぎる
[編集]> 「変数」は、オブジェクトに名前をつけて参照の手助けをする機能です。 型や値は変数ではなくオブジェクトとプリミティブが保持しています。
冒頭からこの説明で、初めてプログラミングを勉強する人が理解できるでしょうか?
世間では、JavaScript は初習のプログラミング言語として人気の高い言語でもあります。そういう書籍も多く出版されています。高校教育では、高校生むけのプログラミング教本では、JavaScript と Python が人気です。文科省の作成した、JavaScript でプログラミングを教える教師用指導書のPDFサイトも公開されているくらいです。
確かにJavaScript設計者などにとっての仕様は『 「変数」は、オブジェクトに名前をつけて参照の手助けをする機能』なのかもしれません。モジラなどのサイトにいけば、そういう感じの説明があるかもしれません。
ですが、初心者は仕様を読んでも前提の概念を理解できないから教科書があるわけです。JavaScript で初めてプログラミングを勉強する人が、しかもまだ変数も習ってないかもしれない人が、具体例の紹介も無しに「オブジェクト」や「プリミティブ」という概念を把握できるとは到底思えません。
- また、そもそも「型」や「値」という概念を知っているかどうかも、初学者には疑わしいことを見落としています。
- あるいは、型や値を説明するよりもオブジェクトで説明するほうが初学者に分かりやすいと考えるなら、そのオブジェクトの具体例をコードで2~3種類、説明してからにすべきでしょう。
ある程度の具体例で説明をしたあとに、まとめとして型や値やオブジェクトがどうのこうのというのは初心者に通じるでしょうが、しかしいきなりそう説明しても伝わりません。
説明の順序が逆でしょう。
1990年代にJavaScriptが登場したころのコンセプトって、おおむね「抽象的なことはC言語に任せて、JavaScriptではもっとwebデザイナーとかにも使いやすいような仕様にしよう」って感じのコンセプトだったはずです。90年代のHTMLのコンセプトがアート系のwebデザイナーとかでも使えるようにとの理念だったのと同様、JavaScriptも同様のコンセプトだったと記憶しています。
当時の書籍にも普通にそういう話が書かれていたはずです。書店でそういう本を読んだ記憶あります。JavaとJavaScriptの違いの説明などと一緒に、そういうコンセプトも説明されていたと思います。
なので、よりにもよってJavaScriptの教科書として、抽象的かつ予備知識を多く要求する書き方をするのは、根本的に歴史的な経緯や背景事情を理解できていない、と批判しておきます。
あるいは、数学書や論文のような記述方法でも真似したのかもしれませんが、数学ごっこをしたいなら数学のページでお願いします。wikiはコミケではありませんし、オタクの祭典ではありません。
さらに言うなら、数学教育ですら、遠山啓いわく、まずは「特殊から一般へ」という原則があります。数学教育のスタイルとしても疑問です。
具体例をもとに一般的な法則を導出していき、その一般的な法則をもとに新たな具体例を考える。その具体例をもとに新たな一般法則を考える、というのが数学教育の基本です。
つまり、特殊 → 一般 → 特殊 → 一般 → ・・・ というのが数学教育です。もし数学にかぶれているなら、遠山の著作とか読みなおしてください。
一般法則をもとに一方通行で「一般→特殊」と語るのは、これは証明のスタイルです。だから論文では、こういうスタイルなのは合理的です。しかし、プログラミングは証明ではありません。ユーザーにとっても、数学的に証明されていなくても、コンピューターがビジネスなどで活用できればいいのです。マイクロソフト社のビルゲイツ自体、そういう立場です(2010年ぐらいだか、ラジオ放送でお笑い芸人コンビの爆笑問題の番組に、日本マイクロソフトのお偉いさんがゲスト出演したときに、学生時代のビルゲイツがハーバード大のコンピュータ数学の授業にそういう文句を言っている逸話が紹介されました)。
プログラミングには、けっして物理法則のような不変のルールがあるわけではありません。言語の仕様自体、企業などでの保守性などの実用性、学習者にとっての分かりやすさ、そういった色々な事情を勘案して妥協して仕様が決まっていってるわけでしょう。--すじにくシチュー (トーク) 2022年6月12日 (日) 14:37 (UTC)