MUMPS canlı mı? [kapalı]


11

İlk işyerimde PDP 11-klonunda (TPA 440) Dijital Standart MUMPS kullanıyorduk , sonra 90'lı yılların başında bir Hewlett-Packard makinesi HP-UX 9 üzerinde çalışan Micronetics Standard MUMPS'a geçtik.

Hala MUMPS yaşıyor mu? Kullanan var mı? Cevabınız evet ise, lütfen bu konuda bazı kelimeler yazın: karakter modunda mı kullanıyorsunuz, web sunucusu gibi mi davranıyor? (Caché'yi de kastediyorum.)

Eğer kullanılmış olsaydınız, onunla ilgili duygularınız neydi? Beğendin mi?


1
Kimsenin görünüyor gibi o şey sevdiğini sanmıyorum bu . En azından perl etkileyici.
imgx64

13
"MUMPS canlı mı?" - Evet, ama tüm geliştiriciler kendilerini öldürüyorlar.
Steven Evers

@ imgx64 Korkunç görünen Tanrı!
TheLQ

"DHSY =% YK% H,% YQ" gibi kısa komutlar kullanmanız gerekmez, tam komut adları yazmalısınız (ve daha uzun etiket / değişken adları kullanmalısınız): "HourCount Ayarla Yıl =% YearParam Kill% HourParam ,% YearParam Çık ". Ayrıca, kısa komut formunu yıllarca kullandıktan sonra, uzun form komutları ve uzun adlandırılmış değişkenler kullanarak 20 satırlık bir program yazdım. Meslektaşlarıma "tamam, iyi bir şaka, ama bir daha yapma" söylendi, okumak kısa komutlardan 10 kat daha zordu.
ern0

Yanıtlar:


11

Intersystems bir MUMPS türevi satıyor: http://www.intersystems.com

MUMPS'taki en ilginç insanlardan bazıları muhtemelen burada: http://www.outoftheslipstream.com/

Birkaç yıl önce Cache (MUMPS türevi) hakkında blog yazmaya başladım: http://cachetastic.blogspot.com/ (ancak daha sonra işleri değiştirdi)

Birkaç yıldır bu dünyadan çıkmış olduğumu düşünüyorum, NoSQL hareketinin muhtemelen MUMPS'e gelebilecek en iyi ve en kötü şey olduğunu düşünüyorum. Sonuçta, hem haklı çıkarır hem de öldürür. Çünkü birisi bir noktada MUMPS'in veritabanı ve sorgu yapısını neredeyse aynı olacak, ancak MUMPS geleneğiyle hiçbir bağlantısı olmayacak. Sonra insanlar bu yeni depolama sistemi hakkında çıldırırlar. Ama hiç kimse bir daha MUMPS türevini seçmeyecek.

Örneğin, bir ya da iki ay önce, bir meslektaşımla Django uygulamamızdaki bir şeyi aramak için redis kullanma hakkında konuşuyordum. Üç anahtarın üçü tarafından ele alınan çok sayıda kayıt vardı ve bu anahtarlardan bir veya ikisiyle eşleşen alt kümeleri hızla almamız gerekiyordu (ancak farklı zamanlarda farklı kombinasyonlar).

Bu, MUMPS'ın kahvaltıda yediği bir şey. Ama redis'in anahtar, val çifti yapısını ezmekte zorlanıyorduk. Sözlüklerle bile. (Aynı şey memcached vb. İçin de geçerlidir.) Hayatımda ilk kez, kendimi aslında bu modülü Cache ObjectScript'e yazamadığım için pişman oldum.

Burada Cache hakkında biraz daha düşünce:

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

Kötü: http://cachetastic.blogspot.com/2008/07/some-mumps-dissing-and-more-positive.html


9

Komik interstar Redis'ten bahsetmelidir. Aslında Kabakulak (hem Önbellek hem de GT.M) kullanarak Redis'in davranışlarının neredeyse tamamını tersine değiştirdim. Basit ve temel anahtar / değer çifti yapısını ve API'lerini taklit etmek çok kolay ve test ettiğim Redis istemcileri, uygun Redis yerine bir Mumps veritabanıyla konuştuklarını bile bilmiyorlar.

Ancak, interstar'ın dediği gibi, Mumps veritabanı hem veri yapısı açısından çok daha fazlasını yapabilir (aslında bir Mumps veritabanı 4 NoSQL veritabanı tipinin tümünü kolayca taklit edebilir: anahtar / değer, tablo, belge ve grafik ve ayrıca modelleme ilişkisel ve nesne dbs - gerekiyorsa hepsi bir kerede) ve bellekte ve diskte uygun şekilde düzenlenmiş ve otomatik denge. Sadece birkaç yıldır var olan NoSQL veritabanlarının aksine, Mumps teknolojileri olgun, denenmiş, test edilmiş, iyi desteklenmiş ve analitik ve yönetim paketlerine sahip ve CouchDB gibi birçok NoSQL veritabanının öleceği performansa sahip .

Öyleyse neden Cache ve GT.M'nin sağlayıcıları, birilerinin dediğiniz gibi tekerleğini yeniden keşfetmesine izin vermek yerine NoSQL pazarına katı bir şekilde teşvik etmiyorlar?

Vikipedi sitesinden dil ve bu eski ve outdatad örneğinin kullanımı hakkında çekişen yorgun eski:

a) Mumps veritabanına isterseniz evcil hayvanınızın seksi modern dilinden erişilebilir

b) bu ​​programlama tarzı gemiyle çıktı ve o zaman, saatinizdeki çipten daha az işlem gücüne sahip olan PDP bilgisayarlarından inanılmaz performansı sıkmak için böyle yazıldı. Modern Kabakulak kodlaması aslında Python'a çok benzer ve aynı derecede temiz, okunabilir ve bakımı yapılabilir.

c) Herhangi bir dil gibi bulabileceğiniz iyi örnekler ve korkunç diller vardır. Kabakulak kodlamasının Wikipedia sitesindeki örnek kadar opak ve eski moda olması gerektiğini düşünmeyin.

..ve Mason, benim sonucum, belki de düşündüğünüz kadar veritabanı manzarasına aşina olmadığınızdır! :-) Hayatınızda herhangi bir tıbbi tedavi gördüyseniz, bilgileriniz, testlerinizi talep etmeyi başaranlar da dahil olmak üzere, yol boyunca ubteen Kabakulak sistemleri üzerinden yapılmış olacaktır. Günlük gazetenizin içeriği bir Kabakulak sistemi tarafından yönetilebilir ve çevrimiçi sipariş ettiğiniz pizza bile bir Kabakulak sisteminden de olabilir. Denizaşırı ülkelere sevk etmiş olabileceğiniz ürünlerin lojistiği muhtemelen bir Kabakulak sistemi ile yönetildi ve eğer bazı süslü metallere veya seramiklere ihtiyaç duyan bir araştırmacı olduysanız, muhtemelen bir Kabakulak sistemi aracılığıyla sipariş vermiş olacaksınız.

Şaşırtıcı derecede yaygın bir veritabanının ne olduğunu nadiren duymanızın nedenlerinden biri, satıcıların geleneksel olarak son kullanıcılar yerine uygulama / sistem geliştiricileriyle doğrudan ilgilenmiş olmasıdır, bu nedenle veritabanı genellikle sahnelerin arkasına ürünlere gömülür.


1
Bence dil fena değil. Denemedim ama modern bir donanımda oldukça hızlı olmalı. MSM'nin en son sürümü yapısal programlamayı destekliyordu: yerel değişkenler (Yeni komut), fonksiyon parametreleri, çoklu hatlar için satır içi alt rutinler. Bu özelliklerden çok memnun kaldık ve bir grup yardımcı program oluşturduk: liste görüntüleyici, menü vb. Sonunda yığınımız bitti, bu yüzden Micronetics'ten yığın boyutunu artırmasını istedik. Bize varsayılan 16 derinlik yerine MSM'nin 32 derinlikli yığın özel bir sürümünü derlediler.
ern0

1
Biraz Rob geri itmek için, MUMPS db dikkat etmeye değer olduğunu düşünüyorum iken, merak ediyorum sadece başka bir dilden erişilen db hala MUMPS denilebilir. MUMPS seçeneğini belirleyen herkes, eski kodu çalıştırabilir. Bu yüzden MUMPS, beğen ya da beğenme, db + diline eşittir.
interstar

2
Başka bir yerde belirttiğim gibi, dil için gerçek felaket / anlaşma kırıcı dinamik kapsam belirleme. Bugün hiçbir mühendisin yerel değişkenleri olmayan yerel bir dil seçmeyi meşru kılabileceğini düşünmüyorum. Yani, elbette bir kara kutu bileşeni olarak MUMPS db'yi kullanın, ancak dil kurtuluşun ötesindedir ve dinlenmelidir.
interstar

1
Kabakulak değişkenlerin tam sözlük kapsamına sahiptir - yıllardır yaptı, ancak birçok insan fark etmiş gibi görünmüyor! Kabakulak kodu diğer diller gibi temiz ve iyi davranabilir. Aslında Kabakulak, değişken kapsam belirleme açısından Javascript ile büyük benzerliklere sahiptir. Örneğin Kabakulak'ta Yeni, Javascript'teki var ile aynıdır. Bununla birlikte, varsayılan olarak, değişkenler küresel olarak her iki dilde de kapsamlıdır.
Rob

1
Rob. Cache'deki değişkenlerin sözcüksel kapsamını kesinlikle fark etmedim. Cachetastic.blogspot.com/2008/07/… ' deki örneğime ne olacak ? Bu, "yeni" anahtar kelimesini kullanır, ancak kesinlikle istediğiniz kapsam belirleme kuralı DEĞİLDİR. F'deki x ve g'deki x, yığının üzerinde olan x'leri açıkça gizlemek zorunda kalmadan G değişkeniyle aynı değişken OLMAMALIDIR. Javascript'e dönüştürülen aynı şey, COS'un "new" yerine "var" yerine doğru olarak x in f'yi undefined olarak verir.
interstar

6

MUMPS çok canlı. Doğru ellere geçen en güveye layık sistemlerden biri olmuştur. Programlama personeli genellikle küçüktür ve çalışma süresi etkileyicidir. MUMPS'un geniş olduğu düşünülmemiş gibi görünebilir, ancak çok az tuş vuruşunda çok berrak ve son derece işlevsel bir kod yazmak mümkündür ve MUMPS tarafından desteklenen veri yapıları onu çeşitli farklı mimarilerde son derece güçlü ve çok taşınabilir hale getirir. Tüm VA hastaneleri MUMPS kullanıyor ve çoğu zaman ortalama onarım süresi çok hızlı. MUMPS ile yazılmış VistA sistemi, Source Forge'dan kolayca indirilebilir ve VistA ve MUMPS'ın poli-modal yapısı (veritabanına birçok yolla erişilebilir, rulo ve kaydırma, ince istemci, tarayıcı veya RPC veya diğer program arabirimi) içine giren birçok kişi için. MUMPS çok az komut ve bir veri türüne sahip basit bir dildir. Öğrenilmesi kolaydır, çünkü yorumlanmış bir dildir ve uygulama hata ayıklama için durduğunda ne olduğunu tam olarak görmek için yığını ve sembol tablosunu olduğu gibi bırakır. VistA, Savunma Bakanlığı hastanelerini (Kompozit Sağlık Sistemi, CHCS) ve Hindistan Sağlık Servisi'ni (IHS RPMS) işletmek için kullanıldı ve bir zamanlar ABD Halk Sağlığı Servisi tarafından kullanıldı. Ülkeye milyonlarca dolar işletme maliyeti kazandırdı. MUMPS neredeyse her şey üzerinde çalışır. Neredeyse tüm diğer veritabanı modellerini kolayca modeller ve veritabanlarına şaşırtıcı derecede hızlı erişim sağlar. MUMPS modeli aslında sistemdeki daha fazla kullanıcıyla daha hızlı performans elde edebilir (bazı durumlarda, bir veri bloğu bulmak için gereken işaretçi bloklarının zaten bellekte olduğu ve tekrar getirilmeleri gerekmeyen MUMPS'un önbellekleme özellikleri nedeniyle BTW, MUMPS için işaretçi yükü sadece yaklaşık% 2 çalışır, bu nedenle veritabanınızın çoğu gerçek kullanıcı verileridir). MUMPS başlangıçta 2K'lık bir makinede çalışacak şekilde yazılmıştır. Yeni teknolojinin saldırısı, MUMPS ortamının tüm özelliklerini sadece tüm hastanelerin düşük maliyetli emtia sunucularında çalıştırıldığı bir alana genişletti. İlk başlarda, MUMPS donanımdan boşandı ve bu karardan çok iyi yararlandı. Kelime boyutu veya kesinliği veya kaç tane veya ne kadar büyük olduğu konusunda endişelenmiyoruz. Veritabanı geç bağlama ve özel kayıt ihtiyacı olarak büyür. Herhangi bir veritabanındaki hiçbir kayıt olması gerekenden daha büyük değildir. Veritabanı, bir kaydın bir parçası olarak veya bir bütün kayıt olarak genişletilebilir veya budanabilir. MUMPS hala buralarda mı? Bir PDP-11 / 34'e 8 kullanıcı almak yerine, masanızın altındaki masa üstü PC'de birkaç yüz kullanıcıya sahip olabilirsiniz. Bankacılık, Avrupa Menkul Kıymetler Borsası, seyahat endüstrisinde (otel ve rezervasyon acenteleri), bazı otomobil parçaları evlerinde ve en başarılı hastanelerde (ticari, özel veya topluluk) bir şekilde MUMPS çalıştırılmaktadır. VA'nın şu anda 9 milyondan fazla hastası için 30 yılı aşkın sonuç geçmişi bulunmaktadır. Bu, Boston'daki Beth Israel / Deaconess Hastanesi dışında, kendi inşa ettikleri MUMPS sisteminde 35 yılı aşkın bir sonuca sahip olan başka bir sağlık sisteminin başaramadığı bir şeydir. betcha? Bir PDP-11 / 34'e 8 kullanıcı almak yerine, masanızın altındaki masa üstü PC'de birkaç yüz kullanıcıya sahip olabilirsiniz. Bankacılık, Avrupa Menkul Kıymetler Borsası, seyahat endüstrisinde (otel ve rezervasyon acenteleri), bazı otomobil parçaları evlerinde ve en başarılı hastanelerde (ticari, özel veya topluluk) bir şekilde MUMPS çalıştırılmaktadır. VA'nın şu anda 9 milyondan fazla hastası için 30 yılı aşkın sonuç geçmişi bulunmaktadır. Bu, Boston'daki Beth Israel / Deaconess Hastanesi dışında, kendi inşa ettikleri MUMPS sisteminde 35 yılı aşkın bir sonuca sahip olan başka bir sağlık sisteminin başaramadığı bir şeydir. betcha? Bir PDP-11 / 34'e 8 kullanıcı almak yerine, masanızın altındaki masa üstü PC'de birkaç yüz kullanıcıya sahip olabilirsiniz. Bankacılık, Avrupa Menkul Kıymetler Borsası, seyahat endüstrisinde (otel ve rezervasyon acenteleri), bazı otomobil parçaları evlerinde ve en başarılı hastanelerde (ticari, özel veya topluluk) bir şekilde MUMPS çalıştırılmaktadır. VA'nın şu anda 9 milyondan fazla hastası için 30 yılı aşkın sonuç geçmişi bulunmaktadır. Bu, Boston'daki Beth Israel / Deaconess Hastanesi dışında, kendi inşa ettikleri MUMPS sisteminde 35 yılı aşkın bir sonuca sahip olan başka bir sağlık sisteminin başaramadığı bir şeydir. seyahat endüstrisi (oteller ve rezervasyon acenteleri), bazı otomobil parçaları evleri ve en başarılı hastaneler (ticari, özel veya topluluk) bir şekilde MUMPS çalıştırıyor. VA'nın şu anda 9 milyondan fazla hastası için 30 yılı aşkın sonuç geçmişi bulunmaktadır. Bu, Boston'daki Beth Israel / Deaconess Hastanesi dışında, kendi inşa ettikleri MUMPS sisteminde 35 yılı aşkın bir sonuca sahip olan başka bir sağlık sisteminin başaramadığı bir şeydir. seyahat endüstrisi (oteller ve rezervasyon acenteleri), bazı otomobil parçaları evleri ve en başarılı hastaneler (ticari, özel veya topluluk) bir şekilde MUMPS çalıştırıyor. VA'nın şu anda 9 milyondan fazla hastası için 30 yılı aşkın sonuç geçmişi bulunmaktadır. Bu, Boston'daki Beth Israel / Deaconess Hastanesi dışında, kendi inşa ettikleri MUMPS sisteminde 35 yılı aşkın bir sonuca sahip olan başka bir sağlık sisteminin başaramadığı bir şeydir.



4

Evet, MUMPS çok canlı. ABD'deki VA Hastanelerinin büyük bir kısmı MUMPS kullanıyor.


3
Ve hastaların iyi bir kısmı hayatta mı? :-)
Maniero

8
@bigown: Elbette. Aksi takdirde, hala hasta olmazlardı.
Mason Wheeler


3

Ayrıca g.tm'de yeniyim, ancak buna cevap verebilirim:

Evet, Kabakulak yaşıyor. Üzerinde hala çalışan insanlar var. İşte bazı örnekler:

gt.m'de şimdi öğrendiğim bir Openstreetmap api sunucusu yazan http://georgejames.com/ .

Ayrıca g.tm için modern kurumsal web araçları da var http://gradvs1.mgateway.com/main/

ve canlı olduğuna dair son kanıt, en son GNU / linux ve bulut platformlarına taşınmış olduğudur.

mikrofon



1

Bunu okumalısınız:

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

MUMPS hakkında.

Öte yandan, DC bölgesinde çalışıyorum ve sadece sık sık çalıştıkları MUMPS'un ne olduğunu bilmekle kalmayıp düzenli olarak insanlarla karşılaşıyorum.


Bu ... beni KORKUTAN. Şimdi yıkanmam gerektiğini hissediyorum. :(
Matt DiTrolio

1
SQL çağında, makalenin listelediği bu sorunların özellikler olduğunu açıklamak zor. Bir harf hız içindir. Bir tür, otomatik yazmadan çok daha iyidir. Vb
ern0

1

Günlük WTF dışında, herhangi bir bağlamda veya herhangi bir nedenle kullanan birini hiç duymadım. Bundan ne tür sonuçlar çıkarılabilir okuyucuya kadar. ;)


1

Interstar'ın işlevleri kullanmak için doğru yazılmış örneği :

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

g()  
  new x  
  set x = 5  
  quit x  

do f  

fdo ile çağrılan bir yordamdır. Bu durumda olduğu gibi, resmi parametreleri yoksa (),. Bir yordam sadece sonlandırılır ve hiçbir şey döndürmez.

g()diğer yandan bir işlevdir. Yeni x, doğru kapsam için çok önemlidir x. Bir işlev adından önce $$gelip çağrılır ve bir dönüş değeri ile ÇIKIR. Bir işlevin, burada olduğu gibi boş olsa bile, resmi bir parametre listesi bildirilmiş olması gerekir. Aslında şu örneğini şöyle yazabilirsiniz g():

g()  
 quit 5

Şimdi her şey mükemmel davranacak. Bazı nedenlerden dolayı, Kabakulak geliştiricilerinin çoğu işlevlerin varlığını fark etmiş ya da anlamış gibi görünmüyor ya da bunlar ve prosedürler arasındaki farkı anlamıyorlar. Bence Kabakulak'a yeni gelen insanların ellerini dehşete düşürmelerinin nedenlerinden biri de bu (şaşırtıcı değil) - orada çok fazla korkunç kod var.

Yukarıda gösterildiği gibi yazılmış, hepsi oldukça temiz ve saygın şeyler. Ancak, değişkenleri fonksiyonlar ve prosedürler içinde açıkça kapsamak programcıya bağlıdır. Onları dışarıda bırakın, küresel olacaklar ve her yere sızacaklar. İşin püf noktası, her bir işlevi tek başına giderken inşa etmek ve test etmek ve bunların resmi parametrelerinden başka hiçbir şeye güvenmemelerini sağlamak ve bittiğinde geride hiçbir şey bırakmamaktır.


Şimdi, yeni komutlar kullanmayan ve değişkenlerin global olmasına dayanan (bu yüzden Yeni değişkenler ise kırılır) Kabakulak kodunu görmenizin nedenlerinden biri, geçmişte işlevlerden önce yazılmış ve dile sözcüksel kapsam eklenmiştir. Ne yazık ki orada bir sürü eski kod var ve evet, sürdürmek için bir kabus haline geliyor, ama bu sizin için miras. Öte yandan, endişelenecek eski bir şey olmadan sıfırdan yeni şeyler yazmanız koşuluyla, temiz, modern, iyi kalpli Kabakulak kodu yazmak oldukça mümkündür.
Rob

Orijinal örneğinize bakıldığında, f yordamında yeni bir değişiklik olduğunda x değeri otomatik olarak g için kullanılabilir - Kabakulak tam da bu şekilde. Aynı şekilde, C-sözdizimi dillerine alışkın olan kişiler, Javascript'teki kapsamın, örneğin bir işlev içindeki döngülere veya bloklara değil, yalnızca işlevlere uygulandığını keşfettiklerinde şaşırırlar. Sadece bu şekilde - bir kez bildiğinizde, buna göre başa çıkıyorsunuz. Bu tür deyimler insanları Javascript'i kabul etmeyi ve kabul etmeyi durdurmadı.
Rob

Rob: "Orijinal örneğinize baktığımızda, f yordamında yeni bir değişiklik olduğunda x değeri otomatik olarak g için kullanılabilir - Kabakulak tam da bu şekilde." Aslında! MUMPS'in sözlüksel değil dinamik bir kapsama sahip olduğunu söylemek budur. Sözcüksel olarak kapsamlı bir dilde, g işlevinde "yeni x" olması gerekmez, çünkü programın sözcüksel yapısı (yani g'nin f'nin tanımı dışında tanımlanmış olması), g ve f'de atıfta bulunulan xs, tamamen farklı iki değişkendir.
interstar

Rob. Daha geniş noktada, MUMPS programcılarının iyi disiplinli bir ekibi, sıfırdan yazma ve tüm değişkenlerin yerel olmasını sağlamak için dikkatle "yeni" kullanma, dinamik kapsam belirleme acılarından kaçınabilir. Tabii, katılıyorum. Ama neden diğer tüm çağdaş dillerin size ücretsiz olarak verdiğini çoğaltmak için demir disiplinine ve yüzlerce ekstra kod satırına ihtiyacımız var? Ayrıca, bu disiplinle yazılmayan eski kodla karşılaşırsanız, daha sonra koymak neredeyse imkansızdır, çünkü sistemin bilgi aktarmak için bu yerel olmayanlardan birine güvenip güvenmediğini söyleyemezsiniz. .
interstar

Altyordam değişkenlerini ayırmak için başka (eski) yöntemler vardır: sistem yardımcı programlarının tüm değişken adları '%' işaretiyle başlar, bu nedenle "sistem ad alanında" olurlar. Ayrıca, Yeni'de değişkenleri adlandırmak hız ile ilgilidir: yeniden kullanılan değişkenleri yığına itmek için açıklayıcı bir komut kullanırsanız, yorumlayıcı rutin girdikten sonra hiçbir şey yapmaz. Ayrıca, tüm geçerli değişkenleri gizleyen parametreler olmadan Yeni'yi kullanabilirsiniz .
ern0
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.