英語を母国語としない人向けのJavaScriptベース言語「Babylscript」 112
ストーリー by headless
IMEに変な癖が付きそう 部門より
IMEに変な癖が付きそう 部門より
hylom 曰く、
多くのプログラミング言語は、キーワードや予約語などで「function」や「if」といった英単語を使用するため、英語を母国語としない人たちは英単語を覚えるところから始めなければならない。「Babylscript」は、JavaScriptをベースにキーワードなどを多言語化したプログラミング言語だ(Babylscript、 本家/.)。
現在Babylscriptでは英語のほか日本語やアラビア語、ヒンディー語、中国語、フランス語など計13言語のキーワードに対応しており、コード中に「---<言語名>---」のような記述を入れることで切り替えることが可能。たとえば、日本語に切り替えた場合は「function」の代わりに「関数」、「if」の代わりに「もし」といったキーワードを使用してプログラムを書けるようになる。一部を除いて全角と半角は区別されず、日本語の変数名を使用することも可能だ( Translations、 Japanese Translation mappings)。
日本語によるプログラミング言語としては「Mind」や「なでしこ」などがあるが、BabylscriptはJavaScriptエンジンであるRhinoをベースにしているのが特徴。JavaScriptを習得していれば容易に扱え、またBabylscriptを習得すればその知識をJavaScriptにも生かせるあたりがメリットではないかと思われる。
なぜわざわざローカライズするかな? (スコア:3, すばらしい洞察)
プログラミング言語で覚える必要のある英単語なんてJavaScriptでもせいぜい800個 [bornneet.com]。逆にこれだけ覚えれば世界中誰が書いたソースコードでも読めるようになる(内容を理解できるかはまた別の話)。
それをローカライズしたら他の地域の人は読めないし逆に他の地域の人が書いたソースコードが読めない。メリットよりデメリットの方が多すぎる。
Re:なぜわざわざローカライズするかな? (スコア:1)
プログラミング言語で覚える必要のある英単語なんてJavaScriptでもせいぜい800個 [bornneet.com]。逆にこれだけ覚えれば世界中誰が書いたソースコードでも読めるようになる(内容を理解できるかはまた別の話)。
それをローカライズしたら他の地域の人は読めないし逆に他の地域の人が書いたソースコードが読めない。メリットよりデメリットの方が多すぎる。
/quote
翻訳エンジンにかけて英語に置き換えれば問題ないのでは?
Re: (スコア:0)
たぶん文法までは変わらないだろうし、
専用の翻訳プログラムとか作ればor用意されれば、対応できそうな気がしますね。
翻訳プログラムはすでにあるのでは (スコア:2)
現代的な言語処理系の場合、ソースコードは人間が読んで理解できる単語を用いて記述して、言語処理系が内部で機械用のコードに変換しているよね。
だから英語版の「if」という命令を、内部では&h00aaにしているとしたら、日本語版の「もし」も&h00aaにすると思う。
で、専用のIDEでは、言語切り替えで、&h00aaに対応する各国語の人間用の命令を表示すれば、いいのでは?
どのみちプログラム言語なんて、自然な文章にはならないのだから、javascriptの構文を、この言語ではこういう形にするというのを決めてしまえば、機械的に結構いけると思うけどなあ(甘いか?)。
ただ、個人的にはプログラム言語って、ある程度、即物的に覚えた方が理解しやすいと思うので、単語や構文を各国語にするというのは、なんかやりづらそうという気が・・・。
Re:翻訳プログラムはすでにあるのでは (スコア:3, 参考になる)
実践した経験から言わせてもらうと。
関数名や変数名等のidentifierを日本語に出来るとコードの可読性が飛躍的に上がるが、
制御構文が日本語だとウザい。
Re:翻訳プログラムはすでにあるのでは (スコア:2)
それって仕事で関数名とか変数名を日本語にしてたってことですか?
ちょっとそのソースコード見てみたいです。
Re:翻訳プログラムはすでにあるのでは (スコア:1)
守秘義務があるんで見せられませんが、言語(実装)によってはできますよ。
文字コードはUTF-8以外では実績が無いので他は知りませんが。
試してみてはいかがですか?
ただ可読性を上げるにはコーディング規約に工夫がいります。
Re:翻訳プログラムはすでにあるのでは (スコア:1)
別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 * 残業時間
目的は、プログラミングが、本業でない人でも、必要に応じた簡単な
拡張や修正をしやすいようにですが、この場合「読み易いように、
理解しやすいように」を心がけてコーディングするようになるので、
その効果も大きいですね。
Re: (スコア:0)
アラビア語にも対応するようですが、右書き左書きが混ざってくるとなるとさらにややこしいですね。
Re: (スコア:0)
言語を切り替えたところで予約語の総数が変わるわけでもなし、
めいめいが異なる言葉を使って通じ合えなくなるというバベルの塔への皮肉ですかね。
Re: (スコア:0)
でもそれって、まず単語を覚えて理解しないと何もできない、ってことでしょう。
プログラムのプの字も何一つ知らない状態の人に
興味を持ってもらう取っ掛かりとしては、
こういったものもあっていいと思いますけどね。
Re: (スコア:0)
職業プログラマには不要でしょうけど、算数(初等数学・初等情報処理)の教材には適切でないの?
Re: (スコア:0)
> プログラミング言語で覚える必要のある英単語なんてJavaScriptでもせいぜい800個
それだと、まるで800個もの英単語を覚えないとプログラミングができないみたいじゃないか。
入門レベルだと5個~10個で十分だろうし、実用的なプログラムでも数10個で十分だと思う。
言語の持つ機能を全部使い切るようなプログラミングなんて、ふつう、ないと思うし。
Re: (スコア:0)
>それをローカライズしたら他の地域の人は読めないし逆に他の地域の人が書いたソースコードが読めない
見たところ単純な単語置換なので、相互変換は容易なはずです。
もっとも、予約後以外の変数名などはその限りではないとおもいますが…
母国語ごとにひまわりだとかそういう新しい言語を作るよりはお手軽なのがいいんじゃないでしょうかね?
教える人も楽でしょうし。
小学生以下の子供向けのbabyなscriptなんだからこんなもんなんでしょう。(え!?
Re: (スコア:0)
日本語のLOGOを思い出した。
AppleScript多言語版を彷彿とさせます (スコア:2)
今は英語一本になったと思うけど、昔はAppleScriptも多言語に対応してまして。
日本語の記述に対応していないアプリケーションを処理対象にするとルー語状態。ネタ的な意味で楽しませてもらっていました。
AppleScript日本語を扱った書籍で、
といったサンプルを見掛けて苦笑した記憶が。識別子の囲み文字はうろ覚え。「」以外のもの、もしくは不要だったかも。
巧妙に潜伏したバグは心霊現象と区別が付かない。
Re:AppleScript多言語版を彷彿とさせます (スコア:2, 参考になる)
昔のAppleScriptでは英語以外の表現形式も使えましたが(Mac OS 8.5で廃止)、
「文法はそのままでキーワードだけ翻訳」というのは、読んでいてかなり
違和感があったのを覚えています。
AppleScriptの日本語表記では「end if」「end repeat」「end tell」等が
全部「以上」になっていたので、英語表記で
になっていたのが、日本語表記では
になっていたのがさらに違和感に拍車をかけるというか……。
JavaScriptを習得していれば容易に扱え、またBabylscriptを
習得すればその知識をJavaScriptにも生かせるあたりがメリット
というのはわかるんですが、個人的にはどうかなあという気がします。
Re:else if (スコア:1)
Optimization completed.
if (...) {
hogehoge;
}
# そういうことじゃないって?
「プログラミング言語」であって「英語」じゃないんだから (スコア:2)
予約後とかに使われてる英単語ぐらい「お約束」ってことで覚えちゃえよー
「数学をやるためには数学記号を覚えなければならず敷居が高いので、
数学記号を日本語の漢字に置き換えました」みたいなレベルだよね
Re:「プログラミング言語」であって「英語」じゃないんだから (スコア:1)
Re:「プログラミング言語」であって「英語」じゃないんだから (スコア:1)
basic 覚えた頃 gosub を ゴースブと読んでいた。
pascal がはやった頃 begin をベジンと読んでいた。
>「お約束」
まったくその通りで、キーワードはもともと呪文でしかないし(kill たって殺すわけでなし)、
それに連結された裏の処理内容を試行錯誤の末に体で理解できれば
呪文でかまわないと思う。
# O_RDONLY は本来 C_STANDARDIO_OPEN_READONLY と命名されるべきでしょ。
むしろ変数名などの方が名づけの重みは重いが、エディタで開いて
いきなり文字化けだけは勘弁。
# そういうわけで長らく呪文で問題なかったため、gosub が
go subroutine の略だと気づいたのはだいぶ後だ。
言葉の刷り込み [srad.jp]
Re: (スコア:0)
「覚えちゃえよ」って言って覚えてもらえるなら
誰もこんなの作らないでしょうね。
Re: (スコア:0)
おめーはまず日本語を覚えろ
単純にキーワードを置き換えるだけと聞いて (スコア:2)
単純にキーワードを置き換えるだけと聞いて、CをPASCALっぽくするというやつが思い浮かんだ。
ぴゅう太を思い出す (スコア:1)
#「一部を除いて全角と半角は区別されず」ってそれは駄目でしょ。バグの温床になるよ・・・
Re: (スコア:0)
10 かけ「こんにちはせかい」
20 いけ 10
はしれ
とかだっけ。
いっそのこと、誰もが平等ということで話者のいない言葉なり独自に適当に作るなりすればいいのに。
いや、記号がいいかな。+と-と.と,、あと、「方向」が分かるから<と>もいいね...
Re: (スコア:0)
半角だの全角だのでバグの温床になる理由がわからない…。
「区別するとバグの温床になる」ならわかる。
U+0020 と U+3000 の違いはもとより、いわゆる全角形と半角形の違いも一般人にはわからないらしいので、助けにはなるんじゃないかと。
Re:ぴゅう太を思い出す (スコア:1)
「一部を除き区別されない」=「一部では区別される」ってことじゃ?
COBOLの失敗から何も学んだのか (スコア:1)
一見自然言語っぽいプログラム言語は、やっぱり自然言語ではないから、読みやすくもなければ書きやすくもないってことをCOBOLから学んだはずだ。
それを今更繰り返す必要って何処にあるんだろう。
if や function はそーゆー機能をもった呪文だと思って理解したほうが楽だと思う。
簡潔で統一された言語形態が一番だろう・・・やっぱり。
by rti.
Re:COBOLの失敗から何も学んだのか (スコア:2)
リンク先を見た感じだと、JavaScriptの予約語や組み込み関数の類を母国語にしようという
もののようで、自然言語っぽいプログラミング言語を志向してるわけではなさそうです。
予約語やなんかを母国語化しただけでは自然言語に近くはならないですから。
予約語が英語だからプログラミング言語は近寄りがたいのだ、というシンプルな考え方に
基づいてるんでしょう。ぴゅ太日本語BASIC的アプローチというか。
例に挙げられてるMindやなでしこは、日本語の文法も意識した自然言語っぽいものを志向してる
プログラミング言語といえるかもしれない。
Mindなんかは根強いファンがいて、Forthをベースに結構凄いらしいとかいう話も聞いたりしましたが、
プログラミング言語=呪文 でやってきた身からするとソースを見た瞬間に「うわっ、なにこれ」というの
が先にたってしまって、真剣に何か書いてみようという気にはならなかったなあ。
予約語の類を母国語にしたら学びやすくなるのだろうか、予約語なんてほんの少ししかないので
あんま変わらないような気もするけれど、こればっかりは初学者の人に聞いてみないとなんとも
言えません。
Re:COBOLの失敗から何も学んだのか (スコア:2)
予約語を機械的に置き換えているだけなら、あなたのいうエディタで置換と同等では。言語仕様が変わっているわけじゃないんだから。
// 実際にはコメントや変数名、オブジェクト名まで置換される可能性があるから、機械的にエディタで置換するのは危険だけど
Re: (スコア:0)
COBOLが失敗していたとは知らなかった
Re:COBOLの失敗から何も学んだのか (スコア:1)
少なくともそのようなアプローチは、他のコンピュータ言語でとられなかったので、失敗だと判定してよいのでは。
Re:COBOLの失敗から何も学んだのか (スコア:2)
本当に失敗した言語というのは、こんな所で話題にすらならない。
Re:COBOLの失敗から何も学んだのか (スコア:1)
すくなくとも、日本語COBOLは失敗だったと思う。
# あんなもののメンテは……勘弁してほしい
notice : I ignore an anonymous contribution.
本末転倒 (スコア:1)
> JavaScriptを習得していれば容易に扱え
すでに目的を見失っている…
日本語になってない翻訳 (スコア:1)
日本語翻訳マッピング [babylscript.com]を見ると、
> for → なら
など、わけのわからないことになってます。
for(i=0; i<10; i++)
↓
なら(カウンタ=0; カウンタ<10; カウンタ++)
というふうになるのでしょうか。ほかにも、
> log → ㏒
やめてくれー!!
> constructor → コンストラクター
最後の「ー」があるべき派となくすべき派で戦いが起きそう。
> valueOf → の価値
価値なのか?辞書的には合ってるけど。
などなど、つっこみどころ満載です。
というか、きれいに翻訳することは無理だと思う。
Re:日本語になってない翻訳 (スコア:1)
なぜ log は「対数」にしないんだろうな。sin, cos も余弦正弦でいいじゃん。
それは大目に見たとしても、 equals→イコール とか sort→ ソート、interface →インターフェイス あたりは翻訳する気あるのかと。
substr→亜文字 とか equalsIgnoreCase→無規模イコール、 finally→やっと、 forEach→ 各のため、apply→応用 は誤訳か。
Contributors に日本人らしき名前が2人も上がっている割に、ひどい訳だ……。
ネタならネタでいいとは思うんだ。Brainf*** や Whitespace みたいな面白みはあるのかもしれない。
だがしかし、やるなら徹底的にやってネタとして突き抜けてほしいと思う。誤訳が多いのでカミカミのコントを見ている感じ。
Re:日本語になってない翻訳 (スコア:1)
この手の話が出るたびにいつも思うんですが、例えば英語圏の人が例えば日本語の文法を詳しく知らないまま
単語の逐次訳だけでもそれなりに意味が通じると思い込んでやってるんじゃないか、っていう気がします。
自然言語ってものをなめてかかってるよなあ、、、。
Japanese Translation mappingsが (スコア:1)
ゲーセンのコナミとかのオンライン対戦対応ゲームで、対戦相手へのメッセージを巧みに組み立てるプリセット単語の断片みたいだ。
#catchの「受け」を見て変な方向に連想が行きかけたのでID
Re:Japanese Translation mappingsが (スコア:1)
被除数、除数の順序が不正だと例外が投げられるわけですね
Re:Japanese Translation mappingsが (スコア:1)
被乗数、乗数じゃなくて?
#こちらが勘違いしてたらすみません
書いてみた (スコア:1)
/* http://www.babylscript.com/browserdemo.html で動く */
変数 名簿 = [「ほむら」、「マミ」、「さやか」、「杏子」];
名簿。尾に加 (「まどか」);
+関数 (冠) {
なら (変数 甲 = 0; 甲 < 名簿。長さ; ++甲) {
名簿[甲] = 冠 + 名簿[甲];
}
} (「魔法少女」);
と (名簿) {
各のため(関数 (名前) { 表示(名前); });
}
日本語で… (スコア:1)
日本語でJavaScriptを書けるんだ! と誤解してしまいました。
文書.書('今日は 世界'); とか、
機能 窓を開く() {窓.開く('hoge.html', '小窓', '横幅=四〇〇, 縦幅=三〇〇, 献立横木=否, 道具横木=否, 巻物横木=可');} とか…
オブジェクト指向 (スコア:1)
プログラム言語の予約語が英語というだけで敷居が高いとはあまり思わないし、
旧来の構文は日本語の語順とは合わないと思うけど、
オブジェクト指向の長い変数(クラス・インスタンス)名は、日本語の語順の方が合うかもしれない、と思った。
(「.」や「->」の代わりに、「の」が予約語になってしまうか…)
# 繰り返し( い=0 ; い最大数 ; い++ )
# い の次は、ろ・は・に・ほ・・・ かな。
どんなコードになるのやら (スコア:1)
> アラビア語 [wikipedia.org]
・右から左へと読む。数字は左から右に綴られる。
これは書くのも読むのも面倒そうだ。
だが断る (スコア:0)
これは日帝の、じゃないバベルの塔の残滓!
冗談はさておき、多国籍間でコードを共有する可能性を捨てることになる。
現状なら英語だけ知ってればすむのに。
Re:英語じゃなくていいけど (スコア:2)
それなんてGAME-III
Re:どうせすぐに英語が必要になる (スコア:2)
最新情報を得るために英語を読まなければならないプログラマは一部だけだよ。読めたらベターといった程度。
日本語で充分なテキストも販売されないような言語でコードを書かれても困るし。
どちらかというとハード設計の方が英語必須でしょう。海外メーカーは平気で英語版データブックを送りつけてくるから。
意味を取り違えられないようにシンプルな英文で書かれているから、テクニカルタームだけ覚えれば何とかなるけど。
Re:何を翻訳したのか (スコア:1)
ブロジェクトについて [babylscript.com]
やってるの中国人っぽいですね。
で、多国語でコーディングできる→めんどくせーとみんないいだす→でも、大半の人が英語ネイティブではない
→「中国語に統一するアルヨ」
と言う孔明の罠な気がしないでもないですね。