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

なでしこが教科書に採用されたことで日本語でプログラミングができる意味を考える 173

ストーリー by nagazou
意外と仕事に使われてる 部門より
あるAnonymous Coward 曰く、

以前、日本語プログラミング言語「なでしこ」が中学校の教科書に採用されたという話があったが、なでしこ開発者である酒徳峰章氏と知人だという柳井政和(めもりーくりーなーの作者)氏が「なでしこ」の開発経緯とその意味に関してのコラムをまとめている(HARBOR BUSINESS Online)。

コラムなのでニュース性があるわけではないが、よくある教科書に載せるなら現場で使われている言語の方が良いのでは、という意見については、

学校でプログラムを学ぶ全員が、開発者になるのではない。普段見慣れた言葉でプログラムが書いてあるだけで、ずいぶんと気持ちが楽になる人も多いはずだ。母国語でプログラムを学べるのは有意義なことだと思う。

と返している。似たような意見はスラドにもあったが、これに関してはもっともだと感じる。なおこのコラムによれば、なでしこ利用者のうち仕事に使っている人は43%ほどいるそうだ。

この利用者数の数字は「なでしこ」公式サイトが15周年時に行ったアンケートによるもの。それによれば、利用年齢層は40代が38%、30代が25%、60代と10代が13%となっている。利用場所は趣味と仕事が43%で同率。タレコミの元記事によれば、日常の自動化処理などに使われている模様(15周年日本語プログラミング言語なでしこ)。

  • by Anonymous Coward on 2020年11月03日 5時46分 (#3917629)

    記述する言語が日本語である必要性は全く感じません。
    プログラミングに必要な英単語は非常に限定的で、覚えられます。
    むしろ必要なのはエラーメッセージが日本語である事だと思います。

    Variable 'test' may be uninitialized when used here
    といったメッセージが出ても「何か出たけど動かない」ってエラー内容が理解できない人が大勢います。
    大抵の人はここでプログラミングを「よく分からなかった」で諦めてしまいます。
    エラー&リトライできる環境を提供する方がプログラミングへの理解が深まると思います。

    なので「なでしこ」が日本語によるプログラムであるというより、エラーメッセージが日本語であるので採用するのも悪くないと思います。

    ここに返信
  • by Anonymous Coward on 2020年11月03日 0時51分 (#3917586)

    よし50を超えたな。オフトピ。

    全角変換とか、半角変換とか、標準関数で準備する意味あるの?
    ユニコードベースで、全角マイナスは変換できないけど、全角プラスは変換可能とか、半角カナの濁点処理とか気持ち悪い。

    HEX, INT, FLOAT, LEFT, MID, ... 何でこいつら英字なの? SHIFT_UR とかもはや暗号。
    TOSTR とか TYPEOF とか何のための日本語なんだか、文字列の繰り返しが「リフレイン」なのも気持ち悪いけど。

    なでしこ3になって、インデント(Python方式)から変更されて、「もし、〜ならば〜ここまで。」とかになって、もはや日本語としも気持ち悪い。
    # こんなのは早く卒業できると良いですね。

    ここに返信
  • by Anonymous Coward on 2020年11月02日 22時12分 (#3917530)

    Pythonが推しです。
    https://www.mext.go.jp/a_menu/shotou/zyouhou/detail/1416746.htm [mext.go.jp]

    他にも、JavaScript版、VBA版、ドリトル版、swift版
    が準備されています。

    プログラマーだった人が高校に教員として来ても、邪魔にしかならないという現実を味わってます。

    p.s.文部科学省は、情報の綴りが「zyouhou」

    ここに返信
  • by kcg (26566) on 2020年11月04日 13時50分 (#3918267) ホームページ 日記

    小学生の頃BASICの"LOCATE"命令は
    「エルオーシーエーティーイー」って読んで使っていたのですが、
    もし授業でこれはローケートと読みますと習っても、スペルが出てこなくて
    読み方とタイプする文字とが一致しなくて混乱しそうだなとおもいます。

    ひらがなカタカナは読み方と文字が一致している点は良さそうですよね。

    表記ゆれはコンパイラやインタプリタにAIを搭載して、
    OCRの補正みたいにいい感じに解釈してくれたらいいんじゃないですかね。
    なんなら、機械学習でプログラマの意図を汲み取って多少のロジックエラーは自動修正してくれるとかもいいんじゃないですかね。

    ここに返信
  • by Anonymous Coward on 2020年11月02日 18時51分 (#3917410)

    プログラミングには前提として、実現したいことを正確に理解、要素へ分解し、
    望むカタチへ再構築する思考プロセスが必須であり
    これは正しい言語・理解能力、伝達表現・説明能力にも大きく依存していると感じる。

    柳井政和氏の指摘する通り、Programming(行動計画化)的思考を学び鍛えるのであれば
    母国語で定義・設計出来るのは非常に有意義であると思う。
    というか現場でも似たような教育・設計プロセスを行っていますしね。

    ここに返信
    • by Anonymous Coward on 2020年11月02日 20時15分 (#3917470)

      おまじないをコピペして「hello,world」って表示されるのに感動する(ただし学びは無い)か
      フローチャートで設計の基礎やプログラミングの考え方を学ぶか(ただしコンピュータとコマンドの関係は学べない)か。

      てか今後10年で激減する見込みのコードパンチャーなんて最下流の土方でやった気にならないで
      一般教養なら要件定義や設計みたいな上流工程を理解できるように教育しなきゃ駄目でしょ。

      おまじないやコマンド暗記させて「プログラミング教育」とか宣う日本伝統の本末転倒は排除すべき。

    • by Anonymous Coward on 2020年11月03日 5時59分 (#3917632)

      プログラミングって言うから分かりにくいんだよね。

      アルゴリズムを学ぶ、ってほうがスッキリする。あとはフローチャートという概念かな。この二つにアレルギーがなければ、将来、職場のルーチンワークを自動化できる作業と人がすべき作業に仕分ける、なんてことが楽になる。

      プログラムやスクリプトに慣れてる人なら当たり前のことに拒絶反応を示す人って多いから。電卓を叩いてExcelに数字を打ち込む人、身近いるでしょ?

    • by Anonymous Coward

      単語だけ日本語を使ってもなぁ…

    • by Anonymous Coward

      母国語でプログラムを学べるのは有意義だという意見には賛成する。
      ただし、「なでしこ」が母国語でプログラムを学ぶツールとして優れているかというと、諸手を挙げて賛成しづらいところがある。

  • by Anonymous Coward on 2020年11月02日 22時19分 (#3917534)

    知名度というか、単純によく使われる言語の方がいいと思う。

    ノベルゲーム作成のスクリプトとか、つくーるのスクリプトとか、
    そういうのから興味持って他の言語を勉強したりする人もいるわけで
    楽しんで学べれば、文法だとかはそれほど問題ではないように思う。
    そもそも学校でやるレベルって後々まで影響するレベルじゃないとおもうし。

    ただ学校でとなるといろいろな意味で楽しんで学ぶっていうのは難しい面もあるだろうから、
    なるべく有名な言語で、本だとか、ネットだとか、親戚や近所の知人だとか、情報ソースが多い言語の方が
    いいんじゃないかなとは思う。

    日本語でコード書くことの是非については、ちょっと性質が違うけどテストコードとかBDDで日本語でメソッド名とか条件を
    書くようなケースは有名言語でもあるし、だれかがEric Evansに日本語のメソッド名とかについて聞いたら、
    それで解決するなら否定する必要がないと言っていたのもあり、昔ほど抵抗はないかな。
    列挙体とかは使ってみたこともある。
    IMEのOnOffをきにしないといけないのがイラつくときあるけど。

    ここに返信
  • by Anonymous Coward on 2020年11月02日 22時38分 (#3917542)

    日本語の表記体系は分かち書きしないし、表記ゆれも多いから英語に比べてコンピューター処理しにくい言語だと思う。
    日本語プログラミング言語は、日本語話者にとって読みやすくなるメリットもあるけど、英語に比べて表記に気を使うデメリットもある。
    プログラミングに必要なキーワードをツールボックスから選択できるようにすればいいと思うけど、だったら最初からScratchでいいと思う。

    ここに返信
    • by Anonymous Coward on 2020年11月03日 8時30分 (#3917658)

      教科書に採用されたのはScratch、なでしこ、ドリトルの3つなんだけど、若い子が興味を持ちそうなチャットツールを適度にプログラミングできるのが後者2つだけなんだよね。
      Scratchでもチャットツールは作れるけど、およそ教育的でない方法を使うことになるから、PTAバザーの案内マップという謎な作例が載ってる。
      そこは生徒のスキルに応じて使い分けることになるんじゃないか。

  • by Anonymous Coward on 2020年11月02日 18時22分 (#3917392)

    プログラムって英語と数学出できた手順命令書なわけで
    読み手によって解釈し放題の玉虫色言語には不向きだと思われ

    # ならば量子コンピューター用に再開発だ!

    ここに返信
    • Re:英語と数学と明確さ (スコア:3, すばらしい洞察)

      by Anonymous Coward on 2020年11月02日 21時46分 (#3917519)

      日本語も厳格に表現できるし、英語も曖昧に表現できるものなんだがな。
      例えばRFCなんか曖昧な記述を厳格にって改訂されたりしてる。
      使い手次第だわ。
      つか曖昧な表現が出来ないほうが言語としては出来が低いっての。

    • by Anonymous Coward on 2020年11月02日 18時36分 (#3917400)

      7の平方根かける3に34を加算して、それを二乗して、そこから128に3を掛けたのから2を引いた物を、引く。

      みたいに日本語で書かれたからと要って、算数は簡単にはならないよ。
      プログラミング言語は英語ではなく、Σ とか log なんかと同じで、
      ほとんどそういう記号だからね。

      表記を日本語にしたら分りやすくなると思ってる人は、失望するだけと思う。

      • by Anonymous Coward

        わかりやすくなるというより、ぜんぜん本質的でないことで
        邪魔されたくないってほうが近いんじゃないかなぁ

        意味のとりにくい文字列って立派な心理的障害物だよ
        LISPの cdr とか carとかいい例だと思う

    • by Anonymous Coward on 2020年11月02日 18時40分 (#3917403)

      数学って言われても、中学校で習う範囲では、「x = x + 1」って意味不明。変形したら、「0 = 1」だからね。
      なでしこでも、代入は「変数 = 値」が普通だけど、「値を変数に代入。」という書き方もあるので、それを使えば迷わずに済む。

      # 英語だって、「読み手によって解釈し放題の玉虫色言語」だと思うけどね。

      • by Anonymous Coward

        「とにかく日本sageする俺様カッケー」という人は結構あちこちに居るのですよ

    • by Anonymous Coward

      日本語プログラミング言語つっても構文の英単語を日本語に置き換えただけだから
      日本語特有の曖昧さは無いと思う。

      利点は詳細設計を日本語で書けばそれがそのままプログラムになることなんだろうけど
      ちょっとしたプログラムを書く場合だといちいち日本語の入力自体がめんどくさい。

      • by Anonymous Coward on 2020年11月03日 11時29分 (#3917725)

        日本語プログラミング言語つっても構文の英単語を日本語に置き換えただけだから
        日本語特有の曖昧さは無いと思う。

        いや、「置き換えただけ」じゃないですよ。
        この手の日本語プログラミング言語って、「日本語の自然言語風に読めること」に主眼を置きすぎているきらいがあります。
        MINDなんか基本的に「ひらがな無視」だし。

        なでしこも、同じことを行うのに複数の手段が用意されています。

        変数について - なでしこ3 [nadesi.com]

        代入文について

        なでしこの変数に値を代入することができます。代入文は、いくつかの形式で記述できます。

        値段は3000
        値段を表示。
         
        値段=3000
        値段を表示。
         
        値段に3000を代入。
        値段を表示。

        なんで代入に3パターンも必要?
        しかも、一見すると代入の形でも、変数名部分が関数だと関数呼び出しになったり。
        他にも「『です・ます調』でも書ける」とか、コーディングに必要ないでしょう。

    • by Anonymous Coward

      「数学出できた」とか書いて平然としてるやつには玉虫色言語は難しいわな

  • by Anonymous Coward on 2020年11月02日 18時26分 (#3917396)

    どんな言語で書いてあったって誰も困らない。
    困るのは別の人がメンテしなきゃならなくなった時。

    そもそも学校でプログラミングを教える理由を知らんので
    どの言語が適切かなんてわからんのだけど、目的にあった
    言語なら別に構わないと思う。

    ここに返信
    • by Anonymous Coward

      >そもそも学校でプログラミングを教える理由を知らんので
      そこはコメントする上で最低限概要程度は把握しとこうや…

    • by Anonymous Coward

      困るのは別の人がメンテしなきゃならなくなった時。

      ことこのストーリーにおいては含みのある観点だね。

      ある自動処理が書かれたスクリプトがPython、ないしはVBS辺りでも、それが使われる組織によって誰も理解することができないケースはあるだろう。

    • by Anonymous Coward

      あながたプログラミングと言ってるのはコーディングでは。

      なにかを実現しようとしたとき、他人の知見を得られたら素晴らしいとおもいませんか?
      そういうこともプログラミング教育として教えたほうがいいとおもうよ。

  • by Anonymous Coward on 2020年11月02日 18時44分 (#3917405)

    今までのプログラミング言語なんか参考にしないで、例えば「メールチェック」だけで何がしたいかを、なでしこAIが要望を解析して、対話形式で処理を補完してくれれば良いかと

    ここに返信
  • by Anonymous Coward on 2020年11月02日 18時48分 (#3917409)

    英語が苦手だからスクリプトはいじりたくないって人がいるし、
    そういう人向けに、最初の障壁を取り除く意味では有用だと思う。

    ここに返信
  • by Anonymous Coward on 2020年11月02日 18時56分 (#3917416)

    読むのはいいけど、書くのはめんどくさそうだ。
    初心者だと入力時の誤変換とかも多そうだし。

    ここに返信
    • by Anonymous Coward

      普通にASCII文字で書いたほうがロジックに専念できると思う。無理やり日本語にして「とっつきやすい(ように見える)!」て言ってるの何かの利権でしょうか?

  • by Anonymous Coward on 2020年11月02日 18時57分 (#3917418)

    家にKOOVがあって右側の画像と似たような画面で操作できる。玄人諸氏は、本質は…みたいな意見でそれはそうなんだろうけど、命令が日本語でそこに意識を割かなくていいというのは、プログラムが何なのかを理解する段階にある初学者には結構重要だと思う。

    ぴゅうた。

    ここに返信
  • by Anonymous Coward on 2020年11月02日 19時33分 (#3917441)
    英語の単語に慣れるって意味で普通に言語に慣れたほうがより良いと思う。 小学5、6年生の時にベーシック覚えてミステリーハウスとかやったおかげで 中学の英語は簡単だった。 わざわざ日本語の言語使わなくていいと思う。
    ここに返信
    • by Anonymous Coward

      聞いたことはあったがどんなものか知らなかったので調べてみた。
      面倒くせー。
      今は小学校から英語やってるし、中学なら数学は記号の羅列になっていくのだしこんなもの何の意味がある。

  • by Anonymous Coward on 2020年11月02日 20時00分 (#3917455)

    プログラミング経験者でも億劫な壁があると思う
    英単語の羅列ならそういう記号だと思って慣れるけど
    標準語でも古語でもない「変な日本語」を構築する行為に
    なんともいえない脳負担を感じる

    ここに返信
  • by Anonymous Coward on 2020年11月02日 20時05分 (#3917458)

    エディタで色分けされていても英語オンリーのソースコードとかパッと見で区別するのに脳内処理時間が余計にかかるのは私だけ?
    複数の言語(文字)で書かれているメリットもあるということも考慮して欲しい。

    いくら日本人が英語が苦手とはいえ、時とともに英語に対する抵抗は無くなっていってるのだし。
    今の子供はそこまで英語に抵抗ない(ある子にはプログラムよりも英語をどうにかしろと)

    ここに返信
  • by Anonymous Coward on 2020年11月02日 20時41分 (#3917484)

    その理由は...課題についてググったり知恵袋で質問するというズルがしにくいから。

    ここに返信
  • by Anonymous Coward on 2020年11月02日 20時42分 (#3917485)

    「西暦を入力してください」と尋ねる。
    西暦はそれ。

    もし(西暦%4)=0ならば
            もし(西暦%100)=0ならば
                    もし(西暦%400)=0ならば
                            「閏年です!!o(≧▽≦)o」と表示。
                    違えば
                            「閏年ではありません…(´・ω・`) 」と表示。
            違えば
                    「閏年です!!o(≧▽≦)o」と表示。
    違えば
            「閏年ではありません…(´・ω・`) 」と表示。

    開発者に文句付けたいわけじゃないけど何か意味あるのこれ

    ここに返信
typodupeerror

私はプログラマです。1040 formに私の職業としてそう書いています -- Ken Thompson

読み込み中...