これまで、長らく、プログラミン言語教育は、母語方式にこだわってきました。
最初に覚えるプログラミング言語は何がいいですか?
の文章でも、
プログラミング言語教育のXYZ。 仮説(52)
を参照してきた。プログラミング言語を覚えなきゃいけなかったのは、1980年代まで。それ以降は覚えなくてもプログラムが書けるような環境になっている。
プログラムは間違えずに入力する時代から、プログラムは間違えて覚える時代にいつ変わったか。フローチャートあるなし。
英語も同様かも、英語を覚えていないといけないのは、毎日英語に節することができなかったインタネット世代以前かもしれない。
今日、英語教育のある教材に触れて見た。
あ、外国語教育でも、自分と同じような方法とっているところがあるんだと知った。
英語教育に学ぶプログラミング言語教育(はじまりのはじめ)
身につかない英会話から、身につく英会話と同じように、
身につかないプログラミングから、身につくプログラミング。
C言語なら、Cコンパイラを書けば、半分以上の機能が使いまわせる上に、
必要な用事の自動生成ツールが作れるようになっており、
かつ特定のプログラミング言語から、別のプログラミング言語への変換機能も作れるかもしれず、何も困らない。
従来の英会話教育のようなC言語教育をやっていることを前提に、
C言語教育じゃだめだというのは辞めましょう。C言語を教えることが悪いのではなく、教育の仕方がわるかったかもしれないだけなのですから。
完璧に英語を話してほしいのではないのと同様、
完璧なプログラミングを書いてほしいのではない。
英会話におけるスピーキングやリスニングよりも根本的な問題は、
プログラミング言語での書いたり、読んだりよりも基本的な問題があるのです。
プログラミングにおける最初の土台とは、どういう問題を解くかということです。
英語における心と認識に相当します。
プログラミングでは、心ではなく行動です。ぶっちゃけ心はどうでもいいのです。コンパイルしてみたり
もう一つは、プログラミング言語に対する認識を変えればいいのです。
プログラミング言語は、覚えてからじゃなきゃ使えないという思い込みはやめましょう。プログラミング言語の文法でも、プログラミング言語の読み方ではないのです。
プログラミング言語を入れれば、エラーがでるか、止まるか、動くかです。
エラーがでれば、そのエラーで検索しましょう。
止まるだけが、一番困ります。
インタプリタでも、コンパイラでも。
エラーがでずに、止まるだけの時、何をすればいいかわからなくなるかもしれません。
止め方を学ぶ
プログラムが止まったのに、止め方を学ぶというのは奇異に感じるかもしれません。
プログラムが止まっているように見えて、実は暴走しているのかもしれません。
暴走というのは、無限ループのような同じところをぐるぐるまわって、電気だけ消費して、こちらのしてほしいことは何もしてくれない状態です。
これは止めるのがいいのです。
見た目には止まっているように見えて、裏でうごきっぱなしという状態がよくあります。
止め方を学びましょう。
実際には、使っている電子計算機のOS、その言語システムによってさまざまです。
一番確実はのは電源を落とすことです。
暴走していると、電源を落とせない場合があります。
一旦電源が落ちたようなふりをして、電源を入れ直すと、暴走していることもありあmす。
問題解決を学ぶ
プログラムは、問題解決のための道具です。
自然言語と同じだとおもっていただいても結構です。
自然言語のまともな教育では、文法を教えないだけでなく、
役に立たないことは教えないことを知りました。
プログラミング言語教育でも一緒です。
何を解決したいかがない、プログラムには価値はありません。
自然言語教育の例では、街で道を聞かれる例を示していました。
道を聞かれる
自分が知っているところで、近ければ、
"Come with me."
といって、一緒に行きます。
道を教える必要はないのです。
道を聞いているんではないのです。
そこへ行きたいことが大切な可能性がどれくらいあるか、確認すればいいのです。
" Are you going to the A?soko"
って、単に道を知りたいのか、行きたいのかを確認します。
行きたいのであれば、道を教えても仕方ありません。
教えた道を、歩いて行くのか、電車で行くのか、タクシーで行くのか。
そもそも、タクシーでいくのなら、タクシーの捕まえ方を教えればよくて、道を教える必要がない。
プログラミング
ホームページを作りたいとか、JavaScriptを教えたいとかいう場合に、
最終目標が何かを聞かずに、教え始めても駄目ってわかりますか。
自分の趣味の動画を掲載したいのか、
自分の仕事をもらうための宣伝をしたいのか、
自分が働くための証拠を記録したいのか。
やる必要があることはてんで違います。
最終目標がない場合もあるでしょう。
時間があまってるからとか、
就職に有利なのがいいからとか、
知り合いにホームページ作ってってたのまれたからとか。
知り合いにホームページ作ってってたのまれた場合でも、
その人より格上でお金のある人に頼まれたのか、
その人がなにか世話になった人で無償でやらざるを得ないのか、
その人よりお金がなくて、でも就職で必要だからとか。
事情によって、やらなきゃいけないことが全然違います。
いきなり、html編集したり、Javascript書いたりしてもなんの解決にも近づかない可能性があります。
コンパイラかインタプリタか
自然言語との違いでいうと、口語と文語の違いのようなものが、
インタプリタ言語と、コンパイラ言語にあたるかもしれません。
いつはじめて、いつ終わってもいい口語のような機能が、インタプリタにあります。
それを考えると、インタプリタの一択だとわかりますね。
私のように会話が嫌いな人間は、インタプリタからじゃなくて、コンパイラからやっても大丈夫です。
コンパイラ言語から始めた方がいいという主張をされる方がおみえです。
コンパイラ言語から始めるのが好きだとして、他人を巻き込むのはやめましょう。
インタプリタ言語でも、いろいろ種類があって、
その言語を、すぐに始められて、すぐに終わることができるのであれば、
インタプリタから始めていいです。
インタプリタから始めるとまずいのは、
そのインタプリタの始め方、終わり方がわかりにくく、
始めたり、終わったりするのに時間を消費するような場合です。
coqという言語で、coqideという便利そうな道具が、
システム設定の仕方によって、にっちもさっちもいかなかったことが何度かありました。
coqの勉強会の時間ほとんどが、システムの設定で終わってしまったような状況でした。
講師の方々は、ProofGeneralというEmacs(LISPによるエディタ)を使われていて、その環境設定は、LISPで設定が終わっており、何の問題もない。
<この項は書きかけです。順次追記します。>
<この記事は個人の過去の経験に基づく個人の感想です。現在所属する組織、業務とは関係がありません。>
最後までおよみいただきありがとうございました。
いいね 💚、フォローをお願いします。
Thank you very much for reading to the last sentence.
Please press the like icon 💚 and follow me for your happy life.