プロが教えるわが家の防犯対策術!

プログラミングはなぜ英語なのでしょうか?
日本語のプログラミングもあるそうですが、用途が限られているみたいです。
英語以外のコンピュータ言語の場合、オブジェクトコードに変換するために数段階の変換-つまり英語に-がなされるので複雑になり、処理速度も遅くなるようです。
コンピュータ言語は英語つまりラテン語・ギリシャ語系列の表音文字が適しているのでしょうか。アセンブリ言語がローマ字、アラビア数字になじみやすいからでしょうか?コンピュータ=白人文化・・・ASCIIが世界標準になっているせいもあると思いますが、まるでコーカソイドの独占ですね。
プログラムのことをよく理解していない上での質問かもしれませんが、教えていただければ助かります。よろしくお願い致します。

【疑問点】
1.コンピュータ言語は、なぜ英語なのでしょうか?
2.ローマ字、アラビア数字は機械語に直すとき、処理しやすいのでしょうか?
3.漢字など表意文字は、コンピュータ言語としてあり得ないのでしょうか?(補足:コンパイルしにくい?)

A 回答 (6件)

こういうことが聞きたかったのですね


興味の方向から、専門的な言葉を使ってしまいますが、ついでに調べれば有益だと思うのでご容赦願います

1 厳密に言えば、自然英語ではないですよね。単に英単語を羅列した物です。

ですから、これを母国語に置き換えたプロダクトというのは各国にあります。日本だとぴゅう太のカナBASIC(BASICのステートメントをカナ化した)とか前にご紹介したMind(Forthの基本辞書を日本語化し、語尾の変化に対応)などがありますし、旧ソ連などでは、キリル文字でプログラムする環境があるようで、ステートメントもロシア語になっていると聞きます。
ただ、圧倒的に英単語でプログラムすることが多いのは、元々の経緯、初期のプログラミング言語であるFORTRAN、COBOLが当時の計算機科学の先進国(今でもそうですが)である米英で生まれたことから来ているのでしょう。そして、コンピュータのインターフェース(パンチカードや紙テープのさん孔装置の入力デバイスとしてはコンピュータ以前から)として英文タイプライタのシステムが使われたことが大きいと思います。コンピュータでは生まれたときから英語がアドバンテージを持っているのです。

このあたりはコンピュータの歴史を調べてみるとよくわかるでしょう。最初のコンピュータとされるいくつかのもの、ABCマシンとENIACがアメリカ、Mark.1とColossusはイギリスです。
また、COBOLは元々、自然英語でのプログラミングを標榜してCODASYLで制定されたものですから、英語に近いのは当然です。

2 最終的にコンピュータが理解できる2進文字列になればいいのですから、その元の言語がなんであっても大きな問題はないでしょう。ステートメントをニーモニックに置き換えてしまえば、その後はアセンブラの仕事ですから、現在のCPUの能力であれば、字句解析とパーサがちゃんと作ってあれば大きなオーバーヘッドにはならないと思います。自然言語に対応しようとすれば大変ですが、MIndでは、送りがなは無視して語幹だけを処理して逃げています。ですから、以下のような書き方ができます、()が命令や実行番地、リテラルになります。

(財布)に (500)円を (追加)する

まあ、これだと「追加しない」としても追加してしまうのはご愛敬ですが、追加しないなら書かなきゃいいだけですからね。ただ、これを

ADD 500 TO PURSE(COBOLですね)
とか
PURSE = PURSE + 500(FORTRANやC)

と書くのと、どちらを選びますか。

3 あり得ないわけではないことはわかると思いますが、キーボード入力のオーバーヘッドを受け入れてまで普及することはないでしょうね。
漢字入力にしても、実際には一番ストロークのの多い(そういう意味では効率の悪い)ローマ字かな変換が一番普及している状況ですからね。もっとも、一番効率のいい(プロ御用達の)2ストローク入力やオアシスの入力を使っても英文でのプログラムにはかないません。
英文キーボードでの入力に太刀打ちできる入力メソッドが登場しない限り、2バイト文字がプログラミングの主役になることはないでしょう。

追加しておくとプログラマに限らず人間というのはかなり保守的です、ローマ字入力が主流なのもそうですが、英文キーボードがより高効率のものがいくつも提唱され、本当にスピードを求めるプロフェッショナルな場面(速記など)では採用されているにもかかわらず、わざと入力速度を遅くした(タイプライタのバーがもつれないように)QWERTY配列が滅びないのもそのひとつです。
そう考えると定着してしまった英語のプログラミングは滅びないでしょうね。
    • good
    • 0
この回答へのお礼

前回も回答ありがとうございました。
今回の丁寧な回答でわからなかった箇所がよく理解できました。本当にありがとうございます!

今書いている本の中で、汎神教と一神教(キリスト教)の文字に与える影響と違いを考察しているところです。恣意的かもしれませんが、古代ギリシャ文字をベースとする英語は2元論的表現を多く持ちます。英語文化圏の宗教のシンボル、十字架がよい例で縦と横のクロスからできています。ビットつまり0と1にアナロジーしています。論理の飛躍かもしれませんが、コンピュータ創出の背景にキリスト教の思考方法が内在しているように思えます。

お礼日時:2005/06/03 11:50

1.多くの人に使ってもらうためにはキーワードは英語ベースの方が有利です。

例えば、サンスクリット語ベースのとても優れたプログラミング言語があったとして、仮に日本語に翻訳されたマニュアルがあったとしても、それを使うためにはサンスクリット語の辞書もいるし、サンスクリットのフォントやIMEも要ります。

2.文字の違いは昔ならともかくいまどきはほとんど差はありません。
アラビア数字じゃなくて漢数字(壱万参=10003)とかローマ数字(XXIV=24)とかを使うのはアラビア数字を扱うよりちょっと難しいですが、プログラミング入門書の上級練習問題レベルでしょうか。言語を作る難しさの中では無視出来る範囲の違いです。

3.英語ベースの言語も、キーワードが英語由来なだけです。1つの言語のキーワードは有限個(多くて数十個)ですから、表意文字で置き換えても言語を作る難しさは変わりません。

「多数の国の人が参加する国際会議ではなぜ英語を使うのでしょうか?」と同じような質問・答えだと思います。

ちなみに、
「英語以外のコンピュータ言語の場合、オブジェクトコードに変換するために数段階の変換-つまり英語に-がなされるので複雑になり、処理速度も遅くなるようです。」
は誤解です。そういう作り方も出来ますが、そうで無い作り方も出来ます。英語ベースの言語でも簡単に作るためにいったん別の言語に翻訳するものもあります。
    • good
    • 0
この回答へのお礼

回答ありがとうございました!

お礼日時:2005/06/05 09:32

1,2.


7ビットで表せるような限られた種類の文字を扱えばいいのですから、簡単だからですかね。
3.
現在のマルチバイトをちゃんと扱える言語では、変数などに漢字を使えます。プログラムの予約語などにも漢字を当てはめて言語自体を作成することは、長くなることを除けばそれほど問題になるとは思えません。
しかし、マルチバイト文字を入力するには、
例えば、ローマ字入力の場合
kanjinohennsuuなどと入力して変換キーや文節移動キーを押して確定するのであれば、1つの意味の言葉を入力する時に、入力するキーが増えてしまいます。
同じ意味を英語などのアルファベットのワードを使えば、大抵の場合タイプが少なくて済みますから、そういうことがマルチバイト文字の言語を広めにくくなっていると思います。
    • good
    • 1
この回答へのお礼

わかりやすい説明ありがとうございます。
マルチバイトだと字数が増えて手間がかかるのですね。

お礼日時:2005/06/02 21:27

>1.コンピュータ言語は、なぜ英語なのでしょうか?



コンピュータが米国で発達したものだからでしょう。
しかしコンピュータだけを特別に考える必要はないと思います。柔道の技の名前はなぜ日本語なのかというのと同じです。

>2.ローマ字、アラビア数字は機械語に直すとき、処理しやすいのでしょうか?
>3.漢字など表意文字は、コンピュータ言語としてあり得ないのでしょうか?(補足:コンパイルしにくい?)

自然言語とプログラミング言語を同列に考えているのですか?
すくなくとも英語の文章を機械語に翻訳できるコンパイラは存在しないと思います。
単に予約された単語や新たに追加できる単語がアルファベット等でなければならないというだけの事で、言語というより数式のようなルールがあるだけです。

それらを日本語で記述する言語があったとしても、漢字変換をいちいちやらなければならないので、日本人からも支持されないでしょう。
式 a=b*2 を、アはイ掛二 と書いても、文字が変わっただけだです。全く意味がないです。

今時Unicodeなどを扱える言語は珍しくもなんともありませんから、ASCII文字が処理しやすいなんて事は特に無いと思います。

この回答への補足

VBしかさわった事がないので、私自身CPUにたどり着くまでの全体の流れが文章上でしか理解できていません。
>すくなくとも英語の文章を機械語に翻訳できるコンパイラは存在しないと思います。
コンパイラは、ソースコードをオブジェクトコードに変換するソフトと理解していたのですが。英語(数式含む)を機械語に変換(つまり翻訳)。この理解は間違っているのでしょうか?

補足日時:2005/06/02 12:42
    • good
    • 0
この回答へのお礼

回答ありがとうございました。
プログラミングを知らない人間にとって、ゼロから一つの世界を構築するプログラミング技術は、魔法みたいです。適切なアドバイスありがとうございました。

お礼日時:2005/06/02 12:49

1.言うなれば業界標準ということでしょう。


  英語圏が最先端を行く限りは業界標準は英語になると思います。
  それに加え、アルファベットがプログラミング言語に
  向いていると言うのも大きいと思います。
  ほとんどがA-Z、0-9の組み合わせで表現できます。

2.アルファベットとアラビア数字は機械語に
  直しやすいと思います(日本語と比較して)
  また、人間にも理解しやすいと思います。

3.完全に日本語のプログラミング言語もあるようです。
  コンパイルしにくいかどうかと言われれば、
  ややしにくいのかもしれませんね。
  コンパイル自体はともかく、コンパイラを作るのが大変そうです。
  当然ですが、必要な容量は大きくなります。

別の観点からも、やはり日本語でのプログラミングは
色々と難が有りそうです。
例えば、漢字を使うとなればコンパイラも相当な規模のになるでしょうし、
コンパイル自体も重い処理になるでしょう。
(漢字を解釈しなければならないため)
かといって、ひらがなまたはカタカナで書けば
とても読みにくい、メンテナンス性の低いプログラムになると思います。
また、タイピングにしてもローマ字入力するのであれば、
ほぼ一文字に2タイプが必要になりタイピング数も倍増します。
まあ、かな文字入力にすればいいのですが・・・。
そういった、「扱いやすさ」で言えば英語ベースの方が
プログラマとしても助かるのではないかと思います。

ちなみに、プログラミング言語は英語とも違うと思いますよ。
英語がベースですが、文法も命令語も厳密には独自だと思います。
    • good
    • 0
この回答へのお礼

わかりやすい説明ありがとうございます。
「言語の歴史」について書いているところで、コンピュータ言語も論及しようかとか考えましたが、プログラミングの知識がないもので皆様のお力をお借りしました。ある程度流れが理解できました。本当にありがとうございます。

お礼日時:2005/06/02 12:21

ASCIIは7ビット(2進数で7桁)だけです。


他の文字を使うと扱わなければいけないデータ量が増え、取り扱いが難しくなりますし、処理速度が遅くなります。
(日本語を扱うには16ビット必要です。半角カタカナなら8ビットで済みますが、それは表音文字ということになりますね。)

一度だけコンパイルすれば実行形式のファイル(ソフト)が出来るプログラミング言語なら、上記のことはあまり問題にならないかもしれませんが。

プログラマーの慣れ、新しい言語を作る手間、新しい言語を作って割に合うか(普及するかどうか)などを考えると、どうしても英語が基本にならざるを得ないと思います。
    • good
    • 0
この回答へのお礼

早速の回答ありがとうございます。
英語がデータ量からもプログラミングしやすい言語だということがわかりました。

お礼日時:2005/06/01 21:45

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!