小6におすすめな言語
>>1 こういう糞スレ立ててる時点で言語なんか無理だから養護施設に入りなさい 教科書を見なさい。未だコンピュータ教育してない学校なんてあるの? 取り敢えずMicro:bit これでLED光らせたり、ブザーを鳴らしたりして遊べば良い。 結構遊べる。 最終的には Micro Python になるが、Microsoftのツールを使うとJavascript しか見えない。 >>5 嘘つけ、検定教科書にはそんなの載っていない。 pro2020買ったけど謳い文句の「コンピューターを超えた」の割にOSがチンカスすぎてパソコンの変わりにはならなかったしペンシル買ったけど絵は描かないしで結局キンドル専用機になった マックOS選べたら良いのに。 ウォッチ買ってても使いこなせなかっただろうな。なんせ使い手が >>1 Scratchでまずプログラミングの基礎を身につける。テレビでも教われる 俺が小6の時はベーシックから入ってマシン語やってたな ベーマガによく投稿していたあの頃 幼稚園年長からBASICしてた PC8801mkIIで 今、三次元系のライブラリ設計してる Scratchが定番では? 小6なら文字式を習ってるはずなので数学をプログラミング言語としても良いし、ほぼ動く数学といって良いHaskellも選択肢の一つかもね。 再帰とセクション覚えれば自分で掛け算演算子や割り算演算子を作れるから、算数の理解を深めるのに良いと思う。 やりたいことも書かない人が「おすすめは何ですか」って聞いてマジレスする方もどうかしている Racketインストールしてやって素数夜曲を買い与えておけばいい >>13 書いたついでに宣伝。 小学生向けHaskell入門書、Amazonにて絶賛発売中です。 限られた時間でなるべく多くプログラミングに親しんでもらう為に、教える文法は最小限に抑えてますが、 それでもPythonやRubyにそれほど見劣りしない表現力を保ってます。 「パソコンが買えなくてもプログラマーを諦めない君へ 〜小学生のHaskell入門〜」 参考までに、高階関数もリスト内包表記も無しで、リスト結合演算子から自作してのクイックソート myqsort [] = [] myqsort [x] = [x] myqsort (x:xs) = myqsort (small x xs) ^++ [x] ^++ myqsort (large x xs) (^++) [] ys = ys (^++) xs [] = xs (^++) (x:xs) ys = x:(^++) xs ys small n [] = [] small n (x:xs) | x <= n = x:small n xs small n (x:xs) = small n xs large n [] = [] large n (x:xs) | x > n = x:large n xs large n (x:xs) = large n xs 掛け算演算子はこんな感じ。 (ユニコード文字の記号も演算子に使える。Haskellの掛け算演算子(*)と被らないので、そのまま動く) (×) a 0 = 0 (×) a b = a + (×) a (b - 1) 2 × 3 = 2 + (×) 2 (3 - 1) = 2 + 2 + (×) 2 (2 - 1) = 2 + 2 + 2 + (×) 2 (1 - 1) = 2 + 2 + 2 + (×) 2 0 = 2 + 2 + 2 + 0 ((×) a 0 = 0により、0が返る) = 6 Rubyキチの次はHaskellキチかよ クソスレ上げてまで必死とか質の悪い荒らし >>20 >>18 の本のタイトル通り、PC持ってない子供でもプログラミングの勉強出来る様にって書いたものだから、PC持ってるならScratchで良い。 ただ、Haskellは算数や理科の授業と非常に親和性が高い。 文法の勉強とかなら国語との相性も良い。 算数の宿題も、ただ解くより (1) 2 + 3 (2) 5 + 4 (3) 6 + 8 と言う問題を解くプログラムを作って解いてみよう。って言えば楽しく解いてくれるはず。 f [] = [] f (x,y):zs = x + y:f zs f [(2,3),(5,4),(6,8)] = 2 + 3:f [(5,4),(6,8)] = 5:f [(5,4),(6,8)] = 5:5 + 4:f [(6,8)] = 5:9:f [(6,8)] = 5:9:6 + 8:f [] = 5:9:14:f [] = 5:9:14:[] = [5,9,14] >>21 自分が楽しいのと相手が楽しいのを混同するタイプか そうかもね。 でも、教育格差や今のプログラミング教育がメーカーの格好の餌食になっている現状に一石を投じる言語ではあるよ。 政府が本当に恒久的に小学生(の新入生?)にPCを行き渡らせ続けられるなら、必要無いかもだけど。 コロナで税金を大分使ったしね。 >>1 まずは、日本語をきちんと学んで それから中学生に上がったら、Hello, I'm grad see you辺りから英語もだんだん勉強を。 Hello, I'm grad (to) see you. これ思い出した WareZ isn't soft. WareZ is name of bad copy soft. Do you understand? You never come here. あまりに簡単すぎる英語で書きました。 これで分かるかな? 馬鹿だからわかんないかもね You is a big fool man. Hahahaha. WareZ isn't (a)soft. WareZ is (the) name of (a) bad copy soft. Do you understand? You never come here. You (are)a (total) fool(ish) man. Hahahaha. >>29 がんばって指摘してるんだろうけど無茶苦茶 とりあえずsoftwareのことをsoftとは英語では言わない 議論にもなってないけど、割と本気でHaskellは授業で使うプログラミング言語にピッタリなんだけどな・・・。 >>21 の例の通り、宿題をPCに解かせるプログラムを自分がPCになって解く事が出来るから、 PCに宿題を解かせる事だけが上手くなって算数は身に付かないって心配が無い。 (ほぼ数学なので、紙と鉛筆で実行過程をエミュレート出来る) PCでしか実行出来ない他のプログラミング言語に対する大きなアドバンテージだと思うんだけど。 >>11 ご同輩 でもマシン語メインだからベーマガは1回だけ(不採用) >>34 そんな独りよがりな主張、議論にならなくて当然だろう。 メリットとしてあげられている点が無理矢理なこじつけに思えて全く共感できない。我田引水もいいところ。 この国は終わってる。 かなり老害が進んでる。 中学校で使われているプログラミングの教科書を全部購入して比較 Jul 17, 2018 https://yandod.github.io/blog/2018/07/17/programming-textbook/# 中学校の技術の各社の教科書でしょうかいされているプログラミング言語の例。 共通しているのはBASICとC。 東京書籍はCOBOL、Java、JavaScript、 開隆堂はFORTLAN、 教育図書はPascalを挙げている。 Pythonこそオススメしたい。 文法は簡潔で分かりやすいし。 >>37 まあ、都市部から地方まで遍く子供達がPCとScratch使えればHaskellの出番は無いんだけどね。 小6向けは言語を変えるんじゃなくて、さらに複雑なアルゴリズムを学ぶ方向かな。 暇つぶしに組み合わせnCrを書いてみた。 数学 0! = 1 n! = n * (n - 1)! n P 0 = 1 n P r = n * (n -1) P (r - 1) n C r = n P r / r! Haskell fact 0 = 1 fact n = n * fact (n - 1) n `p` 0 = 1 n `p` r = n * (n - 1) `p` (r - 1) n `c` r = n `p` r `div` fact r Python def fact(n): a = 1 for x in range(1,n + 1): a *= x return a def p(n,r): a = 1 for x in range(n - r + 1,n + 1): a *= x return a def c(n,r): return (p(n,r) // fact(r)) Haskellのfactと`p`はPythonの書き方に合わせるとそれぞれ fact n = product [1..n] n `p` r = product [(n - r + 1)..n] になる。 数学ではproductはΣ(シグマ/sum)の掛け算バージョンであるΠ(大文字のπ)に相当。 普通の言語にはsumはあってもproductは何故か無い。 (まあ作れば良いんだけど) だいたい独善親父が自分の宗教を子供に強制するカタチになるんだよなぁ 巨人の悪口吹き込んで、大洋ホエールズを応援するように仕向けたり 邪悪なM$の野望を打ち砕くために、子供には真に自由なFreeBSD以外を与えないようにしたり シンプルな古典言語でいいんだよ Show you guts cool say what 最高だぜ > だいたい独善親父が自分の宗教を子供に強制するカタチになるんだよなぁ > FreeBSD以外を与えないようにしたり >>44 それこそ数学で十分で、小学生なら>>19 みたいに算数に再帰の概念加えるだけで良いんだけどね。(x,yを丸や四角に置き換える) 掛け算だけでも色々な視点から考察出来るし。参考に下は>>19 の別視点。 後々、関数型言語や普通の言語との相関も見えて来る。 結局、目的の式を思い付くのが重要で、言語はそれを動かす手段に過ぎないと分かる。 数学(iは右下添字) y x × y = Σ xi = x1 + x2 + .. xy i = 1 Haskell x × y = sum [x |_ <- [1..y]] Python def mul(x,y): a = 0 for i in range(1,y + 1): a += x return a そもそも算数が教育の質が低下してるせいで掘り下げる事をしてないのがプログラミングなんてのが必須になった要因。 プログラミングも形骸化するのは目に見えてる。 小・中学生が学ぶべきは 日本語 >>> 算数 >>> 英語 >>> 数学 >>> コンピュータ/情報リテラシー >>>>>>>>>> プログラミング 小6だと学年トップクラスで賢い子じゃなければスクラッチのような簡単お遊び系を余暇の時間にやるので十分 python functools.reduce(operator.add, range(1, y+1)) >>53 低下と言うか、受験やテスト目的の「やり方だけ教える」教育が続いて久しい。 プログラミングも算数も論理的思考を育む目的だが、それはやり方だけ教えるのでは身に付かない。 どうしてそう言うやり方なのか?を理解しないと暗記やコピペで終わる。 小数点同士の割り算で、割る数も割られる数も10倍100倍して商を出すが、余りはその後1/10,1/100して元に戻すのは何故か? これを説明出来る教師が何割居るか。 本屋の参考書すらただの1冊も説明した本が無い。 AIに負けない子供を!と声だけ大きくて、実態は全然変わってない。 1. 基礎をやる。 2. 応用をやる。 3. 抽象的ロジックを学ぶ。 おすすめは2.から入ることです。 小学生にはとにかく簡単に作って簡単に動かせる プログラミングツールを使うのが本人の興味や好奇心を 刺激してそれについてより学びたいという気持ちを育むのに 適していると思います。 それに適しているのはScratchやUnityであると思います。 Unityは言語ではなく開発環境ですが。 マイナスのつく計算すら習っていない小学生に三角関数の知識が必須なゲーム制作を教えられる自信が無いのだが。 マウスのひだりボタンをおさえながら〜 もじのうえまでもっていって〜 そうっ!そこではなす! >>)49 #ruby def mul(x, y) (1..y).sum{x} end >>58 Unityなら衝突判定用などのライブラリもあるから三角関数の知識が必須ではない そして情弱のお前が教える必要がない >>61 お前が教える訳でもないがな 教師の立場考えろゴミカス Unityは2010年頃にちょっとだけしか触っていないけど、あれって小学生でも扱えるものなの? 当時は文献が少なすぎて挫折したけど...。 unity2018くらいからインターフェースが日本語化出来る様になって サードパーティー製のアセット (手裏剣エフェクト等)が標準で入ったりして VS2019communityとの連携対応でコード補完も充実して敷居が下がったと思う キーボード打つのはファイル名やオブジェクト名の入力くらいで 他はほぼマウス操作だけでも3Dゲームがコンパイル出来る >>57 何故、基礎を飛ばして応用? 子供が楽しんでるのはゲーム作りではなく、発表して見て、触ってもらう事。 基礎でも小さな応用の発表と意見交換の繰り返しで自然な曲線で応用に行く。 プログラミングは独立した授業ではなく、算数や社会と言った授業の中に取り込まれる内容だという事を忘れちゃいけない。 ゲームを作らせるのが、プログラミングの目的では無い。 ちなみに、HaskellはPrologに比べると少々面倒臭いが、普通の言語に比べると比較的簡単に家系図とか作れる。 (まあ、Prologのロジック部分はSQLと名を変えて生き残ってるんだが) Scratchって関数の再帰呼び出し出来たっけ・・・?(ちょっとしか触って無いけど手続きがあるだけで、関数無かった気がする) 家系図もだけど、ハノイの塔とかクイックソートとか、再帰出来ないと難しいアルゴリズム有るけど・・・。 そう言うの学ぶ辺りでPythonとかに行くのだろうか。 PC無い家庭でも学べるHaskellが良いんだが、採用されないよなぁ・・・。 >>60 交換法則とカリー化で。 replicate使用例: replicate 3 1 = [1,1,1] Haskell (×) x = sum.replicate x 使用例: 3 × 4 = (sum.replicate 3) 4 = sum [4,4,4] = 12 >>66 最初の2段落までは同意。 しかしどうしてそこからhaskell推しに行くかな。 高学年になれば(身のまわりの生活に沿った)算数にすらついていけない子が出てくる現状で、数学(高度な抽象概念)的なhaskellなんかやらせても、プログラミング嫌いを大量生産するだけだろう。 理解できる人にとっては再帰とかシンプルでキレイな概念かもしれないが、小学生には高度すぎる。 現実の生活でも作業手順として順序、条件分岐、繰り返しで考えるのだから、プログラミングを教える目的としても関数型より手続き型のが適しているだろう。 自分が小学生の親としての立場から見ても、小学生に関数型プログラミングを習わせたいというのは数学が得意な人間のエゴだと感じるよ。 小学生には同じゲームでもアナログゲームを作らせたほうが遥かに教育効果が高い 画面の中の作られた楽しさよりもっと豊かな世界を五感で体験することがその後の人生を有意義にしてくれる 特に小5小6くらいのゴールデンエイジの体験はものすごく重要 自分からのめり込むような子供以外にその時期プログラミングを学ばせるのは子供の人生を無駄にしてる >>63 手順を踏めば小学生でも出来るレベル アルファベットとか知ってるのは前提で ttps://www.youtube.com/channel/UCxqWXALpfawX5T45-4qD1Qg/videos 一般人は手順や段取りすらまともに考えられない。 想定どおりにならなかったときなど、もっと考えていない。 これらを教えるのが小学校のプログラミングで、プログラミング教育の意味がわかってないやつが多すぎる。 35年くらい前のパソコンサンデーを見ると昔のBASICでも問題ないことがわかる。 >>71 電源いれればすぐにLINEで遊べるからな >>72 アナクロとは全く関係ないよ 本来のアナログの意味からすれば誤用には違いないがは日本では定着した用語 https://ja.wikipedia.org/wiki/ アナログゲーム 知らない人がいるとは思わなかった >>67 プログラミングの授業にPC必須だと、地域&経済格差が激し過ぎる。 それが今現在解消されてない以上、エゴだろうが何だろうがHaskellを推す。 その為に小学生向けHaskell入門書まで書いて(事実上Amazon限定だが)自費出版までしたんだ。 >>75 小学生にプログラミングを教えること自体が目的化してないか? 格差が問題だというなら、格差の是正を訴えるかプログラミング教育の導入を延期させでもした方がいい。 haskellをやらせるくらいなら、そもそもプログラミング教育なんてやめて算数や国語を手厚く教えた方がよほどためになるよ。 それにPC無しで机上でやらせることを考えるなら、別にhaskellでなくたっていいだろう。手続き型言語でフローチャートを手書きするなり穴埋め問題とかでもいい。まあ楽しくはないだろうが、それはhaskellをやらされてもほとんどの子供にとって同じようなもんだと思う。 ね、自分と他人の区別がついてなくて 子供に自己投影できると思ってる人が発生しちゃうでしょ? 自分にできることは、子供にもできる 自分が理解できるものは、子供も理解できる 自分が好きなものは、子供も好きになる そうじゃない子供は想定外 根本的に自己中多いよね、この業界 >>77 > >>75 > haskellをやらせるくらいなら、そもそもプログラミング教育なんてやめて算数や国語を手厚く教えた方がよほどためになるよ。 そう訴え続けてもこうなってるから、せめてHaskellと言う選択肢も提供しようと足掻いてる。 >>75 PCなんか大量に廃棄されて処分にお金がかかっている状態だぞ? Haskellの人はRubyの人の次に話が通じないから議論しようとしてもストレスたまるだけだよ 単純に手段が目的になってるケースだね そこに囚われて有りきで全て理由付けしちゃってるから本人は筋が通ってるつもりでも他人からは狂人にしか見えないっていう... 自己中ってより思考パターンが障害持ちか心の病かカルト信者 視野狭窄に気付く為にはそこから2-3ヶ月程離れてみればいいんだけどこういう人って聞かないからね... >>81 これな ttps://maidonanews.jp/article/13832528 ttps://news.yahoo.co.jp/articles/2bdeaa658828fa87b1c94118f6e251b2a62a8f9d >>82 話が通じないとはいっても、haskellの人は自分の主張に拘りがあるだけで知性を持った人間として会話にはなるけど、Rubyの人はどこかで誰かが言った言葉を文脈無視でコピペの如く垂れ流すだけだからまったく論理的でなく会話にもならないな。 無職ガイジ「Rubyは稼げる!引く手あまた!」 説得力ねぇよなwww 簡単なWebは結局、PHPにおさまり、その他はPythonに置き換わってしまったからね。 >>77 一応、紙と鉛筆だけでもプログラミングを楽しめる様に問題の工夫やら考えてる。 プログラミングHaskell読んだ時の知的好奇心を刺激する「アカデミックなのに面白い」と言うのを小学生向けに書いたつもり。 >>82 ,83,86 PC買えない家庭でもプログラミング学べる少しでも環境整える為に、負けると分かっていてもこっちが折れる訳には行かない。 義務教育期間ならどんなクズでも出席日数さえ足りてれば進級進学できるんだから業界スタンダードなC#を鬼になって教えるのがベスト 成果物を見せてこんなのができるんだよーって教えればやる気にはなる うーん、今はGoがあるからな C#も悪くは無いと思うんだけど まあ、知り合いに小学生の内にBASIC->アセンブラまで覚えた人居るし、不可能じゃ無いんだろうけど・・・。 >>93 昔小学校6年生でMSXのマシン語メインでシューティングゲーム作った人がいたな 敵の動作をBASICの三角関数で作ってセットするとかいろいろ天才すぎだと思った 親の影響だろうね。親がプログラマだと子供に教えているわけでもないのに、勝手にあれこれやってどんどんすごいことをしているという話を聞く。 C++始めていれば、Arduino出来る。 これは大きい。 >>96 arduinoはライブラリの呼び出し方さえ判ればCレベルの知識でいいね 自分でクラスモジュール化なんてまずやらないし Haskellだと普通の言語より関数化やマルチスレッドプログラミング教え易い。 リストや配列から値を求める->foldl関数 リストや配列から新しいリストや配列を作る->map関数 そのfoldlやmapも自作出来る。 普通の言語では「良く使う機能は関数にまとめましょう」と言いながら良く使うforのパターンを関数にしない。 関数型言語の機能を取り込んで、ライブラリにmapやfold、あるいはcollect、reduceが備わってから使い出した。 文化的に「良く使う機能は関数にまとめましょう」を実践させるのに関数型言語の方が向いてる。 マルチスレッドプログラミングも、身近な所だと四則演算が混じった計算でも、同時に出来るところは同時に計算しても良い。 例として、()で括った箇所は同時に計算して良い。 2 * 3 + 4 / 2 = (2 * 3) + (4 / 2) = 6 + 2 = 8 普通の言語だと、プログラマーがスレッドを作って並列処理させるし、デッドロックを気にしないといけないけど、 関数型言語はここをマルチスレッドでと指定すれば後は言語側がやってくれる。 (普通の言語だと、上の例ですらデッドロックや処理待ちを気にしないといけない) 上の例をマルチスレッドにするとむしろ遅くなるが、クイックソートの分割統治法とかで威力を発揮する。 import Control.Parallel.Strategies main = print (a + b) where (a,b) = (2 * 3, 4 `div` 2) `using` evalTuple2 rpar rpar read.cgi ver 07.5.1 2024/04/28 Walang Kapalit ★ | Donguri System Team 5ちゃんねる