E__>>Ок. Это понятно. В принципе, звучит толково.
E__>>Ждем дальше, глядишь, по чуть-чуть разберем остальные аспекты языка. B>Спасибо. Смотрю так в диалоге лучше получается чем документ вывалить. Тогда я позволю о группах объяснится. Это принципиальная часть и касается работы виртуальной машины. К сожалению подстрочные и надстрочные знаки я не могу здесь проставить, но надеюсь будет понятно. Хотя лажа, конечно.
Лажа — это использование символов, которые нельзя без приседаний воспроизвести на клавиатуре.
Здравствуйте, batu, Вы писали:
B>Здравствуйте, Eugeny__, Вы писали:
E__>>Ок. Это понятно. В принципе, звучит толково.
E__>>Ждем дальше, глядишь, по чуть-чуть разберем остальные аспекты языка. B>Спасибо. Смотрю так в диалоге лучше получается чем документ вывалить. Тогда я позволю о группах объяснится. Это принципиальная часть и касается работы виртуальной машины. К сожалению подстрочные и надстрочные знаки я не могу здесь проставить, но надеюсь будет понятно. Хотя лажа, конечно.
Вторая лажа — придумывание собственных терминов.
B>Группирование объектов допускается двумя способами с последовательным выполнением группы и произвольным выполнением группы (классы Tape и Group).
Если и то и другое группа, почему только одна называется группой? Почему не Sequence(SeqGroup) и Random(RndGroup)? Зачем нуны пляски с приседанием в виде толпы разных скобок? Которые еще и близки визуально.
B> Группирование с последовательным выполнением. Класс Tape. B>Пример 1. Присвоение свойствам группы Word значений Min=2 и Max=40 B>Word {Letter}2 40
Или
Word Sequence(Letter)[2,40]
B>Данная группа выполняется максимум 40 раз, но для ее успешного выполнения достаточно одного успешного выполнения группы. B>Пример 2. Группирование операторов для многократного выполнения.
B>{ B> I:=J+ R-1 B>}225
M> операторы у меня тоже объекты и могут иметь имена и оператор, например Exit указывает имя объекта-оператора (а может и класса) из которого необходимо выйти. Получается например такая картина. M>For i=0 to n M>... M>Exit I
M>То в операторе Exit I-это имя оператора For, а не имя переменной. M>[/q]
M>Что это за примеры? ЧТо это все значит? Какая практическая в них необходимость? Как их применять? На эти вопросы нет ни единого ответа.
Пока нет ответа. Сейчас попробую дать. Вот оператор For это объект класса For с именем и т.д.. Это мы пишем программу. Она же является документом. Т.е. это частный случай документа, который мы можем наполнить и формами, и вообще объектами любого классса. Т.е. ниже приведенный код
Form Первый
{ Me.Size=20;80
TextBox {}
Button { Me.Text="Start" ...}
}
Это просто форма с текстбоксом и кнопкой..
Если мы применяем к этой форме оператор New, то эта форма создастся (и разместиться в памяти) динамически во время выполнения.
New Form Первый
{ Me.Size=20;80
TextBox {}
Button { Me.Text="Start" ...}
}
Вот в таком виде мы обычно и используем объекты в программе.
Так вот зачем так много слов про этот Exit и про имя, а дело в том, что адрес объекта к которому необходимо обратиться находится в теле документа, а не формируется через заголовок процедуры (в силу динамического размещения), так как происходит в случае обращения к объектам созданым опреторами Dim и New. Просто я напоминаю что это не только язык программирвания, но и язык документирования. Для анализа объектов в теле документа адресация осуществляется так называемым указателем и там немного другой принцип. Вот оператор Exit это частный случай такого указателя (Pointer).
B>>Вот могу здесь варианты сортировки скинуть. Версия синтаксиса может и старая, но если где не тот знак это не принципиально.
B>>
B>>Sub Sort (A[]: Integer)
B>>{
B>> Dim Integer ( I, J, Count=Int(A.Lenght/2)-1, NewCount ) ' Определение переменных
B>> Exp Integer { Next= J+1 Last= A.Lenght-J-1 Prev= A.Lenght-J-2} ' Определение блоков
B>> Block {
B>> ChangUp { If A[J]<A[Next] A[J] >< A[Next]}
B>> ChangDown { If A[Prev]<A[Last] A[Prev] >< A[Last] } ' Операция >< обмен значениями
B>> }
B>> If A.Lenght<2 Exit Sub Sort ' Если есть что сортировать
B>> For I=0 To Count
B>> {
B>> NewCount:= A.Lenght-I-1
B>> For J=I To NewCount {ChangUp ChangDown}
B>> }
B>>} ' Конец процедуры
B>>
M>Переусложнение и загромождение на ровном месте. имхо.
Реально выполняют сортировку всего два оператора в цикле. Остальное подготовка. Как по мне такой вариант наглядней отражает суть решаемой задачи, вынося технические детали отдельно. Но, имхо я не могу оспаривать.
B>>Вот пример вычисления NOD с помощью автоматов. Используя механизм событий. Сначала создаем класс автоматов NOD
M>Что такое NOD?
НОД по русски.. Школа.. арифметика.
B>>Выполнение оператора Off влечет за собой одноименное событие. Автомат может выключить себя сам, а возможно это сделать и вне автомата методом Off. Такая схема позволяет запустить на выполнение несколько автоматов и синхронизировать их выполнение событиями.
M>Хотелось бы увидеть это на примере.
B>>Данный автомат останавливается самостоятельно после вычисления. Кроме того внешнее событие Eq может послужить для информирования о готовности вычисления.
B>>Синхронизация с событием Eq, и выключение автомата Nod. B>>
B>>Dim Integer (A=5, B=35)
B>>New Nod AV (A, B) 'Создание автомата Nod
B>>AV.OnStart 'Включение одновременно со стартером.
B>>Event {Connection=:AV.Eq} 'Оператор синхронизации. Здесь выполнение программы остановится ожидая события AV.Eq
B>>Nod.Stop 'Выключение автомата Nod
B>>
M>Выделенное — это очень плохо. Программисту придется лавировать между событиями, которые создают узкие места в программе на ровном месте.
Никаких узких мест. Выполнение остановилось и ждет события AV.Eq
Заметь это тот же объект класса Event который в ранее приведеных примерах создавался оператором New, но статический и находится в теле документа.
B>>И пример логического разбора. Интерпретации. Определим следующие предикаты.
B>>
B>>Predicate
B>> {
B>> Positive (X: Integer) {Positive=X>0} ' Предикат Positive
B>> Четное (X: Integer) {Здесь проверка на четность. Знак операции И не проходит}
B>> }
B>>
B>>Теперь определим множество, на котором будет выполняться интерпретация. В нашем случае это множества целых чисел и объекты-значения I и Y. B>>Dim Integer (I=-50000, Y=108) B>>Высказывание со знаком вопроса называется целевым высказыванием. Этот знак запускает не императивное вычисление, а осуществляет попытку логического разбора. Определим целевое высказывание. B>>If Positive (I ^ Y)? B>>Сейчас мы покажем как можно решить эту задачу без возведения в 108 степень. Для этого определим следующие высказывания на множестве Integer и Positiv. B>>
B>>Знак "следует" здесь не прошел. На его месте квадратик.
M>Естественно. Именно поэтому весь цивилизованный мир не использует странные символы в программах. Печальный опыт APL был не зря.
Мне кажется что с тех пор кое что изменилось и в редакторах и средствах редактирования. Имхо, но готов обсудить.
B>>Замечу, что в качестве параметров могут быть не только объекты классов или типов, но и объекты принадлежащие множеству или принадлежащие множеству определенному предикатом, как в нашем примере(Positive).
M>Это называется, в частности, duck typing (утиная типизация).
Да. Это оно. Спасибо. Не знал.
M>Ну, это понятно. Prolog в качестве DSL'я для языка. Понятно, так понятно. Это лучше чем не понятно.. Хотя ХЗ.
M>Тьфу, елки Даже ссылки приводил. Кратко: публичный онлайн репозиторий кода. Надеюсь, не надо объяснять, что такое репозиторий и контроль версий?
Сейчас не надо. Как созрею обращусь.
M>Просто выбор никого не интересует. Более тго, для этого есть Лисп Людей интересует именно «лучшесть». Насколько более эффективно новый язык позволит решать те или иные задачи.
Есть обоснованное подозрение, что моя схема будет легче транслироваться и выполняться за счет унификации и малого числа базовых определений. Хотя бы потому что вся эта кухня легко влезет в кэш. Но, кроме подозрений пока ничего не могу сказать. Есть вариант обработчик событий сделать аппаратно. Он вполне может выполняься параллельно. Но это опять таки..в будущем.
Re[18]: А вот вам и новый язык. Зацените. Можно ругать.
Здравствуйте, Mamut, Вы писали:
E__>>>Ок. Это понятно. В принципе, звучит толково.
E__>>>Ждем дальше, глядишь, по чуть-чуть разберем остальные аспекты языка. B>>Спасибо. Смотрю так в диалоге лучше получается чем документ вывалить. Тогда я позволю о группах объяснится. Это принципиальная часть и касается работы виртуальной машины. К сожалению подстрочные и надстрочные знаки я не могу здесь проставить, но надеюсь будет понятно. Хотя лажа, конечно.
M>Лажа — это использование символов, которые нельзя без приседаний воспроизвести на клавиатуре.
Так эта лажа и так есть. Я вот не могу здесь двойные угловые текстовые скобки найти. Необходим другой подход. Давай это оставим на потом. От развития никуда не денешься. Знаков будет только больше. Так что если не мы придумаем, то кто-то другой придумает. Единственный вопрос кто будет первым. Проблем с буквами и знаками реально много. Просто это отдельная тема.
Re[18]: А вот вам и новый язык. Зацените. Можно ругать.
B>>Спасибо. Смотрю так в диалоге лучше получается чем документ вывалить. Тогда я позволю о группах объяснится. Это принципиальная часть и касается работы виртуальной машины. К сожалению подстрочные и надстрочные знаки я не могу здесь проставить, но надеюсь будет понятно. Хотя лажа, конечно.
M>Вторая лажа — придумывание собственных терминов.
ОБСУЖДАЕМО.
B>>Группирование объектов допускается двумя способами с последовательным выполнением группы и произвольным выполнением группы (классы Tape и Group).
M>Если и то и другое группа, почему только одна называется группой? Почему не Sequence(SeqGroup) и Random(RndGroup)? Зачем нуны пляски с приседанием в виде толпы разных скобок? Которые еще и близки визуально.
Произвольное выполнение и последовательное существует независимо от того хотим мы этого или нет. Единственно, что я сделал так это строго привязал назначение скобок. Отличие между круглыми и фигурными только в том что объекты в круглых скобках необходимо разделять запятыми. Это чисто для удобства. Кому как удобней пусть так и определяет. Приятно, что это правило действует везде.
B>> Группирование с последовательным выполнением. Класс Tape. B>>Пример 1. Присвоение свойствам группы Word значений Min=2 и Max=40 B>>Word {Letter}2 40
M>Или M>
M>Word Sequence(Letter)[2,40]
M>
B>>Данная группа выполняется максимум 40 раз, но для ее успешного выполнения достаточно одного успешного выполнения группы.
И зачем тут скобки? Надстрочное и подстрочное выглядит наглядней. Применение скобок надо-не надо не всегда самый мудрый способ. Аналогично как и перегрузка знаками обозначающими все что не заблагорассудилось разрабочику.
M>> операторы у меня тоже объекты и могут иметь имена и оператор, например Exit указывает имя объекта-оператора (а может и класса) из которого необходимо выйти. Получается например такая картина. M>>For i=0 to n M>>... M>>Exit I
M>>То в операторе Exit I-это имя оператора For, а не имя переменной. M>>[/q]
M>>Что это за примеры? ЧТо это все значит? Какая практическая в них необходимость? Как их применять? На эти вопросы нет ни единого ответа. B>Пока нет ответа. Сейчас попробую дать. Вот оператор For это объект класса For с именем и т.д.. Это мы пишем программу. Она же является документом. Т.е. это частный случай документа, который мы можем наполнить и формами, и вообще объектами любого классса. Т.е. ниже приведенный код
B>
B>Это просто форма с текстбоксом и кнопкой.. B>Если мы применяем к этой форме оператор New, то эта форма создастся (и разместиться в памяти) динамически во время выполнения.
B>
B>New Form Первый
B> { Me.Size=20;80
B> TextBox {}
B> Button { Me.Text="Start" ...}
B> }
B>
B>Вот в таком виде мы обычно и используем объекты в программе. B>Так вот зачем так много слов про этот Exit и про имя, а дело в том, что адрес объекта к которому необходимо обратиться находится в теле документа, а не формируется через заголовок процедуры (в силу динамического размещения), так как происходит в случае обращения к объектам созданым опреторами Dim и New. Просто я напоминаю что это не только язык программирвания, но и язык документирования. Для анализа объектов в теле документа адресация осуществляется так называемым указателем и там немного другой принцип. Вот оператор Exit это частный случай такого указателя (Pointer).
Выделенное не понятно вообще.
B>>>Данный автомат останавливается самостоятельно после вычисления. Кроме того внешнее событие Eq может послужить для информирования о готовности вычисления.
B>>>Синхронизация с событием Eq, и выключение автомата Nod. B>>>
B>>>Dim Integer (A=5, B=35)
B>>>New Nod AV (A, B) 'Создание автомата Nod
B>>>AV.OnStart 'Включение одновременно со стартером.
B>>>Event {Connection=:AV.Eq} 'Оператор синхронизации. Здесь выполнение программы остановится ожидая события AV.Eq
B>>>Nod.Stop 'Выключение автомата Nod
B>>>
M>>Выделенное — это очень плохо. Программисту придется лавировать между событиями, которые создают узкие места в программе на ровном месте. B>Никаких узких мест. Выполнение остановилось и ждет события AV.Eq
Выделенное и есть узкое место. В итоге, если мы будем останавливаться на каждое событие, разработчик не сможет написать ничего сложного. Потому что программа постоянно бдет останавливаться то там то тут в ожидании событий.
B>>>Знак "следует" здесь не прошел. На его месте квадратик.
M>>Естественно. Именно поэтому весь цивилизованный мир не использует странные символы в программах. Печальный опыт APL был не зря. B>Мне кажется что с тех пор кое что изменилось и в редакторах и средствах редактирования. Имхо, но готов обсудить.
Что обсуждать? Посмотри на клавиатуру и найди мне там знак «следует». Запоминать комбинации клавиш для десятка математических знаков или тянутся на каждый чих мышкой к соответствующей иконке никто не будет.
B>>>Замечу, что в качестве параметров могут быть не только объекты классов или типов, но и объекты принадлежащие множеству или принадлежащие множеству определенному предикатом, как в нашем примере(Positive).
M>>Это называется, в частности, duck typing (утиная типизация). B>Да. Это оно. Спасибо. Не знал.
Вообще-то при разработке нового языка подразумевается, что автор ознакомился с наработками в других языках, не?
M>>Просто выбор никого не интересует. Более тго, для этого есть Лисп Людей интересует именно «лучшесть». Насколько более эффективно новый язык позволит решать те или иные задачи. B>Есть обоснованное подозрение, что моя схема будет легче транслироваться и выполняться за счет унификации и малого числа базовых определений.
Обосновано чем? Малое число базовых определений? Ты смеешься Только в этом ткст у тебя уже были Оператор, Класс, Объект класса, логическое программирование, ггруппировки двумя типами и т.п.
B>Хотя бы потому что вся эта кухня легко влезет в кэш.
В какой кэш?
B>Но, кроме подозрений пока ничего не могу сказать. Есть вариант обработчик событий сделать аппаратно. Он вполне может выполняься параллельно. Но это опять таки..в будущем.
Вообще-то, весб мир знает, что события должны быть асинхронными И что синхронные события нужны только в очень малом количестве случаев
B>>> К сожалению подстрочные и надстрочные знаки я не могу здесь проставить, но надеюсь будет понятно. Хотя лажа, конечно.
M>>Лажа — это использование символов, которые нельзя без приседаний воспроизвести на клавиатуре. B>Так эта лажа и так есть. Я вот не могу здесь двойные угловые текстовые скобки найти. Необходим другой подход. Давай это оставим на потом. От развития никуда не денешься. Знаков будет только больше. Так что если не мы придумаем, то кто-то другой придумает. Единственный вопрос кто будет первым. Проблем с буквами и знаками реально много. Просто это отдельная тема.
Вообще-то, это не отдельная тема и ее нельзя оставлять на потом. Или будешь плодить десяток версии с несовместимым синтаксисом? И зачем больше знаков? Не плоди сущностей без необходимости.
B>>>Группирование объектов допускается двумя способами с последовательным выполнением группы и произвольным выполнением группы (классы Tape и Group).
M>>Если и то и другое группа, почему только одна называется группой? Почему не Sequence(SeqGroup) и Random(RndGroup)? Зачем нуны пляски с приседанием в виде толпы разных скобок? Которые еще и близки визуально. B>Произвольное выполнение и последовательное существует независимо от того хотим мы этого или нет. Единственно, что я сделал так это строго привязал назначение скобок.
Зачем? У программиста есть лучше занятия, чем в большом куске кода следить за разницей между ([{, которые похожу друг на друга.
B>Отличие между круглыми и фигурными только в том что объекты в круглых скобках необходимо разделять запятыми. Это чисто для удобства.
Для какого удобства? Теперь программисту еще надо помнить, что в одних скобках надо ставить запятые, а в других не надо? Только потому что автору зяыка вдруг так захотелось?
B>Кому как удобней пусть так и определяет. Приятно, что это правило действует везде.
Идиотское правило. почему в круглых скобках надо разделять запятыми, а в квадратных и фигурных не надо?
B>>> Группирование с последовательным выполнением. Класс Tape. B>>>Пример 1. Присвоение свойствам группы Word значений Min=2 и Max=40 B>>>Word {Letter}2 40
M>>Или M>>
M>>Word Sequence(Letter)[2,40]
M>>
B>>>Данная группа выполняется максимум 40 раз, но для ее успешного выполнения достаточно одного успешного выполнения группы. B>И зачем тут скобки? Надстрочное и подстрочное выглядит наглядней.
Посмотри на клавиатуру и найди мне под- и надстрочные знаки.
B>Применение скобок надо-не надо не всегда самый мудрый способ.
Надо. И это в данной ситуации самый мудрый способ (более того, напоминающий аналогичный способ в регулярных выражениях). Никто никогда не будет ломать пальцы или постоянно тянуться за мышкой, чтобы набрать символ, которого нет на клавиатуре.
B>>>> Группирование с последовательным выполнением. Класс Tape. B>>>>Пример 1. Присвоение свойствам группы Word значений Min=2 и Max=40 B>>>>Word {Letter}2 40
M>>>Или M>>>
M>>>Word Sequence(Letter)[2,40]
M>>>
B>>>>Данная группа выполняется максимум 40 раз, но для ее успешного выполнения достаточно одного успешного выполнения группы. B>>И зачем тут скобки? Надстрочное и подстрочное выглядит наглядней.
M>Посмотри на клавиатуру и найди мне под- и надстрочные знаки.
B>>Применение скобок надо-не надо не всегда самый мудрый способ.
M>Надо. И это в данной ситуации самый мудрый способ (более того, напоминающий аналогичный способ в регулярных выражениях). Никто никогда не будет ломать пальцы или постоянно тянуться за мышкой, чтобы набрать символ, которого нет на клавиатуре.
на самом деле есть еще вариант
Word Sequence(Leter, Min=2, Max=40)
Это все равно лучше, чем над- и подстрочные знаки.
M>>>Что это за примеры? ЧТо это все значит? Какая практическая в них необходимость? Как их применять? На эти вопросы нет ни единого ответа. B>>Пока нет ответа. Сейчас попробую дать. Вот оператор For это объект класса For с именем и т.д.. Это мы пишем программу. Она же является документом. Т.е. это частный случай документа, который мы можем наполнить и формами, и вообще объектами любого классса. Т.е. ниже приведенный код
B>>
B>>Это просто форма с текстбоксом и кнопкой.. B>>Если мы применяем к этой форме оператор New, то эта форма создастся (и разместиться в памяти) динамически во время выполнения.
B>>
B>>New Form Первый
B>> { Me.Size=20;80
B>> TextBox {}
B>> Button { Me.Text="Start" ...}
B>> }
B>>
B>>Вот в таком виде мы обычно и используем объекты в программе. B>>Так вот зачем так много слов про этот Exit и про имя, а дело в том, что адрес объекта к которому необходимо обратиться находится в теле документа, а не формируется через заголовок процедуры (в силу динамического размещения), так как происходит в случае обращения к объектам созданым опреторами Dim и New. Просто я напоминаю что это не только язык программирвания, но и язык документирования. Для анализа объектов в теле документа адресация осуществляется так называемым указателем и там немного другой принцип. Вот оператор Exit это частный случай такого указателя (Pointer).
M>Выделенное не понятно вообще.
Вопрос. С ассемблером знаком? Как формируются адреса переменных, как передаются параметры в процедурах? Мне нужно знать откуда начинать рассказывать.
B>>>>Данный автомат останавливается самостоятельно после вычисления. Кроме того внешнее событие Eq может послужить для информирования о готовности вычисления.
B>>>>Синхронизация с событием Eq, и выключение автомата Nod. B>>>>
B>>>>Dim Integer (A=5, B=35)
B>>>>New Nod AV (A, B) 'Создание автомата Nod
B>>>>AV.OnStart 'Включение одновременно со стартером.
B>>>>Event {Connection=:AV.Eq} 'Оператор синхронизации. Здесь выполнение программы остановится ожидая события AV.Eq
B>>>>Nod.Stop 'Выключение автомата Nod
B>>>>
M>>>Выделенное — это очень плохо. Программисту придется лавировать между событиями, которые создают узкие места в программе на ровном месте. B>>Никаких узких мест. Выполнение остановилось и ждет события AV.Eq
M>Выделенное и есть узкое место. В итоге, если мы будем останавливаться на каждое событие, разработчик не сможет написать ничего сложного. Потому что программа постоянно будет останавливаться то там то тут в ожидании событий.
Автомат работает параллельно. Посмотри на класс. Объект-автомат начинает работу со старта. Работа автомата заключается в срабатывании событий. (это работает почти как сети Петри, но пришлось придумать свои сети они лучше подходят для моих событий) и заканчивает работу при возникновении события EQ. Если нас интересует результат работы автомата, то необходимо подождать, когда возникнет состояние автмата Eq. а можно и не ждать. Запустить с десяток автоматов и ловить события в любом другом месте просто создав новое событие оператором New и связав его с ожидаемым Eq. (Обратил ли внимание что наше событие не создавалось оператором New?) Я не пойму что страшного ты увидел в остановке для синхронизации? Обычное дело. Правда, обычно мы не останавливаемся для ожидания результата. События создаваемые автоматом можно перехватывать и без остановки. Просто в этом конкретном случае можно и остановится.
B>>>>Знак "следует" здесь не прошел. На его месте квадратик.
M>>>Естественно. Именно поэтому весь цивилизованный мир не использует странные символы в программах. Печальный опыт APL был не зря. B>>Мне кажется что с тех пор кое что изменилось и в редакторах и средствах редактирования. Имхо, но готов обсудить.
M>Что обсуждать? Посмотри на клавиатуру и найди мне там знак «следует». Запоминать комбинации клавиш для десятка математических знаков или тянутся на каждый чих мышкой к соответствующей иконке никто не будет.
можно мы не будем про клавиатуру? Есть клавиатура Лебедева, есть тачскрины. Да мало ли какие еще варианты есть.. И я это продумал.
M>Вообще-то при разработке нового языка подразумевается, что автор ознакомился с наработками в других языках, не?
Получается я и сам могу придумать кое-что.. Кстати, не только это. Но MS быстро догоняет. Хотя все равно приятно видеть там свои задумки. Ladу не догонят. На такие изменения они не пойдут. Им и так хорошо.
M>Обосновано чем? Малое число базовых определений? Ты смеешься Только в этом ткст у тебя уже были Оператор, Класс, Объект класса, логическое программирование, группировки двумя типами и т.п.
Не смеюсь.
B>>Хотя бы потому что вся эта кухня легко влезет в кэш.
M>В какой кэш?
Кэш процессора.
B>>Но, кроме подозрений пока ничего не могу сказать. Есть вариант обработчик событий сделать аппаратно. Он вполне может выполняься параллельно. Но это опять таки..в будущем.
M>Вообще-то, весб мир знает, что события должны быть асинхронными И что синхронные события нужны только в очень малом количестве случаев.
Я не спорю с миром. С чего ты решил что я возражаю Наоборот. Выделение событий таким образом позволяет распараллелить даже саму работу диспетчера событий.
Здравствуйте, Mamut, Вы писали:
B>>>> К сожалению подстрочные и надстрочные знаки я не могу здесь проставить, но надеюсь будет понятно. Хотя лажа, конечно.
M>>>Лажа — это использование символов, которые нельзя без приседаний воспроизвести на клавиатуре. B>>Так эта лажа и так есть. Я вот не могу здесь двойные угловые текстовые скобки найти. Необходим другой подход. Давай это оставим на потом. От развития никуда не денешься. Знаков будет только больше. Так что если не мы придумаем, то кто-то другой придумает. Единственный вопрос кто будет первым. Проблем с буквами и знаками реально много. Просто это отдельная тема.
M>Вообще-то, это не отдельная тема и ее нельзя оставлять на потом. Или будешь плодить десяток версии с несовместимым синтаксисом? И зачем больше знаков? Не плоди сущностей без необходимости.
Есть знаки не равно, меньше или равно, больше и равно. Кванторы И, Или. Знак Нет. А как тебя не удивляло отсутствие знаков True и False? Ведь цирк! Кто Yes, No пишет. В математической литературе обозначают буквами f, t. Кто во что горазд. А ведь давно надо бы придумать. Да и знаки форматирования тоже ждут не дождуться.. Вообщем там конь не валялся.
Re[20]: А вот вам и новый язык. Зацените. Можно ругать.
Здравствуйте, Mamut, Вы писали:
B>>>>Группирование объектов допускается двумя способами с последовательным выполнением группы и произвольным выполнением группы (классы Tape и Group).
M>>>Если и то и другое группа, почему только одна называется группой? Почему не Sequence(SeqGroup) и Random(RndGroup)? Зачем нуны пляски с приседанием в виде толпы разных скобок? Которые еще и близки визуально. B>>Произвольное выполнение и последовательное существует независимо от того хотим мы этого или нет. Единственно, что я сделал так это строго привязал назначение скобок.
M>Зачем? У программиста есть лучше занятия, чем в большом куске кода следить за разницей между ([{, которые похожу друг на друга.
B>>Отличие между круглыми и фигурными только в том что объекты в круглых скобках необходимо разделять запятыми. Это чисто для удобства.
M>Для какого удобства? Теперь программисту еще надо помнить, что в одних скобках надо ставить запятые, а в других не надо? Только потому что автору зяыка вдруг так захотелось?
Здесь обратная логика. Можно писать и так и так. Однопупственно. Но если с точки зрения наглядности будет удобнее разделить запятыми, то используются круглые скобки (например параметры процедуры), а если запятые только мешают то используем фигурные (например операторы в теле цикла).
B>>Кому как удобней пусть так и определяет. Приятно, что это правило действует везде.
M>Идиотское правило. почему в круглых скобках надо разделять запятыми, а в квадратных и фигурных не надо?
B>>>> Группирование с последовательным выполнением. Класс Tape. B>>>>Пример 1. Присвоение свойствам группы Word значений Min=2 и Max=40 B>>>>Word {Letter}2 40
M>>>Или M>>>
M>>>Word Sequence(Letter)[2,40]
M>>>
B>>>>Данная группа выполняется максимум 40 раз, но для ее успешного выполнения достаточно одного успешного выполнения группы. B>>И зачем тут скобки? Надстрочное и подстрочное выглядит наглядней.
M>Посмотри на клавиатуру и найди мне под- и надстрочные знаки.
B>>Применение скобок надо-не надо не всегда самый мудрый способ.
M>Надо. И это в данной ситуации самый мудрый способ (более того, напоминающий аналогичный способ в регулярных выражениях). Никто никогда не будет ломать пальцы или постоянно тянуться за мышкой, чтобы набрать символ, которого нет на клавиатуре.
Кстати, о регулярных выражениях.. Их мои правила группирования легко включают в себя.
Re[20]: А вот вам и новый язык. Зацените. Можно ругать.
Здравствуйте, Курилка, Вы писали:
К>Здравствуйте, batu, Вы писали:
B>>Здравствуйте, Mamut, Вы писали:
M>>>Что такое NOD? B>>НОД по русски.. Школа.. арифметика.
К>По-английски он будет GCD, выглядит странно: значки извратные вносим, а русскоязычные термины пишем латиницей. Как-то ну очень последовательно
Это да. Не хорошая традиция
Re[22]: А вот вам и новый язык. Зацените. Можно ругать.
B>>>Вот в таком виде мы обычно и используем объекты в программе. B>>>Так вот зачем так много слов про этот Exit и про имя, а дело в том, что адрес объекта к которому необходимо обратиться находится в теле документа, а не формируется через заголовок процедуры (в силу динамического размещения), так как происходит в случае обращения к объектам созданым опреторами Dim и New. Просто я напоминаю что это не только язык программирвания, но и язык документирования. Для анализа объектов в теле документа адресация осуществляется так называемым указателем и там немного другой принцип. Вот оператор Exit это частный случай такого указателя (Pointer).
M>>Выделенное не понятно вообще. B>Вопрос. С ассемблером знаком? Как формируются адреса переменных, как передаются параметры в процедурах? Мне нужно знать откуда начинать рассказывать.
Давай, ты просто внятно объяснишь, а?
B>>>>>Данный автомат останавливается самостоятельно после вычисления. Кроме того внешнее событие Eq может послужить для информирования о готовности вычисления.
B>>>>>Синхронизация с событием Eq, и выключение автомата Nod. B>>>>>
B>>>>>Dim Integer (A=5, B=35)
B>>>>>New Nod AV (A, B) 'Создание автомата Nod
B>>>>>AV.OnStart 'Включение одновременно со стартером.
B>>>>>Event {Connection=:AV.Eq} 'Оператор синхронизации. Здесь выполнение программы остановится ожидая события AV.Eq
B>>>>>Nod.Stop 'Выключение автомата Nod
B>>>>>
M>>>>Выделенное — это очень плохо. Программисту придется лавировать между событиями, которые создают узкие места в программе на ровном месте. B>>>Никаких узких мест. Выполнение остановилось и ждет события AV.Eq
M>>Выделенное и есть узкое место. В итоге, если мы будем останавливаться на каждое событие, разработчик не сможет написать ничего сложного. Потому что программа постоянно будет останавливаться то там то тут в ожидании событий. B>Автомат работает параллельно. Посмотри на класс. Объект-автомат начинает работу со старта. Работа автомата заключается в срабатывании событий. (это работает почти как сети Петри, но пришлось придумать свои сети они лучше подходят для моих событий) и заканчивает работу при возникновении события EQ. Если нас интересует результат работы автомата, то необходимо подождать, когда возникнет состояние автмата Eq. а можно и не ждать. Запустить с десяток автоматов и ловить события в любом другом месте просто создав новое событие оператором New и связав его с ожидаемым Eq. (Обратил ли внимание что наше событие не создавалось оператором New?) Я не пойму что страшного ты увидел в остановке для синхронизации? Обычное дело. Правда, обычно мы не останавливаемся для ожидания результата. События создаваемые автоматом можно перехватывать и без остановки. Просто в этом конкретном случае можно и остановится.
Это и есть толпа узких мест на пустом месте. Повторяю еще раз, максимально простым языком: события должны быть асинхронными. Потому что блокировка любой точки программы для ожидания — это узкое место.
B>>>>>Знак "следует" здесь не прошел. На его месте квадратик.
M>>>>Естественно. Именно поэтому весь цивилизованный мир не использует странные символы в программах. Печальный опыт APL был не зря. B>>>Мне кажется что с тех пор кое что изменилось и в редакторах и средствах редактирования. Имхо, но готов обсудить.
M>>Что обсуждать? Посмотри на клавиатуру и найди мне там знак «следует». Запоминать комбинации клавиш для десятка математических знаков или тянутся на каждый чих мышкой к соответствующей иконке никто не будет. B>можно мы не будем про клавиатуру? Есть клавиатура Лебедева, есть тачскрины. Да мало ли какие еще варианты есть.. И я это продумал.
Причем тут клавиатура Лебедева и тачскрины? Даже на них количество символов ограничено. Никто не будет прыгать туда-сюда с модификаторами клавиш, пытаясь найти нужный символ.
M>>Вообще-то при разработке нового языка подразумевается, что автор ознакомился с наработками в других языках, не? B>Получается я и сам могу придумать кое-что.. Кстати, не только это. Но MS быстро догоняет. Хотя все равно приятно видеть там свои задумки. Ladу не догонят. На такие изменения они не пойдут. Им и так хорошо.
M>>Обосновано чем? Малое число базовых определений? Ты смеешься Только в этом ткст у тебя уже были Оператор, Класс, Объект класса, логическое программирование, группировки двумя типами и т.п. B>Не смеюсь.
Не заметно. У тебя огромное количество определений.
B>>>Хотя бы потому что вся эта кухня легко влезет в кэш.
M>>В какой кэш? B>Кэш процессора.
И у тебя, наверное, есть цифры, это подтвреждающие?
B>>>Но, кроме подозрений пока ничего не могу сказать. Есть вариант обработчик событий сделать аппаратно. Он вполне может выполняься параллельно. Но это опять таки..в будущем.
M>>Вообще-то, весб мир знает, что события должны быть асинхронными И что синхронные события нужны только в очень малом количестве случаев. B>Я не спорю с миром. С чего ты решил что я возражаю Наоборот. Выделение событий таким образом позволяет распараллелить даже саму работу диспетчера событий.
Угу. И при этом выше ты говоришь, что приложение (или блок кода — неважно) должно отсанавливаться и ждать выполнение события
Здравствуйте, batu, Вы писали:
B>Здравствуйте, Mamut, Вы писали:
B>>>>> К сожалению подстрочные и надстрочные знаки я не могу здесь проставить, но надеюсь будет понятно. Хотя лажа, конечно.
M>>>>Лажа — это использование символов, которые нельзя без приседаний воспроизвести на клавиатуре. B>>>Так эта лажа и так есть. Я вот не могу здесь двойные угловые текстовые скобки найти. Необходим другой подход. Давай это оставим на потом. От развития никуда не денешься. Знаков будет только больше. Так что если не мы придумаем, то кто-то другой придумает. Единственный вопрос кто будет первым. Проблем с буквами и знаками реально много. Просто это отдельная тема.
M>>Вообще-то, это не отдельная тема и ее нельзя оставлять на потом. Или будешь плодить десяток версии с несовместимым синтаксисом? И зачем больше знаков? Не плоди сущностей без необходимости. B>Есть знаки не равно,
!=
B>меньше или равно,
<=
B>больше и равно.
>=
B>Кванторы И
and
B>, Или.
or
B>Знак Нет.
not
B>А как тебя не удивляло отсутствие знаков True и False? Ведь цирк! Кто Yes, No пишет. В математической литературе обозначают буквами f, t. Кто во что горазд. А ведь давно надо бы придумать.
уже давно придумали. используется true/false
B>Да и знаки форматирования тоже ждут не дождуться.. Вообщем там конь не валялся.
И не надо ему нигде валяться. Все, что тебе кажется непридуманным, уже придумано. Более того, клавиатура не безгранична. И, повторю, никто не будет ломать пальцы, запоминать модификаторы и т.п., пытаясь это все набрать. Блин. В тертий раз говорю. Был такой язык APL, окторый пытался сделать то же, что и ты — ввести хитрый символ на каждый чих. Нет, чтобы посмотреть на проблемы которые были с этим связаны
B>>>>>Группирование объектов допускается двумя способами с последовательным выполнением группы и произвольным выполнением группы (классы Tape и Group).
M>>>>Если и то и другое группа, почему только одна называется группой? Почему не Sequence(SeqGroup) и Random(RndGroup)? Зачем нуны пляски с приседанием в виде толпы разных скобок? Которые еще и близки визуально. B>>>Произвольное выполнение и последовательное существует независимо от того хотим мы этого или нет. Единственно, что я сделал так это строго привязал назначение скобок.
M>>Зачем? У программиста есть лучше занятия, чем в большом куске кода следить за разницей между ([{, которые похожу друг на друга.
B>>>Отличие между круглыми и фигурными только в том что объекты в круглых скобках необходимо разделять запятыми. Это чисто для удобства.
M>>Для какого удобства? Теперь программисту еще надо помнить, что в одних скобках надо ставить запятые, а в других не надо? Только потому что автору зяыка вдруг так захотелось? B>Здесь обратная логика. Можно писать и так и так. Однопупственно. Но если с точки зрения наглядности будет удобнее разделить запятыми, то используются круглые скобки (например параметры процедуры), а если запятые только мешают то используем фигурные (например операторы в теле цикла).
Что занчит с точки зрения наглядности? Ты тут что-то говорил об унифицированности. И тут — ВНЕЗАПНО — никакой унификации.
Наглядность — это, в первую очередь, принцип наименьшего удивления. Если и то и другое группировка, то с какого перепугу в одной используются запятые, а в другой — нет? Потому что зачесалась левая пятка автора языка?
M>>Надо. И это в данной ситуации самый мудрый способ (более того, напоминающий аналогичный способ в регулярных выражениях). Никто никогда не будет ломать пальцы или постоянно тянуться за мышкой, чтобы набрать символ, которого нет на клавиатуре. B>Кстати, о регулярных выражениях.. Их мои правила группирования легко включают в себя.
Здравствуйте, Mamut, Вы писали:
M>Здравствуйте, batu, Вы писали:
B>>Да и знаки форматирования тоже ждут не дождуться.. Вообщем там конь не валялся.
M>И не надо ему нигде валяться. Все, что тебе кажется непридуманным, уже придумано. Более того, клавиатура не безгранична. И, повторю, никто не будет ломать пальцы, запоминать модификаторы и т.п., пытаясь это все набрать. Блин. В тертий раз говорю. Был такой язык APL, окторый пытался сделать то же, что и ты — ввести хитрый символ на каждый чих. Нет, чтобы посмотреть на проблемы которые были с этим связаны
На эту тему есть не столь давняя заметка на слэшдоте (молодые китайцы и японцы начинают забывать сложные иероглифы, т.к. пользуются алфавитными системами)
Re[22]: А вот вам и новый язык. Зацените. Можно ругать.
Здравствуйте, Mamut, Вы писали:
M>Здравствуйте, batu, Вы писали:
B>>Здравствуйте, Mamut, Вы писали:
B>>>>>> К сожалению подстрочные и надстрочные знаки я не могу здесь проставить, но надеюсь будет понятно. Хотя лажа, конечно.
M>>>>>Лажа — это использование символов, которые нельзя без приседаний воспроизвести на клавиатуре. B>>>>Так эта лажа и так есть. Я вот не могу здесь двойные угловые текстовые скобки найти. Необходим другой подход. Давай это оставим на потом. От развития никуда не денешься. Знаков будет только больше. Так что если не мы придумаем, то кто-то другой придумает. Единственный вопрос кто будет первым. Проблем с буквами и знаками реально много. Просто это отдельная тема.
M>>>Вообще-то, это не отдельная тема и ее нельзя оставлять на потом. Или будешь плодить десяток версии с несовместимым синтаксисом? И зачем больше знаков? Не плоди сущностей без необходимости. B>>Есть знаки не равно,
M>!=
Есть перечеркнутое равенство. И выпендреж. B>>меньше или равно,
M><=
Одним знаком B>>больше и равно.
>>=
B>>Кванторы И
M>and
Есть знак. А это текст B>>, Или.
M>or
Есть знак. А это текст B>>Знак Нет.
M>not
Есть знак. А это текст
B>>А как тебя не удивляло отсутствие знаков True и False? Ведь цирк! Кто Yes, No пишет. В математической литературе обозначают буквами f, t. Кто во что горазд. А ведь давно надо бы придумать.
M>уже давно придумали. используется true/false
А почему бы знаки не придумать? По моему назрело.
B>>Да и знаки форматирования тоже ждут не дождуться.. Вообщем там конь не валялся.
M>И не надо ему нигде валяться. Все, что тебе кажется непридуманным, уже придумано. Более того, клавиатура не безгранична. И, повторю, никто не будет ломать пальцы, запоминать модификаторы и т.п., пытаясь это все набрать. Блин. В тертий раз говорю. Был такой язык APL, окторый пытался сделать то же, что и ты — ввести хитрый символ на каждый чих. Нет, чтобы посмотреть на проблемы которые были с этим связаны
хитрый символ на каждый чих это ни к чему. И даже глупо. А вот использовать общепринятые можно и нужно. Если ты не согласен давай на этом прекратим. Хотя бы на время. Что б не засорять тему. Пусть она остынет..