プログラミング言語。 仲間はどこへ行くのか。 別のあまり知られていないが非常に強力な言語

プログラミング言語の開発に関する私の観察は、奇妙な行き詰まり感を残しています。 最近、多くの新しい言語が登場しました。 しかし、この分野では進展がありません。 この分野での開発は時間をマークしているようです。 言語の機能は、互いにほとんど異なりません。 変数を入力するフィールドでは、明示的な対立が見られます。

A.

一方では、これらはC、C ++、Pascal、Fortran、Javaなどのデータ型言語であり、他方ではJavaScriptおよびそのクローンです。 JavaScriptでは、タイピングの支持者と反対者が開かれた戦争を繰り広げています。 新しいJavaScript標準により、この言語での入力が強化されます。 プログラミング理論家による強力なタイピングは大きな祝福と考えられています。 類型化が弱い言語は偶然出現しませんでした。これは、言語の作成者の欠陥ではなく、必要なものです。 弱いタイピング言語は書きやすいです。 しかし、私の意見では、変数を宣言し、それらを最新のものとして入力することは、大惨事です。 私の意見では、変数の宣言は最初の翻訳者のニーズによって生成されました。 そして、いつものように、理論家はフェティッシュに変わり、今では誰もが祈っています。 タイピングによって生成される問題の顕著な例は、異なるタイプの変数に対して機能的に同一のプログラムが作成されるPascal、C、C ++ライブラリです。 変数を宣言する必要はまったくありません。 サブジェクト領域では、変数が全体であるか実際の値であるかは重要ではありません。 ユーザーがキーボードから入力した値がその値です。 プログラムのタスクは、そのような値をメモリに保存する方法を詳しく調べることなく、そのような値を操作することです。 これは翻訳者が管理する必要があります。

典型的なプログラミング言語の別の問題は、メモリ管理です。 ここで、C、C ++、Pascal、Fortranなどの手動メモリ管理を備えた言語は、Javaなどのガベージコレクタを使用したメモリ管理を備えた言語とは対照的です。

オブジェクトCなどの中間オプションがあります。これらすべての方法の欠点はよく知られています。 従来のプログラミング言語では、他のメモリ管理方法は知られていません。

情報システムを設計して関係を表示する場合、データは複雑な構造に格納する必要があります。 このような構造は言語で作成され、通常はライブラリにあります。 これらはリスト、マップ、ハッシュテーブルです。 このすべての武器を使用するのは不便です。

なぜこれをすべて書いているのですか? 世界の不完全さについて理解すべきこと まったくありません。 これらの欠点をすべて備えていないプログラミング言語があります。 そこにあるようで、なくなったようです。 彼は彼自身で残りの世界を自分で生きています。 彼は、プログラマーを書くことの狭い輪で知られています。 言語の作成者は、彼が空白を指しているのを見ません。 彼らは、アルゴルのすべての問題を収集し、英雄的にそれらを克服する言語を作成します。 そして彼らはそれを非常に誇りに思っています。 そして、将来問題を克服しないように問題を作成することは誰にも起こりません。 たぶん私はある種のあまり知られていない自家製の製品について話しているのでしょうか? まったくありません。 これは、60〜70年代の変わり目に生まれた古くからの言語です。 他の多くとは異なり、すぐに標準化されました。 この言語の標準は、FortranとKobolに続く3番目になります。 1995年に、この言語の標準が更新されました。 そして、この言語の環境の主な生産者は、この標準にほぼ準拠しています。 この言語に名前を付けることは残っています。 この名前の大部分は何も言わないでしょうが、彼の名前はムンプスです。

上記の問題にどのように対処しているか見てみましょう。

宣言と、その結果として、この言語の類型化は存在しません。 変数は常に3人に存在します。 変数は常に数値、論理値、および文字列値を持ちます。 この操作に必要な変数の解釈が使用されます。 変数は、記録時に3人ですぐに発生します。 これは、等号の左側の変数の場所、または外部デバイスから変数を読み取るときのいずれかです。 変数を破棄する特別なコマンドがあります。 変数には意味があるだけでなく、構造もあります。 変数は論理ツリーです。 このような構造では、リストとハッシュテーブルの両方が簡単に表示されます。 この言語には別のユニークな機能があります。 変数は読み取り専用メモリにあるため、ファイルの必要性は非常に限られています。 ファイルに階層データを配置する言語のこの機能は広く使用されており、多くの場合、この言語はデータベースとして解釈されます。 言語のこのプロパティは基本的ではありませんが。

この言語には、他の言語では利用できない多くの固有のプロパティがあります。 この言語は完全に統合されたデータベースサポートです。 このデータは永続的な媒体にあり、トランザクションとロギングをサポートしています。 この言語は分散データをサポートしています。 データは世界中のどこにでも配置できますが、あなたにとっては単なる標準的な階層ツリーになります。 マルチタスクは、実行と同期のための独立したスレッドの作成により、言語に組み込まれています。 この言語には、非同期入力を含む独自の入力出力が組み込まれています。

メモリ管理は非常にエレガントに行われます。 プログラマーはメモリの分配をまったく制御しません;彼は論理変数でのみ働き、それらがどこにあるかを知る機会すらありません。 また、メモリ内のデータの場所は定義されておらず、さまざまな時点でさまざまな場所にある可能性があります。 メモリ内および外部メディア上のデータはBツリーの形式で保存され、定義上、ガベージコレクションは不要です。

そのメリットはすべて、非常にコンパクトな言語です。 標準に関しては、簡単に移植可能な言語です。 その上にあるプログラムは非常にコンパクトで、簡単にデバッグでき、信じられないほど信頼できます。 RunTimeの完全自動データ管理エラーのおかげで例外が発生しました。

個人的に、この言語は純粋に美的な喜びを与えてくれます。 MUMPSの後に伝統的な言語でプログラムしなければならないとき、私は重みが足に結びついて走らざるを得なかったように感じます。 ウェイトで実行できますが。



しかし、この世界では、すべてがそれほど単純ではありません。 この言語の最後の標準は1995年に開発され、以前の標準に根本的な変更は加えませんでした。 そして現在まで、この言語はやや古風です。 ムンプスのイデオロギーに基づいて構築された新しい言語を開発することにしました。これは、言語の現在の状態を考慮に入れます。 しかし、MUMPSの欠点と、それに関しては次回提案する言語についてです。

来ました:MSHの記事

habrahabr.ru/post/241369



All Articles