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

英語を母国語としない人向けのJavaScriptベース言語「Babylscript」 112

ストーリー by headless
IMEに変な癖が付きそう 部門より
hylom 曰く、

多くのプログラミング言語は、キーワードや予約語などで「function」や「if」といった英単語を使用するため、英語を母国語としない人たちは英単語を覚えるところから始めなければならない。「Babylscript」は、JavaScriptをベースにキーワードなどを多言語化したプログラミング言語だ(Babylscript本家/.)。

現在Babylscriptでは英語のほか日本語やアラビア語、ヒンディー語、中国語、フランス語など計13言語のキーワードに対応しており、コード中に「---<言語名>---」のような記述を入れることで切り替えることが可能。たとえば、日本語に切り替えた場合は「function」の代わりに「関数」、「if」の代わりに「もし」といったキーワードを使用してプログラムを書けるようになる。一部を除いて全角と半角は区別されず、日本語の変数名を使用することも可能だ( TranslationsJapanese Translation mappings)。

日本語によるプログラミング言語としては「Mind」や「なでしこ」などがあるが、BabylscriptはJavaScriptエンジンであるRhinoをベースにしているのが特徴。JavaScriptを習得していれば容易に扱え、またBabylscriptを習得すればその知識をJavaScriptにも生かせるあたりがメリットではないかと思われる。

この議論は賞味期限が切れたので、アーカイブ化されています。 新たにコメントを付けることはできません。
  • by Anonymous Coward on 2012年07月21日 11時45分 (#2197500)

    プログラミング言語で覚える必要のある英単語なんてJavaScriptでもせいぜい800個 [bornneet.com]。逆にこれだけ覚えれば世界中誰が書いたソースコードでも読めるようになる(内容を理解できるかはまた別の話)。
    それをローカライズしたら他の地域の人は読めないし逆に他の地域の人が書いたソースコードが読めない。メリットよりデメリットの方が多すぎる。

    • プログラミング言語で覚える必要のある英単語なんてJavaScriptでもせいぜい800個 [bornneet.com]。逆にこれだけ覚えれば世界中誰が書いたソースコードでも読めるようになる(内容を理解できるかはまた別の話)。
      それをローカライズしたら他の地域の人は読めないし逆に他の地域の人が書いたソースコードが読めない。メリットよりデメリットの方が多すぎる。

      /quote

      翻訳エンジンにかけて英語に置き換えれば問題ないのでは?

      親コメント
      • by Anonymous Coward

        たぶん文法までは変わらないだろうし、
        専用の翻訳プログラムとか作ればor用意されれば、対応できそうな気がしますね。

        •  現代的な言語処理系の場合、ソースコードは人間が読んで理解できる単語を用いて記述して、言語処理系が内部で機械用のコードに変換しているよね。
           だから英語版の「if」という命令を、内部では&h00aaにしているとしたら、日本語版の「もし」も&h00aaにすると思う。
           で、専用のIDEでは、言語切り替えで、&h00aaに対応する各国語の人間用の命令を表示すれば、いいのでは?
           どのみちプログラム言語なんて、自然な文章にはならないのだから、javascriptの構文を、この言語ではこういう形にするというのを決めてしまえば、機械的に結構いけると思うけどなあ(甘いか?)。

           ただ、個人的にはプログラム言語って、ある程度、即物的に覚えた方が理解しやすいと思うので、単語や構文を各国語にするというのは、なんかやりづらそうという気が・・・。

          親コメント
          • 実践した経験から言わせてもらうと。

            関数名や変数名等のidentifierを日本語に出来るとコードの可読性が飛躍的に上がるが、
            制御構文が日本語だとウザい。

            親コメント
            • それって仕事で関数名とか変数名を日本語にしてたってことですか?
              ちょっとそのソースコード見てみたいです。

              親コメント
              • 守秘義務があるんで見せられませんが、言語(実装)によってはできますよ。
                文字コードはUTF-8以外では実績が無いので他は知りませんが。
                試してみてはいかがですか?
                ただ可読性を上げるにはコーディング規約に工夫がいります。

                親コメント
              • by Anonymous Coward on 2012年07月23日 11時54分 (#2198322)

                別ACです。

                業務上といっても、自家用で、他社へ納品するものではありませんが、
                ExcelのVBAで、関数名や変数名を日本語にすることはあります。
                雰囲気は以下のようなもの。

                Sub 日報集計(社員番号 As Integer)
                ' *******************************************
                ' 1日が、1枚のExcelシートの形式の日報を集計し
                ' 月末集計のシートの該当セルを埋める
                ' *******************************************

                    Dim 定時内時間 As Integer, 残業時間 As Integer
                    Dim 所属部署番号 As Integer, 費用負担部署番号 As Integer
                    Dim 所属部署名 As String, 費用負担部署名 As String
                    Dim 他部署へ振替時間 As Integer

                    call 週報集計シート初期化
                    call 月末集計シート初期化

                    所属部署番号 = 社員番号から所属部署番号を得る(社員番号)

                    If 費用負担部署番号 所属部署番号 Then

                        他部署へ振替時間 = 定時内時間 + 1.5 * 残業時間

                目的は、プログラミングが、本業でない人でも、必要に応じた簡単な
                拡張や修正をしやすいようにですが、この場合「読み易いように、
                理解しやすいように」を心がけてコーディングするようになるので、
                その効果も大きいですね。

                親コメント
        • by Anonymous Coward

          アラビア語にも対応するようですが、右書き左書きが混ざってくるとなるとさらにややこしいですね。

    • by Anonymous Coward

      言語を切り替えたところで予約語の総数が変わるわけでもなし、
      めいめいが異なる言葉を使って通じ合えなくなるというバベルの塔への皮肉ですかね。

    • by Anonymous Coward

      でもそれって、まず単語を覚えて理解しないと何もできない、ってことでしょう。
      プログラムのプの字も何一つ知らない状態の人に
      興味を持ってもらう取っ掛かりとしては、
      こういったものもあっていいと思いますけどね。

      • by Anonymous Coward

        職業プログラマには不要でしょうけど、算数(初等数学・初等情報処理)の教材には適切でないの?

    • by Anonymous Coward

      > プログラミング言語で覚える必要のある英単語なんてJavaScriptでもせいぜい800個

      それだと、まるで800個もの英単語を覚えないとプログラミングができないみたいじゃないか。

      入門レベルだと5個~10個で十分だろうし、実用的なプログラムでも数10個で十分だと思う。

      言語の持つ機能を全部使い切るようなプログラミングなんて、ふつう、ないと思うし。

    • by Anonymous Coward

      >それをローカライズしたら他の地域の人は読めないし逆に他の地域の人が書いたソースコードが読めない
      見たところ単純な単語置換なので、相互変換は容易なはずです。
      もっとも、予約後以外の変数名などはその限りではないとおもいますが…

      母国語ごとにひまわりだとかそういう新しい言語を作るよりはお手軽なのがいいんじゃないでしょうかね?
      教える人も楽でしょうし。

      小学生以下の子供向けのbabyなscriptなんだからこんなもんなんでしょう。(え!?

    • by Anonymous Coward

      日本語のLOGOを思い出した。

  • 今は英語一本になったと思うけど、昔はAppleScriptも多言語に対応してまして。
    日本語の記述に対応していないアプリケーションを処理対象にするとルー語状態。ネタ的な意味で楽しませてもらっていました。
    AppleScript日本語を扱った書籍で、

    「合衆国」を「廃墟」にする

    といったサンプルを見掛けて苦笑した記憶が。識別子の囲み文字はうろ覚え。「」以外のもの、もしくは不要だったかも。

    --
    巧妙に潜伏したバグは心霊現象と区別が付かない。
    • by Anonymous Coward on 2012年07月21日 12時04分 (#2197515)

      昔のAppleScriptでは英語以外の表現形式も使えましたが(Mac OS 8.5で廃止)、
      「文法はそのままでキーワードだけ翻訳」というのは、読んでいてかなり
      違和感があったのを覚えています。
      AppleScriptの日本語表記では「end if」「end repeat」「end tell」等が
      全部「以上」になっていたので、英語表記で

              end if
          end repeat
      end tell

      になっていたのが、日本語表記では

              以上
          以上
      以上

      になっていたのがさらに違和感に拍車をかけるというか……。

      JavaScriptを習得していれば容易に扱え、またBabylscriptを
      習得すればその知識をJavaScriptにも生かせるあたりがメリット

      というのはわかるんですが、個人的にはどうかなあという気がします。

      親コメント
  • 予約後とかに使われてる英単語ぐらい「お約束」ってことで覚えちゃえよー

    「数学をやるためには数学記号を覚えなければならず敷居が高いので、
    数学記号を日本語の漢字に置き換えました」みたいなレベルだよね

  • 単純にキーワードを置き換えるだけと聞いて、CをPASCALっぽくするというやつが思い浮かんだ。

    #define BEGIN {
    #define END }

  • むしろ可読性が落ちて使い物にならないという可能性が・・・

    #「一部を除いて全角と半角は区別されず」ってそれは駄目でしょ。バグの温床になるよ・・・
    • by Anonymous Coward
      日本語プログラムでぴゅう太がこのレス1つだけとは。/.も落ちたな(何がだ)。

      10 かけ「こんにちはせかい」
      20 いけ 10
      はしれ

      とかだっけ。

      いっそのこと、誰もが平等ということで話者のいない言葉なり独自に適当に作るなりすればいいのに。
      いや、記号がいいかな。+と-と.と,、あと、「方向」が分かるから<と>もいいね...
    • by Anonymous Coward

      半角だの全角だのでバグの温床になる理由がわからない…。
      「区別するとバグの温床になる」ならわかる。

      U+0020 と U+3000 の違いはもとより、いわゆる全角形と半角形の違いも一般人にはわからないらしいので、助けにはなるんじゃないかと。

  • 一見自然言語っぽいプログラム言語は、やっぱり自然言語ではないから、読みやすくもなければ書きやすくもないってことをCOBOLから学んだはずだ。
    それを今更繰り返す必要って何処にあるんだろう。

    if や function はそーゆー機能をもった呪文だと思って理解したほうが楽だと思う。
    簡潔で統一された言語形態が一番だろう・・・やっぱり。

    --
    by rti.
    • リンク先を見た感じだと、JavaScriptの予約語や組み込み関数の類を母国語にしようという
      もののようで、自然言語っぽいプログラミング言語を志向してるわけではなさそうです。
      予約語やなんかを母国語化しただけでは自然言語に近くはならないですから。
      予約語が英語だからプログラミング言語は近寄りがたいのだ、というシンプルな考え方に
      基づいてるんでしょう。ぴゅ太日本語BASIC的アプローチというか。

      例に挙げられてるMindやなでしこは、日本語の文法も意識した自然言語っぽいものを志向してる
      プログラミング言語といえるかもしれない。
      Mindなんかは根強いファンがいて、Forthをベースに結構凄いらしいとかいう話も聞いたりしましたが、
      プログラミング言語=呪文 でやってきた身からするとソースを見た瞬間に「うわっ、なにこれ」というの
      が先にたってしまって、真剣に何か書いてみようという気にはならなかったなあ。

      予約語の類を母国語にしたら学びやすくなるのだろうか、予約語なんてほんの少ししかないので
      あんま変わらないような気もするけれど、こればっかりは初学者の人に聞いてみないとなんとも
      言えません。

      親コメント
    • by Anonymous Coward

      COBOLが失敗していたとは知らなかった

  • by Anonymous Coward on 2012年07月21日 13時30分 (#2197545)

    > JavaScriptを習得していれば容易に扱え

    すでに目的を見失っている…

  • by Anonymous Coward on 2012年07月21日 17時18分 (#2197646)

    日本語翻訳マッピング [babylscript.com]を見ると、

    > for → なら

    など、わけのわからないことになってます。
      for(i=0; i<10; i++)
       ↓
      なら(カウンタ=0; カウンタ<10; カウンタ++)
    というふうになるのでしょうか。ほかにも、

    > log → ㏒

    やめてくれー!!

    > constructor → コンストラクター

    最後の「ー」があるべき派となくすべき派で戦いが起きそう。

    > valueOf → の価値

    価値なのか?辞書的には合ってるけど。

    などなど、つっこみどころ満載です。
    というか、きれいに翻訳することは無理だと思う。

    • by Anonymous Coward on 2012年07月22日 6時54分 (#2197858)

      なぜ log は「対数」にしないんだろうな。sin, cos も余弦正弦でいいじゃん。
      それは大目に見たとしても、 equals→イコール とか sort→ ソート、interface →インターフェイス あたりは翻訳する気あるのかと。
      substr→亜文字 とか equalsIgnoreCase→無規模イコール、 finally→やっと、 forEach→ 各のため、apply→応用 は誤訳か。
      Contributors に日本人らしき名前が2人も上がっている割に、ひどい訳だ……。

      ネタならネタでいいとは思うんだ。Brainf*** や Whitespace みたいな面白みはあるのかもしれない。
      だがしかし、やるなら徹底的にやってネタとして突き抜けてほしいと思う。誤訳が多いのでカミカミのコントを見ている感じ。

      親コメント
    • この手の話が出るたびにいつも思うんですが、例えば英語圏の人が例えば日本語の文法を詳しく知らないまま
      単語の逐次訳だけでもそれなりに意味が通じると思い込んでやってるんじゃないか、っていう気がします。

      自然言語ってものをなめてかかってるよなあ、、、。

      親コメント
  • ゲーセンのコナミとかのオンライン対戦対応ゲームで、対戦相手へのメッセージを巧みに組み立てるプリセット単語の断片みたいだ。

    #catchの「受け」を見て変な方向に連想が行きかけたのでID

  • ---日本語--- /* と認めない */
    /* http://www.babylscript.com/browserdemo.html で動く */
    変数 名簿 = [「ほむら」、「マミ」、「さやか」、「杏子」];
    名簿。尾に加 (「まどか」);
    +関数 (冠) {
            なら (変数 甲 = 0; 甲 < 名簿。長さ; ++甲) {
                    名簿[甲] = 冠 + 名簿[甲];
            }
    } (「魔法少女」);
    と (名簿) {
            各のため(関数 (名前) { 表示(名前); });
    }
  • by KentaHayashi (40880) on 2012年07月22日 7時54分 (#2197877)

    日本語でJavaScriptを書けるんだ! と誤解してしまいました。

    文書.書('今日は 世界'); とか、
    機能 窓を開く() {窓.開く('hoge.html', '小窓', '横幅=四〇〇, 縦幅=三〇〇, 献立横木=否, 道具横木=否, 巻物横木=可');} とか…

  • by nox_dot (11614) on 2012年07月22日 11時19分 (#2197931) 日記

    プログラム言語の予約語が英語というだけで敷居が高いとはあまり思わないし、
    旧来の構文は日本語の語順とは合わないと思うけど、
    オブジェクト指向の長い変数(クラス・インスタンス)名は、日本語の語順の方が合うかもしれない、と思った。
    (「.」や「->」の代わりに、「の」が予約語になってしまうか…)

    # 繰り返し( い=0 ; い最大数 ; い++ )
    # い の次は、ろ・は・に・ほ・・・ かな。

  • > アラビア語 [wikipedia.org]
    ・右から左へと読む。数字は左から右に綴られる。

    これは書くのも読むのも面倒そうだ。

  • by Anonymous Coward on 2012年07月21日 11時48分 (#2197504)

    これは日帝の、じゃないバベルの塔の残滓!

    冗談はさておき、多国籍間でコードを共有する可能性を捨てることになる。
    現状なら英語だけ知ってればすむのに。

typodupeerror

ソースを見ろ -- ある4桁UID

読み込み中...