ムンプスは生きていますか?[閉まっている]


11

最初の職場では、PDP 11クローン(TPA 440)でDigital Standard MUMPSを使用していましたが、90年代前半にHP-UX 9のHewlett-Packardマシンで実行されるMicronetics Standard MUMPSに切り替えました。

ムンプスはまだ生きていますか?それを使用している人はいますか?はいの場合は、それについていくつかの言葉を書いてください:あなたはキャラクターモードでそれを使用していますか、それはウェブサーバーとして機能しますか?など(Cachéも意味します。)

あなたがそれを使用したことがある場合、あなたはそれについてどう感じましたか?気に入りましたか?


1
私は、誰もがルックスが好きなことを何か好きとは思わない、これを。少なくともperlは表現力豊かです。
imgx64

13
「ムンプスは生きていますか?」-はい。ただし、すべての開発者が自殺しています。
スティーブンエバーズ

@ imgx64恐ろしい神!
TheLQ

短い形式のコマンド「DHSY =%YK%H、%YQ」を使用する必要はありません。完全なコマンド名を記述する必要があります(さらに長いラベル/変数名を使用します):「Do HourCount Set Year =%YearParam Kill%HourParam 、%YearParam Quit」。また、短いコマンド形式を長年使用した後、長い形式のコマンドと長い名前の変数を使用して20行のプログラムを作成しました。私の同僚に言われた:「大丈夫、それは良い冗談ですが、二度としないでください」、それは短いコマンドよりも読むのが10倍難しかったです。
ern0

回答:


11

インターシステムズは、MUMPSデリバティブを販売していますhttp : //www.intersystems.com

MUMPSで最も興味深い人々の一部はおそらくここにいます:http : //www.outoftheslipstream.com/

私は数年前にキャッシュ(MUMPS派生物)についてブログを書き始めました:http : //cachetastic.blogspot.com/(しかしその後、仕事を変えました)

数年前からこの世界を離れていた私は、NoSQLの動きはおそらくMUMPSにとって最高の最悪の事態だと考えています。最終的には、それを立証し、殺す可能性があります。誰かが、ある時点で、MUMPSのデータベースとクエリ構造をほぼ同じように再発明しようとしていますが、MUMPSの伝統とは関係ありません。その後、人々はこの新しいストレージシステムについて絶賛します。しかし、誰も二度とMUMPS派生物を選択することはありません。

たとえば、1、2か月前、同僚と、Djangoアプリケーションで何かのルックアップをキャッシュするためにredisを使用することについて話していました。3つのキーのトリプルでアドレス指定された多数のレコードがあり、これらのキーの1つまたは2つに一致するサブセットを迅速に取得する必要がありました(ただし、異なる時間に異なる組み合わせ)。

これは、ムンプスが朝食に食べるものです。しかし、私たちはredisのキー、valペア構造に押し込むのが難しいと感じていました。辞書でも。(memcachedなどについても同じことが言えます。)人生で初めて、Cache ObjectScriptでこのモジュールを記述できなかったことを後悔しました。

ここでキャッシュに関するいくつかの考え:

良い:http : //cachetastic.blogspot.com/2008/07/ok-after-mentioning-some-bad-things.html

悪い:http : //cachetastic.blogspot.com/2008/07/some-mumps-dissing-and-more-positive.html


9

面白いインタースターはRedisに言及する必要があります。実際、Mumps(CacheとGT.Mの両方)を使用して、Redisの動作のほぼすべてをリバースエンジニアリングしました。単純で基本的なキー/値ペアの構造とAPIをエミュレートすることは簡単で、テストしたRedisクライアントは、適切なRedisではなくMumpsデータベースと通信していることすら知りません。

しかし、インタースターが言うように、ムンプスデータベースは、その両方のデータ構造の点で非常に優れています(実際、ムンプスデータベースは、4つのすべてのNoSQLデータベースタイプを簡単にエミュレートできます:キー/値、表、ドキュメント、グラフ、リレーショナルデータベースとオブジェクトデータベース-必要に応じて一度にすべて)、メモリ内とディスク上の適切に並べ替えられた自動バランス。数年前から存在していたNoSQLデータベースとは異なり、Mumpsテクノロジーは成熟し、試行され、テストされ、十分にサポートされており、分析および管理パッケージが利用可能であり、CouchDBなどの多くのNoSQLデータベースが死ぬほどのパフォーマンスを備えています。

では、なぜCacheとGT.Mのベンダーは、誰かがあなたの言うように車輪を再発明させるのではなく、NoSQL市場に一生懸命に進まないのですか?

ウィキペディアのサイトからの古くて時代遅れの例の言語と使用に関する疲れた古い論争について:

a)お望みであれば、お好みのセクシーでモダンな言語でおたふく風邪データベースにアクセスできます

b)そのスタイルのプログラミングは箱舟と共に出て行き、そのようなときに、あなたの時計のチップよりも処理能力の低いPDPコンピューターから驚くべきパフォーマンスを絞り出すために書かれました。最新のMumpsコーディングは、実際にはスタイルがPythonに非常に似ており、同じようにクリーンで読みやすく、保守可能です。

c)他の言語のように、あなたが見つけることができる良い例と恐ろしいものがあります。Mumpsコーディングは、Wikipediaサイトの例のように不透明で古風なものである必要があると想定しないでください。

..とメイソン、私の結論は、おそらくあなたはあなたが思っていたほどデータベースの風景に精通していないということでしょう!:-)あなたの人生で何らかの形の治療を受けた場合、あなたの情報はあなたのテストのリクエストを管理するものを含め、途中で数え切れないほどのムンプスシステムを介して送られてきます。あなたの毎日の新聞の内容は、ムンプスシステムによって管理されている可能性があり、オンラインで注文したピザでさえ、おそらくムンプスシステムを介していました。あなたが海外に出荷したかもしれないアイテムのロジスティックスは、おそらくムンプスシステムを介して管理されていました。

実際に驚くほど普及しているデータベースについてほとんど耳にすることがない理由の1つは、ベンダーが伝統的にエンドユーザーではなくアプリケーション/システム開発者と直接やり取りしているため、データベースは通常、舞台裏で製品に組み込まれていることです。


1
言語は悪くないと思います。私は試しませんでしたが、最新のハードウェアではかなり速いはずです。MSMの最新バージョンは、構造化プログラミングをサポートしていました。ローカル変数(新しいコマンド)、関数パラメーター、複数行のインラインサブルーチンです。これらの機能に非常に満足しており、リストビューアー、メニューなどのユーティリティを作成しました。最後に、スタックが不足したため、Microneticsにスタックサイズの増加を依頼しました。デフォルトの16ディープではなく、32スタックのMSMのカスタムバージョンをコンパイルしました。
ern0

1
少しRobを押し戻すために、MUMPS dbに注意を払う価値があると思いますが、別の言語からアクセスされたdbだけをMUMPSと呼ぶことができるのでしょうか。MUMPSを選択する人は誰でも、レガシーコードを実行できることを期待しています。したがって、MUMPSは、好むと好まざるとにかかわらず、db +言語に等しくなります。
インター

2
別の場所で述べたように、この言語の真の災害/取り壊しは動的スコープです。今日、エンジニアは、ローカルに留まるローカル変数のない言語を選択することを正当化できるとは思いません。そのため、必ずMUMPS dbをブラックボックスコンポーネントとして使用してください。ただし、この言語は償還の範囲を超えているため、休む必要があります。
インター

1
Mumpsには変数の完全な字句スコープがあります-何年も行われていますが、多くの人は気づいていないようです!おたふく風のコードは、他の言語と同じようにクリーンで適切に動作します。実際、ムンプスは、変数スコープに関してJavascriptと非常に多くの類似点を持っています。例えば、MumpsのNewは、事実上、Javascriptのvarと同じです。ただし、デフォルトでは、変数は両方の言語でグローバルにスコープされます。
ロブ

1
ロブ。Cacheの変数の字句スコープに気付いていませんでした。cachetastic.blogspot.com/2008/07/…の私の例はどうですか?これは「新しい」キーワードを使用しますが、絶対に必要なスコープ規則ではありません。fのxとgのxは、スタック上にあるxを明示的に非表示にする必要のあるgのない同じ変数であってはなりません。同じものがjavascriptに変換され、COSの「new」を「var」に正しく置き換えると、fのxが未定義として正しく指定されます。
インター

6

おたふくかぜはとても生きています。これは、適切に管理されている最も信頼できるシステムの1つです。通常、プログラミングスタッフは少なく、稼働時間は印象的です。MUMPSは鈍感であるように思われるかもしれませんが、ごく少数のキーストロークで非常に明快で高機能なコードを書くことが可能であり、MUMPSによってサポートされるデータ構造により、さまざまな異なるアーキテクチャ間で非常に強力で非常に移植可能です。すべてのVA病院はMUMPSを使用しており、ほとんどの場合、平均修復時間は非常に迅速です。MUMPSで記述されたVistAシステムはSource Forgeから簡単にダウンロードでき、VistAとMUMPSのポリモーダルの性質(データベースにはさまざまな方法、ロールとスクロール、シンクライアント、ブラウザー、またはRPC、またはその他のプログラムインターフェイスでアクセスできます)が付属していますそれを掘り下げる多くの人のために。MUMPSは、ごく少数のコマンドと1つのデータ型を持つ単純な言語です。インタープリター言語であり、スタックとシンボルテーブルをそのままにして、デバッグのためにアプリケーションが停止したときに何が起こっているかを正確に確認できるため、学習が容易です。VistAは、国防総省の病院(Composite Health Care System、CHCS)およびインドの保健サービス(IHS RPMS)の運営に使用されており、かつては米国公衆衛生サービスで使用されていました。これにより、国の運用コストが数百万ドル節約されました。MUMPSはほとんど何でも動作します。他のほぼすべてのデータベースモデルを簡単にモデル化し、データベースへの驚くほど高速なアクセスを提供します。MUMPSモデルは、システム上のユーザーが多いほどパフォーマンスが向上します(場合によっては、データブロックを見つけるために必要なポインターブロックが既にメモリ内にあり、再度フェッチする必要がないMUMPSのキャッシュの側面により、ところで、MUMPSのポインターオーバーヘッドは約2%しか実行しないため、データベースのほとんど実際のユーザーデータです)。MUMPSはもともと2Kマシンで実行するために書かれました。新技術の猛攻撃は、MUMPS環境の全機能を、病院全体が低価格のコモディティサーバーで稼働している領域にまで拡大しました。早い段階で、MUMPSはハードウェアから離婚し、その決定から大きな恩恵を受けました。単語のサイズや精度、数、大きさについては心配しません。データベースは遅延バインディングであり、特定のレコードのニーズに応じて拡大します。どのデータベースにも、必要以上に大きいレコードはありません。データベースは、レコードの一部またはレコード全体として拡張またはプルーニングできます。MUMPSはまだありますか?PDP-11 / 34で8人のユーザーを取得する代わりに、机の下のデスクトップPCで数百人のユーザーを取得できます。銀行、欧州証券取引所、旅行業界(ホテルおよび予約代理店)、一部の自動車部品会社、および最も成功している病院(商業、民間、またはコミュニティ)で何らかの形でMUMPSが実行されています。VAには現在、900万人を超える患者の30年以上のアウトカム履歴があります。それ自体は、ボストンにあるベス・イスラエル/ディーコネス病院の35年以上の結果を自宅で構築したMUMPSシステムで実現していることを除けば、他の医療システムでは達成できていません。もちろんです?PDP-11 / 34で8人のユーザーを取得する代わりに、机の下のデスクトップPCで数百人のユーザーを取得できます。銀行、欧州証券取引所、旅行業界(ホテルおよび予約代理店)、一部の自動車部品会社、および最も成功している病院(商業、民間、またはコミュニティ)で何らかの形でMUMPSが実行されています。VAには現在、900万人を超える患者の30年以上のアウトカム履歴があります。それ自体は、ボストンにあるベス・イスラエル/ディーコネス病院の35年以上の結果を自宅で構築したMUMPSシステムで実現していることを除けば、他の医療システムでは達成できていません。もちろんです?PDP-11 / 34で8人のユーザーを取得する代わりに、机の下のデスクトップPCで数百人のユーザーを取得できます。銀行、欧州証券取引所、旅行業界(ホテルおよび予約代理店)、一部の自動車部品会社、および最も成功している病院(商業、民間、またはコミュニティ)で何らかの形でMUMPSが実行されています。VAには現在、900万人を超える患者の30年以上のアウトカム履歴があります。それ自体は、ボストンにあるベス・イスラエル/ディーコネス病院の35年以上の結果を自宅で構築したMUMPSシステムで実現していることを除けば、他の医療システムでは達成できていません。旅行業界(ホテルおよび予約代理店)、一部の自動車部品会社、最も成功している病院(商業、民間、またはコミュニティ)が何らかの形でMUMPSを運営しています。VAには現在、900万人を超える患者の30年以上のアウトカム履歴があります。それ自体は、ボストンにあるベス・イスラエル/ディーコネス病院の35年以上の結果を自宅で構築したMUMPSシステムで実現していることを除けば、他の医療システムでは達成できていません。旅行業界(ホテルおよび予約代理店)、一部の自動車部品会社、最も成功している病院(商業、民間、またはコミュニティ)が何らかの形でMUMPSを運営しています。VAには現在、900万人を超える患者の30年以上のアウトカム履歴があります。それ自体は、ボストンにあるベス・イスラエル/ディーコネス病院の35年以上の結果を自宅で構築したMUMPSシステムで実現していることを除けば、他の医療システムでは達成できていません。


6

SOに関するおたふくかぜの質問がいくつかあります。

/programming/tagged/mumps


なぜ下票なのか?質問は、まだムンプスが生きているのか?それを使用している人はいますか?-確かに、これは誰かが真剣に新しいコードを書いたり、MUMPSを学習したりする関連する証拠ですか?
コリンピカード

4

はい、ムンプスはとても生きています。米国のVA病院の大部分は、MUMPSを使用しています。


3
そして、患者の大部分は生きていますか?:-)
マニエロ

8
@bigown:もちろんです。そうでなければ、彼らはまだ患者ではないでしょう。
メイソンウィーラー


3

私はg.tmも初めてですが、これに答えることができます:

はい、ムンプスは生きています。まだ作業中の人がいます。ここではいくつかの例を示します :

http://georgejames.com/ gt.mでOpenstreetmap apiサーバーを書いた人は、今学んでいます。

また、g.tm http://gradvs1.mgateway.com/main/用の最新のエンタープライズWebツールもあり ます。

そして、それが生きているという最後の証拠は、それが最新のGNU / linuxとクラウドプラットフォームに移植されたことです。

マイク



1

これを読む必要があります:

http://thedailywtf.com/Articles/A_Case_of_the_MUMPS.aspx

ムンプスについて。

一方で、私はDCエリアで働いており、頻繁に働いているMUMPSを知っているだけでなく、かなり定期的に人々に出会います。


それは...私を怖がらせた。今、入浴する必要があるように感じます。:(
マットディトロリオ

1
SQLの時代には、これらの記事にリストされているこれらの問題が機能であることを説明するのは困難です。1文字は速度のためです。1つのタイプは、自動タイピングよりもはるかに優れています。など
-ern0

1

ええ、The Daily WTFを除いて、どんな状況でも、どんな理由でも、それを使っている人のことを聞いたことがありません。これからどのような結論を導き出すことができるかは読者次第です。;)


1

関数を使用するように正しく記述されたインタースターの例

f ;   
  new x  
  set x=$$g()  
  write x  
  quit  

g()  
  new x  
  set x = 5  
  quit x  

do f  

fdoで呼び出されるプロシージャです。この場合のように、仮パラメーターがない場合は、は必要ありません()。プロシージャは単に終了し、何も返しません。

g()一方、関数です。新しいxスコープを正しくするには重要xです。関数は、名前の前に呼び出され$$、戻り値でQUITします。関数は、ここのように空であっても、宣言された正式なパラメータリストを持っている必要があります。実際、このインスタンスを次のように書くことができますg()

g()  
 quit 5

これですべてが完全に動作するようになります。何らかの理由で、多くのMumps開発者は、関数の存在に気付いたり理解したりしていないか、関数とプロシージャの違いを理解していないようです。これは、おたふく風邪に慣れていない人々が恐怖に手を投げる理由の1つだと思います(驚くことではありません)-ひどいコードがたくさんあります。

上に示したように書かれた、それはすべて非常にきれいで立派なものです。ただし、関数とプロシージャ内の変数を明示的にスコープするのはプログラマー次第です。それらを除外すると、それらはグローバルになり、どこにでもリークします。秘Theは、分離して各関数をビルドおよびテストし、それらが正式なパラメーターのみに依存していることを確認することです。


これで、新しいコマンドを使用せず、グローバル変数に依存するMumpsコードが表示される理由の1つは、関数と関数の前に過去に一度に記述されたためです語彙スコープが言語に追加されました。残念ながら、そこには多くのレガシーコードがあり、はい、最終的には維持するのが悪夢になりますが、それはあなたにとってレガシーです。一方、新しいものをゼロから作成する場合は、古いものを気にせずに、クリーンでモダンな行儀の良いおたふく風のコードを作成することができます。
ロブ

元の例を見ると、プロシージャfのnew'dがgで自動的に使用可能になったときの値x-これがMumpsの方法です。同様に、C構文言語に慣れている人々は、Javascriptのスコープが関数にのみ適用され、例えば関数内のループやブロック内には適用されないことに気付くと驚くでしょう。それはただの方法です-一度それを知ったら、それに応じてそれに対処します。このような特異性は、人々がJavascriptを受け入れ、採用するのを止めていません。
ロブ

Rob:「プロシージャfのnew'dがgで自動的に使用可能になったときの元の例、値xを見ると、これがまさにムンプスのやり方です。」確かに!そして、それが、MUMPSには動的スコープがあり、語彙スコープはないということです。字句スコープの言語では、プログラムの字句構造(つまり、gがfの定義の外側で定義されているという事実)は、それを保証するのに十分であるため、関数gに「新しいx」を持つ必要はありません。 gとfで参照されるxsは、まったく異なる2つの変数です。
インター

ロブ。広い意味で、MUMPSプログラマーのよく訓練されたチームは、ゼロから作成し、すべての変数がローカルであることを保証するために「新規」を慎重に使用することで、動的スコープの痛みを回避できます。確かに、私は同意します。しかし、他のすべての現代言語が無料で提供するものを複製するために、なぜ鉄の規律と数百の余分なコード行が必要なのでしょうか?また、この規律で書かれていないレガシーコードに直面している場合、システムがこれらの非ローカルの1つに依存して情報をやり取りしているかどうかわからないため、後で入れることはほとんど不可能です。 。
インター

サブルーチン変数を分離する他の(古い)メソッドがあります。システムユーティリティの変数名はすべて「%」記号で始まるため、「システム名前空間」にあります。また、Newで変数に名前を付けることは速度についてです:明示的なコマンドを使用して再利用された変数をスタックにプッシュする場合、インタープリターはルーチンに入るときにそれ自体何もする必要がありません。また、パラメーターなしでNewを使用すると、現在のすべての変数が非表示になります。
ern0
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.