意図された目的以外の何かのために非常に人気のある言語はありますか?


70

このシナリオを見てください:

  • プログラマーが言語を作成して問題を解決します。

  • その後、この言語をリリースして、他の人がそのような問題を解決できるようにします。

  • 別のプログラマは、実際にはいくつかの異なるカテゴリの問題の方がはるかに優れていることを発見しました。

  • この新しいアプリケーションのおかげで、言語は主にそのアプリケーションで人気になります。

これが実際に発生している例はありますか?

別の言い方をすれば、言語の本来の目的は、実際にどのように使用されるのか、それが一般的になるのかということと関係がありますか?言語に宣伝された目的あることさえ重要ですか?


4
あなたのHTMLの例は、あなたが探しているものに実際には収まらないようです。技術文書は他の文書とそれほど違いますか?HTMLの中心的な目的は、ドキュメントが相互に参照するための簡単な手段を提供するために、1989年と同じです。私見HTMLは、あなたが実際に探しているものの正反対です。
ヤニス

5
回答の長いリストを検討します。多分反対の質問はもっと面白いです:それは意図された目的のためにただ(人気の)言語が使われますか?
-Jaap

@ヤニス:良い点。これは最良の例ではなく、どちらの方法でも実際に議論できます。編集して削除します。
ジョンパーディ

@Jaap:同じことを考えた!
レオンブロ

2
これは間違っている可能性がありますが、ほとんどの言語は作成者が意図したものには使用されていないと確信しています。これの大きな理由は、部外者がそれが何のために使われるべきかを知らないからだと思う。
ケネス

回答:


118

Lispの。マッカーシーはもともと論文でLispを指定して、チューリング完全な言語を構築するのに十分な簡単な表記法で十分であることを示しました。彼は、Lispをマシンコードで実装できることに驚いた(Steve Russelが最初のLispインタプリタ実装を行った)。LispはAIプログラミングに広く使用されています。


70
+ 1、Lisp プログラミング言語になることを意図していませんでした!私はあなたがそれを越えることができるとは思わない。
キリアンフォス

7
OTOH、LISPはプログラミングと数学の境界で使用するために設計されたと主張できますが、それはそのままです。
MSalters

1
McCarthyはLispをクラスの例として使用し、そのためのコンパイラを書くつもりでしたが、ある日クラスでeval関数を手動でコーディングするとインタプリタが実装されると述べましたが、もちろん「誰も実際にそれをやりたいとは思わないでしょう」
スティーブンA.ロウ

Lisperの友人は、AIでこれ以上使用されていないことを教えてくれますが、それでもあらゆる場所にアプリケーションがあります
グレイフェード

111

Javaはもともと組み込みシステムのプログラミングを目的としていました。ウィキペディアから「Javaはもともとインタラクティブなテレビ用に設計されました」。しかし、アプリケーションおよびWebプログラミングで非常に人気がありました。


4
ほら 私はこれを考えていなかったとは信じられません。それは間違いなく正統な例です...しかし、それは私がまだ驚かないと言うことではありません。
ジョンパーディ

しかし、Javaは実際に組み込み作業用にリリースされたことがありますか?
マーチン

設計Javaの重要な設計要素は、信頼できないコードを実行する能力でした。

13
話はさらに悪化しています。A)組み込みシステム向けでした。B)しかし、ウェブページに埋め込むことができるまで、光を見たことはありません。C)「エンタープライズ」Webアプリケーションに使用されるまで敬意を払わなかった。D)最終的に多くの電話OSに組み込まれた。ハードウェアコントローラーとしてではなく、代わりにGUIプラットフォームです。
ハビエル

OCAPまたはTRU-2WAY見上げる-今10年以上のためのセットトップボックスにそれを取得するためのプロジェクトがありました
ビル・Kを

32

Luaは主に設定言語として設計され、最終的にはゲーム用の最も人気のあるスクリプト言語としてニッチを見つけました(それは、小さくて、高速で、強力で、移植性があり、ユーザーフレンドリーな構文で簡単に拡張および埋め込みできるためです)。それを使用する最も人気のあるゲームであるWorld of Warcraftは、実際には設定にも使用せず、代わりにXMLを使用します。


...そして今ではリアルタイム処理アプリケーションに、より多くの使用を見つけることだLuaJITと
ハビエル


@lukas:「そうでもない」?先行バージョンであるSOLとDELには制御フローさえありませんでした。それらは純粋に設定言語でした。Luaは、これらの構成言語の拡張機能であり、プログラミングサポートが含まれています。

「Luaは主に設定言語として設計されました」と私はプログラミング言語として言います。
ルカシュマドン

7
おそらく「主に設計された」ではなく、「意図された目的」と言ったほうがいいでしょう。意図した目的は、 SOLとDELが使用されていたのLuaを使用することでした。これらはユーザーがプログラミング機能を要求し始めた構成言語でした。Luaはそのニーズを満たすために作成されました。著者自身が述べたように、「ゲームでのLuaの幅広い採用は私たちにとって驚きでした。ゲーム開発をLuaのターゲットとして持っていませんでした。」それは、まさにOPが探していたものです。

32

perlに対するLarry Wallの当初の意図は、「レポート処理を容易にする汎用Unixスクリプト言語」であり、マニュアルページには次のように記述されています。

Perlは、任意のテキストファイルをスキャンし、それらのテキストファイルから情報を抽出し、その情報に基づいてレポートを印刷するために最適化されたインタプリタ言語です。

そしてもちろん、manページは、PerlがPractical Extraction and Report Languageの略語であることも示しています(実際の名前は、Wallが既存のPEARL言語を発見したときに変更された元の名前Pearlのスペルミスです)。

それ以来、Perlは長い道のりを歩んできました。それは、神が宇宙を作り出した言語だからです。

ここに画像の説明を入力してください


23
それを修正する必要があります:病理学的に
リチャード

3
省略しない方法は複数あります!非常に

Perlの頭字語は実際にはバックロニムです。
CanSpice

1
@DarkTemplar私がそれを解釈する方法は、perlがほとんどどこでもそれを忍び寄っていることです。謙虚な始まりから、perlは非常に人気のあるWeb言語、非常に人気のあるスクリプト言語、やや人気のある多目的言語に成長し、その正規表現構文は決定的なものになり、別の言語(php)などを生み出しました。また、質問に対する受け入れられた答えであるlispも参照しているため、2つの言語の関係を(不正確ではあるが)楽しい描写(1つは夢のようなもの、もう1つは実際に使用するもの)だと思いました。
ヤニス

1
@DarkTemplarうん。それは中ですTIOBEインデックスのトップ10。もちろん、TIOBEインデックスを非常に真剣に受け止めているわけではなく、かなり相対的で主観的なものです。しかし、それでも言語の人気の良い指標です。
ヤンニス

28

Netscape時代のBrendan Eichが、LiveScriptの将来のバージョンを使用して、今日のいわゆるWeb「アプリケーション」を作成すると想像したことはないと思うので、JavaScriptもこの質問に当てはまると思います。

JavaScriptは、機能と美しさの両方の点で、単純なフォームの検証と画像のロールオーバーから、オフラインアプリケーションに匹敵する強力なツールに移行しました。

残念ながら、私はまだ多くの人がそれをおもちゃと見なしていると思います。


31
興味深いのは、Webのアセンブリ言語になることです。言い換えれば、他の言語がコンパイルされて実行されるもの。BrendanEichがそれを期待したとは思わない。

3
追加することがあります。クライアント側のスクリプト言語だけではありません。node.jsや
rhinoの

好奇心が強いですが、「クライアント側のスクリプト言語」と「サーバー側の言語」とは何ですか.......?
ダークテンプラー

@DarkTemplar。サーバー側のスクリプト言語がサーバー上で実行され、その出力がブラウザーに送信されます。クライアント側のスクリプト言語がブラウザにそのまま送信され、そこで実行されます。(もちろん、必要に応じて、サーバー側の言語を使用してクライアント側の言語を出力できます。)ほとんどのブラウザーで実行される唯一の言語はjavascriptです。
-TRiG

19

アーラン。かなり前にエリクソンのラボで、おそらくスイッチングおよびアクセスデバイスのライン向けにテレフォニーアプリケーションを開発するために発明されました。今では、並行性という興味深い概念を持つ有望な汎用動的言語に進化しました。

将来、電話会社の世界からITの世界にまたがる言語、さらにプロトコルのモデリングと検証のために当初設計された言語がさらに増えると、興味深いでしょう。


そして、node.jsのインスピレーションの1つではなかったのですか?
-dodgy_coder

これは資格があるとは思わないでください。Erlangがテレフォニーのために発明された理由は、一般的な動的同時実行言語が必要だからです。それはまだです。
アランバルジュー

15

パスカル。プログラミングを教えるために作成されました。


3
へえ、それは多くのことを説明しています…
突く

2
@poke:呪いの、私は知っています。
ネレバル

へへ、私はあなたがそこでしたことを見る。
-Trufa

ねえ、誰かがこの答えを説明してもらえますか?笑。私は初心者です!
ダークテンプラー

@ダークテンプラー:taoyue.com/tutorials/pascal/history.html
Nerevar

14

PHPは元々Personal Home Pageを意味していましたが、今日ではわずかに大きなWebアプリケーションにも使用されています。


18
もちろん、最大のPHPユーザーであるFacebookは、いまだに個人のホームページ市場にいます。
Jaap

3
「PHP / FIは、1995年にRasmus Lerdorfによって作成されました。当初は、オンライン履歴書へのアクセスを追跡するための単純なPerlスクリプトセットとして作成されました。」長い道のりです、ベイビー。
nickf

PHPはいまだにWeb言語ですが、多くのプロジェクトが現在PHP内でHTML文字列を生成するのに対して、PHPはHTML内に小さなスニペットとして埋め込まれることを意図していました。<?phpただし、ファイルの先頭にはまだタグが必要です!
ワーボ

14

VBScriptはマルウェアを作成するためのものではないことは間違いありません。


1
それは少し厳しいと思いませんか。JavaとCにはマルウェアがかなりあります。
ジェレミー

@JChild:コメントから数年が経ちました。しかし、それでも、VBを守ることは非常に奇妙なことでした。
メイガス14年

@Magus VBでもありません。VBScriptです。ご存じのとおり、拡張子が.vbsのファイル。あなたがそれらを見ると自動的に仮定するものはウイルスです。
user16764 14年

13

コードをより汎用的にする方法として最初に設計されたC ++のテンプレートメタプログラミングは、完全なチューリングであることがわかり、今日まで、boostなどのライブラリを通じてC ++言語を大幅に改善するために使用されています。


8
...そして、C ++プログラマーが過度に長いビルド時間で涙を流します;-)
quant_dev

8
そして恐ろしいエラーメッセージ。
DeadMG

11

BASICは別の有名なケースです。名前(初心者向けの汎用シンボリック命令コード)は、学習者言語としての起源を暗示していますが、それ以来かなり成長しています。


24
へー-マイクロソフトは「初心者」を「ビジネス」に置き換え、何百万人も吸った
スティーブンA.ロウ

11

VHDLおよびVerilog(別名VerilogHDL)は、もともとデジタル回路とコンポーネントを記述することを目的としていました。これらは、ドキュメントの形式として、コンポーネントの動作をシミュレートするために使用されました。その後、シノプシスなどは、これらの説明(のサブセット)をゲートのネットリストに変換し、それを使用して実際のハードウェアを作成できる技術を開発しました。

VHDLおよびVerilogは、歴史的な理由からハードウェア記述言語(HDL)と呼ばれます。今日では、実際にハードウェア設計言語として使用されています(同じ頭字語)。


ニースの現実的なモデル駆動型開発
Jaap

@Markはい、VHDLは非常に高速な集積回路、ハードウェア記述言語です。Verilogは完全に異なる言語です。Verilogは、Verilog HDLとも呼ばれます。en.wikipedia.org/wiki/Verilog
フィリップ

2
QHDLはVHDLに非常に似ており、量子コンピューターの回路を記述するために使用されます。私は、その起源からかなり離れた言語が想像することはできません。
マークブース

@Mark Wow、それは興味深い「QHDL」です!Googleは多くの注目を集めています。参考文献はありますか?
フィリップ

1
それについては、ACCU 2011カンファレンスのPaul Blacksの優れた「プログラマ向け量子コンピューティング」セッションで知りました。彼のスライドはaccu.org/content/conf2011/にあります…
マークブース

10

MLは、定理証明を開発およびスクリプト化するための言語として始まりました。定理証明者の「メタ言語」でした。


わかった。これが有効な答えである理由は、その主要なアプリケーションがコンパイラーおよびその他のそのような言語ツールになっていることです(少なくとも私の知る限り)。
ジョンパーディ

6
+1、しかしMLが「大人気」になったと言うのはちょっとしたストレッチ
です。ニキエ

おそらく、しかし、今日の直接的なユーザーに加えて、それはその後に来るほぼすべてのタイプされた言語に影響を与えました。
ライアンカルペッパー

7

C
元々、Unixオペレーティングシステムで使用するために開発されました。しかし、デニス・リッチーが驚いたとしても、この言語はとても人気がありました。
彼の有名な本 Cプログラミング言語で。リッチーは「UNIXオペレーティングシステムの言語としての起源をはるかに超えて広がっている」と述べています。そして、アプリケーション開発で人気のある言語になったとき、彼はどれほど驚きましたか。


11
まあ、それはもともとクロスプラットフォームの方法でシステムと低レベルのアプリケーションを開発するために設計されました。人気にもかかわらず元の目標と一致しているため、適合しません。
ジョンパーディ

3
@Jonまあ、それは一種のフィットです、それは足で自分自身を撃つための最も簡単な方法になることによって、それが目的よりも大きくなったからです。
ヤニス

1
@ヤニス:母、本当。しかし、私は主な目的が完全に変わった言語について尋ねているのであって、単により多くの目的を包含するようになった言語については尋ねています。
ジョンパーディ

私は、Cが難読化されたコードコンテストの主要言語の1つとして人気を博したことを付け加えます。
ピーターG.

オペレーティングシステムを実装するように設計されていませんか?
日光

3

C ++は元々、C ++でのオブジェクト指向プログラミングを容易にするために「クラスを持つC」として設計されました。

テンプレートは、その後のバージョンで提供され、厳密に型指定されたコンテナクラスの実装を可能にします。これらのテンプレートが実際にチューリング完全なコンパイル時プログラミング言語を構成することが後で気づかれました。

その結果、多くのアプリケーションは現在、オブジェクト指向プログラミング言語としてではなく、コンパイル時のポリモーフィズムとメタプログラミングに大きく依存するアルゴリズム駆動プログラミング言語としてC ++を使用しています。


7
ただし、C ++は汎用になるように設計されており、汎用言語として使用されます。
ベンジャミン

@UbiquitéC ++は実際には汎用言語として設計されたとは思いません。むしろ、それが使用されるように設計されたため、異なる目的(しかし、特定のシステムプログラミングで)。しかし、それは複数のパラダイムで動作するように設計されていません
コンラッドルドルフ

実際、マルチパラダイムの性質はその設計に固有のものであり、オブジェクト指向機能をCにボルトで固定するだけで、必要に応じてより手続き的な機能を使用する能力を保持します。
ジョンパーディ

@ジョンOK、私はそれを認めます。ただし、これらの機能には汎用プログラミングとテンプレートメタプログラミングは含まれていません。そして現在、C ++はこれらの機能をサポートする唯一の(そしてほぼ間違いなくメイン)言語の1つです。
コンラッドルドルフ

本当です。地獄、汎用プログラミングのサポートconst私がC ++を使用する2つの最も重要な理由です。
ジョンパーディ

2

ADA —元々は航空電子工学のためのDoD契約の下で設計されました。まだそのアプリケーションで使用されていますが、例えばリアルタイムのビジネスミドルウェアでも人気があります。


5
汎用言語として構築されました。DoDは、使用するさまざまな言語の量を減らすために、すべてに使用できる言語を求めていました。
ベンジャミン

それはかなり陽気なです。Adaは、さまざまな言語の数を減らすことを目的として明示的に作成された言語でした。そのメトリック(「ある目的で設計され、別の目的で使用される」)によって、Adaは別の反言語であるLispでリストの最上位まで投票されるべきです。
ジャレッドアップダイク

2

「言語の意図された目的は、実際にどのように使用されているか、それが普及するかどうかに影響を与えますか?」

言語の意図された目的が実際の使用と人気に大きな影響を与えるとは思いません。最初から革新的、柔軟、多目的に設計された素晴らしい言語がいくつかありますが、非常に専門化された垂直市場-例えばエッフェル。OTOH、Basic、Pascal、Cなどは長年にわたって景観を支配していましたが、当初は限定された特定の目的のために設計されていました。

IMOマーケティング/財務およびサポートに関する 考慮事項は、特定の言語の普及と拡大において常に大きな役割を果たしてきました。たとえば、BorlandはTurboPascalを考案し、それをパッケージ化し、販売し、サポートしています。MSはC#とパッケージを考案し、販売し、サポートします。その結果、これらの言語が人気を博し、サードパーティのツール産業が生まれ、ますます多くの開発者と企業が時流に乗っています。

しかし、ここ数年、オープンソースの言語とツールはダイナミックに変化しており、現在では、Ruby、Python、Perlなど、マーケティングよりも「メリット」に基づいて言語が普及しています。しかし、それは発明者の「意図」によるものではなく、言語に組み込まれた拡張可能性と適切な使用の可能性があるからです。


2

元々の意図から転用されていない人気のある言語はないと思います。Cでさえ、ポータブルOS(unix)を作成するために作成されました。

特定のターゲットを念頭に置かずに真の汎用プログラミング言語を作成しようとすると、拘束力と集中力が不足するため、恐ろしく失敗します。


postscript-ユビキタス(ほぼすべてのコンピューターとプリンター)ですが、グラフィックの印刷にのみ使用されます。ただし、pdf内で使用された場合は再利用されたと言えます。
13ren

1

Rubyは詩を書くための言語として設計されたと聞きましたが、Rubyでもかなり美しいコードを書くことができます!

私はあなたとまっすぐになります。泣いてほしい。涙を流して。甘くwhiきます。この本は、Rubyの痛烈なガイドです。それは涙が流されるほど美しいコードを意味します。それは、この本の腕の中で翌朝目を覚まさせる勇敢な物語と陰鬱な真実を意味します。


2
面白そう。ソースはありますか?
アント、

Rubyのリンクをクリックすると、芸術的な方法でRubyを教えるために書かれた本が表示されます。私の答えは、Rubyを書くことは詩のようなものだと主張するその本に関する冗談です。現実には、Rubyは汎用プログラミング言語として設計されたと言うかもしれませんが、Rubyコードを詩として見ようとする(一部の)人を刺激しました。
ティンコ
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.