МУМПС живий? [зачинено]


11

На моєму першому робочому місці ми використовували Digital Standard MUMPS на PD-11-клоні (TPA 440), потім ми перейшли на Micronetics Standard MUMPS, що працює на машині Hewlett-Packard, HP-UX 9, приблизно на початку 90-х.

Досі МУМПС живий? Хтось ним користується? Якщо так, будь ласка, напишіть про це кілька слів: чи використовуєте ви його в символьному режимі, чи він діє як веб-сервер? і т. д. (я маю на увазі і Каше)

Якщо ви його використовували, які ваші почуття з цього приводу? Вам сподобалось?


1
Я не думаю , що хто -то любить то , що виглядає як це . Принаймні перл виразний.
imgx64

13
"Чи МУМПС живий?" - Так, але всі розробники вбивають себе.
Стівен Еверс

@ imgx64 Бог, який виглядає жахливо!
TheLQ

Вам не потрібно використовувати коротку форму команд "DHSY =% YK% H,% YQ", ви повинні написати повні імена команд (і використовувати довші імена міток / змінних): "Do HourCount Set Year =% YearParam Kill% HourParam ,% РікParam Quit ". Крім того, через роки використання короткої форми команди я написав програму в 20 рядків з командами usng long-form та довгими названими змінними. Мої колеги сказали: "гаразд, це гарний жарт, але не робіть цього знову", читати було в 10 разів важче, ніж короткі команди.
ern0

Відповіді:


11

Інтерсистеми продають похідну MUMPS: http://www.intersystems.com

Деякі з найцікавіших людей MUMPS, напевно, тут: http://www.outoftheslipstream.com/

Я почав вести журнал про кеш (похідне MUMPS) пару років тому: http://cachetastic.blogspot.com/ (але потім змінив роботу)

Перебуваючи поза межами світу протягом декількох років, я думаю, що рух NoSQL - це, мабуть, найкраще і найгірше, що трапляється з MUMPS. Зрештою, це, ймовірно, буде як помстити, так і вбити. Тому що хтось в якийсь момент збирається винаходити базу даних та структуру запитів майже однаково, але не маючи зв'язку з традицією MUMPS. Тоді люди будуть захоплюватися цією новою системою зберігання. Але ніхто більше ніколи не вибере похідну MUMPS.

Наприклад, місяць-два тому я розмовляв з колегою про те, щоб використовувати Redis для кешування запиту чогось у нашій програмі Django. У нас було велика кількість записів, адресованих трійкою з трьох клавіш, і потрібно було швидко отримати підмножини, що відповідають одній або двох з цих клавіш (але різні комбінації в різний час).

Це та річ, яку їсть МУМП на сніданок. Але нам було важко вдавитись до ключового переділу, структури пари пари. Навіть зі словниками. (Те ж саме було б і в пам'яті тощо). Вперше в моєму житті я дійсно шкодував, що не зміг написати цей модуль в 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 (і кеш, і GT.M). Емуляція його спрощеної та основної структури ключів / значень пари та інтерфейсів API - це торт, і клієнти Redis, яких я тестував, навіть не знають, що вони спілкуються з базою даних Mumps замість належного Redis.

Однак, як каже interstar, база даних Mumps здатна набагато більше з точки зору її структури даних (насправді база даних Mumps може легко імітувати всі 4 типи баз даних NoSQL: ключ / значення, таблиця, документ та графік, а також може моделювати реляційні та об'єктні dbs - все відразу за потреби), а також правильно відсортований та автоматичний баланс між пам'яттю та диском. На відміну від баз даних NoSQL, які існували протягом декількох років, технології Mumps зрілі, випробувані, протестовані, добре підтримуються та мають аналітичні пакети та пакети адміністрування та мають таку продуктивність, за яку багато баз даних NoSQL, наприклад CouchDB, загинуть .

То чому б не постачальники Cache та GT.M активно просуваються на ринок NoSQL, а не дозволяють комусь винаходити колесо, як ви кажете?

Щодо втомлених стареньких переслідувань щодо мови та використання цього стародавнього та відвертого прикладу з сайту Вікіпедії:

a) До бази даних свинки можна отримати доступ до вашого домашнього улюбленця, сучасного вибору мови, якщо ви хочете

б) цей стиль програмування вийшов разом з ковчегом і був написаний у той час, щоб видавити дивовижну продуктивність з комп'ютерів PDP, які мали меншу потужність обробки, ніж чіп у вашому годиннику. Кодування сучасних паротитів насправді дуже схоже за стилем на Python і може бути таким же чистим, читабельним та ремонтопридатним.

в) Як і будь-яка мова, є хороші приклади, які ви можете знайти і страшні. Не припускайте, що кодування паротиту повинно бути настільки непрозорим і старомодним, як приклад на сайті Вікіпедії.

..і Мейсоне, мій висновок був би, що, можливо, ти не такий знайомий з пейзажем бази даних, як ти думав, що ти був! :-) Якщо у вас були будь-які форми медикаментозного лікування у вашому житті, ваша інформація проходила б через незрозумілу систему паротиту, включаючи ті, які керують запитом ваших тестів. Вмістом вашої щоденної газети може керувати система Mumps, і навіть піца, яку ви замовили в Інтернеті, ймовірно, була також і через систему Mumps. Логістика предметів, які ви могли б перевезти за кордон, ймовірно, керувала системою свинки, і якщо вам трапився дослідник, якому потрібні були певні метали чи кераміка, ви, ймовірно, замовили їх через систему паротиту.

Однією з причин, з якої ви рідко чуєте про те, що насправді є дивовижно поширеною базою даних, є те, що постачальники традиційно мають справу безпосередньо з розробниками додатків / систем, а не з кінцевими користувачами, тому база даних зазвичай вбудовується за кадром у продукти.


1
Я думаю, що мова непогана. Я не намагався, але це має бути досить швидко на сучасному обладнанні. Остання версія MSM підтримувала структуроване програмування: локальні змінні (Нова команда), параметри функцій, вбудовані підпрограми для багато рядків. Ми були дуже задоволені цими можливостями, і ми створили купу утиліт: переглядач списків, меню тощо. Нарешті, у нас закінчився стек, тому ми попросили Micronetics збільшити розмір стека. Вони склали нам власну версію MSM на 32-дюймову стек замість 16-ти глибокої за замовчуванням.
ern0

1
Щоб трохи відштовхнути Роба, хоча я думаю, що на MUMPS db варто звернути увагу, мені цікаво, чи просто db, доступ до якого можна отримати з іншої мови, все ще можна назвати MUMPS. Кожен, хто обирає MUMPS, очікує, що зможе запустити застарілий код. Отже, МУМПС, подобається це чи ні, дорівнює db + мові.
міжзірка

2
Як я вже згадував в іншому місці, справжнє порушення катастрофи / угоди для мови - це динамічне оцінювання. Я не думаю, що жоден інженер сьогодні може виправдати вибір мови без локальних змінних, які залишаються локальними. Таким чином, MUMPS db в будь-якому випадку використовуйте як компонент чорного поля, але мова виходить за рамки викупу і її слід перепочити.
interstar

1
У свинки є повне лексичне розслідування змінних - це робилося роками, але багато людей, схоже, не помічали! Код свинки може бути таким же чистим і добре поводитися, як і будь-яка інша мова. Насправді Mumps має дуже багато подібностей до Javascript з точки зору змінного масштабу. напр., New in Mumps - це фактично те саме, що і var у Javascript. За замовчуванням, однак, змінні мають загальний діапазон в обох мовах.
Роб

1
Роб. Я точно не помітив лексичного обстеження змінних у кеші. Як щодо мого прикладу в cachetastic.blogspot.com/2008/07/… ? Для цього використовується ключове слово "нове", але абсолютно НЕ потрібне правило розміщення. X в f і x в g НЕ повинні бути однаковими змінними БЕЗ g, не маючи явного приховування будь-якого x, який трапився в стеку. Те саме, що перетворюється у javascript, замінюючи "новий" COS на "var", правильно дає x in f як невизначений.
interstar

6

МУМПС дуже живий. Це була одна з найдостойніших систем, яка перебуває у власних руках. Персонал програмування зазвичай невеликий, а час роботи вражаючий. Недосвідченим може здатися, що MUMPS тупий, але можна написати дуже чіткий та високофункціональний код за дуже небагато ключових штрихів, а структури даних, підтримувані MUMPS, роблять його надзвичайно потужним та дуже транспортабельним у різних архітектурах. Усі лікарні з ВА використовують MUMPS, а середній час на ремонт у більшості випадків дуже швидкий. Система VistA, написана на MUMPS, легко завантажується з Source Forge та полімодального характеру (до бази даних можна отримати доступ багатьма способами, прокрутки та прокрутки, тонкий клієнт, браузер або RPC або інший програмний інтерфейс) VistA та MUMPS через багатьох, хто заглиблюється в нього. MUMPS - це проста мова з дуже малою кількістю команд та одним типом даних. Це легко вивчити, оскільки це інтерпретована мова і залишає стек та таблицю символів неушкодженими, щоб точно побачити, що відбувається, коли програма зупинилася для налагодження. VistA використовувався для управління лікарнями Міністерства оборони (складова система охорони здоров’я, ХСН), а також Індійською службою охорони здоров'я (IHS RPMS), а колись використовувався Службою охорони здоров'я США. Це заощадило країні багато мільйонів доларів операційних витрат. MUMPS працює майже на чому завгодно. Він легко моделює майже будь-яку іншу модель бази даних і забезпечує напрочуд швидкий доступ до баз даних. Модель MUMPS фактично може отримати більш високу продуктивність із більшою кількістю користувачів у системі (у деяких випадках, із-за аспектів кешування MUMPS, де блоки вказівників, необхідні для пошуку блоку даних, вже є в пам'яті, і їх не потрібно отримувати знову, BTW, накладні наказки для MUMPS працюють приблизно на 2%, тому більшість вашої бази даних фактичні дані користувачів). MUMPS спочатку був написаний для роботи на машині 2K. Напад нових технологій лише розширив усі можливості середовища MUMPS у сферу, де зараз цілі лікарні працюють на дешевих товарних серверах. На початку MUMPS розлучився з обладнанням і дуже добре виграв від цього рішення. Ми не турбуємося про розмір слова чи точність, а також про те, скільки або наскільки велике. База даних запізнюється на зв'язок і зростає в міру потреби конкретних записів. Жодна запис у будь-якій базі даних не є більшим, ніж потрібно. Базу даних можна розширювати або обрізати як за частиною запису, так і за всім записом. А MUMPS все ще навколо? Замість того, щоб отримати 8 користувачів на PDP-11/34, ви можете отримати пару сотень користувачів на настільному ПК під вашим робочим столом. Він використовується в банківській справі, на Європейській фондовій біржі, в туристичній галузі (готелі та бронювальні агенти), деяких будинках з автозапчастинами та в більшості успішних лікарень (комерційних, приватних чи громадських), які працюють в MUMPS у певній формі. В даний час VA має понад 30 років історії результатів для своїх понад 9 мільйонів пацієнтів. Це саме по собі - це те, чого не було досягнуто жодної іншої системи охорони здоров’я, окрім лікарні Бет Ізраїль / Діаконесс у Бостоні, яка має понад 35 років результатів роботи у своїй побудованій системі MUMPS. ти betcha? Замість того, щоб отримати 8 користувачів на PDP-11/34, ви можете отримати пару сотень користувачів на настільному ПК під вашим робочим столом. Він використовується в банківській справі, на Європейській фондовій біржі, в туристичній галузі (готелі та бронювальні агенти), деяких будинках з автозапчастинами та в більшості успішних лікарень (комерційних, приватних чи громадських), які працюють в MUMPS у певній формі. В даний час VA має понад 30 років історії результатів для своїх понад 9 мільйонів пацієнтів. Це саме по собі - це те, чого не було досягнуто жодної іншої системи охорони здоров’я, окрім лікарні Бет Ізраїль / Діаконесс у Бостоні, яка має понад 35 років результатів роботи у своїй побудованій системі MUMPS. ти betcha? Замість того, щоб отримати 8 користувачів на PDP-11/34, ви можете отримати пару сотень користувачів на настільному ПК під вашим робочим столом. Він використовується в банківській справі, на Європейській фондовій біржі, в туристичній галузі (готелі та бронювальні агенти), деяких будинках з автозапчастинами та в більшості успішних лікарень (комерційних, приватних чи громадських), які працюють в MUMPS у певній формі. В даний час VA має понад 30 років історії результатів для своїх понад 9 мільйонів пацієнтів. Це саме по собі - це те, чого не було досягнуто жодної іншої системи охорони здоров’я, окрім лікарні Бет Ізраїль / Діаконесс у Бостоні, яка має понад 35 років результатів роботи у своїй побудованій системі MUMPS. туристична індустрія (готелі та бронювальні агенти), деякі будинки з автозапчастинами та більшість успішних лікарень (комерційних, приватних чи громадських) працюють в певній формі. В даний час VA має понад 30 років історії результатів для своїх понад 9 мільйонів пацієнтів. Це саме по собі - це те, чого не було досягнуто жодної іншої системи охорони здоров’я, окрім лікарні Бет Ізраїль / Діаконесс у Бостоні, яка має понад 35 років результатів роботи у своїй побудованій системі MUMPS. туристична індустрія (готелі та бронювальні агенти), деякі будинки з автозапчастинами та більшість успішних лікарень (комерційних, приватних чи громадських) працюють в певній формі. В даний час VA має понад 30 років історії результатів для своїх понад 9 мільйонів пацієнтів. Це саме по собі - це те, чого не було досягнуто жодної іншої системи охорони здоров’я, окрім лікарні Бет Ізраїль / Діаконесс у Бостоні, яка має понад 35 років результатів роботи у своїй побудованій системі MUMPS.


6

Є кілька серйозних запитань свинки на ТА:

/programming/tagged/mumps


Чому потік? Питання було: Чи ще МУМПС живий? Хтось ним користується? - напевно, це відповідні докази того, що хтось серйозно пише новий код та / або вивчає MUMPS?
Колін Пікард

4

Так, МУМПС дуже живий. Значна частина лікарень з ВА в США використовують MUMPS.


3
А хороша частина пацієнтів жива? :-)
Маньєро

8
@bigown: Звичайно. Якби ні, вони все одно не були б пацієнтами.
Мейсон Уілер


3

Я також новачок у g.tm, але можу відповісти на це:

Так, свинка жива. Є ще люди, які працюють над цим. ось кілька прикладів:

http://georgejames.com/, який написав apdi-сервер Openstreetmap у gt.m, який я зараз навчаюсь.

Зараз також є сучасні веб-інструменти для підприємств для g.tm http://gradvs1.mgateway.com/main/

і останнім підтвердженням того, що він живий, є те, що він перенесений на останні GNU / linux та хмарні платформи.

мікрофон



1

Ви повинні прочитати це:

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

про МУМП.

З іншого боку, я працюю в районі постійного струму і натрапляю на людей досить регулярно, що не тільки знаю, що таке MUMPS, вони часто працюють у ньому.


Це .... що ВИЗНАЧЕНО мене. Зараз я відчуваю, що мені потрібно купатись. :(
Метт Дітроліо

1
Важко пояснити в епоху SQL, що ці питання, перелічені у цій статті, є особливостями. Одна буква - для швидкості. Один тип набагато кращий, ніж автоматичний набір тексту. І т. Д.
ern0

1

Ну, я ніколи не чув, щоб хтось використовував його в будь-якому контексті чи з будь-якої причини, за винятком видання The Daily WTF. Які висновки можна зробити з цього, залежить від читача. ;)


1

Приклад Interstar правильно написаний для використання функцій:

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

g()  
  new x  
  set x = 5  
  quit x  

do f  

fце процедура, на яку посилається команда. Якщо, як і в цьому випадку, він не має формальних параметрів, вам це не потрібно (). Процедура просто закривається і нічого не повертає.

g()з іншого боку - функція. Новий xмає важливе значення для правильного застосування x. Функція викликається, передуючи її імені, $$і вона QUITs зі зворотним значенням. Функція повинна мати офіційний список параметрів, оголошений, навіть якщо він порожній, як тут. Насправді ви можете написати цей примірник g()просто так:

g()  
 quit 5

Зараз все буде чудово поводитися. Чомусь багато розробників Mumps, схоже, не помітили чи зрозуміли існування функцій, або не розуміють різницю між ними та процедурами. Я думаю, що це одна з причин, чому люди, які не з'явилися у свинки, з жахом розводять руки (не дивно) - там дуже багато жахливого коду.

Написано, як показано вище, все це досить чисті та респектабельні речі. Однак програміст повинен чітко застосовувати змінні в межах функцій та процедур. Залиште їх, і вони будуть глобальними і просочуться всюди. Трюк полягає в тому, щоб створити і протестувати кожну функцію, коли ти йдеш ізольовано і гарантуєш, що вони покладаються тільки на свої формальні параметри, і, закінчивши, вони нічого не залишають позаду.


Тепер одна з причин, коли ви бачите код Mumps, який не використовує нові команди, і який покладається на те, що змінні є глобальними (тому він ламається, якщо ви створюєте нові змінні), це тому, що він був написаний у минулий час перед функціями та до мови додано лексичне обстеження. На жаль, є багато спадкового коду там, і так, це в кінцевому підсумку є кошмаром для підтримки, але це спадщина для вас. З іншого боку, цілком можливо писати чистий, сучасний, добре відомий код Mumps, за умови, що ви пишете нові речі з нуля без будь-яких застарілих речей.
Роб

Дивлячись на ваш оригінальний приклад, значення x, коли new'd в процедурі f, автоматично доступне g - ось саме так виглядає Mumps. Таким же чином люди, які звикли до мов синтаксису С, дивуються, коли виявляють, що сфера дії в Javascript застосовується лише до функцій, а не, наприклад, до циклів або блоків всередині функції. Ось так і є - коли ви це знаєте, відповідно до цього впораєтеся. Такі ідіосинкразії не заважають людям приймати і приймати Javascript.
Роб

Роб: "Дивлячись на ваш оригінальний приклад, значення x, коли new'd в процедурі f автоматично доступне до g - це саме так, як Mumps". Справді! І ось що означає говорити про те, що MUMPS має динамічну сферу, а не лексичну сферу застосування. У лексично обкладеній мові вам не потрібно мати "новий х" у функції g, оскільки лексична структура програми (тобто факт, що g визначений поза визначенням f), є достатньою для гарантії того, що xs, на які посилається в g і f, - це дві абсолютно різні змінні.
interstar

Роб. Якщо говорити про те, що добре дисциплінована команда програмістів MUMPS, пишучи з нуля та обережно використовуючи "нове", щоб гарантувати, що всі змінні є локальними, може уникнути болю динамічного оцінювання. Звичайно, я згоден. Але навіщо нам потрібна залізна дисципліна та сотні зайвих рядків коду, щоб повторити те, що дає вам кожна інша сучасна мова безкоштовно? Крім того, якщо ви зіткнулися зі спадковим кодом, який не був написаний з цією дисципліною, майже неможливо ввести його пізніше, тому що ви не можете сказати, чи система покладається на одного з цих немісцевих жителів для передачі інформації навколо .
interstar

Існують інші (старіші) методи розділення змінних підпрограми: всі назви змінних утиліт системи починаються зі знаку "%", тому вони знаходяться в "просторі імен системи". Крім того, іменування змінних у "Новому" стосується швидкості: якщо ви використовуєте команду explicite для натискання повторно використаних змінних на стек, інтерпретатор не повинен нічого робити при введенні в розпорядок. Також ви можете використовувати New, без параметрів, що приховує всі поточні змінні.
ern0
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.