web-dev-qa-db-ja.com

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

このシナリオを考えてみましょう:

  • プログラマーは、問題を解決するための言語を作成します。

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

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

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

これが実際に発生しているインスタンスはありますか?

別の言い方をすると、言語の意図された目的は、実際にどのように使用されるか、またはそれが人気になるかどうかに関係がありますか?言語が宣伝された目的を持っていることはさらに重要ですか?

70
Jon Purdy

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

118
aufather

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

111
aufather

Perlに対するラリーウォールの当初の意図は、「 レポートの処理を容易にするための汎用Unixスクリプト言語 と- man page は言語を次のように説明します:

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

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

神々が宇宙を作り出した言語 であるため、Perlはそれ以来長い道のりを歩んできました。

enter image description here

32
yannis

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

32
Mud

JavaScriptもこの質問に当てはまると思います。ネットスケープ時代に戻ったブレンダンアイヒが、将来のバージョン LiveScriptを使用して、今日のいわゆるWeb "アプリケーション"を作成します。

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

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

28
Andreas Grech

アーラン。エリクソンの研究室で長い時間前に発明されたのは、おそらくスイッチングおよびアクセスデバイスのライン向けのテレフォニーアプリケーションを開発することです。現在では、並行性の興味深い概念を備えた有望な汎用動的言語に進化しています。

将来、電話会社の世界からITの世界に行き渡り、そこから進化する言語が増えれば、それはプロトコルのモデリングと検証のために最初に設計された言語です。

19
UUlum

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

15
Nerevar

[〜#〜] php [〜#〜]元々は個人のホームページを意味していましたが、今日は少しだけ使用されていますより大きなWebアプリケーションも同様です。

14
Jaap

VBScriptがマルウェアを書くためのものではなかったと確信しています。

14
user16764

コードをより一般的なものにする方法として最初に設計されましたが、C++のテンプレートメタプログラミングは完全に機能していることがわかりました。

13
Jason McCarrell

BASICも有名なケースです。名前(Beginner's All-purpose Symbolic Instruction Code)は、その起源を学習者の言語としてほのめかしていますが、それ以来かなり成長しています。

11
MSalters

[〜#〜] vhdl [〜#〜]およびVerilog(別名VerilogHDL)は本来describeデジタル回路およびコンポーネントを対象としていました。これらは、ドキュメントの形式として、およびコンポーネントの動作をシミュレートするために使用されました。その後、Synopsysなどは、これらの記述(のサブセット)をゲートのネットリストに変換できるテクノロジーを開発しました。これを使用して、実際のハードウェアを作成できます。

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

11
Philippe

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

10
Ryan Culpepper

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

7
Ranger

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

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

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

3
Konrad Rudolph

本来の目的から転用されていない人気の言語はないと思います。 Cでさえもともと移植可能なOS(Unix)を作るために書かれました。

特定のターゲットを考慮せずに真に汎用的なプログラミング言語を作成しようとすると、拘束力と集中力の欠如により、惨めに失敗する可能性があります。

2
Bill K

[〜#〜] ada [〜#〜] —アビオニクスのDoD契約に基づいて設計されました。そのアプリケーションではまだ使用されていますが、リアルタイムビジネスミドルウェアなどでも人気があります。

2
vartec

「言語の意図された目的は、それが実際にどのように使用されるか、またはそれが人気になるかどうかに関係がありますか?」

言語の意図した目的が実際の使用と人気に大きな影響を与えるとは思いません:革新的で柔軟性があり用途が広くなるように最初から設計されていたが、非常に専門的な垂直市場-たとえばエッフェル。 OTOH、Basic、Pascal、Cなどが、限定された特定の目的のために最初に設計されたものの、何年もの間風景を支配していました。

IMOマーケティング/財務およびsupportの検討は、特定の言語の普及と拡大において常に主要な役割を果たしてきました。例:Borlandは、TurboPascalとパッケージ、マーケティング、サポートを提供します。 MSはC#とパッケージを思い付き、市場に出し、サポートします。その結果、これらの言語が普及し、サードパーティのツール業界が急増し、ますます多くの開発者や企業が勢いを増しています。

しかし、ここ数年、オープンソースの言語とツールは動的に変化しており、言語はマーケティングよりも「メリット」に基づいて人気が高まっています。たとえば、Ruby、PythonやPerlなどです。しかし、それは理由ではありません。発明者の「意図」は、言語が拡張と便利な使用の可能性に組み込まれているためです。

2
Vector

Ruby は詩を書くための言語として設計されたと聞きましたが、その中には非常に美しいコードを書くこともできることがわかりました!

私はあなたとまっすぐです。泣いてほしい。涙を流して。優しくささやくように。この本は、Rubyの感動的なガイドです。つまり、コードが非常に美しいため、涙が流されます。それは、この本の腕の中で翌朝目覚めさせる勇ましい物語と地味な真実を意味します。

1
Tinco