1 В избранное 0 Ответвления 0

OSCHINA-MIRROR/hiwii-hiwiiLang

Присоединиться к Gitlife
Откройте для себя и примите участие в публичных проектах с открытым исходным кодом с участием более 10 миллионов разработчиков. Приватные репозитории также полностью бесплатны :)
Присоединиться бесплатно
Клонировать/Скачать
Syntax.md 31 КБ
Копировать Редактировать Web IDE Исходные данные Просмотреть построчно История
gitlife-traslator Отправлено 25.11.2024 07:35 6166c07

Язык: обзор

Символьные комбинации

Язык состоит из основных символов. Различные естественные языки состоят из разных наборов символов. Например, английский язык состоит из 26 букв, а китайский — из нескольких тысяч иероглифов. Основные символы языка включают не только буквы и иероглифы, но и специальные знаки, такие как пунктуация и другие.

Основные символы объединяются в словарные единицы. Словарные единицы представляют собой минимальные смысловые единицы естественного языка. В языках, подобных английскому, где некоторые символы могут использоваться отдельно (например, «I», «a»), большинство символов обычно не являются словарными единицами. В китайском языке каждый символ может выступать в качестве отдельной словарной единицы.

Последовательность словарных единиц образует предложение. Последовательность предложений формирует абзац.

Выражения

Выражение — это символьная комбинация, способная передавать определённый смысл. Язык представляет собой упорядоченную комбинацию выражений, а выражения являются его составными частями.

Слово, фраза, предложение или глава книги могут рассматриваться как выражение.

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

f(x)

Это выражение является одним из наиболее распространённых выражений в математике и компьютерных языках. Однако оно редко встречается в естественных языках.

Три типа выражений

Словарные единицы естественных языков часто делятся на существительные и служебные слова. Существительные включают имена существительные, глаголы, прилагательные, числительные, местоимения и наречия. Служебные слова включают предлоги, союзы, частицы, междометия и восклицания.

Необходимость разделения словарных единиц на существительные и служебные слова обусловлена однотипностью словарных единиц.

Описание возможностей выражений значительно превосходит описание возможностей словарных единиц. Нет необходимости разделять выражения на несколько типов, как это делается со словарными единицами.

Языковые выражения можно разделить только на три типа: объектные, состояния и действия. Объекты, состояния и действия реального мира являются объектами, которые язык пытается описать. Таким образом, три основных типа выражений соответствуют существительным, прилагательным и глаголам в словаре. Числительные, местоимения и наречия также можно рассматривать как существительные.

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

Служебные слова могут быть представлены в виде функций или отображений в выражениях. Например: «я и ты» можно выразить как функцию: и (я, ты). Таким образом, выражения не имеют формы служебных слов, а заменяют их функциями.

В зависимости от цели, которую они выражают, объектные выражения могут быть трёх видов: конкретные, абстрактные и реляционные.

Три типа выражений в языке Хайми — вычислительные, оценочные и действенные — соответствуют существительным, прилагательным и глаголам. В естественных языках также есть числительные и местоимения, которые являются существительными. В китайском языке существительные также включают счётные слова, которых нет в английском языке. Эти существительные в языке Хайми не имеют соответствующих выражений.

Хайми имеет концепцию чисел, таких как 1, 2,1 и ⅓. Однако Хайми рассматривает числа как реальные объекты, а не как особые словарные единицы, подобно объектно-ориентированным языкам программирования. Лица считают всё объектами, включая числа. Это соответствует философии математики и логики Рассела.

Хотя компьютерные языки рассматривают числа так же, как столы и дома, люди используют ссылки на существительные для обозначения чисел. Например: мой дом и мой рост. Дом — это реальный объект, а рост — число.

С точки зрения представления числа отличаются от других выражений тем, что Хайми и большинство компьютерных языков требуют, чтобы числа были представлены арабскими цифрами.

Как и английский, Хайми не имеет счётных слов.

Местоимения в компьютерных языках также исчезли. Существительные делятся на реляционные, объектные и абстрактные, а местоимения — это вид отношений. Переменные в компьютерном языке также являются видом отношений.

Интерпретируемый язык

Только язык, состоящий из словарных единиц, трудно использовать в качестве средства человеческого общения. Современные письменные и устные языки похожи, оба основаны на словарных единицах. Эта структура языка препятствует превращению естественных языков в средство человеческого общения.

Развитие искусственного интеллекта и обработки естественных языков делает возможным взаимодействие человека и компьютера в определённой степени, но попытка использовать обработку естественных языков для создания средств человеческого общения — это неправильный путь.

Современные компьютерные языки основаны на традиционных принципах работы компьютеров. Традиционные принципы работы компьютеров основаны на двоичном коде, и все компьютерные языки стремятся к лучшему преобразованию в двоичный код. С точки зрения дизайна, компьютерные языки ориентированы на программистов, а не на обычных пользователей, и не уделяют внимания человеческому общению. Пользователи и программисты привыкли к графическим пользовательским интерфейсам и постепенно теряют потребность в человеческом общении.

Этот язык стремится создать язык, который будет понятен каждому человеку и который можно будет использовать не только для человеческого общения, но и для взаимодействия между людьми и машинами.

Чтобы достичь этой цели, язык должен сочетать особенности естественных и компьютерных языков и создавать легко понимаемые средства общения. Для этого необходимо разработать простую, понятную и удобную систему выражений.

Основная проблема использования словарных единиц для человеческого общения заключается в том, что грамматическая структура запутана. Если мы хотим понять значение естественного языка, состоящего из словарных единиц, мы должны понимать свойства и значения каждого словарного элемента, а также порядок слов важен для понимания смысла предложения.

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

Функции

Функция — это математическое понятие, которое представляет собой отображение элементов одного непустого множества в другое непустое множество. Обычно обозначается как f(x). Отображение не обязательно имеет один параметр, оно может иметь несколько параметров, обозначаемых как f (x1, x2, x3, ...).

В языке Хайми вычисления соответствуют этому математическому процессу.

Естественные языки не имеют такого выражения, как функция, потому что они развились из устной речи. Однако некоторые словарные элементы естественных языков выполняют функцию выражения, например предлоги и союзы.

Использование специальных символов, таких как скобки и запятые, неизбежно при использовании функций. Устная речь не может выразить эти специальные символы, а её последовательность выражений также не поддерживает использование скобок. Однако после тысячелетнего развития письменности функции должны быть включены в письменные языки, а не продолжать использовать последовательность словарных элементов, характерную для устной речи.

Функции широко используются в компьютерных языках. В языке Хайми выражения функций являются одним из основных выражений.

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

Для различения выражений и реальных объектов Хайми вводит выражения отображения.

Отображения и функции имеют одинаковое значение в математике. Однако в Хайми функции и отображения различаются. Параметрами функции являются объекты, а параметрами отображения — выражения.

Их форматы похожи:

функция: f (x1, x2, x3,...)

отображение: f [x1, x2, x3,...]

В Java и C функции определяются с возвращаемыми типами, такими как:

public int f(x){

....

}

Определение функций в Хайми обычно не имеет типов. Это связано с режимом работы Хайми. Java и другим объектно-ориентированным языкам требуется проверка типов данных во время компиляции и выполнения, тогда как Хайми динамически связывает функции с объектами и поэтому не требует проверки типов объектов.

Теоретически нам не нужно связывать типы функций. Три элемента функции — это исходное множество, целевое множество и тело функции. Они тесно связаны, и если известны два из них, третий можно определить естественным образом. Если известны источник и тело функции, цель также определяется естественным образом. Аналогично, если определено взаимно однозначное соответствие между источником и целью, тело функции также определяется. Если соответствие является правилом, тело функции может быть выражено выражением, но в крайних случаях тело функции не может быть выражено выражением. Текст запроса написан на языке PlantUML.

Это язык моделирования, который используется для создания диаграмм UML. Текст запроса представляет собой описание различных аспектов объектно-ориентированного программирования и не содержит кода или запросов к базе данных.

Перевод текста:

«Является оператором завершения программы вычисления. Когда процесс вычисления сталкивается с return [параметр], вычисляется выражение параметра, и возвращается значение объекта, представленное выражением параметра.

ask[{var[x, Integer], x:=3, return[x+2]}] //результат 5

decide[параметр]

Является оператором завершения программы определения. Когда программа определения сталкивается с decide, текущий процесс определения завершается, и возвращается результат определения, представленный параметром decide.

whether[{var[x, Integer], x:=3, decide[x > 4]}] //результат false

throw(type)

except[e, Exception.new]
throw(e)
```»

* * *

Далее в тексте идёт описание концепции выражения в системе, а также определение терминов «определение» и «установление».

В запросе также рассматриваются различные типы выражений: объекты, состояния, действия, связи и абстракции. Описываются способы их установления и использования.

Также в запросе говорится о том, что система состоит из объектов, которые могут взаимодействовать друг с другом. Объекты могут быть связаны друг с другом различными способами, такими как связь, состояние и действие.

Кроме того, в запросе описывается концепция абстрактных понятий и их использование в системе. Абстрактные понятия используются для описания общих свойств объектов и связей между ними.

* * *

Текст заканчивается описанием различных способов использования выражений в системе:

1. Выражения состояний могут использоваться для представления текущего состояния объекта.
2. Выражение вычислений может использоваться для выполнения вычислений над значениями параметров.
3. Выражение решений может использоваться для принятия решений на основе значений параметров.
4. Выражение действий может использоваться для выполнения действий над объектами.

В конце текста приводится пример использования этих выражений в программе. **ask[People.select{[name, address], age>15}]**

**domain:**

define[age, Link:Integer] setDomain[age, age > 0]


**describe:** некоторые выражения используются для представления некоторых абстрактных реальных сущностей. Например, определение области и диапазона значений функции. Эти абстрактные реальные сущности могут быть описаны только с помощью выражений, но не могут быть присвоены значения.

**Объект + предикат образуют основную связь в языке.** Большинство выражений, о которых говорилось ранее, не имеют субъекта, а в реальной языковой среде большинство предикатов обычно имеют субъект.

Приведённые выше примеры turn и assign также используют субъект.

**Set**

Элементы множества не могут повторяться, множество не имеет логической последовательности.

refer[set0, Set.new] set0#add(1) set0#add(2) //ask[set0] результат: [1,2] set0#remove(1)


**List**

В отличие от множества, List упорядочен, поэтому имеет метод вставки.

refer[lst, List.new] //создать новый List и назвать его lst. lst#add("abc") //добавить элемент "abc" в lst ask[lst] ["abc"] lst#remove(0) //удалить первый элемент. Как и в Java, индекс обычно начинается с 0. lst#add("abc") lst#add("def") lst#add(1, "123") //["abc", "123", "def"] вставить элемент перед позицией 1


В этом примере нет создания переменной, как это обычно делается в языках программирования, вместо этого создаётся ссылка. Ссылка похожа на статическую переменную в Java. Однако статическая — это статическая, что противоречит значению переменной. Поэтому в языке HiWi нет статических переменных. Ссылка представляет собой выражение идентификатора, указывающее на объект. В Java переменные или статические переменные должны иметь тип. В языке HiWi объекты и типы различны.

**Map**

**Array**

Массив — это упорядоченная последовательность элементов. Массивы могут иметь размерность от 1 до n (n — целое число больше 1). В отличие от List, массив имеет фиксированную длину.

Индексы массива начинаются с 0. Для определения массива необходимо указать длину:

Array.new(len) //len>=1, индексы: 0,1,...,len-1 //многомерный массив Array.new(len1, len2)


**Tuple**

Обычно скобки содержат только один параметр.

**Определение модификации**

Формат: основное определение. Модификация определения

Указывает на набор, который имеет модификацию определения в основном определении. Например:

Animal.List    //Animal и List — разные определения.

Подобная грамматика используется в объектах, где она имеет другое значение. «XiaoMing.Schoolbag» указывает на отношение принадлежности.

Java и C# используют форму List<T> для обозначения List как универсального типа. В языке HiWi List является определением.

**Exception**

Exception — это системное определение, которое возвращает объект Exception через new. new может иметь параметры или не иметь параметров. Когда есть два параметра, первый параметр — код ошибки, второй параметр — сообщение об ошибке. Только один параметр указывает сообщение об ошибке.

Exception.new Exception.new("message") Exception.new("1010", "message")

throw(Exception.new("1010", "message"))


**Файл**

ask[file("hiwii\\aa.hiw")]

ask[file("hiwii\\aa.hiw").content]

exec("hiwii\\aa.hiw")

Содержимое файла следующее:

{ var[x, Integer], x:=3, { var[y, Integer], y:=5, ask[x], //доступен ask[y] //доступен }, ask[x], //доступен ask[y] //недоступен }


**Выполнение программы**

**Определить исключение**

define[Error1, Exception] define[childErr, Error1]


**Предложение**

Предложение используется для описания состояния объекта, и описание текущего состояния объекта было представлено ранее. Но предложение больше связано со временем, описание состояния времени является основной темой всех грамматик.

Естественный язык обычно разделяет элементы языка на три основные части: субъект, предикат и атрибут, а также две вспомогательные части: определение и предложение.

Выражение этого языка состоит только из субъекта и предиката, а вспомогательная часть состоит только из предложения. Предложение также состоит из субъекта и предиката. Предыдущее обсуждение подчёркивает действие выполнения предиката, и предикатом обычно является глагол. Предложение описывает состояние действия, и всё предложение является описанием состояния, а предикат является лишь содержанием описания.

Фокус предложения — время. В эпоху бумажных книг и устной речи точка отсчёта времени, когда происходит языковое высказывание, является точкой отсчёта времени.

Время предложения состоит из двух измерений: состояния действия и времени.

Состояние действия: общее, действие, завершение, завершённое действие.
Временное состояние: настоящее, прошедшее, будущее, прошедшее будущее.

//общее do, действие doing, завершение done, завершённое действие been

//настоящее be, прошедшее was, будущее will, прошедшее будущее would

**Результат выполнения**

Результат предложения заключается в изменении состояния объекта. Это состояние не является состоянием реального времени, а просто записывается.

**Грамматика**

Грамматика предложения следующая:

Субъект [$или!] время слово [слово действия, выражение действия]

Слово времени может быть только be, was, will. Указывает на глагол.

Выражением действия может быть: идентификатор, функция или отображение выражения.

**Общее прошлое**

define[出生, Action] //Если глагол рождения не определён, сначала выполните этот шаг. 小明$was[出生{when:=year("2010")}] //Маленький Минг родился


Английский обычно использует did или прошедшее время глагола для обозначения общего прошлого, например: Tom worked at school. Китайский глагол не имеет времени, обычно он описывается через предложение, чтобы описать прошлое действие, например: XiaoMing walked to school early in the morning yesterday.

Опубликовать ( 0 )

Вы можете оставить комментарий после Вход в систему

1
https://api.gitlife.ru/oschina-mirror/hiwii-hiwiiLang.git
git@api.gitlife.ru:oschina-mirror/hiwii-hiwiiLang.git
oschina-mirror
hiwii-hiwiiLang
hiwii-hiwiiLang
master