powered by simpleCommunicator - 2.0.29     © 2024 Programmizd 02
Map
Форумы / Caché, Ensemble, DeepSee, MiniM, IRIS, GT.M [игнор отключен] [закрыт для гостей] / Реализация интерпретатора MSH.
19 сообщений из 44, страница 2 из 2
Реализация интерпретатора MSH.
    #39894015
misha_shar
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
ну я,
<
Ну так уж уйма людей и не придумала ничего с 95-го... Те же $list, $increment, $bit придумали, ввели и используют, и не только в Cache.
>
Это не принципиальные изменения.
<
А объекты в Cache или тот же фигурный синтаксис?
>
Лучше бы они этого не делали. Сломали всю идеологию MUMPS. Видимость переменных в procedure вообще выполнена не корректно.
...
Рейтинг: 0 / 0
Реализация интерпретатора MSH.
    #39894028
misha_shar
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
ну я,
и где код исполняется?
Код исполняется на клиенте. На клиенте стоит полнофункциональная система MSH.
...
Рейтинг: 0 / 0
Реализация интерпретатора MSH.
    #39894040
Фотография krvsa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
misha_shar
Сломали всю идеологию MUMPS.

Ну в этом и тебя упрекаем...

misha_shar
Видимость переменных в procedure вообще выполнена не корректно.

Пример привести можешь?

Поскольку та видимость кагбэ расширена... Можно использовать классический вариант... А можно "новомодний"...
Т.ч. в чем именно "не корректно"?
...
Рейтинг: 0 / 0
Реализация интерпретатора MSH.
    #39894074
misha_shar
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
krvsa,
В процедуре в команде Xecute видимы ли локальные переменные?
...
Рейтинг: 0 / 0
Реализация интерпретатора MSH.
    #39894101
Фотография DAiMor
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
misha_shar
krvsa,
В процедуре в команде Xecute видимы ли локальные переменные?


Код: sql
1.
2.
3.
4.
5.
test() [var] public {
  Set var = 123
  Xecute  "zwrite var set var = 321"
  ZWrite var
}



Код: plaintext
1.
2.
USER>d test^test
var=123
var=321
...
Рейтинг: 0 / 0
Реализация интерпретатора MSH.
    #39894104
misha_shar
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
DAiMor,
Кто бы мог подумать, что var надо объявлять внешней переменной. В стандарте Xececute видит все локальные переменные.
...
Рейтинг: 0 / 0
Реализация интерпретатора MSH.
    #39894200
Блок А.Н.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
misha_shar
Код: sql
1.
If?(A$2=='');


Эта команда не будет понятна ни MUMPSистам, ни любому кто знает хоть один язык, что это вообще?
Нет, не понятна.
If - это условие. И ? - это условие. Зачем If и ? идут рядом? В этом какой-то тайный смысл?
$ - это какой-то оператор или часть имени переменной? Если часть переменной, то зачем? Не хватило букв и цифр? Если оператор, то какой?

misha_shar
Это не принципиальные изменения.
А в чем ваши принципиальные изменения? Мне так и непонятно. Ну другой синтаксис, менее читаемый. В парадигме вы все-таки придерживаетесь М, так что новых возможностей я не жду. Что даст нам ваш язык? COS дал нам интегрированный SQL и объекты, а что предлагаете вы?

misha_shar
Сломали всю идеологию MUMPS.
Идеология M, по вашему, была в создании неотлаживаемых программ, у которых переменные пробивало через несколько уровней стека только потому, что кто-то опечатался в new? Ну так в топку такую идеологию. ИС конечно, костылей наделала тут, не спорю, но уже лучше с костылями (которые можно отключить), чем без ног, как в M.
...
Рейтинг: 0 / 0
Реализация интерпретатора MSH.
    #39894236
misha_shar
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Блок А.Н.,
<
Нет, не понятна.
If - это условие. И ? - это условие. Зачем If и ? идут рядом? В этом какой-то тайный смысл?
>
команда If это начало блока if , а то что следует за знаком ? это условие выполнения данного блока. У этой команды нет аргументов. Кстати условие выполнения этого блока может отсутствовать, как и в любой другой команде. Тогда это просто блок выполнения, который будет выполняться всегда.
<
$ - это какой-то оператор или часть имени переменной? Если часть переменной, то зачем? Не хватило букв и цифр? Если оператор, то какой?
>
Это префикс массива. за ним идет индекс массива. Так как массив одномерный ему не обязательна закрывающаяся скобка, достаточно открывающейся, в качестве нее и используется $. Например классический вид обращения к массиву A(10) в нотации MSH выглядит как A$10.
...
Рейтинг: 0 / 0
Реализация интерпретатора MSH.
    #39894240
misha_shar
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Блок А.Н.,
<
А в чем ваши принципиальные изменения? Мне так и непонятно. Ну другой синтаксис, менее читаемый. В парадигме вы все-таки придерживаетесь М, так что новых возможностей я не жду. Что даст нам ваш язык? COS дал нам интегрированный SQL и объекты, а что предлагаете вы?
>
По этому поводу специально написал статью на habr
Особенности и отличия языка программирования MSH от MUMPS https://habr.com/ru/post/280938/
...
Рейтинг: 0 / 0
Реализация интерпретатора MSH.
    #39894245
Фотография krvsa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
misha_shar
Кто бы мог подумать, что var надо объявлять внешней переменной. В стандарте Xececute видит все локальные переменные.

Это т.с. в новом "расширенном" варианте... Мы используем "стандартный" М-синтаксис - у нас все работает стандартно.

Т.о. вся эта "новомодняя" видимость является неким расширением возможностей. Но не обязательна к применению.
И никакой не корректности тут нет. Как написано в доке - так и работает.
...
Рейтинг: 0 / 0
Реализация интерпретатора MSH.
    #39894247
Фотография krvsa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
misha_shar
команда If это начало блока if , а то что следует за знаком ? это условие выполнения данного блока.
...
Это префикс массива. за ним идет индекс массива. Так как массив одномерный ему не обязательна закрывающаяся скобка, достаточно открывающейся, в качестве нее и используется $. Например классический вид обращения к массиву A(10) в нотации MSH выглядит как A$10.

Неее... Я все...
...
Рейтинг: 0 / 0
Реализация интерпретатора MSH.
    #39894280
Фотография DAiMor
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
misha_shar
По этому поводу специально написал статью на habr
Особенности и отличия языка программирования MSH от MUMPS https://habr.com/ru/post/280938/

Там у вас сплошной текст, вообще никак не отформатированный, код прям в тексте, читать это совершенно невозможно.
...
Рейтинг: 0 / 0
Реализация интерпретатора MSH.
    #39894483
Блок А.Н.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
DAiMor
PS. А тему я могу и закрыть, но пока надеюсь на ваше благоразумие.
Я думаю, это будет очень неправильно.
Во-первых, человек имеет право высказать свое мнение и тематика этой ветки не противоречит тематике раздела (если совсем уж не придираться, конечно).
Во-вторых, нас тут так мало, что лишняя тема как-то поднимет активность форума.
В-третьих, и самое главное, где как не здесь человек может получить критику своих идей?
...
Рейтинг: 0 / 0
Реализация интерпретатора MSH.
    #39894497
Блок А.Н.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
misha_shar
Блок А.Н.,
<
Нет, не понятна.
If - это условие. И ? - это условие. Зачем If и ? идут рядом? В этом какой-то тайный смысл?
>
команда If это начало блока if , а то что следует за знаком ? это условие выполнения данного блока. У этой команды нет аргументов. Кстати условие выполнения этого блока может отсутствовать, как и в любой другой команде. Тогда это просто блок выполнения, который будет выполняться всегда.
<
$ - это какой-то оператор или часть имени переменной? Если часть переменной, то зачем? Не хватило букв и цифр? Если оператор, то какой?
>
Это префикс массива. за ним идет индекс массива. Так как массив одномерный ему не обязательна закрывающаяся скобка, достаточно открывающейся, в качестве нее и используется $. Например классический вид обращения к массиву A(10) в нотации MSH выглядит как A$10.
Честно говоря, не особо то яснее стало.
if - это начало любого блока? А если блок, допустим, for? зачем использовать сбивающий с толку синтаксис, если повсеместно с ним ассоциирована другая семантика? Ну ок, if - блок, а ? - условие. А почему условие внутри блока? Зачем вы придумали другой синтаксис обращения к массиву? Чем вас не устраивали общепринятые () или []? Почему тогда для сравнения используете общепринятые ==? Ну используйте # или !, еще оригинальней будет.

Из статьи на хабре все еще не понял, чем ваш язык лучше. Поймите, что язык силен заложенными в него возможностями и использованными парадигмами, а не тем, что вы [] заменили на $. Сделайте пример кода на своем языке, потом это же на M и на COS. И попробуйте показать, чем ваш язык лучше.

И еще отдельная просьба - можете вы цитировать общепринятым способом, с помощью quote или >>. Или у вас навязчивая идея придумывать свой синтаксис везде, где только можно?
...
Рейтинг: 0 / 0
Реализация интерпретатора MSH.
    #39894535
Фотография krvsa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Блок А.Н.
где как не здесь человек может получить критику своих идей?

Если она ему нужна...
...
Рейтинг: 0 / 0
Реализация интерпретатора MSH.
    #39894537
Фотография krvsa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Блок А.Н.
А почему условие внутри блока?

Да еще и в скобках...
Автор, вроде как, "уходил" от пробелов... Но наделал кучу лишних символов.
...
Рейтинг: 0 / 0
Реализация интерпретатора MSH.
    #39894552
misha_shar
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
[quot Блок А.Н.#22025672]
misha_shar
Блок А.Н.,
Честно говоря, не особо то яснее стало.
if - это начало любого блока? А если блок, допустим, for? зачем использовать сбивающий с толку синтаксис, если повсеместно с ним ассоциирована другая семантика? Ну ок, if - блок, а ? - условие. А почему условие внутри блока?

В MSH есть команда, и есть условие ее выполнения. Сама команда никакое условие выполнения не содержит. В MUMPS принята такая идеология. Но команда if в MUMPS в качестве аргумента имеет условие выполнения команд находящихся за ней. Поэтому в MUMPS команда if не содержит условие выполнения этой команды. В этом есть логическое противоречие. Если отказаться от аргументов в команде if, то ее можно привести к стандартному для остальных команд виду. Условие выполнения команды if выполняет роль аргумента, сама команда аргументов не содержит. В MSH ряд команд образуют блоки. Любой блок заканчивается командой End; Все , что внутри относится к данному блоку. Блоки разные. В команде if в случае если условие выполнено то выполняется дальше весь блок, иначе блок не выполняется. Это же касается команды Else. Команда While также образует блок. Выполнение блока продолжается до тех пор пока условие в команде истинно. Итераторы Next , Back и Query выполняются пока их условие верно и не закончится обход заданного узла. Команда Case почти классика из Паскаля.
Зачем вы придумали другой синтаксис обращения к массиву? Чем вас не устраивали общепринятые () или []? Почему тогда для сравнения используете общепринятые ==? Ну используйте # или !, еще оригинальней будет.

Дело вообще не в оригинальности. У меня просто тупо кончились скобки. Все они оказались задействованы в других конструкциях. Все это от бедности клавиатуры.
Из статьи на хабре все еще не понял, чем ваш язык лучше. Поймите, что язык силен заложенными в него возможностями и использованными парадигмами, а не тем, что вы [] заменили на $. Сделайте пример кода на своем языке, потом это же на M и на COS. И попробуйте показать, чем ваш язык лучше.

Я только этим и занимаюсь. Замена [] на $ не принципиальна, но это вынужденная мера. Новые возможности Это команды Итераторы, команда Case это объекты, это обработка событий. Сравнить языки может любой, для этого надо иметь только спецификацию языка. В трудозатратную рекламную компанию я ввязываться не готов. Слишком много еще надо сделать. Приходится сосредоточиться на первостепенных задачах.
...
Рейтинг: 0 / 0
Реализация интерпретатора MSH.
    #39895980
Блок А.Н.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вы решили распространить предусловие команды на предусловие блока. Ок, хорошо. Тогда if вам, получается, вообще не нужен. Делайте begin?(условия) ... end; А то в вашем синтаксисе if без условия означает просто блок. И это, мягко говоря, странно.
Ну ладно, пусть каждая команда образует блок, который нужно завершать end. if ... end, for ... end, или for begin ...end? У вас end завершает блок, начатый begin? или вот вообще любой? В коде будет море end-ов непонятно от чего. А как у вас будет строиться команды if else if else? end будет только в конце?

Я ни при каких раскладах не нахожу это привлекательным. Извините. Я даже попытался хоть в каком-то варианте найти что-то интересное, но у меня не получилось.

>Дело вообще не в оригинальности. У меня просто тупо кончились скобки
Может быть, скобки все-таки оставить массивам, а всякие другие знаки дать новым операциям?
...
Рейтинг: 0 / 0
Реализация интерпретатора MSH.
    #39896030
misha_shar
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Блок А.Н.
Вы решили распространить предусловие команды на предусловие блока. Ок, хорошо. Тогда if вам, получается, вообще не нужен. Делайте begin?(условия) ... end; А то в вашем синтаксисе if без условия означает просто блок. И это, мягко говоря, странно.
Ну ладно, пусть каждая команда образует блок, который нужно завершать end. if ... end, for ... end, или for begin ...end? У вас end завершает блок, начатый begin? или вот вообще любой? В коде будет море end-ов непонятно от чего. А как у вас будет строиться команды if else if else? end будет только в конце?

Конечно if это не просто блок. Это блок if внутри у этого блока могут быть команды else как с условиями выполнения, так и без. else без условия естественно должно быть последней. Если условие команды if верно то выполняются команды либо до следующей команды else, либо до команды end, это же справедливо для других команд else. Команды begin нет, она не нужна. Блочные команды и являются началом блока. Блок образуют только некоторые команды они в документации описаны ка блочные. Например: if, case, while, next, query...
Я ни при каких раскладах не нахожу это привлекательным. Извините. Я даже попытался хоть в каком-то варианте найти что-то интересное, но у меня не получилось.

Привлекательность комментировать не могу. В качестве блочных команд выбраны те которые чаще всего и используются вместе с блоком. Только блок потерял заголовок begin как не нужный, зато пришлось сделать эти команды блочными всегда.
>Дело вообще не в оригинальности. У меня просто тупо кончились скобки
Может быть, скобки все-таки оставить массивам, а всякие другие знаки дать новым операциям?

Скобки закончились в традиционных применениях, в индексах, аргументах функциях и списках, где без них не обойтись.
...
Рейтинг: 0 / 0
19 сообщений из 44, страница 2 из 2
Форумы / Caché, Ensemble, DeepSee, MiniM, IRIS, GT.M [игнор отключен] [закрыт для гостей] / Реализация интерпретатора MSH.
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]