私はPrinciples of Computer System Design
(Saltzer & Kaashoek)を読んでおり、初期の章の1つはモジュール性があります。たとえば:プロセス内で「真の」モジュール性をサポートする言語はありますか?
- 異なるモジュールは
- モジュールが
- と呼ばれるモジュールが
- Aがで死ぬために、呼び出し元を引き起こすできないようにする必要があり、モジュールと呼ばれる返すことができないことで、発信者をロックできないようにする必要がありスタック領域が不足しています
これらの要件は、私には完全な意味を成しています。大規模なプログラム全体に広がるエラーを止め、すべてをクラッシュさせるためには、多くのことがあります。
しかし、クライアント/サーバープロセスにすべてを分割する方法は、多くの目的のために多少残虐なように思えます。あなたは、クライアント/サーバの両方があるように思わとしてモジュール化したいすべて執筆:たとえば
- 信じられないほど退屈
(WRTの実行速度)が遅いが、私のことができるようにしたいと思います私の数学モジュールに作業を委任し、実行時間とメモリ使用量に制限を設けていますが、私は実際に別の数学を作る必要はありませんサーバは、さらに、IPCのメッセージパッシングオーバーヘッド(計算とレイテンシの両方)は、直接プロシージャコールに比べてかなり大きいと確信しています。
この種のモジュール性を提供する言語はありますか内にプロセスがありますか?ダイレクトプロシージャコールのタイトカップリングとマルチプロセスクライアント/サーバー設計のオーバーヘッドの中間にありますか?私はそれを想像する方法、代わりに:
y = Math.sin(x)
無限ループにオープン私を残し、Math
モジュールで、オーバーフローを積み重ね、私は
y = try(maxMemory=1024kb, maxTime=12ms){
Math.sin(x)
}catch(Anything){
0
}
ような何かをしたいと思いますMath.sin
内で何かが失敗した場合のデフォルト値(0
)に変更します。無効な入力、バグ、無限ループ、実行時例外、その他。このようなものはすでにいくつかの言語で存在していますか?そうでない場合、なぜですか?それは私には、非常に有用なものが、さまざまな場所で好きなようです。
OSによって最適に処理されるものをプロセス空間に実装しようとしています...探しているものと似たようなものがあるかもしれませんが、存在すればこれらはほぼ確実に実装されています複数のプロセスを作成する機能があります。同じオーバーヘッドがありますが、言語によって定型コードがすべて処理されます。もう1つの解決策は、独自の仮想プロセス、スケジューラを持つことができるVMレイヤーを使用することですが、agianはパフォーマンスを低下させます。 –