読者です 読者をやめる 読者になる 読者になる

プログラマノススメ

ここさえ見とけば間違いない 

日本語プログラミング言語「なでしこ」の違和感がハンパない件

プログラミング

プログラミングに少しでも触れたことがあるひとならこんなことを考える人がいてもおかしくないはずです。

「日本語でプログラミングできればいいのに」


私もプログラミングを勉強し始めたばかりの頃は考えてましたw 今でもそんなこと思ったりします。アメリカの人ってズルくないですか?普段から使っている言語でプログラミングが出来るなんて。普段から使っている言語でならプログラミングなんてよっぽど簡単になるんだろうな。

日本語でプログラミング?そんなのずっと前から存在するよ。

でも日本語も日本語で問題があったんですよね。日本語プログラミングを見てに私が真っ先に思ったことをズバッと言っちゃいます。

※今回の内容はプログラミング経験者の方が共感できる部分が多いかも。

「なんだこの違和感は。」

日本語プログラミング言語「なでしこ」

f:id:kosencoder:20160225223951j:plain

ほとんどのプログラミング言語の文法は英語をベースにしているが、なでしこは日本語をベースにしているひまわりの後継プログラミング言語として、より自然な記述を目標として0から開発され、2005年2月17日に、正式版が公開された。

ごちゃごちゃいってもわかりづらいと思うので、サンプルコードを先に出しちゃいましょう。

比較用に元祖プログラミング言語ともいわれているC言語のコードを出します。

「こんにちは」と画面に表示するコード

C言語

printf("こんにちは");

なでしこ

こんにちはと表示

日本語の方が簡単じゃん!!

ではこの調子で少し長めのコードを見てみましょう。

入力された西暦年が閏年かどうか判別するコード

C言語

  int year;
 
  /* 西暦の入力 */
  printf("西暦を入力してください = ");
  scanf("%d",&year);
 
  if(year%4 == 0) {
    if( year%100 == 0) {
      if ( year%400 == 0) {
        printf("閏年です。");
      } else {
        printf("閏年ではありません。");
      }
    } else {
      printf("閏年です。");
    }
  } else {
    printf("閏年ではありません。");
  }

なでしこ

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

西暦はそれ。

もし(西暦%4)=0ならば
  もし(西暦%100)=0ならば
   もし(西暦%400)=0ならば
    「閏年です。」と表示。
   違えば
    「閏年ではありません。」と表示。
   違えば
    「閏年です。」と表示。
 違えば
  「閏年ではありません。」と表示。

西暦はそれ(投げやり感)

違和感が出てきましたねw

違和感満載のなでしこ用語

  • ナデシコする」文字列Sの内容をなでしこのプログラムとして実行する。
  • 「そ」直前に操作したグループの名前を省略するのに使う。
  • 「あります」変数AにBを代入する。

などなどたくさんあります。

なぜ違和感を感じるのか

答えは簡単です。

私達が日本語に慣れすぎてしまっているから

日本語はこういうものだという考えが無意識に違和感を生んでいます。それに対して英語ベースのプログラミング言語は、英語に慣れていないため、違和感と言うものを覚える事自体がまずありえないのです。

日本語ベースと英語ベースを1から勉強するとしたら、いくら日本語ベースの方がスタートラインが上でも後々確実に不利になります。

「おまじないの概念」が通用しない

これが最大の理由だと思います。英語ベースのプログラミングを学ぶ際、みなさんも使ったでしょうw

これはおまじないだから理解しなくてもいい
あとで理解しよう

プログラミング未経験の人は「都合良すぎw」と思うかもしれませんが、これってプログラミングを学ぶ上でものすごく重要なんですよねw 1から完璧に理解しようとすると確実に挫折します。勉強のスピードもものすごく遅くなります。
しかしこれが日本語だと通用しないんですよねw 日本語についてはもうだいたい理解しちゃっているから。しかし日常で使っている意味合いとプログラミングでの意味合いとでは結構のズレがあることがあります。これがダメなんです。

結論

「日本語プログラミング」はプログラミングに触れるきっかけを与えるものであって深めるものではない。
私の中での結論です。プログラミングに全く興味が無かった人が日本語でならとプログラミングに触れるきっかけになれるのなら、それだけでも大きな役割を果たしていると思います。プログラミングっておもしろいなと思うレベルに達したらそれ以上深める必要はないと思います。
そこまで達したらC言語に手を出すのがよっぽど為になるし面白いでしょう。

なでしこ公式HP...nadesi.com
nadesi.com