Как стать автором
Обновить
0
Михаил Кузьмин @Baturead⁠-⁠only

Пользователь

Отправить сообщение

Основные концепции принятые в языке Lada

Время на прочтение5 мин
Количество просмотров755
Язык системы Lada является объектным. Он является не столько языком, сколько системой правил создания, редактирования, хранения и протоколом обмена объектов, которые должны соблюдать языки, работающие в системе Lada. Эти правила общие и для создания текстовых документов (на других языках), и для создания, хранения и редактирования любых данных, а могут быть и языком программирования. Имеются средства императивного представления объекта (со свойствами, методами и событиями), элементы функционального программирования, так и логическое представление объекта (представление в виде высказывания). Реализована так же автоматная парадигма. Кроме того сделана попытка универсализации синтаксиса определения объектов. И дело не в желании автора сделать что-то оригинальное, а как раз наоборот привести к единому виду. Для этого проработаны три концепции. А именно:

1. Правила именования объектов.
2. Правила группирования объектов. Объединение объектов.
3. Принцип вложенности объектов.
4. Правила создания объектов.
5. Правила реализации объекта (Присвоение значений свойств, добавление новых свойств, методов и событий).

Читать дальше →
Всего голосов 18: ↑9 и ↓90
Комментарии16

Язык описания грамматик. Подмножество языка Lada

Время на прочтение2 мин
Количество просмотров619
Система Lada имеет собственные средства описания грамматики, поэтому в тексте использована именно эта нотация, краткое описание которой ниже.

1. Понятие определяется оператором Determination, за которым следует имя определяемого понятия и далее определяющая последовательность понятий в скобках.
2. Имя определяемого понятия может содержать не больше сорока букв, либо любые знаки, заключенные в именные скобки «"». Более подробно смотри правила именования (Раздел 1).
3. При необходимости определить сразу несколько понятий они заключаются в фигурные скобки (либо в круглые скобки через запятую) после оператора Determination. Раздел 2.1. Объекты, заключенные в скобки будем называть группой.
4. Последовательность знаков непосредственно участвующая в разборе выделяется текстовыми скобками ««» и «»».
5. Объекты или группы разделенные знаком «|» означают выполнение одного из этих объектов или групп. Операция «Или».
6. Последовательность определений в скобках (группа), и знаком «|» после открывающей скобки (без пробела) обозначает выбор одного варианта из этой последовательности. Группа «Или».
7. Знак «¬» перед понятием (или группой понятий) означает, что в разборе допустимо все что угодно кроме этого понятия (или группы понятий). Операция «Нет».
8. Последовательность определений в скобках (группа), и знаком «¬» после открывающей скобки (без пробела) обозначает не совпадение ни с одним вариантом из этой последовательности. Группа «Нет».
9. Надстрочное значение, после закрывающей скобки определяет максимальное количество допустимых повторений понятий объединенных группой, которую закрывает эта скобка.
10. Подстрочное значение после группы понятий указывает минимальное количество вхождений данного понятия в определение. Значение 0 допускает отсутствие группы понятий в разборе.

Примеры.

1. Determination Цифра {0| 1| 2| 3| 4| 5| 6| 7| 8| 9}
2. Determination Letter (| А, B, …, я)
3. Determination
{
Word {Letter}140
Название {«"» {¬ «"»}128 «"»}
}

Данные правила используются для программирования грамматик. Для применения в тексте оператор Determination будем опускать, и использовать знак «=» после определяемого понятия. И напомним еще раз, что наличие запятых разделяющих объекты необходимо только при группировании круглыми скобками. Объекты, разделенные инфиксной операцией «Или» считаются одним объектом и не нуждаются в разделении запятыми даже при использовании круглых скобок.

Пример.

Цифра = (| 0, 1, 2, 3, 4, 5, 6, 7, 8, 9)

В таком виде это похоже на формы Бэкуса-Наура и легче воспринимается.
Всего голосов 14: ↑5 и ↓9-4
Комментарии10

Организация данных в системе LADA

Время на прочтение3 мин
Количество просмотров501
Организация объектов.

1. Общие принципы.

Организация данных одна из главных задач не только в программировании, и от ее решения зависят возможности структурирования объектов и их группирования и, в конечном счете, возможности языка. Напомним хотя бы значение теории множеств для развития математики. Простота и общность этой теории служит фундаментом многим теоретическим и практическим исследованиям. Для эффективной реализации при определении множества необходимо эффективно реализовать следующие операции:
1. Принадлежность объекта множеству.
2. Не принадлежность объекта множеству.
3. Включение.
4. Включение.
5. Включение справа.
6.Включение с замыканием справа.
7.Не включение.
8.Объединение.
9.Пересечение.
10 ¬ Дополнение. Оно же отрицание.

Возможно, мы не включили разность двух множеств или еще чего-то часто встречающегося, предложенного вполне достаточно для реализации остального. Ниже рассмотрим подробно реализацию этих операций. Заметив что, для практической реализации представляет интерес доступ к объектам множества. Вот по этим признакам и сформулируем разные методы организации множеств.

1. Классы, типы. Class, Type
Классы и типы представляют описание структуры объекта и служат носителями информации для создания объекта. Созданный объект хранит в себе информацию о своем классе или типе. Дополнительной функцией классов и типов является анализ ссылок на легальность доступа к объекту. Проверка на принадлежность классу и типу осуществляется проверкой хранимой информации о классе объекта при проверке легальности. Например, при входе в процедуру. Доступ к объектам класса или типа осуществляется непосредственно ссылками. Отметим, что определение множества в данном случае происходит до создания объектов так, как именно классы и типы являются своего рода шаблонами для создания объектов.
2. Массивы. Array
Обычно в языках не предусмотрена проверка на принадлежность объекта массиву. Основной целью, которая ставится в данной организации данных, является произвольный быстрый доступ к объектам данной группы (или множества, или массива) с помощью индекса. Массив можно создавать в отсутствие объектов. Сами объекты составляющие массив могут быть созданы позже. Необходимо отметить что в данной структуре могут находится объекты одного класса или типа.
3. Лента. Tape. Группа.
Лента представляет собой группу объектов доступ, к которым возможен только последовательно. Сначала первый, затем второй объект и т.д. до конца ленты. Такая структура используется для последовательного доступа к объектам. Например, к командам выполняемых компьютером последовательно. Удобна для внешнего доступа, так как не требует индекса, и доступ может осуществляться извне автоматическим наращиванием индекса (или адреса). Это же свойство используется при анализе входной цепочки объектов при ее анализе. Например, при трансляции. Проверка на принадлежность объекта данной группе осуществляется перебором всех объектов группы (с учетом свойств выборки). Важной особенностью группирования лентой является наличие объектов в группе во время определения группы Tape. И не допускает добавление или исключения объектов их группы, и более того, объект может принадлежать только одной группе Tape.
4. Группа. Group.
Группа объединяет существующие объекты. В зависимости от свойств и при включении объекта в группу создает ссылку на себя. В таком случае проверка объекта на принадлежность группе заключается в проверке наличия у объекта соответствующей ссылки (Свойство Indexed =Yes). И, в остальном, аналогична контейнеру в JAVA. Данная группа позволяет добавлять и удалять объекты из группы. Допускается принадлежность объекта нескольким группам одновременно. Допускает обращение по индексу (Item).

List (список), который хранит группы элементов в указанном порядке
Set (набор), который позволяет добавление одного элемента каждого типа
Map (карта) хранит пары ключ-значение, что похоже на мини базу данных
Кроме объектов, группа может содержать другие группы.
5. Множества. Multitude.
Множество определяется формальными параметрами и предикатом относительно этих параметров. Принадлежность объекта множеству устанавливается истинностью предиката входящего в определение множества. Исходя из такого определения понятно, что на момент определения множества наличие объектов не обязательно.

Так, как приведена только первая часть скажу, что, например, возможна такая форма Private Sub (X: Mu ), где Mu не только класс, или тип, но и группа или множество.
И что группирование и множества создают так называемую «горизонтальную иерархию» объектов в противоположность «вертикальной иерархии» создаваемой наследованием классов и типов. Например:
Multitude ИмеющиеЦвет: (X: Object) { Color «здесь знак принадлежит» X.Properties}
Так множество ИмеющиеЦвет содержит объекты любого класса имеющего свойство Color.
Всего голосов 17: ↑2 и ↓15-13
Комментарии4

Иерархическая семантика и новые правила написания текста. Сори… Цвета здесь не передаются…

Время на прочтение8 мин
Количество просмотров1.3K
1. Иерархическая семантика.

Необходимость в иерархической семантике в принципе очевидна и связана не только с необходимостью вводить новые термины и понятия или желания иметь развивающийся язык. Более глубоким свойством развивающегося языка является возможность в новых терминах оперировать с уже существующими терминами и понятиями, т.е. возможность создавать метаязык. Именно это свойство позволяет избежать семантической замкнутости языка.
Читать дальше →
Всего голосов 16: ↑7 и ↓9-2
Комментарии26

Типы и классы

Время на прочтение6 мин
Количество просмотров4.4K
1. Типы и классы. Объекты. Значения.

Определение типов и классов в языке Lada отличаются лишь ключевым словом. И типы, и классы могут иметь свойства, методы, события и даже операции (отношения или предикаты) можно определять и для класса и для типа. Иногда, даже трудно определить, что создавать тип или класс.

Пример 1. Создание класса Time.
Class Time
{
Dim Hour: Integer
Dim Minute: Integer
Dim Second: Integer
}
Пример 2. Создание типа Time.
Type Time
{
Dim Hour: Integer
Dim Minute: Integer
Dim Second: Integer
}
И в типах и в классах операторами Dim определяются свойства. И, так же как и в классах, мы можем говорить свойство Hour типа (или класса) Time. Но между ними есть существенное отличие в том, что типы создают объекты-значения, а классы создают так называемые ссылочные объекты, на которые можно ссылаться и каждый объект обладает индивидуальностью. Если для данных определенных как тип индивидуальность не важна, то для объектов создаваемых классом это принципиальный момент. Объект, создаваемый классом (например, Клиент) имеет свою индивидуальность и может присутствовать в единственном экземпляре (и соответствовать только одному реальному клиенту). Любой объект, обращающийся к объекту Клиент, делает это по ссылке или указателю. Таким образом, все объекты, обращающиеся к объекту Клиент, могут быть уверены, что имеют дело с одним объектом. Изменения, сделанные в объекте Клиент, будут доступны всем пользователям этого объекта.
Если мы хотим сравнить два объекта созданных классом, то должны сделать идентификацию самих объектов по ссылке или указателю. Как правило, копии ссылочных объектов не делаются. Разве что при необходимости репликации в сети или архивирования. Но в любом случае если копии созданы, то необходимо синхронизировать их обновление. Напротив сравнение двух объектов-значений происходит сравнением свойств этих объектов, даже если они фактически являются разными объектами и находятся в разных областях памяти.
Ценность объектов-значений именно в самом значении. Одновременно могут существовать сотни объектов с одинаковым значением времени и все они взаимозаменяемы. Изменять значение можно, но тогда это будет новый объект. Напротив изменение одного из свойств (например, изменение должности или зарплаты у объекта Клиент) в ссылочном объекте не создает новый (в смысле другой) объект. Изменяет свойства, но это по-прежнему тот, же самый объект.
Применение оператора Dim к типу создает объект-значение (выполнение всех операций необходимых для создания объекта). Применение оператора Dim к классу создает ссылку на объект-класс и никоим образом не выполняет никаких других действий по созданию собственно объекта. Однако надо же и создать объект, что б на него ссылаться. Объекты типы и классы можно отличать цветом. Вот изменяя его можно создавать объект оператором Dim для классов, и наоборот создавать ссылки на объекты значения. Такое тоже бывает нужно.
Читать дальше →
Всего голосов 9: ↑3 и ↓6-3
Комментарии3

Алфавит… размышления на тему… Полное

Время на прочтение16 мин
Количество просмотров1.3K
1. Алфавит. Ассоциативные связи.

По поводу алфавита сказано так много, что я для начала процитирую работу Карла Бюлера «Теория языка»
«Алфавит — это ассоциативная цепочка (механическая последовательность), и больше ничего; но каждый выучивал и знает его. Поэтому отображения последовательностей каких-либо объектов на алфавит — это удобное соотнесение. Мы постоянно им пользуемся на практике для упорядочивания. Было бы не трудно доказать, что в системе знаков, из которых состоит естественный язык, встречается множество ассоциативных цепочек и переплетений, которые с психологической точки зрения находятся на одной ступени с алфавитной цепочкой, и которые оказывают нам такую же службу во всеобъемлющей задаче упорядочения нашего знания о предметах и сообщения этого знания другим».
Читать дальше →
Всего голосов 11: ↑6 и ↓5+1
Комментарии5

Алфавит… размышления на тему… Полное на персональном.

Время на прочтение4 мин
Количество просмотров596
1. Алфавит. Ассоциативные связи.

По поводу алфавита сказано так много, что я для начала процитирую работу Карла Бюлера «Теория языка»
«Алфавит — это ассоциативная цепочка (механическая последовательность), и больше ничего; но каждый выучивал и знает его. Поэтому отображения последовательностей каких-либо объектов на алфавит — это удобное соотнесение. Мы постоянно им пользуемся на практике для упорядочивания. Было бы не трудно доказать, что в системе знаков, из которых состоит естественный язык, встречается множество ассоциативных цепочек и переплетений, которые с психологической точки зрения находятся на одной ступени с алфавитной цепочкой, и которые оказывают нам такую же службу во всеобъемлющей задаче упорядочения нашего знания о предметах и сообщения этого знания другим».
Читать дальше →
Всего голосов 10: ↑5 и ↓50
Комментарии15

Информация

В рейтинге
Не участвует
Откуда
Харьков, Харьковская обл., Украина
Дата рождения
Зарегистрирован
Активность