パスワードを忘れた? アカウント作成
15538946 story
プログラミング

業界とは逆?子供にはローレベルプログラミングを教えるべきという指摘 139

ストーリー by nagazou
日本語高級すぎる 部門より

Kota Morishitaさんの以下のプログラムに関するツイートが話題となっている。そのまま引用してみる(Kota Morishitaさんのツイートその1その2本人たちによる解説動画)。

嫁「もっと子供にローレベルなプログラミング教えてよ」 俺「最初はハイレベルの方が良くない・・?」

お嫁さんの方はローレベル=入門向けという意味合いで使っているのに対し、Kotaさんの方はプラグラミング用語としてのハイレベル=高水準言語とローレベル=低水準言語の意味合いで使ってる。一般的にはお嫁さんの意味の方が通ると思うが、先の夫婦間の話題の種がプログラミングであったためにこうした微妙にかみ合わない会話となり、結果としてバズることになったようだ。

この議論は賞味期限が切れたので、アーカイブ化されています。 新たにコメントを付けることはできません。
  • by fuku (1936) on 2022年01月13日 17時11分 (#4184109) 日記

    プログラミング歴もうすぐ 45 年で初心者の俺ですが、俺がプログラミングを始めたころの高級言語は、価格的にも思想的にも高級だった。

    機械語はハンドアセンブルすれば、ぶっちゃけ BASIC の PEEK/POKE でもエディットできていたから思想的にも価格的に低級 (というか廉価) だった。
    ダンプリスト打ち込み用のプログラムも自作が簡単だったし。

    今のインタープリタやコンパイラは、ストールマン様や MIT 様たちのおかげで、価格的に高級ではなくなった。

    で、それとは別に隠蔽化というか、多重継承とかの高級な概念を持つことが必要で、そういう意味での高級化が発達してしまった。

    だから、低級・高級と言われれば、俺のようなオッサンでも理解できるのだが、
    ローレベル・ハイレベルという言い方は、何を以てして「レベル」なのか、どうもしっくりこない。

    ローレイヤー・ハイレイヤーではだめなの?

    --
    JavaScript だろうが Scratch だろうが、要は教え方次第だが、4 歳児にどうやって教えるかに興味がある。

  • by KuroButa (37060) on 2022年01月13日 23時10分 (#4184320) 日記

    が、どれくらい出来るのかで決めたほうがいいと思います。構文とアルゴリズムは使っている内に学習できるでしょうし。
    代入とか関数とか小学生の頃に既に勉強できてるのであればいいんですけどね。私の世代ではそれは中学生からでしたが、私の場合は先に中学生になった兄の教科書を小5の頃に見ていたので小学生のうちからBASICは問題なかったです。中学生になってからBASIC+マシン語でした。高専生になってから授業でPascalとFortran、マイコン同好会でCとアセンブラですね。
    今はフリーのコンパイラやら高速インタプリタ言語が沢山あるので、どれを教えたらいいかとか贅沢な悩みですよ。本人がやりたいことをやらせるのがいいと思います。
    色々すっとばしてゲームエンジン触らせるのもありかと。せっかくフリーの環境があるんですから。色々な環境で動作する様に実行コード吐けますし。
    あと、今時の映画はCG部分をゲームエンジンで作っているので楽しいかと思います。とりあえずPython使えるBlenderあたりからどうでしょう?サム・ライミ監督のスパイダーマンでも当初からBlenderを使っていましたが、新エヴァのエンドロールにもBlenderのロゴがあって息が長いソフトになったなぁと思いました。

    • by KuroButa (37060) on 2022年01月13日 23時25分 (#4184325) 日記

      うぁ、元ネタ見てなかったけど4歳児か。Scratchでいいかもね。

      親コメント
  • ゲームのメモリ書き換えとか?

    • by Anonymous Coward

      バイナリエディタで*.exeファイルのどこそこのアドレスを〇〇に置き換えるといろいろ色々、ってやつですか

      #古今東西、青少年の向学心に大いに効くのは「エ□の一念岩をも通ず」か
      ##別の意味でローレベル(law level)

  • by Anonymous Coward on 2022年01月13日 15時34分 (#4184004)

    arduinoさせなよ。
    小学生にでも十分できるし、LEDぴかぴかさせるだけでも面白い。

    #私が小学生の頃は電子工作の漫画(NE555でぴかぴかさせようみたいなのが色々載ってた単行本コミックス)あったけど今もその手のあるのかな

    • by Anonymous Coward

      ローレベルというならせめてトランジスタで実装してほしいなあ。

      # 小学生の頃はみんなの科学を見て555の使い方を覚えた俺

  • by Anonymous Coward on 2022年01月14日 1時35分 (#4184363)

    高級言語と低級言語という言い方はするけど「ハイレベルなプログラミング」なんて言い方する?
    「言語」の話としては人間寄り=高級、機械寄り=低級だけど、「プログラミング」という作業になると違うんじゃないか。
    プログラマに対してレベルというと能力の高低を表すだろ。
    これってプログラミング能力を測っているわけで、下手なコードを書いたら低レベルで、優れたコードを書いたらハイレベルなプログラミングなんじゃないか。

  • by kikki (30639) on 2022年01月14日 11時25分 (#4184562)
    子供の脳って柔軟だから、たぶんその場にあるものをありのまま吸収しちゃうんだよね。
    言語はこうあるべき、教育的にどうあるべき、みたいな話は子供には関係ないし。

    自分はZ80ボードのデータバスとアドレスバスにLED付けてステップ実行させながらプログラムを作ってたのが最初の経験。
    自分が触ってるものがハードなのかソフトなのかも不分明のまま吸収した「なにか」が根っこにあって、それが今でも活きてる。
    わからないものをわからないまま吸収できるあの能力がまた欲しいなぁ~
  • by Anonymous Coward on 2022年01月13日 15時17分 (#4183994)
    lispが一番ハイレベルなのは誰もが同意すると思うけど、小学生に教えるには向いてないと思うよ
  • by Anonymous Coward on 2022年01月13日 15時30分 (#4184002)

    下位が存在していないので、scratchがローレベルなのではないか?

  • by Anonymous Coward on 2022年01月13日 15時38分 (#4184008)

    BASIC
    beginners' all-purpose symbolic instruction code

    • by Anonymous Coward

      basicかな
      昔の電源ONでいきなりbasicのフルスクリーンエディタとか
      ラフに使える環境がIchigojamぐらいしか無いんだよね
      ※探せてないのかもしれないけど。

      あのむき出しボードとかは、まだ要らないから簡単に色付きの絵がコードで描けて
      動かせるのが欲しい

  • by Anonymous Coward on 2022年01月13日 15時38分 (#4184010)

    なら齟齬がなかった

    • by Anonymous Coward on 2022年01月13日 18時42分 (#4184173)

      ローコードは初心者でも楽だけどC#とかF#は大変ですよね
      カポタスト使うかチューニング弄らないと…

      親コメント
  • by Anonymous Coward on 2022年01月13日 15時45分 (#4184021)

    raw レベルなら混乱がなかった?

    • by Anonymous Coward

      ハイスクール(中・高校)に対するロー・スクール(法務大学)みたいな勘違いとか

  • by Anonymous Coward on 2022年01月13日 15時46分 (#4184023)

    昔やった仕事で「あるセンサから送られたデータを処理するマシン=フロントエンド」「処理結果を表示するマシン=バックエンド」って呼び方をしてた事が有った。
    「フロントエンド/バックエンド」の基準が人間じゃなくてセンサ。

    • by 90 (35300) on 2022年01月13日 15時51分 (#4184027) 日記

      回路上の信号アンプやアナログ処理部を「アナログフロントエンド」と呼ぶことがありますが、逆に「デジタルバックエンド」という表現は聞いたことがないですね。業界が混ざってる予感。

      親コメント
      • by Anonymous Coward

        ニキシー管の時計だとデジタルバックエンドかなと思った。誰もそういわないけど

        • by 90 (35300) on 2022年01月13日 16時50分 (#4184089) 日記

          ところがそっちはロジック基板だとか制御部だとか、前後左右ではなくて役割で呼ぶんですよ。バックは存在しない。まあサハラ(現地語で「砂漠」)みたいなものかもしれませんが。全部バックだと思っている中にごく一部のフロントがあるから、そこだけ区別して呼ぶような……

          親コメント
  • by Anonymous Coward on 2022年01月13日 15時51分 (#4184028)

    ANDとかNANDでカウンタ回路作るとか?

    • by Ryo.F (3896) on 2022年01月13日 22時37分 (#4184301) 日記

      NANDだけで十分だろ。

      親コメント
    • switchの「はじめてゲームプログラミング」は、データフローモデルで
      入力ノード: スティック値やボタン押下値を出力
      演算ノード: 入力値に対して、四則演算やカウンタなどの処理結果を出力
      出力ノード: 入力値に基づいて音楽再生などを行う
      モノノード: 入力値に基づいて動く
      といった機能を持ったノード同士を接続することで「プログラミング」します。

      入出力は高度に抽象化されていて、例えば
      左右値を出力する「スティック」ノードのピンを、「ヒト」ノードのX移動ピンに接続
      「ボタン」ノードのピンを、「ヒト」ノードのジャンプピンに接続
      するだけで、(物理シムも入ってるので)、マリオっぽい動きが実現できます。
      ここまではすごい簡単なのですが、演算ノードが単機能なので、そこから先にゲームのルールを実装しようとするとすごい泥臭い。

      例えば、ゲーム開始時にカウントダウン表示したりして、
      それに合わせて「スタートから3秒間は動けない」ようにするためには、

      ・入力「スタートした瞬間」ノードのピンを、「タイマー(3秒)」ノードのタイマー開始ピンに接続
      ・タイマーノードの出力ピンを、「フラグ(≒RS-FF)」ノードの「オンにする(S)」入力ピンに接続
      ・フラグノードの「オン(Q)」出力ピンと、スティックノードの出力ピンを、演算「かけ算」ノードの入力ピンに接続
      ・かけ算ノードの出力ピンを、「ヒト」ノードのX移動入力ピンに接続

      といったノード接続構築を行います。これで、スタートから3秒間は操作が効かなくなる。
      「汎用ロジックICを組み合わせて機能を作る」という回路設計に近い感覚です。

      なお、論理演算を行うノードもあるのですが、論理ゲートは AND と NOT だけ。
      まあ、ORはワイヤードORで実現できますが
      XORとか非常にめんどくさい。

      親コメント
  • by Anonymous Coward on 2022年01月13日 15時55分 (#4184036)

    アセンブリライクなコードでLEDがそれっぽく光るだけのダミー監視カメラプログラムを作ってプログラミングを学ぼう!

  • by Anonymous Coward on 2022年01月13日 15時56分 (#4184039)

    CASLⅡなら宗派で戦争にならなそうなので安全かな

typodupeerror

一つのことを行い、またそれをうまくやるプログラムを書け -- Malcolm Douglas McIlroy

読み込み中...