現在、非常に多くのプログラミング言語が存在していますが、なぜ一つの言語に集約しないのでしょうか?
組み込みならC、Java、WebならPHP、Ruby、Javascript、ゲーム開発ならC#、C++のように使い分けがなされていますがすべての用途を一つの言語でまかなおうという動きがないことに疑問を覚えます。
学習コストも下がるし、単一の処理系で多様な目的を実現できたりといいこと尽くめな気がするのですが……
気になる質問をクリップする
クリップした質問は、後からいつでもMYページで確認できます。
またクリップした質問に回答があった際、通知やメールを受け取ることができます。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。

回答21件
0
ベストアンサー
ナイフと砥石さえあれば究極的には大工仕事は何でもできるのに、斧や鋸や鉋などがいまだに存在し単一に統合されないのと同じような理由だと思います。無理やり統合しようとしても十得ナイフのようになってなかなかうまく行かないんじゃないでしょうか?
様々な用途で統一的なものを用意した場合、メンテナンスも大変です。
Webのセキュリティ関連に問題があったから修正した。などでも全体のバージョンが上がるように思います。
例に挙げられたことは大体Cやアセンブラでできますが、非常に工数が大きく煩雑になってしまいます。
逆に各言語はそういう状況から、スコープの狭い作業に特化する形で産まれてきたのではないかと思います。
投稿2015/07/28 13:56
編集2015/07/28 13:57総合スコア2068
0
すべての用途を一つの言語でまかなおうという動きがないことに疑問を覚えます。
昔ありましたよ。50年前。
https://ja.wikipedia.org/wiki/PL/I
それまでの三大言語を統合して、当時コンピューターが使われていたすべての用途に適した言語でした。
その後、コンピューターが使われる範囲が拡大し、またプログラミング技術の発達で新しいパラダイムが出来て、それらに対応しきれずに今に至っています。
いまだと変化が早いので、5年前に使われていなかった分野でのコンピューター利用が盛んになったりして、「すべて」の用途がどんどん広がっています。
別の理由としては、「何が良い言語か」についての共通認識が無いので、統合が無理というのもあります。
例えば、「動的型付けでないとオブジェクト指向はあり得ない」という人と、「静的型付けでないと効率的な開発が出来ない」という人の両方が満足する言語は作れません。オプションによって切り替えるなどするとしても、それはもうそれぞれ別の言語ですね。「関数型」と「手続き型」というのもありますね。
投稿2015/07/28 14:19
総合スコア86309
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
0
これはあくまでも私見ですが、非常に多くのプログラミング言語が存在している背景にはいくつもの要因があると思います。
そもそも、新たな言語を生み出すのには相当の労力が必要だと思いますが、それでも敢えて新たな言語を生み出すからには、目の前の問題を「より早く」「より確実に」解決したいという強い思いがあるからではないでしょうか?
一つの言語に集約されれば、確かに「全体としての」学習コストが下がるだけでなく、色々な面で経済的になると思いますが、現実的には今この瞬間にも新たな言語が生み出されているかもしれません。
自分が思いつく要因としては、
0. 同じ問題でも解決へのアプローチはひとつではありません。しかも、どのアプローチにも一長一短があり、どれが一番優れているとは言い切れないケースも有ります。
0. 解決しなければならない問題が益々複雑になり、対象となる分野も広がっています。
0. 実装の容易さ(コーディングし易さ)とテスト&デバッグのし易さは必ずしも比例しません。
0. 表現力が高く扱いやすい言語処理系の処理速度が速いとは限りません。むしろ処理が遅い場合が多いです。
0. 何でも出来る言語処理系が使いやすいとは限りませんし、必ずしも学習コストが低いわけでもありません。場合によっては、目の前の単純な問題を解決したいだけのために、わざわざ『完璧な』言語を時間を掛けて『学習』しなければならない、というようなことも起こり得ます。
例えば、十徳ナイフがあれば一通りの作業はこなせるでしょうが、だからといって刺身包丁が不要になるかというとそうではありません。一流の料理人が何本もの包丁を使い分けるにはそれなりの理由があるのと同じように、プログラミング言語にも『適材適所』があるということです。
これは何にでも当てはまるのではないでしょうか?
たとえば、OSだって色々ありますし、一口にLinuxと言っても色んなディストリビューションがあります。
それぞれに一長一短があり、だからこそ自然淘汰されてどれか一つに集約されるということがありません。
CPUのアーキテクチャだってそうではないでしょうか?
今やIT関連の知識や技術はあまりにも多岐に渡るので、全てを網羅しようとするのは現実的ではありません。
同様に、すべてのプログラミング言語に『精通』しようとしても無理があります。
ですから、たくさんの言語があることを嘆くよりも、まずは何か一つ、得意な言語を身につけることが最も重要だと考えます。
その上で、各言語の生い立ちに目を向け、どの言語が別のどの言語から派生したかに注目すると、文法が似ていたり、それぞれの特徴が見えてくるので、精通しているとは言えなくてもある程度読み書き出来る言語が増えてくるのではないでしょうか?
すっかり長くなってしまいましたが、自分はそのように捉えて『ゆったりと取り組む』ことにしています。
さもないと、精神衛生上あまり良くないので。
投稿2015/07/28 14:54
総合スコア5936
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
0
初めまして。
それぞれの言語に向き不向きがあるからではないかと思います。
確かにC言語ならほとんどの事ができてしまうでしょう。
JavaはVMありきですし。
しかし、Javaでは簡単に行える処理をあえてC言語で記述すると意外と面倒だったりします。
書き手にもよると思いますが、可読性も落ち、バグの温床になりかねません。
そこで得意分野をもつ言語が出てきたのかなと思います。
また、現在ではブラウザでもいろいろな言語を動かそうとWeb Assemblyとのプロジェクトもあります。
GoogleやMozilaなどの開発者がWebアプリでもネイティブ並みの速度を出そうとのプロジェクトです。
このプロジェクトではまず、C言語がブラウザで動くようになるようです。
1つの言語でできる範囲がどんどん増えてはきていると感じます。
現在IoTなどの流れでPythonなどで組み込みのプログラミングとかできますし。
投稿2015/07/28 13:51
総合スコア233
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
0
たくさん、回答がありますので趣向を変えて、
簡単にかつ独断で各言語が作られた背景・目的を書きます。
JavaやjavascriptまたはPHPは意図的に機能を削っています。
なんでも出来る言語はデメリットもあるのです。
Cだとコンパイラが簡単であることを目的に作られました。
C++は、Cにクラスベースのオブジェクト指向言語を追加した言語です。
JavaはCの人に馴染みむ記法でC++の煩雑なメモリやポインタの管理を自動化、そのせいで重いといわれま
した。また、家電を含むあらゆるマシンで動くようにバーチャルマシンを導入しました。
javascriptはブラウザ上で動く言語で、ブラウザが動かすためコンパイルなしのスクリプト言語として作られました。
PHPは言語と言うより動的にHTMLを出力するツールとして作られました。
C#はJavaとほぼ同じ思想で作られた。または、MicrosoftがJavaを真似したと言われている言語ですが、家電などはめざしませんでした。また、Javaが捨てた手動でのメモリ管理も出来ます。
Rubyは、作者が半ば趣味的に各言語のいいとこ取りで何でもかんでも取り込んで作りました。
言語を作るのは一部のプログラマに人気があるらしく、なんの役にたてるつもりもないジョーク言語がかなりあります。むしろ言語作りたいだけなのかもしれません。
投稿2015/07/28 16:08
総合スコア2884
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
0
皆さんがおっしゃるようにそれぞれの言語に向き不向きがあり、必ずしもいいことずくめではありません。
また、もし言語を1つに統合するとなった場合、
どの言語にするのか?
新しく作るとなったら、どのような言語を作るのか?
という問題もあります。
既存の言語にする場合、どのように決めるかも問題です。プログラミング言語にも当然製作者や権利者がいます。
新しく作るとしても、世界中のプログラマー全員が納得する言語を作るなど、ほぼ不可能です。
どちらにしろ、そんなことをしては、現在プログラマーが持っている言語に関するほとんどの知識が役に立たなくなってしまいます。
言語統一に、それ程の荒療治をする価値があるのかどうかですね。
投稿2015/07/28 14:55
総合スコア1156
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
0
現在、非常に多くのプログラミング言語が存在していますが、なぜ一つの言語に集約しないのでしょうか?
新たに統一言語を作ったとして、すでに他の言語を習得している人たちからすると、新たな言語を学ぶのは学習コストが高すぎるというのはあるでしょうね。
組み込みならC、Java、WebならPHP、Ruby、Javascript、ゲーム開発ならC#、C++のように使い分けがなされていますがすべての用途を一つの言語でまかなおうという動きがないことに疑問を覚えます。
過去にそういう動きがなかったわけではないです。
たとえば、アメリカの国防総省だったかで、外注したプロジェクトも含めてすべてのソフトウェアをADAという言語に統一するという動きがありました。
ADAはその時代にすれば、すぐれた言語だったと思いますが、残念なことにオブジェクト指向が含まれていなかったと記憶しています。
なぜオブジェクト指向が含まれていなかったかといえば、その時代にはオブジェクト指向が存在しなかった、あるいは、一般的ではなかったからです。
このことからわかるのは、現時点で理想のプログラミング言語を作れたとしても、将来的に新たなパラダイムが言語に求められるようになった場合に対応できなくなります。
学習コストも下がるし、単一の処理系で多様な目的を実現できたりといいこと尽くめな気がするのですが……
単一の処理系で多様な目的に対応するのは難しいと思われます。
なぜなら、「多様な目的」は多様すぎて、相反する目的も含まれてしまうからです。
たとえば、
・ハードウェアの機能をフルに使いたい
という目的と
・なるべく短いコードで複雑な処理をしたい
という目的を1つの言語で賄おうとするのは難しく思います。
上記2つの目的を1つの言語に押し込むことができたとしても、
それぞれの目的にあった言語の使い方はかなり解離しているので、
おそらく自分の目的にあった使い方だけを学ぶならそれなりの学習コストで済むでしょうが、
両方の目的にあった使い方を学ぼうとすると、それぞれの目的にあった知識・パラダイムなどが
違いすぎるので、学習コストは目的別に作られた2つの言語を学ぶのと大差ないのではないかと思います。
つまり、目的が違う言語を1つにまとめたとしても学習コストが下がることはほぼないと推察します。
あと余談ですが、言語を作成する人間には2種類いまして、
1つは「使うために言語を作る人」で、
もう1つは「作るために言語を作る人」です。
前者は今使っている言語に不満があると言語を作ったりするのですが、
後者は「こんな言語を作りたい!」とふと思って作るだけなので、
たとえ統一言語が作られたとしても、好き勝手に言語を作り続けると思われます。
大勢には影響ないでしょうが、言語の種類が増えるのを止めるのは、
後者の人間が多少なりとも存在している限り無理でしょうね…。
投稿2015/08/04 08:57
総合スコア314
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
0
現在、非常に多くの ** が存在していますが、なぜ一つの ** に集約しないのでしょうか?
** にはいろいろなものを当てはめることができそうです。
だとえば、
通貨, 宗教、
電子書籍のフォーマット, ゲーム機,
学校の校則, 学校で使う教科書, 学校のカリキュラム
紙飛行機の折り方 / 飛ばし方
米の炊き方、
自転車のデザイン、
テレビのリモコン
陸上競技場のデザイン
コンピュータでつかう文字のフォント
C言語での インデント、{ の置き方 のスタイル
いずれも歴史的経緯があったり、目的にあわせて分化していたりなど理由もさまざまです。
コンピュータを操作する言語も、それぞれ 作成された背景があります。
投稿2015/07/29 22:13
総合スコア22328
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
0
何故プログラミング言語は一つにならないのでしょうか?
なぜ言語を統一できないのか? なぜバベルの塔(統一言語)は崩壊するのか?
かんたんに言うと、言語にはトレードオフがあるから、統一化できないのです。
これを分かりやすくするため、自動車のたとえで考えてみましょう。
大量の荷物はダンプやトラックで運びますし、
いっぽう郵便配達や食べ物屋の出前は(原付)バイクで行いますね。
馬力があって大量に運べることと、燃費が安くて小回りが利くことの、
両方をいっぺんに満たす車両はありません。これがトレードオフです。
まあ両方を足して2で割って、軽ワゴンでも両方こなせますが、
どちらにしても中途半端で、やはり特化した車両には負けます。
言語に戻って考えると、大型車両のような言語がC++やJavaで、
軽自動車のような言語がPHP、Ruby、PythonなどのLLです。
それらは開発速度と実行速度などのトレードオフがあるので、
やはり使い分けられています。つまり言語も適材適所だと思います。
投稿2015/07/28 21:03
総合スコア5592
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
0
確かにプログラミング言語は多いですが、新しい言語の誕生の陰には、消えてなくなる言語もたくさんあります。コンピュータの処理速度の進化に合わせて誕生したものや特化したもの。より使いやすく進化したもの。様々です。特に、スクリプト言語(インタプリタ)は昔の低速コンピュータではとても使い物にならなかったでしょう。ハードウエアの進化に伴いソフトウエアも進化する必要がありました。速度だけではなくメモリ容量や記憶容量などハードウエアはすさまじい進化を遂げています。今後もプログラミング言語は新陳代謝を続けていくと思います。
投稿2015/07/28 14:05
総合スコア1151
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
0
OSも携帯電話もスマートフォンも
そうですけど、単純に
『作りたいから』
だと思いますよ。
アニメとか映画とかとも同じかもしれません。
かっこよく言うと、『人間は夢を見るから』かな。
投稿2015/08/04 06:09
総合スコア127
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
0
英語、日本語、韓国語、中国語など、、世の中には色々な言語があります。
それは、なんででしょうか?
効率の良さ、言語の優れ度などは関係なく、色々な人が考えを持って作ったので、色々な言語が生まれたと思います。
ただし、プログラム言語は、根本的にはどこかは似たり、同じ部分があるので、
全ての言語を勉強する必要はないと思います。
投稿2015/08/04 03:58
総合スコア85
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。

0
なぜ複数生まれたのか、という問いに対しては、他の回答者さま方に譲ります。
既に複数ある言語を1つに統一するとしたら、その1つを何にするかを決めなければなりません。
その決め方について考えてみました。
①何らかの得点基準を設けて採点し、最も得点の高いものを採用する
パラメーターが多いだけでなく数値化するのが難しいので、そもそも得点基準を定めることが難しそうです。
▼作るソフトウェアの種類
- OS
- Webアプリ
- ゲーム
- ハードウェアの制御
▼学習
- 難易度
- 学習曲線
▼利用者の多さ
etc...
②利用者の多いものを採用する
何らかの理由で1つのOSが圧倒的なシェアを獲得し、そのOSでは1つの言語しか使えないとしたら、それを使わざるを得なくなります。
つまり、自然言語における英語のような存在になるイメージです。
それでも結局は方言のようなものは生まれてくる可能性はあると思いますし、宗教的・政治的な問題があるので完全に1つにすることは難しいでしょう。
③すべての機能を併せ持った ** 最強の ** 言語を新しく作る
何を以て最強かという点で、①と同じ問題があるため難しそうです。
...たいぶ長くなってしまいましたので、この辺でやめておきます。
投稿2015/07/30 00:13
総合スコア9396
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
0
もしも素晴らしいパーフェクトな言語が開発されて「これから新しくプログラム作る時はこの言語を使いましょう」と(法律で?)決められたとして、「今までのプログラムはどうするの?」という問題が出てきます。
数値解析やスーパーコンピュータの世界では、最古の高級言語Fortranが使われています。
50年前に書かれたプログラムが(チューニングなどされてはいるでしょうが)いまだに使われていたりします。
それらを新しい言語に置き換えるとすると……
博士クラスの数学のスキルが必要なものもたくさんあるし…
歴史が長いので量がものすごくたくさんあるし…
「やっぱりこのまま使いましょう」ということになって、「使い方を正しく理解したい」とか「ちょっと機能追加したい、仕様変更したい」と思うとFortran勉強していないと無理ですね。
「過去の資産」は膨大で偉大なのです。
投稿2015/07/29 03:13
総合スコア229
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
0
言語が一つにまとまらないのには多様性をもって様々な困難に対応したり、問題を洗い出している時期にいるからではないでしょうか。以下は私の考えたたとえ話です。
プログラミング言語は「障害物競争」を走っているような状態と考えられます。この「障害物競争」はとてもたちが悪く、ルールや環境、果てはゴールが複数設定されるなど、スタート時に最新状態を想像できない無茶苦茶なものです。
このレースの救いは協力プレイができることです、すべてのゴールに到達するためには、たくさんの言語を集め、各言語自身を高めたり、障害に対する攻略法を他の言語へ伝えたり、時には二手に分かれることもあります。残念ながら力尽きた言語や力を取り戻した言語もあります。
いずれ、すべてのゴールに達しすべてのゴールを一つの言語が登場することで単一の言語になるのではないでしょうか。(ただし、関係する人の主義主張や利害等々が邪魔をすると思いますが…)
投稿2015/07/28 18:24
総合スコア18157
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
0
目的が違えば、目指す方向も違うから多様な言語、フレームワークがあると思うのですが。
おそらく、大昔のC言語はその1つの言語に絞ろうとしてできた言語だったと思います。
でもそれだと力不足だったらC++だったり、Javaだったりが出てきたりしてるわけです。
単一の処理系で多様な目的を実現できたり
Javaだったり.net系だったりはこの目的で仮想マシンで動くような仕組みだったはずです。
言語の学習コストについては、個人的には、C言語系(手続き系)、C#系(オブジェクト指向系)、SQLの3つを抑えとけばあとはちょっとした応用と気合で頑張れます。たぶん。
投稿2015/07/28 13:57
編集2015/07/28 14:00総合スコア148
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
あなたの回答
tips
太字
斜体
打ち消し線
見出し
引用テキストの挿入
コードの挿入
リンクの挿入
リストの挿入
番号リストの挿入
表の挿入
水平線の挿入
プレビュー
質問の解決につながる回答をしましょう。 サンプルコードなど、より具体的な説明があると質問者の理解の助けになります。 また、読む側のことを考えた、分かりやすい文章を心がけましょう。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2015/07/28 17:59 編集