プログラミングであそぼう
実用言語(じつようげんご)本格的(ほんかくてき)(あそ)ぶ ~
TOP > asob
[ TIPS | TOYS | OTAKU | LINK | MOVIE | CGI | AvTitle | ConfuTerm | HIST | AnSt | Asob | Shell ]

目的(もくてき)

本物(ほんもの)のプログラミング言語(げんご)使(つか)って本格的(ほんかくてき)(あそ(びます。
学校(がっこう)(なら)わないことばかりの、(あたま(使(つか)(あそ)びです。
理科(りか)()きなら、小学校(しょうがっこう)高学年(こうがくねん)から大人(おとな)まで理解(りかい)できます。
プログラミング言語(げんご)なら(なに)使(つか)っても(あそ)べますが、ここでは初心者(しょしんしゃ)()けの古典言語(こてんげんご)である BASIC(べーしっく) と、流行(りゅうこう)Python(ぱいそん)採用(さいよう)しています。


(あそ)ぼう

  1. 2020-11-20 BASIC (ベーシック) であそぼう 1 十進 BASIC で表示する迷路     ← まずはココから
  2. 2022-03-21 BASIC (ベーシック) であそぼう 2 十進 BASIC で Matrix のアレ
  3. 2022-06-09 BASIC (ベーシック) であそぼう 3 迷路プログラムをアニメーション風に改良
  4. 2022-06-22 BASIC (ベーシック) であそぼう 4 迷路でオリエンテーリング
  5. 2022-09-09 BASIC (ベーシック) であそぼう 5 プログラムで迷路を解く
  6. 2022-10-10 BASIC (ベーシック) であそぼう 6 プログラムで迷路を作る
  7. 2022-12-12 BASIC (ベーシック) であそぼう 7 プログラムを使って会話
  8. 2022-12-22 BASIC (ベーシック) であそぼう 8 オセロで対戦
  1. 2020-11-03 Python (パイソン) であそぼう 1 pygame で表示する迷路         ← まずはココから
  2. 2022-03-21 Python (パイソン) であそぼう 2 pygame で Matrix のアレ
  3. 2022-06-09 Python (パイソン) であそぼう 3 迷路プログラムをアニメーション風に改良
  4. 2022-06-22 Python (パイソン) であそぼう 4 迷路でオリエンテーリング
  5. 2022-09-09 Python (パイソン) であそぼう 5 プログラムで迷路を解く
  6. 2022-10-10 Python (パイソン) であそぼう 6 プログラムで迷路を作る
  7. 2022-12-12 Python (パイソン) であそぼう 7 プログラムを使って会話
  8. 2022-12-22 Python (パイソン) であそぼう 8 オセロで対戦
寄り道(よりみち)
  1. 2024-11-22 PHP (ピー・エイチ・ピー) であそぼう 1 PHP で Matrix のアレ
  2. 2024-11-22 Bash (バッシュ) であそぼう 1 Bash で Matrix のアレ
  3. 2024-11-22 PowerShell (パワーシェル) でもあそぼう 1 PowerShell で Matrix のアレ
付録(ふろく)
  1. 2022-03-21 BASIC で tick 十進 BASIC でプログラムの速度維持
  2. 2022-10-10 BASIC で乱数 十進 BASIC で疑似乱数を生成
  3. 2022-10-10 Python で乱数 Python で疑似乱数を生成
  4. 2022-12-12 十進 BASIC で排他ロック 資源を共有
  5. 2023-07-07 十進 BASIC で MJD 修正ユリウス日を計算
  6. 2023-07-07 Python で MJD 修正ユリウス日を計算
  7. 2023-10-10 Java で MJD 修正ユリウス日を計算
ひみつ基地(きち)のノート
  1. 2023-12-25 ひみつノート 1 2 進数
  2. 2024-01-11 ひみつノート 2 クラス
  3. 2024-08-08 ひみつノート 3 状態遷移


  1. ビジュアルプログラミング言語は使わない
  2. 巷で流行の「ビジュアルプログラミング言語」では、文部科学省の提唱する「プログラミング的思考*1」を身に着けることはできますが、
    「プログラミングの思考*2」を養うことはできません。

    パズルに例えるなら、解くということと、パズルそのものを創造することは違います。*3

    ビジュアルプログラミング言語は、教える側と評価する側のスキルが高くなくても使えるから流行しています。*4
    本格的なプログラミングに触れたときの精神的なアレルギー抑制と、見て楽しめるのが利点です。

    本当にプログラミングや設計をしたいなら、本物のプログラミング言語を使う必要があります。
    2023 年現在、自由にプログラムを作成できるビジュアルプログラミング言語は、残念ながらまだ出現していません。*5

    *1ジョブ管理システム」や「シーケンス制御」と呼び、プログラミングの一種ではありますが、概念が少し異なります。
    *2文部科学省も、小学生にそこまで求めていません。
    *3大学教授だったルビク・エルネー氏は三次元幾何学の説明用にルービックキューブを考案しましたが、自分で作ったモデルなのにすぐに元に戻すことができませんでした。
    重要なのは、解くことが可能である問題を創造・証明することであり、解く行為だけではありません。
    *4教員(教える側)と、生徒の親(評価する側) の両方にプログラミングの知識がないため、ウォーターフォール型教育を重んじる日本の教育制度のインタフェースとしてはこれが限界なのでしょう。
    *5これを達成するには、アルゴリズム ⇔ ビジュアルの完全可逆性が必要となります。

  3. テーマ、内容はできるだけ同じにしてある
  4. 本稿では十進 BASIC と Python でテーマを同じにしています。
    また、プログラムの作り方・アルゴリズムもできるだけ同じにしています。
    例えば、Python では「クラス」という機能で作成すると簡潔なプログラムにできますが、十進 BASIC にクラスの概念・機能がないため、あえてそれを避けています。*6
    高度な概念であるクラスや美麗なグラフィックスは、最初から学習してはいけません。

    *6Python にあらかじめ用意されているクラスは使用しています。

  5. 成果物はゲーム的要素が多い
  6. 情報処理の本質は「入力されたデータを加工して出力する」なので、プログラムを作成するには「要件定義」が必要となります。
    「要件定義」を作成するには、プログラミングの知識が不可欠という因果性のジレンマが生じ、学習のハードルを低くすることができません。
    ゲームなら「要件定義」を「ルール」に置き換えることによりハードルを低くすることができるので、
    入門者がプログラミングを学習するにはゲームを作るのがベストの選択となります。

  7. プログラミングと数学は概念が異なる
  8. コンピュータの誕生は数値計算が発祥で、今もその考え方は変わりませんが、意外にも数学者の多くはプログラミングを苦手としています。
    プログラミングと数学は概念が異なり、ここではプログラミング自体に焦点を当てているので、高度な数値計算はなるべく使わないようにしています。
    コンピュータと数学のどちらが優れているかということではなく、それぞれに固有の概念・学習方法があります。