web-dev-qa-db-ja.com

他の(音声)言語でのコーディング

これは私がいつも疑問に思っていたものであり、オンラインではどこにも言及していません。日本などのショップがコードを書くとき、英語で読むことができますか?または、C、PHPなどの言語には、日本語の翻訳がありますか?

私が求めているのは、世界中のすべてのコーダーが私とまったく同じ予約語を使用するのに十分な英語を知っているということでしょうか?

このコードは:

If (i < size){
    switch
        case 1:
            print "hi there"
        default:
            print "no, thank you"
} else {
    print "yes, thank you"
}

私が今見ているものとまったく同じ英語を表示するか、英語を話さない他の人が「if」、「switch」、「case」、「default」、「print」、「彼らの母国語で?

編集-はい、これは深刻です。言語のローカリゼーションごとに異なるキーワードがあるかどうかは知りませんでした。または、まったく異なるローカライズがある場合。

103
helloandre

私がよく理解していれば、質問は実際には次のとおりです。

まあ..英語はここの主題ではなく、プログラミング言語の予約語です。私が10年ほど前に始めたとき、私は英語の手がかりがまったくありませんでしたが、プログラミング言語を学習することで簡単なことをプログラミングすることができました(たとえ英語で)実際のところ、これは英語を学ぶのに役立ちました。

例えば。私は「iteración」(もちろん反復)を行うことを知っています。

 for( i = 0 ; i < 100 ; i++ ) {}

私にとって、「for」、「;」そして、単純な外来語または記号の「++」。後に「for」は「para」を意味し、「while」は「mientras」などを意味することを学びましたが、その間は英語を知る必要はありませんでしたが、私の場合は「C」を知ることが必要でした。

もちろん、もっと多くのことを学ぶ必要があるときは、その言語でドキュメントが書かれているため、英語を学ぶ必要がありました。

だから答えは:いいえ、母国語であるかどうか、while、forなどはわかりません。私はそれらを英語で見ますが、それらはプログラミング言語にとって順番に意味する他のことを意味しませんでした。

Bash:case .. esacのswitchステートメントのようなものです。 「esac」とは... bashのswitchステートメントの終わりです。

それが「抽象化」と呼ばれるものだと思います

157
OscarRyz

Java言語では、JavaBeansの規則により、一部のメソッドは(少なくとも部分的に)英語を使用して名前を付ける必要があります。

この規則では、プロパティXをgetX()メソッドとsetX()メソッドのペアを介して確立する必要があります。ここでフランス語-カナダでは、一部の開発者がフランス語でコーディングすることを義務付けられており、これは次の悲劇につながります:

interface Foo {

  Color getCouleur();

  void setCouleur(Color couleur);
}
26
Dónal

参考文献を見つけるのに苦労していますが、3つの話を思い出しました。

LISPハッカーは、「cdr」や「car」などの意味のない機能を、ネイティブでない言語のプログラミングと比較することで防御します。 http://people.csail.mit.edu/gregs/ll1-discuss-archive- html/msg01171.html

松本幸宏( "Matz")がRubyの開発を始めたとき、彼は英語のキーワードを使用しました 彼はすべてのドキュメントを日本語で書いていたのに!。 Rubyの英語のドキュメントは数年間存在せず、この言語を使用しているアメリカ人はほとんどいませんでした。しかし、今では世界クラスの言語であり、日本で生まれたという事実は言語がひらがなでキーワードを使用していた場合、人気を得るのははるかに困難な時期でした。

私はエッセイを一度読みました-他の誰かがそれを見つけることができるかもしれません、Googleは今日助けになりません-それは単語が実際に英語ではないのでキーワードを翻訳することは間違っていることを示唆しました-それらは専門用語です。行うだけではありません(上記の例を使用するため) パラ そして 注ぎます まったく正確な意味を持たない for 英語では、非プログラマーにとって「for loop」というフレーズは意味がありません。アメリカ人でさえ新しい意味を学ばなければなりません。そのため、単語の表面的な意味を別の言語に翻訳することは、実際に役立つというよりは、言語間のしゃれを作ることに似ています。

26
jes5199

日本語でのプログラミングについてあまり考えたことはありませんが、質問のコードサンプルを使用して説明します。

英語の変数で日本語の言語ステートメントのみを使用する:

// In Japanese, it makes more sense to put the keywords/modifiers as
// postfix expressions rather than prefix expressions.
(i < size)か {
     (l[i])は {
     1だ:
         「もしもし。」を書く;
     省略時値:
         「いいえ、いいですよ。」を書く;
     }
} ない {
     「はい、ありがとうございます。」を書く;
}
25
Lara Dougan

多くの人がすでに指摘しているように、ほとんどのプログラミング言語では、いくつかのキーワードを習得するだけでよいので、それらが英語(またはあなた以外の言語)であれば、それほど重要ではありません。それはあなたが何らかのコンストラクトに関連付ける単なるシンボルです。たとえば、VBには "THEN"があり、多くのCスタイル言語では "{"になりますが、読みやすさには大きな違いはありません(少なくとも、そうです。私はそれを見て、英語以外のネイティブスピーカーです)。

しかし、物事が時々毛むくじゃらになることがあり、(自然な)言語の選択が重要な場所は識別子の命名にあります。言語の障壁のために変数、関数、クラスなどの名前に意味のある名前がない場合、最も単純なコードを追うことはかなり難しい場合があります。

誰かがブログから抜粋したActionscriptの短い断片をくれたことを覚えています。名前はドイツ語で、私はその言語の単語を話さないので、ものはvar_123、var_562、またはfunc_333と呼ばれることもあります(おそらく、名前を覚えたり、少なくともコピーして貼り付けずに正しいスペルを選択する可能性があります)。これは短い自己完結型のスニペットであるため、オンライン翻訳者を使用して、これらの変数と関数に意味のある名前を母国語(スペイン語)で付けました。その後、すべてが明確になりました。ポイントは、コードは実際には単純だったということですが、言語の壁を乗り越えたときだけ、余分な(不必要な)余分な努力をせずにコードを理解することができました。

それ以来、識別子の命名に英語を使用するように切り替えました。好むと好まざるとにかかわらず、それはプログラミング、エンジニアリング、および一般的な技術的なものの「コイネ」です。ほとんどのAPIは英語で書かれており、ほとんどのドキュメントも同様です(そしておそらくあなたが見つけることができる最高のリソースは英語でもあります)。良い点はさておき、それはあなたのコードとあなたがやり取りする可能性のあるコードとの一貫性を保ち、私はスペイン語のような他の言語よりもコンパクトで簡潔になる傾向があると思います(そうでなければ私の自然な選択です)。

もちろん、少なくとも一部の英語を理解できない場合、問題は同じままであるため、完全な解決策ではありません。しかし、多くの異なる国からの多くの開発者を考えると、彼らが通信するための共通の言語は(コードやその他の手段を介して)英語になる可能性があります。したがって、英語を選択することは、この問題の完全な解決策ではないにしても、おそらく最良の選択肢です。

13

プログラミング言語はキーワードと標準クラス名を定義します。ユーザー定義の型、変数、関数にも英語名を付けるのがベストプラクティスです(私が話すことができる非ネイティブスピーカーとして;-)。

はい、すべてが順調であれば、コードを読むことができます。

ただし、JavaやPerlなどの言語では識別子の完全なUnicodeセットが許可されているため、誰かが自分のクラス名を漢字で書くと、問題が発生する可能性があります。

更新:Perlには、Perlをラテン語で記述できる joke module があります。しかし、それは本当に冗談です。このようなことを真剣に使う人はいません。

2回目の更新:ローカライズされたプログラミング言語のアイデアは、ばかげているわけではありません。 Excelのマクロ言語はローカライズされていますが、幸いなことにファイル内の1つの標準言語(英語)に格納されているため、ローカライズは通常のものの上のレイヤーにすぎません。このようなことは、小さな「プログラム」に対してのみ意味があり、「実際の」プログラムに対しては維持が難しくなります。

10
moritz

実際にはareいくつかの 非英語ベースのプログラミング言語 (Wikipedia)

私はノルウェー人ですが、出力を除くすべてのコードに常に英語を使用しました(学校からの馬鹿げたコードを無視します)。実際、私は通常、すべてを英語で書いてから、gettext(または何か)を使用して、母国語にtranslateそれを書きます。

7

私はイギリス人であり、私たちがしばしば遭遇する問題は、アメリカとイギリスのスペルの衝突です。これは多くの場合、Initialise()やInitialize()、Analyse()、Analyze()などのプログラミング関連の用語で発生します。これにより、メソッドをオーバーライドしようとする問題が発生する可能性があります。

フレームワーク(この場合はC#)はアメリカ人によって設計されたため、一貫性を保ち、アメリカのスペルを使用することが最善であることがわかりました。 Colorも採用しています。

開発チームには国籍が混在しており、ほとんどの非英国人は自然にアメリカの綴りを好む傾向があります。

6
Paul McClean

AppleScriptはかつてフランス語と日本語の方言で利用可能でした。なぜ撤回されたのか分かりません。

4
Chris Lundie

これを次のレベルに持っていくと、シンボルを置き換えることができますか?

Brainf ** kWhitespace のような言語を見た後、私はこのような言語を作成することを考えました。閉じるには、+と-、*と/、の意味を入れ替えます。および:、>および<など。

コンセプトは、とんでもない改変されたCコンパイラにすぎません。しかし、キーワードの考え方が異なるように、そのようなことをこれまで考えたことがない場合、いくつかの基本的な仮定を再考するように挑戦します。例:

int foo)int i, char c( }
    int six = 2 / 3:
    int two = six + 4:
    if )i > 0( }
        printf)"i is negative"(:
    {
{
4
Dinah

私はフランスのチームでC#でソフトウェアシステムを開発しています。プログラミング言語のキーワードは表面的には英語ですが、すべての関数名、変数、コードコメント、データベーステーブルと列、技術仕様、プロトコルなどがすべて含まれているため、コードを読むのが非常に困難になると思いますフランス語、これらの素敵なアクセント付き文字ç、é、è、ùなど。

それ以外の場合、WinDevはフランスで人気のあるプログラミングプラットフォームであり、そのプログラミング言語WLanguageにはフランス語または英語のキーワードがあります。ここの例を参照してください。 link text

4

他の人が指摘したように、キーワードとシステムコールはおそらく英語のままです。

ただし、言語のキーワードを理解することは、コードを理解する上でほんの一部です。変数名、関数名、コメントはすべて、著者の母国語で書かれているリスクがあります。

編集:私は、青春時代にフラッシュバックして、TRS-80組み込みBASICのマッピングテーブルでキーワードをフランス語に切り替えました。すべてのキーワードを変更できましたが、どれも大きくすることはできませんでした。面白いプログラムのために作られました。

3
Francis Beaudet

これをからかってはいけません。数年前、MicrosoftはG#(German Sharp)-ドイツ語のキーワードとAPIを使用したC#を発表しました。もちろん、エイプリルフールのジョークでしたが、それについてのサイト全体はとてもリアルでプロフェッショナルに見えました(そしてMicrosoft.comにありました)。怖い。

職場では、ドイツ語圏で開発された2つのフィールドバスシステムを使用します。これらのシステムは、一部の素敵な偽の友人を含め、識別子にドイツ語と英語の恐ろしい組み合わせがあります。それは混乱です。

いいえ、英語のキーワードと識別子は問題ありません。色か色かを議論する人もいますが:)

3
OregonGhost

私が取り組んだいくつかのVBAプロジェクト(はい、私のキャリアのごく初期)で、ユーザーのマシンにインストールされたOfficeのバージョンを検出し、それに応じてsperadsheetsで使用されている数式を変更する必要がありました。

Iポルトガル語のプログラム「SUM」は「SOMA」などに変換する必要があります。これをいくつかの言語で実現するために必要な作業を想像することはできません。他の誰かがこの問題に苦しんでいますか?

3
rshimoda

ローカライズされた唯一の言語は、マクロを含むExcelです。イタリア語版のOfficeを使用して列を合計しようとすると、SUMではなくSOMMA(A1:A10)を記述する必要があります。残念です。

ところで、楽しいからといって、イタリア語のキーワードを使用したコードは次のようになります。

se (i < size){
    commuta
        caso 1:
            stampa "hi there"
        normalmente:
            stampa "no, thank you"
} altrimenti {
    stampa "yes, thank you"
}
3
Andrea Ambu

キーワードを翻訳した言語がいくつかあります。たとえば、Excelの数式。スプレッドシートに計算を書くと、これはあなたの言語になります。

幸いなことに、これは一般的な慣行ではなく、私のような英語以外のスピーカーでさえ、キーワードに標準言語があることを神に感謝します。

  • 作業を共有するのが簡単です。
  • ドキュメントが既に存在するより大きな悪夢になるのを防ぎます。
  • 通常、英語の単語と文は短く、構文的に実用的です。文学では、ラテン語ははるかに美しいですが、技術的なものは英語の岩です。

そして、どこで停止するのですか?古代ギリシャ語のCを想像できますか?

キーワードは1つの言語のままである必要があります。まあ、それは英語から始まり、そのままにしておきます。これは最悪だったかもしれません(アジア言語?)。そして、メソッドとコメントを英語で書く必要があります。わかりました、私達のためのより多くの仕事、しかし少なくとも国際的なコードベースは一致したままです。

ただし、母国語のメソッド名とコメントを使用することをお勧めする場合があります。それは、第三世界の国です。 Djangoプロジェクト。ここで言語を使用しているため、コンピューティングと新しい言語を同時に学習させることは非効率的です。

ところで、それはフランス語のキーワードを使用したコードになります:

Si (i < taille) {
    cas par cas :
        cas 1:
            afficher "salut"
        défaut:
            afficher "non merci"
} sinon {
    afficher "oui, merci"
}

キーワードの翻訳は、文字列の翻訳とは関係ありません。もちろん、私たちの言語で翻訳された「こんにちは」があります。ヨーロッパのコーダーは、彼らのサービスがより広い聴衆に届くことができるように、アメリカ人よりもはるかに多くI18Nを使用する傾向があります。

3
e-satis

vBAがスペイン語のようなコマンドに変換されるのを見ました。それは今まで見た中で最もuいものの一つです。私は自分のコンピューターにこのようなものがあることを恥ずかしく思います。

PD:たまたまスペイン語は英語よりもずっといい言語だと思っています。しかし、翻訳は間違っています

3
Javier

Filemakerのスクリプト言語はローカライズされています。スクリプト(およびデータ!)は、ひどい "sorta canonical"形式で保存されます。

そのため、アメリカ版でスクリプトを作成し、それをフランス語版で開くと、すべてのキーワードと組み込み関数名はフランス語になります。しかし、なぜ実行されないのですか?!あぁ!フランス語版では小数点として「、」を使用しているため、あいまいさを避けるために「;」を使用しています。関数の引数を分離する-アメリカ版では "。"を使用および「、」それぞれ。この変換は、自分で行う必要があります。

したがって、これらすべてを修正するには、信じられないほど悪いスクリプト編集インターフェイス(スクリプトをテキストファイルとして作成することはできません)を使用します。走ります!すごい!結果はすべて間違っています!大野!あぁ!アメリカ版で入力した2004年1月7日の日付は、2004年7月1日と解釈されています-明らかに日付が表示されるだけでなく、storedロケール依存の順序。 冗談でしょ?番号。

[注:Filemaker 8と9は正気かもしれません-私は3-7でしか働いていません。]

2
Tom Future

一般的に、ほとんどのプログラマーは英語の形式に適応します。私は7歳のときにプログラミングを学び、ヘブライ語(右から左)のみを話し、英語は話せなかったため、非常に魅力的な経験になりました。

通常の問題は、ドキュメント、変数、および関数名にあります。英語のアルファベットを使用している他の言語の変数のシェアを見てきました。

私が実際に翻訳した言語に精通しているのは、古き良きロゴだけです(今日でも驚くべきものです)。

2
Uri

あなたの質問はPerlに関して興味深いものです。なぜなら、構文は(英語の)自然言語に従うように設計されているからです。英語が話せない人にとって、それが難しくなるのではないかと思います...

もちろん、PerlとPerlersは従来のルールで遊ぶことを拒否します。マッドサイエンティストのダミアン・コンウェイは Lingua :: Romana :: Perligata モジュールを書きました。これはソースフィルターの黒魔術を使ってPerlをラテン語で書くことを可能にします!

2
Michael Carman

私が子供の頃、フランスに行ったとき、行った博物館で、コンピュータプログラムの書き方を示すディスプレイを見つけたことを覚えています。この言語は、ある種のBASICバリアントであり、FORなどの代わりにPOURを使用したことをはっきりと覚えています。私は7歳で、BASICを学んだばかりで、フランス人がこのように独自の方言を持っているのは完全に自然なことでした!

私が見たのは [〜#〜] lse [〜#〜] だったのでしょうか?

2
Luke Halliwell

ここオーストラリアでは、まだ綴りが必要です  お気に入り 。ただし、オーストラリアのプロジェクトに取り組んでいる他の(オーストラリアの)開発者が、内部変数名をアメリカ式に綴る必要があると判断した場合、それは迷惑です。

2
Dean Rather

私は多くのコードを読みましたが、問題は常に変数/メソッドの名前とコメントにあります。日本語やキリル文字などの言語特殊文字を使用して自分の言語でコードをコメントしている場合、問題が発生します!しかし、キーワードはそのまま英語のままになると思います。

1
milot

イタリア語で

se (i < dimensione){
    scegli
        caso 1:
            stampa "ciao"
        mancante:
            stampa "no, grazie"
} altrimenti {
    stampa "sì, grazie"
}

以前のポスターの心配を確認するために、すべてのキーワードを英語からフランス語に翻訳するマクロを含むFortranコードを見ました。これを続行しないでください。

また、イタリア語、ドイツ語、英語、フランス語の識別子を同時に含むコードで作業する必要がありました。多くの異なる場所で開発されただけでなく、メインの開発者が楽しいと考え、識別子名を重複させないように助けたためです(もちろん、2000行のルーチンで....)

1
Stefano Borini

私見では、言語を国際化するのは無意味です構文。あらゆる種類の移植性を損なうだけです。

唯一の例外は、LOGOなどの教育用言語です。簡単に学習できるように設計されているため、移植性は問題になりません。

1
Mike Hordecki

WordBasicはローカライズされたと思います。 WordBasicは、VBAが使用される前にWordでマクロを記述するために使用されました。

正しく覚えていれば、英語版で書かれたWordBasicのみがすべてのローカライズ版で実行されます。オランダ語版を作成する場合、オランダ語でのみ実行できます。

0
GvS