なでしこが教科書に採用されたことで日本語でプログラミングができる意味を考える 173
ストーリー by nagazou
意外と仕事に使われてる 部門より
意外と仕事に使われてる 部門より
あるAnonymous Coward 曰く、
以前、日本語プログラミング言語「なでしこ」が中学校の教科書に採用されたという話があったが、なでしこ開発者である酒徳峰章氏と知人だという柳井政和(めもりーくりーなーの作者)氏が「なでしこ」の開発経緯とその意味に関してのコラムをまとめている(HARBOR BUSINESS Online)。
コラムなのでニュース性があるわけではないが、よくある教科書に載せるなら現場で使われている言語の方が良いのでは、という意見については、学校でプログラムを学ぶ全員が、開発者になるのではない。普段見慣れた言葉でプログラムが書いてあるだけで、ずいぶんと気持ちが楽になる人も多いはずだ。母国語でプログラムを学べるのは有意義なことだと思う。
と返している。似たような意見はスラドにもあったが、これに関してはもっともだと感じる。なおこのコラムによれば、なでしこ利用者のうち仕事に使っている人は43%ほどいるそうだ。
この利用者数の数字は「なでしこ」公式サイトが15周年時に行ったアンケートによるもの。それによれば、利用年齢層は40代が38%、30代が25%、60代と10代が13%となっている。利用場所は趣味と仕事が43%で同率。タレコミの元記事によれば、日常の自動化処理などに使われている模様(15周年日本語プログラミング言語なでしこ)。
日本語が必要なのはエラーメッセージの方 (スコア:5, すばらしい洞察)
記述する言語が日本語である必要性は全く感じません。
プログラミングに必要な英単語は非常に限定的で、覚えられます。
むしろ必要なのはエラーメッセージが日本語である事だと思います。
Variable 'test' may be uninitialized when used here
といったメッセージが出ても「何か出たけど動かない」ってエラー内容が理解できない人が大勢います。
大抵の人はここでプログラミングを「よく分からなかった」で諦めてしまいます。
エラー&リトライできる環境を提供する方がプログラミングへの理解が深まると思います。
なので「なでしこ」が日本語によるプログラムであるというより、エラーメッセージが日本語であるので採用するのも悪くないと思います。
半角/全角、英字/カタカナ、インデント (スコア:4, 興味深い)
よし50を超えたな。オフトピ。
全角変換とか、半角変換とか、標準関数で準備する意味あるの?
ユニコードベースで、全角マイナスは変換できないけど、全角プラスは変換可能とか、半角カナの濁点処理とか気持ち悪い。
HEX, INT, FLOAT, LEFT, MID, ... 何でこいつら英字なの? SHIFT_UR とかもはや暗号。
TOSTR とか TYPEOF とか何のための日本語なんだか、文字列の繰り返しが「リフレイン」なのも気持ち悪いけど。
なでしこ3になって、インデント(Python方式)から変更されて、「もし、〜ならば〜ここまで。」とかになって、もはや日本語としも気持ち悪い。
# こんなのは早く卒業できると良いですね。
新学習指導要領の高校「情報」では (スコア:2, 参考になる)
Pythonが推しです。
https://www.mext.go.jp/a_menu/shotou/zyouhou/detail/1416746.htm [mext.go.jp]
他にも、JavaScript版、VBA版、ドリトル版、swift版
が準備されています。
プログラマーだった人が高校に教員として来ても、邪魔にしかならないという現実を味わってます。
p.s.文部科学省は、情報の綴りが「zyouhou」
小学生の頃 (スコア:2)
小学生の頃BASICの"LOCATE"命令は
「エルオーシーエーティーイー」って読んで使っていたのですが、
もし授業でこれはローケートと読みますと習っても、スペルが出てこなくて
読み方とタイプする文字とが一致しなくて混乱しそうだなとおもいます。
ひらがなカタカナは読み方と文字が一致している点は良さそうですよね。
表記ゆれはコンパイラやインタプリタにAIを搭載して、
OCRの補正みたいにいい感じに解釈してくれたらいいんじゃないですかね。
なんなら、機械学習でプログラマの意図を汲み取って多少のロジックエラーは自動修正してくれるとかもいいんじゃないですかね。
学ぶべきはcodingではなくProgramming(行動計画化) (スコア:1)
プログラミングには前提として、実現したいことを正確に理解、要素へ分解し、
望むカタチへ再構築する思考プロセスが必須であり
これは正しい言語・理解能力、伝達表現・説明能力にも大きく依存していると感じる。
柳井政和氏の指摘する通り、Programming(行動計画化)的思考を学び鍛えるのであれば
母国語で定義・設計出来るのは非常に有意義であると思う。
というか現場でも似たような教育・設計プロセスを行っていますしね。
Re:学ぶべきはcodingではなくProgramming(行動計画化) (スコア:3, 興味深い)
おまじないをコピペして「hello,world」って表示されるのに感動する(ただし学びは無い)か
フローチャートで設計の基礎やプログラミングの考え方を学ぶか(ただしコンピュータとコマンドの関係は学べない)か。
てか今後10年で激減する見込みのコードパンチャーなんて最下流の土方でやった気にならないで
一般教養なら要件定義や設計みたいな上流工程を理解できるように教育しなきゃ駄目でしょ。
おまじないやコマンド暗記させて「プログラミング教育」とか宣う日本伝統の本末転倒は排除すべき。
Re:学ぶべきはcodingではなくProgramming(行動計画化) (スコア:1)
それだと何が可能かもわからずに机上の空論だけの設計書っぽいもの製造者になってしまわないかい?
入り口としてはおまじないやコマンド暗記でもいいとおもうけどね。
義務教育がそもそも入り口を見せる意味合いが強いと思っていて、そこから専門職に進むかは本人次第。
自分は 4、5才ぐらいはそんな感覚で、おまじないやコマンドを組み合わせて組み立ててた。
トライアンドエラーで効率わるいことこの上なかったけどしばらくやってたし楽しかったんだと思う。
さらにそこから興味をもってリファレンスに手をつけるかはその人次第。
Re:学ぶべきはcodingではなくProgramming(行動計画化) (スコア:1)
中学校の教育は職業訓練じゃないからね。
プログラミングとはどんなものか、体験するだけでも十分。
プログラミングに全く触れたことのない人の忌避感・恐怖を、ここにいる人達は正しく想像出来てないと思う。
そういう人を減らすための、ゼロから1に変えるための教育なんですよ。
その中から、興味を持った人が高校・大学で次のステップに進み、1を10や100に増やしていけばいい。
Re:学ぶべきはcodingではなくProgramming(行動計画化) (スコア:1)
仕事・作業の段取り・計画が下手なやっているじゃん。プログラミング教育の目的はそいつら対策。
Re:学ぶべきはcodingではなくProgramming(行動計画化) (スコア:1)
プログラミングって段どりの言語化だから、目的にはかなってる。
Re:学ぶべきはcodingではなくProgramming(行動計画化) (スコア:1)
一般教養なら要件定義や設計みたいな上流工程を理解できるように教育しなきゃ駄目でしょ。
プログラミングが今一つ上達しなくて、コンプレックス的に下流を否定するタイプの思考を時々見掛ける。
当然の事ながら、下流上流の隔てなく全てに詳しくなければ、優れた開発力は成立しない。
Re:学ぶべきはcodingではなくProgramming(行動計画化) (スコア:1)
これ、教材の話題ですよね?
対象はエンジニアじゃなくて義務教育課程の子供だったと思うんですが。
Re:学ぶべきはcodingではなくProgramming(行動計画化) (スコア:1)
プログラミングって言うから分かりにくいんだよね。
アルゴリズムを学ぶ、ってほうがスッキリする。あとはフローチャートという概念かな。この二つにアレルギーがなければ、将来、職場のルーチンワークを自動化できる作業と人がすべき作業に仕分ける、なんてことが楽になる。
プログラムやスクリプトに慣れてる人なら当たり前のことに拒絶反応を示す人って多いから。電卓を叩いてExcelに数字を打ち込む人、身近いるでしょ?
Re: (スコア:0)
単語だけ日本語を使ってもなぁ…
Re: (スコア:0)
母国語でプログラムを学べるのは有意義だという意見には賛成する。
ただし、「なでしこ」が母国語でプログラムを学ぶツールとして優れているかというと、諸手を挙げて賛成しづらいところがある。
日本語かどうかよりも知名度 (スコア:1)
知名度というか、単純によく使われる言語の方がいいと思う。
ノベルゲーム作成のスクリプトとか、つくーるのスクリプトとか、
そういうのから興味持って他の言語を勉強したりする人もいるわけで
楽しんで学べれば、文法だとかはそれほど問題ではないように思う。
そもそも学校でやるレベルって後々まで影響するレベルじゃないとおもうし。
ただ学校でとなるといろいろな意味で楽しんで学ぶっていうのは難しい面もあるだろうから、
なるべく有名な言語で、本だとか、ネットだとか、親戚や近所の知人だとか、情報ソースが多い言語の方が
いいんじゃないかなとは思う。
日本語でコード書くことの是非については、ちょっと性質が違うけどテストコードとかBDDで日本語でメソッド名とか条件を
書くようなケースは有名言語でもあるし、だれかがEric Evansに日本語のメソッド名とかについて聞いたら、
それで解決するなら否定する必要がないと言っていたのもあり、昔ほど抵抗はないかな。
列挙体とかは使ってみたこともある。
IMEのOnOffをきにしないといけないのがイラつくときあるけど。
日本語版Scratchでよくないですか (スコア:1)
日本語の表記体系は分かち書きしないし、表記ゆれも多いから英語に比べてコンピューター処理しにくい言語だと思う。
日本語プログラミング言語は、日本語話者にとって読みやすくなるメリットもあるけど、英語に比べて表記に気を使うデメリットもある。
プログラミングに必要なキーワードをツールボックスから選択できるようにすればいいと思うけど、だったら最初からScratchでいいと思う。
Re:日本語版Scratchでよくないですか (スコア:1)
教科書に採用されたのはScratch、なでしこ、ドリトルの3つなんだけど、若い子が興味を持ちそうなチャットツールを適度にプログラミングできるのが後者2つだけなんだよね。
Scratchでもチャットツールは作れるけど、およそ教育的でない方法を使うことになるから、PTAバザーの案内マップという謎な作例が載ってる。
そこは生徒のスキルに応じて使い分けることになるんじゃないか。
英語と数学と明確さ (スコア:0)
プログラムって英語と数学出できた手順命令書なわけで
読み手によって解釈し放題の玉虫色言語には不向きだと思われ
# ならば量子コンピューター用に再開発だ!
Re:英語と数学と明確さ (スコア:3, すばらしい洞察)
日本語も厳格に表現できるし、英語も曖昧に表現できるものなんだがな。
例えばRFCなんか曖昧な記述を厳格にって改訂されたりしてる。
使い手次第だわ。
つか曖昧な表現が出来ないほうが言語としては出来が低いっての。
Re:英語と数学と明確さ (スコア:1)
7の平方根かける3に34を加算して、それを二乗して、そこから128に3を掛けたのから2を引いた物を、引く。
みたいに日本語で書かれたからと要って、算数は簡単にはならないよ。
プログラミング言語は英語ではなく、Σ とか log なんかと同じで、
ほとんどそういう記号だからね。
表記を日本語にしたら分りやすくなると思ってる人は、失望するだけと思う。
Re: (スコア:0)
わかりやすくなるというより、ぜんぜん本質的でないことで
邪魔されたくないってほうが近いんじゃないかなぁ
意味のとりにくい文字列って立派な心理的障害物だよ
LISPの cdr とか carとかいい例だと思う
Re:英語と数学と明確さ (スコア:1)
> LISP の car/cdr が心理的障害になったという人がいてちょっとびっくり。
> "頭" "尾" とかだったらよかったんだろうか?それとも左、右?
抽象的なものを抽象的なまま扱う事が出来ない人なんだと思う。
ときどき居る。
car/cdrをどの様に変更したとしても、多分ダメだろうね。
Re:英語と数学と明確さ (スコア:1)
数学って言われても、中学校で習う範囲では、「x = x + 1」って意味不明。変形したら、「0 = 1」だからね。
なでしこでも、代入は「変数 = 値」が普通だけど、「値を変数に代入。」という書き方もあるので、それを使えば迷わずに済む。
# 英語だって、「読み手によって解釈し放題の玉虫色言語」だと思うけどね。
Re: (スコア:0)
「とにかく日本sageする俺様カッケー」という人は結構あちこちに居るのですよ
Re: (スコア:0)
日本語プログラミング言語つっても構文の英単語を日本語に置き換えただけだから
日本語特有の曖昧さは無いと思う。
利点は詳細設計を日本語で書けばそれがそのままプログラムになることなんだろうけど
ちょっとしたプログラムを書く場合だといちいち日本語の入力自体がめんどくさい。
Re:英語と数学と明確さ (スコア:2, 参考になる)
いや、「置き換えただけ」じゃないですよ。
この手の日本語プログラミング言語って、「日本語の自然言語風に読めること」に主眼を置きすぎているきらいがあります。
MINDなんか基本的に「ひらがな無視」だし。
なでしこも、同じことを行うのに複数の手段が用意されています。
変数について - なでしこ3 [nadesi.com]
なんで代入に3パターンも必要?
しかも、一見すると代入の形でも、変数名部分が関数だと関数呼び出しになったり。
他にも「『です・ます調』でも書ける」とか、コーディングに必要ないでしょう。
Re:英語と数学と明確さ (スコア:1)
>>なんで代入に3パターンも必要?
コレは確かに初心者向け教育用言語としては致命的だと思う。
中級以上でも、コーディング規約が必用になる、バッドノウハウ。
それとも、なでしこ用のlintみたいなのがあるのかな。
>i += 1 と書けば済むところにi++とか++iとか
まず、それは単なる代入文じゃなくて、インクリメントですよね。
第二に、i++ と ++i の両方は使えるけど、現在においては、半ば
バッドノウハウと化してる。
たとえば
i = f(i++) + g(++i) - ++i
みたいな書き方は、出来るけど絶対に止めろって言われる。
ここに複雑なマクロが入ったりするともう地獄。重し出したくもない。
Re:英語と数学と明確さ (スコア:2, すばらしい洞察)
英語だから良いのではなく、日本人にとっては曖昧な言語から切り離された記号だから良いのですよ。
下手に言語のイメージの曖昧さに引きずられるよりも、プログラム用の記号として捉えたほうが、習得が早い。
プログラマにとって、プログラム中のifやforは英語ではない。orなんて自然言語との意味が違い過ぎる。
これを日本語にしてしまうと、正確な文法に従って書かなければならないプログラムと、曖昧にかける自然言語のとの区別が出来るようになるまでの障壁が増えるので、プログラムの入門者には特に学習が難しくなる。
Re: (スコア:0)
「数学出できた」とか書いて平然としてるやつには玉虫色言語は難しいわな
他人にメンテをお願いしないプログラムなら (スコア:0)
どんな言語で書いてあったって誰も困らない。
困るのは別の人がメンテしなきゃならなくなった時。
そもそも学校でプログラミングを教える理由を知らんので
どの言語が適切かなんてわからんのだけど、目的にあった
言語なら別に構わないと思う。
Re: (スコア:0)
>そもそも学校でプログラミングを教える理由を知らんので
そこはコメントする上で最低限概要程度は把握しとこうや…
Re: (スコア:0)
困るのは別の人がメンテしなきゃならなくなった時。
ことこのストーリーにおいては含みのある観点だね。
ある自動処理が書かれたスクリプトがPython、ないしはVBS辺りでも、それが使われる組織によって誰も理解することができないケースはあるだろう。
Re: (スコア:0)
あながたプログラミングと言ってるのはコーディングでは。
なにかを実現しようとしたとき、他人の知見を得られたら素晴らしいとおもいませんか?
そういうこともプログラミング教育として教えたほうがいいとおもうよ。
Re:他人にメンテをお願いしないプログラムなら (スコア:1)
起動時に作者様オリジナルのジングルが流れるFM音源ドライバーとか作者様オリジナルの美少女スプラッシュ画面が出るCDリッピングツールとかですね、わかります。
いっそのこと (スコア:0)
今までのプログラミング言語なんか参考にしないで、例えば「メールチェック」だけで何がしたいかを、なでしこAIが要望を解析して、対話形式で処理を補完してくれれば良いかと
ゲーム制作していても (スコア:0)
英語が苦手だからスクリプトはいじりたくないって人がいるし、
そういう人向けに、最初の障壁を取り除く意味では有用だと思う。
よみかき (スコア:0)
読むのはいいけど、書くのはめんどくさそうだ。
初心者だと入力時の誤変換とかも多そうだし。
Re: (スコア:0)
普通にASCII文字で書いたほうがロジックに専念できると思う。無理やり日本語にして「とっつきやすい(ように見える)!」て言ってるの何かの利権でしょうか?
Re:よみかき (スコア:1)
来場者は5千人超とか、「超える」には数値的に上回るという意味があるので
とっかかりとしては。 (スコア:0)
家にKOOVがあって右側の画像と似たような画面で操作できる。玄人諸氏は、本質は…みたいな意見でそれはそうなんだろうけど、命令が日本語でそこに意識を割かなくていいというのは、プログラムが何なのかを理解する段階にある初学者には結構重要だと思う。
ぴゅうた。
プログラミングだけじゃなくて、 (スコア:0)
Re: (スコア:0)
聞いたことはあったがどんなものか知らなかったので調べてみた。
面倒くせー。
今は小学校から英語やってるし、中学なら数学は記号の羅列になっていくのだしこんなもの何の意味がある。
見慣れた言葉がゆえに (スコア:0)
プログラミング経験者でも億劫な壁があると思う
英単語の羅列ならそういう記号だと思って慣れるけど
標準語でも古語でもない「変な日本語」を構築する行為に
なんともいえない脳負担を感じる
ソースが読みにくい (スコア:0)
エディタで色分けされていても英語オンリーのソースコードとかパッと見で区別するのに脳内処理時間が余計にかかるのは私だけ?
複数の言語(文字)で書かれているメリットもあるということも考慮して欲しい。
いくら日本人が英語が苦手とはいえ、時とともに英語に対する抵抗は無くなっていってるのだし。
今の子供はそこまで英語に抵抗ない(ある子にはプログラムよりも英語をどうにかしろと)
いいチョイスだと思う (スコア:0)
その理由は...課題についてググったり知恵袋で質問するというズルがしにくいから。
ギミック (スコア:0)
「西暦を入力してください」と尋ねる。
西暦はそれ。
もし(西暦%4)=0ならば
もし(西暦%100)=0ならば
もし(西暦%400)=0ならば
「閏年です!!o(≧▽≦)o」と表示。
違えば
「閏年ではありません…(´・ω・`) 」と表示。
違えば
「閏年です!!o(≧▽≦)o」と表示。
違えば
「閏年ではありません…(´・ω・`) 」と表示。
開発者に文句付けたいわけじゃないけど何か意味あるのこれ
Re:ギミック (スコア:1)
「割り込み」の呪文に「急急如律令」を使え、とかいうプログラミング言語なら子供たちもすぐ覚えそう
Re:ギミック (スコア:1)
if 〜イフ〜
に読み替えるのは大人(18禁)だからですね
Re:これは義務教育のお話だよね (スコア:2, すばらしい洞察)
やりとりがずれてるような。
前提として、「プログラムとは」をそもそも知らない中学生は多い。
「プログラムって何?魔法?」みたいな段階から脱するのは一つのハードル。
#3917597は、このハードルを越えるためのお話。
#3917601の「言語で物をつくって楽しむ」は、ハードルを越えたあとのお話。