通訳MSH

MSHインタープリター



私は理想的な言語の私のビジョンをあなたの注意にもたらします。 以前の記事で、 MUMPSからMSHへの理想的な言語の考え方と、 MUMPSと MSHプログラミング言語の相違点をすでに説明しました。



レビューはほとんど否定的でした。 レビューを読んだ後、私はプログラミング言語の世界のすべてがすでに非常に完璧であることを発見して驚きました。 しかし、漠然とした疑いは、この世界ではすべてがそれほど良くないことを私にかじります。 もちろん、すでに多くの言語がありますが、さまざまな言語の概念は見られません。



言語の小さな装飾を破棄する場合、そのような概念がいくつかあります。





これらの問題の解決策から、プログラミング言語の特性が追加されます。



オブジェクトプログラミング



私の意見では、これは重要な概念であり、言語に存在する必要があります。 もちろん、言語にクラスやオブジェクトがなくても、オブジェクトスタイルでプログラムを考えたり書いたりすることを妨げるものは何もありませんが、そのようなメカニズムが存在することで、このタスクを簡素化することができます。



データ管理、タイピング



このセクションは、言語の概念で最も重要だと思います。 Habréでこのテーマに関する多くの議論に会いました。 主に静的型と動的型のサポーターを主張します。 動的型付けの場合、利点は言語の柔軟性と呼ばれていましたが、欠点はおそらく言語の信頼性の低さと開発環境への適応性の低さです。 静的型付けでは、すべてが正反対です。 静的型付けを使用した言語の信頼性の向上についての議論はばかげていると考えます。静的型付けはプログラミングツールの開発に役立つ可能性がありますが、それ以上のことはありません。 私はどちらのアプローチの支持者でもありません。 私は、タイピングが最新のプログラミング言語の主な悪であると考えています。 大半のプログラミング言語に存在しますが。 言語は、そのタイプの理解を含む、すべてのデータ管理を完全に引き継ぐ必要があります。 これは非常に現実的です。 そして、プログラマーはプログラムのロジックを処理する必要があります。 データを確認する必要がある場合は、入力しても役に立ちません。 内容を確認するだけです。 類型化の存在は、伝統と思考の不活性によってのみ説明できます。



可変数のパラメーターをプロシージャーと関数に渡す



これは小さな問題ですが、ほとんどの言語では解決が困難です。 アセンブラーには良い例がありますが。 スタックを介してパラメーターを渡す。 仮パラメータのリストを放棄し、リストを介してパラメータを渡すだけです。 何をどのように使用するかについて、可変数の関数値を返すことは完全に明確ではありません。 いずれの場合でも、1つのエンティティを返す必要があります。



プロセス管理



このセクションでは、言語の概念を定義することも検討します。 言語の制御構造はほぼ同じです。 gotoコマンドを使用すると、わずかなニュアンスが生じます。 なぜ彼らがこのチームとこんなに激しく戦っているのか理解できません。 特にこのコマンドの引数を計算できる場合、非常に便利なコマンド。 並列計算の実装では、バリアントのバリアントは主に2です。ライブラリを使用して実装されるか、言語自体に含めることができます。 私は2番目の方法の支持者です。



言語でのイベント処理はありません。 広く使われていますが。 GUIを構築してイベント処理を実装するには、メインループを起動します。 この解決策は優雅には輝きません。 そのようなサイクルの中に入ることは別の問題です。 通常の言語にはイベント処理機能が必要です。



私の考えはもちろん主観的なものであり、おそらく間違っています。 しかし、それらは私の個人的な経験に基づいています。 最新のOSとは、デバッグされないジャンクの集まりであり、デバッグされることはありません。 APIの山、エラーのストリーミング元のさまざまなライブラリ。 プログラミング言語の数がすべての可能な制限を超えました。 さらに、原則として、それらは互いにほとんど異なりません。 一般的に、フレームワークの数については何も言いません。 平均的なシステムでさえ、さまざまな、おそらく互換性の低いサブシステムの多層ケーキであり、その完全なデバッグは実行されません。 単純なCプログラムのデバッグには数か月かかる場合があります。 私の意見では、これらはすべてプログラミング言語で入力することで生成されます。



現時点では、正しいプログラミング言語についての私の考えに合う言語はありません。 私の意見ではそれに最も近いのはMUMPSプログラミング言語ですが、プログラミング言語としてのそのような言語の実装はありません。 この言語が言語として使用されるデータベース実装があります。 このアプローチの限界は明らかであり、新しいMSH言語を開発し、その実装をインタープリターとして記述しました。 現時点では、私がやろうとしていることをすべて実装しているわけではありません。 特に、開発環境はありませんが、言語のアイデアを得ることができます。



Linux x64向けに実装されています。



私の仕事に興味がある人は、メールに書いて、配布物を送ります。

PS。

MSHは型のない言語であるだけでなく、非宣言型です。 原則として、変数の説明はありません。 一般的な場合、変数には型だけでなく構造もあります。 配列、リスト、HASH、スタック、および宣言は、各構造を記述するために必要です。 MUMPSには、原則としてそのような宣言言語はありません;変数はツリーです。 そのようなツリーのためのスペースは予約されていません。 ツリーノードは、データの書き込み時に作成され、記録が行われたノードのみが存在します。 インデックスのタイプに制限はありません。 したがって、MUMPSをPHP、Java Script、およびその他の言語と比較することは正しくありません。 ムンプスは別の世界であり、独自の問題と利点があります。 それを理解するには、思考を再構築する必要があります。 虐待的なレビューを読んで、ムンプスを理解することは不可能です。 私たちはそれに没頭しなければなりません。 ドキュメントを読んでください。 MUMPSシステムをインストールします。 それに取り組みます。 彼らがここで私を理解していないという事実は非常に自然です。 私たちはさまざまな世界について話している。 MUMPSの世界では、ここでタイプ、構造について行っている議論はありません。 ほとんどのムンピストは、自分のデータがどのように、どこに保存されているかに関心を持っています。 MUMPSのデータには、常に2つの表現があります:数値と文字列です。 操作に応じて、この表現またはその表現が使用されます。 適用した操作に応じて、正確な結果を常に把握しています。 MUMPSは、プログラマーをツリーの観点から強制的に動作させます。 ツリーは、外部メディア(グローバル(データベースのアナログ))とメモリ(ロケール(プログラムの変数のアナログ))の両方に配置できます。 基本的に、情報システムを設計するとき、私は中間ローカルデータのディスク上のデータを直接操作します。最小限のものがあり、問題は発生しません。 したがって、MUMPSフォーラムでは、ローカリゼーションの変数の種類に関する議論はありません。 典型的な設計方法は、週末に入力ツリーを設計することです。 そして、必要に応じて、入力ツリーと出力ツリーを形成するプログラムを作成します。 MUMPSのデータはプライマリであり、プログラムはセカンダリです。 私の記事では、この他のMUMPSの世界にできるだけ多くのプログラマーを紹介することを目指しています。 この世界はもっと正しいと思います。 これらのシンプルでパワフルでエレガントな言語に感心します。 それを書くことができてうれしいです。 残念なことに、これを行うことはほとんどありません。 この言語の限界を超えずにすべてを書くことができる言語を作りたいです。 サーバーを作成し、デスクトップクライアントを作成し、ブラウザに言語を追加します。



All Articles