-
А в Delphi получается, что типизированная константа - это вовсе и не константа даже
Ну да, при определённых настройках компилятора им можно присваивать значения.
А если используется модуль в котором такая константа должна использоваться как переменная, то настроки придётся включать для всего проекта. Глупость какая-то.
-
S1 := 'Ятакидумал';
if S = S1 then
Вот в этом примере всё очень однопроходно. Я к Delphi C/C++ отношусь именно как к навороченному макроассемблеру. Я от него уже не хочу ничего, спасибо за то, что уже есть. Но стало маловато.
-
А зря там много интересного.
MUMPS исторически был создан как язык интерпритатор. И в таком
виде существует до сих пор. Это связано с тем что некоторые конструкции
языка не поддаются компиляции в принципе. Таких конструкций 2.
Это косвенный синтаксис и команда XECUTE. В остальном все остальное
прекрасно компилируется. Последняя реализация языка это CACHE фирмы
InterSystem. В этой реализации применяется компиляция промежуточного
P-кода. Называть этот язык скриптовым у меня язык не поворачивается.
Это мощный развитый компактный язык программирования. Который на много
превосходит и С и Pasсal. На этом языке построена бала операционная система
DSM-11. И язык выполнял все функции как языка так и операционной системы.
Это язык будущего. И вот почему. В язык встроена
иерархическая база данных и она является неотемлемой частью этого языка.
База построена как B-дерево. (Кнут.3-том). Такое дерево строится на диске
и в оперативной памяти. Все переменные являются деревьями на
B-дереве в памяти. При старте Cache оно создается при стопе все уничтожается.
Управление переменными осуществляет B-деревом в памяти. В любой момент
любая переменная создается и в любой момент удаляется. Никаких сборщиков
мусора и других обслуживающих программ не надо. Библиотека встроенных
функций состоит из 12 штук. Так возможностей у ней больше чем у библиотеке
в Pasсal. Там кстати давно есть и функция аналогичная Parse. Но возможностей
у нее больше. Так как она может применяться как в правой так и в левой части.
И вырезать может любое поле. Изобретать свой язык не познакомившись
с MUMPSom это по моему идти в неверном направлении по давно
пройденному пути. Не нравится язык. Посмотри какие команды реализованы.
Как сделано управление переменными. Какая библиотека встроенных функций.
Я лично считаю что в MUMPSе самая развитая система управления данными.
Не имеющая аналогов в других языках. Команды NEW,KILL,ZKILL,SET,MERGE.
Есть книга по CACHE - Вольфганг Кирстен и др. Постреляционная
СУБД Cache 5 Об'ектно-ориентированая разработка приложений. Перевод с
английского.
-
дело не в том что он интерпретатор компилятор тоже есть. Ну и что? В MUMPS нет нормальных структурных типов данных, модулей (файлы - это ещё не модули), указателей, ОО, шаблонов, ... . Я посмотрел примеры кода. Бэйсик это. Модерн, но Бэйсик. Или у вас есть сведения, что он может использоваться для эффективных вычислений?
-
Об'ект по вашему это не структура? Типов данных там действительно нет
в базовом языке хотя в объектах эта галиматья вся есть. Дерево само
является структурой причем любой и динамически изменяемой. Когда я
разрабатываю приложение я проектирую дерево а затем навешиваю
программы обработки. Какого типа переменная неважно. Важно чтобы
там были данные и их можно было обработать. Хотел бы я знать какие
вычисления на MAMPSe нельзя сделать? Указатели в языке есть и они
реализованы косвенным синтаксисом и передачей параметров по имени.
Где вы там обнаружили файлы для меня загадка.
-
У вас есть бенчмарки, доказывающие, что код мампса ничем не хуже по скорости кода С# хотя бы (считая что С# вдвое уступает С++)? Да читал я описание. Есть проекты размером больше 100 000 строк? Никаких дедлоков нет, исключения обрабатываются, один ажур спложной? Вы сами положа руку на сердце доверите программе на мампсе управление атомной электростанцией? (Я даже и Аде не доверяю, посл более близкого знакомства. Хм, софт для ракеты Ариан-5 был на Аде, а взорвалась она все-таки, в основном не столько из-за софта, правда, но в конечном счёте из-за него, родного). Вот не могу я поверить, что ЯП моей мечты давно существует, но все почему-то пользуются чем угодно, только не им. О Мампсе от вас первый раз услышал. Так не бывает. Если язык так хорош, как вы говорите, все уже давно выкинули бы на помойку и С/C++ и все #-языки, и Паскаль/Модулу/Оберон, и писали бы себе на мампсе. И не придумывал бы D, Java и прочая с ними.
-
misha_shar, назовите крупный проект созданный на нем, просто язык с 60 годов... а слышу первый раз от вас здесь =)
-
CACHE
O subj я ранее читал достаточно много, концепция мне очень понравилась, хотя в живую я с ним не встречался. Проблема его нераспространенности, равно как и SOL в том, что я писал ранее...
-
Я с 70г работаю на MUMPSe и только ему я бы даверил общее
управление всей электростанцией. Более надежной и простой системы
в мире не существует. Объем кода на MUMPSe может быть в зависимости
от задачи меньше на порядок. И его намного легче сопровождать.
А вот обработку прерываний от атомного блока я бы вынужден написать на
С в QNX системе. Потому что нет реализации MUMPSa в реальном времени.
Эта система разделения времени. Она очень надежна и хорошо обслуживает
много пользователей. Но это проблемы конкретной реализации а не языка.
Теперь более подробно о конструкциях языка. И язык С и PASKAL это
типизированые языки а MUMPS нетипизированый язык.
И подходить к ни с одними и теми же мерками нельзя.
Это 2 разных мира. Объект это модель и она должна существовать
прежде всего в голове. И на разных языках описание оъекта будет
выглядеть по разному. И бессмыслено в нетипизированом языке искать
описание объекта. Его описания там нет. Но это не значит что нет
объектов. Они есть. В MUMPSe объект это дерево. Любой объект должен
обладать 3 мя свойствами.
1,Локализовать переменые внутри объекта.
2.Обеспечить наследование.
3.обеспечить полиморфизм.
Всеми этими свойствами деревянная структура обладает от рождения и
никаких дополнительных ухищрений не требует. Правда в дереве нет
методов. Но это не проблема. Каждому дереву можно по имени сопоставить
модуль с программами обработки. Хотя в MUMPSe я никогда этого не
делаю за ненадобностью. Программы обработки я пишу всегда для
выполнения определенных функций над любым деревом.
Теперь по поводу программ. В MUMPSe я работаю всегда в определенной
области. Каждая область локализует данные и программы. В каждой
области они свои за исключением общей библиотеки. То что в Pascale
называется модулем (Unit) в MUMPSe называется программой. Хотя
точнее было бы назвать это блоком кода. То что в Pascale программы
и фунцкции здесь точки входа. В принципе в блок можно войти с
любой строки кода. Один и тотже программный блок может
использоваться поразному и как программа и как функция и как
продолжение программы(если точка входа не имеет передаваемых параметров).
Все зависит каким образом вы к этому блоку обратились.
Если по команде DO то это программа, если внутри команды SET то это
функция, если по команде GO то это продолжение вашей программы.
Все зависит от конкретной потребности.
Теперь о том что вы первый раз о нем слышите. Вообще то
незнание это не аргумент. И если все (в том числе я) работают
на Windows это не значит что это хорошая операционная система.
Более того это плохая ОС. Этот язык распространен в США где и
был разработан, в Англии, Австралии, Бразилии и других странах СНГ.
В Союзе существовало общество MUMPS которое возможно существует
и до сих пор.Это собщество сегодня вращается вокруг представительств
InterSystem в Москве и Хабаровске. На MUMPSe активно работали
в Москве, Ленинграде,Воронеже,Новосибирске,Томске,Хабаровске
,Владивостоке. Издаются книги. Не распостранен язык из за
безобразного менеджемента. Но к достоинствам языка это не
имеет никакого отношения. Язык конечно имеет недостатки но они
все устранимы при правильном подходе. Где используется MUMPS.
Все военные госпитали США по всему миру работают на этой системе.
Хотя реализованных проектов на нем очень много. Я сам разрабатываю
систему бухгалтерского учета с 80годов. Сейчас уже 5 версий этого
комплекса у нас функционирует.У меня серверная часть
написана на MUMPSe. Есть заказчики которых мы необслуживаем
уже много лет а они до сих пор работают на этой системе и она
надежно функционирует.
-
А лично мне нравиться идея написания компилятора для SOL, только вот на сколько производительным будет сгенерированный код? мне кажется это еще вопрос открытый.
-
т.е ни одного проекта вы не назвали.. конкретного проекта...
вобщем не стоит тему про SOL превращать в тему про MUMPS.
-
> [28] misha_shar © (20.12.07 07:25)
Очень охото посмотреть на тесты производительности по сравнению с любым известным Вам языком.
-
Насчет ссылок. Чтобы понять почему их нет. Надо немного разобраться
с системой управления данными в языке. Данные управляются с помощью
B-дерева. B-дерево это структура блоков в памяти или на диске. И к
логической структуре хранимых данных никакого отношения не имеет.
В это дерево можно записывать любые данные индексированые или нет
и вообще любые. B-дерево не вникает в содержимое данных. С увеличением
данных оно растет сбалансировано и все. Единственное требование
они должны быть поименованы и эти имена должны быть уникальны.
Дерево хранит даные выдает их по требованию и если их нет то
возвращает пустую строку или удаляет их по требованию. Причем
данные могут находится в различных местах и это место можем в
любой момент измениться. Поэтому адресная ссылка на данные бессмыслена.
Данные в дереве хранятся только те значение которым присвоено.
Пустые значения не хранятся.
Обработка ошибок. Обработка ошибок в MUMPSе в зачаточном состоянии.
Острой необходимости в ней нет. Во время исполнения встречаются
как правило только 2 ошибки. 1-<UNDEF> неопределенная переменная
эта ошибка может быть подавлена в параметрах языка. И <DIV> деление
на 0. Эта ошибка подавлена быть не может ее надо обрабатывать
с помощью обработчика ошибок. Обработчик сделан просто и со вкусом.
В системную переменную пишешь точку входа в обработчик ошибок и все.
При возникновении ошибки управление передается в эту точку. Писать
блоку try finale не в стиле MUMPSa так как программа может перейти
на любую строку а блоки это плохо переносят.
Насчет бытродействия. С и MUMPS языки с различными возможностями.
В С нет встроенной базы данных. А с любой другой С будет на порядки
медленней MUMPS. В рекламных материалах InterSystem приводится
сравнение MUMPS с Ораклом. Так они считают что на больших данных
Оракл в 200 раз медленнее. Но реклама есть реклама. Из моего опыта.
Как только появились персоналки у меня небыло реализации MUMPSa и я
написал бухгалтерию в Delphi в качестве базы использовав InterBase.
Быстодействие меня не устроило и я с помощью обработок на сервере
попытался его улучшить. Мне это удалось в 2 раза. Потом в Москве
Фетисов написал реализацию MUMPS. И я на ней переписал бухгалтерию.
Так вот без всяких оптимизаций мое приложение на одних и тех же
данных работало в 20 раз быстрее. С ростом объемов данных разница
в быстродействии еще увеличивается.
-
> С ростом объемов данных разницав быстродействии еще увеличивается.
:)
-
ну MUMPS выглядит неплохо. интересно за ним надо таскать кучу библиотек?
лично я посмотрю на него поглубже.
сейчас делаю программу натурально на заказ. и все переменные храню как строки :)
что-то я не верю что мумпс быстрее при базовом типе "строка". это же бесконечные преобразования.
В-дерево дает обалденную скорость поиска и структуризации, но больше преимуществ я что-то не вижу.
-
> [34] Barloggg (20.12.07 12:01)
> В-дерево дает обалденную скорость поиска
, что все равно бесконечно долго по сравнению с непосредственным вычисления нахождения члена класса (или функции) по известному на момент компиляции смещению.
-
Есть предложение: для обсуждения MUMPSa создать отдельную ветку. А в этой обсуждать SOL.
В принципе соль - это типизированый язык. И сравнивать его с нетипизированым МУМПСом не совсем корректно.
Как и с паскалем и С.
По поводу эффективности. Мне кажется, при правильном и аккуратном написании кожа его эффективность в готовом виде зависит только от компилятора (и его автора).
-
> А в этой обсуждать SOL.
I agree. Any documentation in English yet?
-
Вообще то речь идет о новом языке а не о MUMPSe. MUMPS слава богу
есть и будет независимо от того знаете вы о нем или нет. Я предлагаю взять
для SOL за основу MUMPS доработав его спецификации. Кстати я хотел бы
увидеть описание SOL и требования к нему чтобы понять о чем идет речь.
Я извиняюсь влез в дискусию вконце и совершенно случайно. И может не
понял о чем речь. Прошу меня извинить.
-
> [38] misha_shar © (20.12.07 15:47)
> Кстати я хотел бы
> увидеть описание SOL и требования к нему
см. [0].