Apakah MUMPS hidup? [Tutup]

11

Di tempat kerja pertama saya, kami menggunakan Digital Standard MUMPS pada klon PDP 11 (TPA 440), kemudian kami telah beralih ke MUMPS Standar Mikro yang berjalan pada mesin Hewlett-Packard, HP-UX 9, sekitar awal 90-an.

Apakah MUMPS masih hidup? Apakah ada orang yang menggunakannya? Jika ya, tolong tulis beberapa kata tentang itu: apakah Anda menggunakannya dalam mode karakter, apakah itu bertindak sebagai server web? dll. (maksud saya Caché juga.)

Jika Anda sudah menggunakannya, apa perasaan Anda tentang itu? Apakah kamu menyukainya?

ern0
sumber
1
Saya tidak berpikir ada yang suka sesuatu yang terlihat seperti ini . Setidaknya perl ekspresif.
imgx64
13
"Apakah MUMPS hidup?" - Ya, tetapi semua pengembang bunuh diri.
Steven Evers
@imgx64 Tuhan yang terlihat mengerikan!
TheLQ
Anda tidak perlu menggunakan bentuk pendek perintah, "DHSY =% YK% H,% YQ", Anda harus menulis nama perintah lengkap (dan menggunakan label yang lebih panjang / nama variabel): "Lakukan HourCount Set Tahun =% YearParam Kill% HourParam ,% YearParam Berhenti ". Juga, setelah bertahun-tahun menggunakan formulir perintah pendek, saya menulis program 20-baris dengan menggunakan perintah bentuk panjang dan variabel bernama lama. Kolega saya diberi tahu: "oke, ini lelucon yang bagus, tapi jangan lakukan lagi", itu 10 kali lebih sulit dibaca daripada perintah pendek.
ern0

Jawaban:

11

Intersystems menjual turunan MUMPS: http://www.intersystems.com

Beberapa orang paling menarik di MUMPS mungkin ada di sini: http://www.outoftheslipstream.com/

Saya mulai menulis blog tentang Cache (turunan MUMPS) beberapa tahun yang lalu: http://cachetastic.blogspot.com/ (tetapi kemudian berganti pekerjaan)

Setelah keluar dari dunia itu selama beberapa tahun, pemikiran saya adalah bahwa gerakan NoSQL mungkin adalah hal terbaik dan terburuk yang terjadi pada MUMPS. Pada akhirnya itu cenderung membenarkan dan membunuhnya. Karena seseorang, pada titik tertentu, akan menemukan kembali database MUMPS dan struktur permintaan hampir identik, tetapi tanpa koneksi ke tradisi MUMPS. Maka orang akan rave tentang sistem penyimpanan baru ini. Tetapi tidak seorang pun akan pernah memilih turunan MUMPS lagi.

Sebagai contoh, satu atau dua bulan yang lalu, saya sedang berbicara dengan seorang kolega tentang menggunakan redis untuk cache mencari sesuatu di aplikasi Django kami. Kami memiliki sejumlah besar catatan yang ditangani oleh tiga dari tiga kunci, dan perlu untuk mendapatkan subset yang cocok dengan satu atau dua kunci ini (tetapi kombinasi berbeda pada waktu yang berbeda).

Ini adalah hal yang MUMPS makan untuk sarapan. Tapi kami merasa sulit untuk masuk ke kunci redis, struktur pasangan val. Bahkan dengan kamus. (Hal yang sama berlaku untuk memcached dll.) Untuk pertama kalinya dalam hidup saya, saya benar-benar menyesal bahwa saya tidak dapat menulis modul ini dalam Cache ObjectScript.

Beberapa pemikiran lain tentang Cache di sini:

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

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

interstar
sumber
9

Interstar lucu harus menyebutkan Redis. Saya sebenarnya telah merekayasa ulang hampir semua perilaku Redis menggunakan Mumps (baik Cache dan GT.M). Meniru struktur pasangan kunci / nilai dasar dan API yang sederhana dan telah menjadi sepotong kue dan klien Redis yang saya uji bahkan tidak tahu mereka berbicara dengan database Mumps alih-alih Redis yang tepat.

Namun, seperti kata interstar, database Mumps mampu melakukan lebih banyak dalam hal struktur datanya (sebenarnya database Mumps dapat dengan mudah meniru semua 4 tipe database NoSQL: kunci / nilai, tabel, dokumen dan grafik, dan juga dapat memodelkan db relasional dan objek - sekaligus jika diperlukan), dan keseimbangan yang diurutkan dengan benar dan otomatis antara memori di dalam versus pada disk. Tidak seperti database NoSQL yang telah ada selama beberapa tahun, teknologi Mumps sudah matang, dicoba, diuji, didukung dengan baik dan memiliki paket analitik dan administrasi yang tersedia, dan memiliki jenis kinerja yang banyak dimiliki oleh database NoSQL seperti CouchDB. .

Jadi mengapa tidak vendor Cache dan GT.M mempromosikan keras ke pasar NoSQL daripada membiarkan seseorang menemukan kembali roda mereka seperti yang Anda katakan?

Mengenai pertengkaran lama yang lelah tentang bahasa dan penggunaan contoh kuno dan usang dari situs Wikipedia:

a) Basis data Mumps dapat diakses oleh bahasa hewan peliharaan seksi modern pilihan Anda jika Anda mau

b) gaya pemrograman itu keluar bersama bahtera, dan ditulis pada saat seperti itu untuk memeras kinerja luar biasa dari komputer PDP yang memiliki daya pemrosesan lebih sedikit daripada chip di arloji Anda. Pengkodean Modern Mumps sebenarnya sangat mirip gayanya dengan Python dan bisa sama bersih, mudah dibaca, dan dikelola.

c) Seperti bahasa apa pun, ada contoh bagus yang bisa Anda temukan dan yang mengerikan. Jangan berasumsi bahwa pengkodean Mumps harus sama buram dan kuno dengan contoh di situs Wikipedia.

..dan Mason, kesimpulan saya adalah bahwa mungkin Anda tidak familiar dengan lanskap basis data seperti yang Anda kira! :-) Jika Anda memiliki segala bentuk perawatan medis dalam hidup Anda, informasi Anda akan melalui beberapa sistem Mumps, termasuk yang mengelola permintaan pengujian Anda. Isi surat kabar harian Anda dapat dikelola oleh sistem Mumps dan bahkan pizza yang Anda pesan secara online mungkin juga melalui sistem Mumps. Logistik barang yang mungkin telah Anda kirim ke luar negeri mungkin dikelola melalui sistem Mumps, dan jika Anda seorang peneliti yang membutuhkan beberapa logam atau keramik mewah, Anda mungkin akan memesannya melalui sistem Mumps.

Salah satu alasan Anda jarang mendengar tentang apa yang sebenarnya merupakan basis data yang meresap secara mengejutkan adalah bahwa vendor secara tradisional berurusan langsung dengan pengembang aplikasi / sistem daripada pengguna akhir, sehingga database biasanya tertanam di belakang layar ke dalam produk.

rampok
sumber
1
Saya pikir bahasanya tidak buruk. Saya tidak mencoba tetapi pasti cukup cepat pada perangkat keras modern. Versi terbaru MSM mendukung pemrograman terstruktur: variabel lokal (perintah baru), parameter fungsi, subrutin inline untuk multi-baris. Kami sangat senang dengan fitur-fitur ini, dan kami telah membuat banyak utilitas: daftar penampil, menu dll. Akhirnya, kami kehabisan tumpukan, jadi kami meminta Micronetics untuk menambah ukuran tumpukan. Mereka mengkompilasi MSM versi custom 32-in-stack alih-alih standar 16-deep.
ern0
1
Untuk mendorong kembali sedikit Rob, sementara saya pikir db MUMPS patut diperhatikan, saya bertanya-tanya apakah hanya db, diakses dari bahasa lain masih bisa disebut MUMPS. Siapa pun yang memilih MUMPS berharap dapat menjalankan kode lawas. Jadi MUMPS, suka atau tidak, sama dengan db + bahasanya.
interstar
2
Seperti yang saya sebutkan di tempat lain, bencana / pelanggar nyata untuk bahasa adalah pelingkupan dinamis. Saya tidak berpikir insinyur mana pun, hari ini, dapat membenarkan memilih bahasa tanpa variabel lokal yang tetap lokal. Jadi, tentu saja gunakan MUMPS db sebagai komponen kotak hitam, tetapi bahasanya tidak dapat ditebus dan harus dimatikan.
interstar
1
Mumps memiliki ruang lingkup leksikal penuh variabel - telah dilakukan selama bertahun-tahun, tetapi banyak orang tampaknya tidak memperhatikan! Kode gondong bisa sama bersih dan berperilaku baik seperti bahasa lainnya. Bahkan Mumps memiliki banyak kesamaan dengan Javascript dalam hal pelingkupan variabel. misalnya New in Mumps, pada dasarnya, sama dengan var di Javascript. Secara default, bagaimanapun, variabel dicakup secara global dalam kedua bahasa.
Rob
1
Rampok. Saya tentu saja tidak memperhatikan pelingkupan leksikal variabel dalam Cache. Bagaimana dengan contoh saya di cachetastic.blogspot.com/2008/07/… ? Itu menggunakan kata kunci "baru", tetapi sama sekali BUKAN aturan pelingkupan yang Anda inginkan. X in f dan x in g TIDAK boleh variabel yang sama TANPA g harus secara eksplisit menyembunyikan x yang kebetulan ada di stack. Hal yang sama diubah menjadi javascript, menggantikan COS "baru" dengan "var" dengan benar memberikan x dalam f sebagai tidak terdefinisi.
interstar
6

MUMPS sangat hidup. Ini adalah salah satu sistem yang paling layak dipercaya yang ada di tangan yang tepat. Staf pemrograman biasanya kecil dan up-time sangat mengesankan. Tampaknya bagi yang belum tahu bahwa MUMPS tumpul, tetapi dimungkinkan untuk menulis kode yang sangat jernih dan sangat fungsional dalam sedikit stroke kunci dan struktur data yang didukung oleh MUMPS membuatnya sangat kuat dan sangat mudah diangkut di berbagai arsitektur yang berbeda. Semua rumah sakit VA menggunakan MUMPS dan rata-rata waktu perbaikan sangat cepat dalam banyak kasus. Sistem VistA yang ditulis dalam MUMPS mudah diunduh dari Source Forge dan sifat poli-modal (database dapat diakses dengan banyak cara, menggulung dan menggulir, thin client, browser, atau RPC, atau antarmuka program lainnya) dari VistA dan MUMPS hadir melalui bagi banyak orang yang menyelidiki hal itu. MUMPS adalah bahasa sederhana dengan sedikit perintah dan satu tipe data. Mudah dipelajari karena merupakan bahasa yang ditafsirkan dan meninggalkan tumpukan dan tabel simbol utuh untuk melihat dengan tepat apa yang terjadi ketika aplikasi berhenti untuk debug. VistA telah digunakan untuk menjalankan rumah sakit Departemen Pertahanan (Composite Health Care System, CHCS) serta Indian Health Service (IHS RPMS), dan pernah digunakan oleh US Public Health Service. Ini menyelamatkan negara itu jutaan dolar dalam biaya operasional. MUMPS berjalan pada hampir semua hal. Ini memodelkan hampir semua model basis data lainnya dengan mudah dan secara mengejutkan memberikan akses cepat ke basis data. Model MUMPS sebenarnya bisa mendapatkan kinerja yang lebih cepat dengan lebih banyak pengguna di sistem (dalam beberapa kasus, karena aspek-aspek cache MUMPS di mana blok pointer yang diperlukan untuk menemukan blok data sudah ada dalam memori dan mereka tidak perlu diambil lagi, BTW, overhead pointer untuk MUMPS hanya berjalan sekitar 2%, sehingga sebagian besar basis data Anda adalah data pengguna aktual). MUMPS pada awalnya ditulis untuk dijalankan pada mesin 2K. Serangan teknologi baru hanya memperluas fitur lengkap dari lingkungan MUMPS ke ranah di mana seluruh rumah sakit sekarang dijalankan pada server komoditas berbiaya rendah. Awalnya, MUMPS bercerai dari perangkat keras dan telah mendapat manfaat sangat baik dari keputusan itu. Kami tidak khawatir tentang ukuran kata atau ketepatan, atau berapa banyak atau seberapa besar. Basis data terlambat mengikat dan tumbuh sesuai kebutuhan catatan spesifik. Tidak ada catatan dalam basis data apa pun yang lebih besar dari yang seharusnya. Basis data dapat diperluas atau dipangkas sesuai bagian dari catatan atau sebagai catatan keseluruhan. Apakah MUMPS masih ada ?, Anda betcha? Alih-alih mendapatkan 8 pengguna pada PDP-11/34, Anda bisa mendapatkan beberapa ratus pengguna di PC di atas meja di bawah meja Anda. Ini sedang digunakan di Perbankan, Bursa Efek Eropa, industri perjalanan (hotel dan agen pemesanan), beberapa rumah suku cadang mobil, dan rumah sakit paling sukses (komersial, swasta, atau masyarakat) menjalankan MUMPS dalam beberapa bentuk. VA saat ini memiliki lebih dari 30 tahun riwayat hasil untuk lebih dari 9 juta pasien mereka. Itu sendiri adalah sesuatu yang tidak dicapai oleh sistem perawatan kesehatan lain, kecuali untuk Beth Israel / Deaconess Hospital di Boston yang memiliki hasil lebih dari 35 tahun dalam sistem MUMPS buatan mereka. Anda betcha? Alih-alih mendapatkan 8 pengguna pada PDP-11/34, Anda bisa mendapatkan beberapa ratus pengguna di PC di atas meja di bawah meja Anda. Ini sedang digunakan di Perbankan, Bursa Efek Eropa, industri perjalanan (hotel dan agen pemesanan), beberapa rumah suku cadang mobil, dan rumah sakit paling sukses (komersial, swasta, atau masyarakat) menjalankan MUMPS dalam beberapa bentuk. VA saat ini memiliki lebih dari 30 tahun riwayat hasil untuk lebih dari 9 juta pasien mereka. Itu sendiri adalah sesuatu yang tidak dicapai oleh sistem perawatan kesehatan lain, kecuali untuk Beth Israel / Deaconess Hospital di Boston yang memiliki hasil lebih dari 35 tahun dalam sistem MUMPS buatan mereka. Anda betcha? Alih-alih mendapatkan 8 pengguna pada PDP-11/34, Anda bisa mendapatkan beberapa ratus pengguna di PC di atas meja di bawah meja Anda. Ini sedang digunakan di Perbankan, Bursa Efek Eropa, industri perjalanan (hotel dan agen pemesanan), beberapa rumah suku cadang mobil, dan rumah sakit paling sukses (komersial, swasta, atau masyarakat) menjalankan MUMPS dalam beberapa bentuk. VA saat ini memiliki lebih dari 30 tahun riwayat hasil untuk lebih dari 9 juta pasien mereka. Itu sendiri adalah sesuatu yang tidak dicapai oleh sistem perawatan kesehatan lain, kecuali untuk Beth Israel / Deaconess Hospital di Boston yang memiliki hasil lebih dari 35 tahun dalam sistem MUMPS buatan mereka. industri perjalanan (hotel dan agen pemesanan), beberapa rumah suku cadang mobil, dan rumah sakit paling sukses (komersial, swasta, atau masyarakat) menjalankan MUMPS dalam beberapa bentuk. VA saat ini memiliki lebih dari 30 tahun riwayat hasil untuk lebih dari 9 juta pasien mereka. Itu sendiri adalah sesuatu yang tidak dicapai oleh sistem perawatan kesehatan lain, kecuali untuk Beth Israel / Deaconess Hospital di Boston yang memiliki hasil lebih dari 35 tahun dalam sistem MUMPS buatan mereka. industri perjalanan (hotel dan agen pemesanan), beberapa rumah suku cadang mobil, dan rumah sakit paling sukses (komersial, swasta, atau masyarakat) menjalankan MUMPS dalam beberapa bentuk. VA saat ini memiliki lebih dari 30 tahun riwayat hasil untuk lebih dari 9 juta pasien mereka. Itu sendiri adalah sesuatu yang tidak dicapai oleh sistem perawatan kesehatan lain, kecuali untuk Beth Israel / Deaconess Hospital di Boston yang memiliki hasil lebih dari 35 tahun dalam sistem MUMPS buatan mereka.

Chris Richardson
sumber
6

ada beberapa pertanyaan serius tentang SO:

/programming/tagged/mumps

Colin Pickard
sumber
Mengapa downvote? Pertanyaannya adalah apakah MUMPS masih hidup? Apakah ada orang yang menggunakannya? - tentunya ini bukti relevan dari seseorang yang serius menulis kode baru dan / atau mempelajari MUMPS?
Colin Pickard
4

Ya MUMPS sangat hidup. Sebagian besar Rumah Sakit VA di AS menggunakan MUMPS.

Kavet Kerek
sumber
3
Dan sebagian pasien masih hidup? :-)
Maniero
8
@ Bigown: Tentu saja. Jika tidak, mereka tidak akan tetap menjadi pasien.
Mason Wheeler
4

VistA (Sistem Informasi Kesehatan dan Arsitektur Teknologi Veteran) adalah AFAIK yang masih dalam pengembangan aktif: http://en.wikipedia.org/wiki/VistA_EMR

Slu
sumber
3

Saya juga baru mengenal g.tm, tetapi saya bisa menjawab ini:

Ya, gondong masih hidup. Masih ada orang yang mengerjakannya. berikut ini beberapa contohnya:

http://georgejames.com/ yang menulis server api Openstreetmap di gt.m yang saya pelajari sekarang.

Sekarang juga ada alat web perusahaan modern untuk g.tm http://gradvs1.mgateway.com/main/

dan bukti terakhir bahwa itu hidup adalah bahwa ia telah porting ke platform GNU / linux dan cloud terbaru.

mikrofon

h4ck3rm1k3
sumber
2

Salah satu perusahaan besar yang bekerja dalam rekam medis, Sistem Epic , masih menggunakan MUMPS dalam aplikasi mereka.

Steve Wranovsky
sumber
1

Anda harus membaca ini:

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

tentang MUMPS.

Di sisi lain, saya bekerja di area DC dan bertemu dengan orang-orang secara teratur yang tidak hanya tahu MUMPS apa yang sering mereka kerjakan.

Bill Leeper
sumber
Itu .... itu MENGERIKAN saya. Aku merasa perlu mandi, sekarang. :(
Matt DiTrolio
1
Sulit dijelaskan di zaman SQL, bahwa masalah ini, yang dicantumkan dalam artikel, adalah fitur. Satu huruf untuk kecepatan. Satu jenis jauh lebih baik daripada mengetik otomatis. Dll
ern0
1

Yah, saya belum pernah mendengar ada yang menggunakannya, dalam konteks apa pun atau karena alasan apa pun, kecuali di The Daily WTF. Kesimpulan apa yang bisa ditarik dari sini terserah pembaca. ;)

Mason Wheeler
sumber
1

Contoh Interstar ditulis dengan benar untuk menggunakan fungsi:

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

g()  
  new x  
  set x = 5  
  quit x  

do f  

fadalah prosedur yang dipanggil dengan do. Jika, seperti dalam kasus ini, tidak memiliki parameter formal, Anda tidak perlu (). Prosedur hanya Berhenti dan tidak mengembalikan apa pun.

g()di sisi lain adalah fungsi. Yang baru xsangat penting untuk ruang lingkup yang benar x. Suatu fungsi dipanggil dengan mendahului namanya dengan $$dan itu BERHENTI dengan nilai kembali. Suatu fungsi harus memiliki daftar parameter formal yang dinyatakan walaupun itu kosong seperti di sini. Sebenarnya Anda bisa menulis contoh ini g()hanya sebagai:

g()  
 quit 5

Itu semua akan berperilaku sempurna sekarang. Untuk beberapa alasan banyak pengembang Mumps tampaknya tidak memperhatikan atau memahami keberadaan fungsi, atau memahami perbedaan antara mereka dan prosedur. Saya pikir ini adalah salah satu alasan mengapa orang-orang yang baru kenal gondongan mengangkat tangan mereka dengan ketakutan (tidak mengherankan) - ada banyak sekali kode mengerikan di luar sana.

Ditulis seperti yang ditunjukkan di atas, itu semua hal yang sangat bersih dan terhormat. Namun, tergantung pada programmer untuk secara eksplisit lingkup variabel dalam fungsi dan prosedur. Biarkan mereka keluar dan mereka akan menjadi global dan bocor ke mana-mana. Triknya adalah membangun dan menguji setiap fungsi saat Anda berada dalam isolasi dan memastikan bahwa mereka tidak mengandalkan apa pun kecuali parameter formal dan, setelah selesai, mereka tidak meninggalkan apa pun.

rampok
sumber
Sekarang salah satu alasan Anda melihat kode Mumps di luar sana yang tidak menggunakan perintah baru dan yang bergantung pada variabel yang bersifat global (jadi rusak jika Anda variabel Baru) adalah karena itu ditulis pada suatu waktu di masa lalu sebelum fungsi dan Pelingkupan leksikal ditambahkan ke bahasa. Sayangnya ada BANYAK kode warisan di luar sana dan, ya, itu berakhir menjadi mimpi buruk untuk dipertahankan, tapi itu warisan untuk Anda. Di sisi lain, sangat mungkin untuk menulis kode Mumps yang bersih, modern, dan berperilaku baik, asalkan Anda menulis hal-hal baru dari awal tanpa perlu diwariskan hal-hal sebelumnya.
Rob
Melihat contoh asli Anda, nilai x, ketika baru di dalam prosedur f tersedia secara otomatis untuk g - begitulah Mumps. Dengan cara yang sama, orang-orang yang terbiasa dengan bahasa C-sintaks terkejut ketika mereka menemukan bahwa ruang lingkup dalam Javascript hanya diterapkan pada fungsi, dan tidak, misalnya, ke dalam loop atau blok di dalam suatu fungsi. Begitulah adanya - begitu Anda mengetahuinya, Anda menanganinya sesuai. Keistimewaan semacam itu tidak menghentikan orang untuk menerima dan mengadopsi Javascript.
Rob
Rob: "Melihat contoh asli Anda, nilai x, ketika baru di dalam prosedur f secara otomatis tersedia untuk g - itu persis seperti Mumps." Memang! Dan itulah artinya mengatakan bahwa MUMPS memiliki ruang lingkup dinamis dan bukan ruang lingkup leksikal. Dalam bahasa yang dibatasi leksikal, Anda tidak perlu memiliki "x baru" pada fungsi g, karena struktur leksikal program (mis. Fakta bahwa g didefinisikan di luar definisi f), cukup untuk menjamin bahwa xs yang dirujuk dalam g dan f adalah dua variabel yang sepenuhnya berbeda.
interstar
Rampok. Pada titik yang lebih luas, bahwa tim programmer MUMPS yang disiplin, menulis dari awal, dan dengan hati-hati menggunakan "baru" untuk memastikan bahwa semua variabel bersifat lokal, dapat menghindari rasa sakit pelingkupan dinamis. Tentu saya setuju. Tetapi mengapa kita perlu disiplin besi dan ratusan baris kode tambahan, untuk meniru apa yang diberikan setiap bahasa kontemporer lainnya secara gratis? Juga, jika Anda dihadapkan dengan kode lawas yang tidak ditulis dengan disiplin ini, hampir tidak mungkin untuk memasukkannya nanti, karena Anda tidak dapat memastikan apakah sistem mengandalkan salah satu dari non-lokal ini untuk menyampaikan informasi sekitar .
interstar
Ada metode lain (lama) untuk memisahkan variabel subrutin: semua nama variabel utilitas sistem dimulai dengan tanda '%', sehingga mereka berada di "system namespace". Juga, penamaan variabel dalam New adalah tentang kecepatan: jika Anda menggunakan perintah explicite untuk mendorong variabel yang digunakan kembali ke stack, interpreter tidak perlu melakukan apa-apa saat memasuki rutinitas. Anda juga dapat menggunakan Baru, tanpa parameter, yang menyembunyikan semua variabel saat ini.
ern0