K++ — различия между версиями
Korvin (обсуждение | вклад) м (→Синтаксис языка) |
|||
(не показаны 47 промежуточных версий 3 участников) | |||
Строка 1: | Строка 1: | ||
− | + | __NOTOC__ | |
+ | [[Изображение:head.png]] | ||
− | + | По мере разработки платформы Диптаун, нами была осознана необходимость создания удобного и универсального средства для управления платформой. Изначально, мы хотели реализовать ее так, чтобы платформа была максимально гибкой и расширяемой; чтобы она позволяла вносить изменения практически в любую ее часть без необходимости пересмотра и переработки системы в целом. Неотъемлемой частью существующей реализации является [[виртуальная машина Gide]], которая берет на себя большую часть задач по управлению различными частями платформы и организации их взаимодействия. Gide применяется практически во всех задачах: начиная от генерации процедурных текстур и до пользовательского интерфейса; от управления аватарами и до программирования объектов виртуального пространства. | |
+ | |||
+ | Однако, программирование на Gide это довольно тяжелое и утомительное занятие, как и на любом другом низкоуровневом языке. В связи с этим, было принято решение написать поверх него язык высокого уровня, который позволял бы писать программы, сочетающие в себе удобство языка высокого уровня с гибкостью Gide. В результате получился язык, документацию по которому вы сейчас читаете. | ||
+ | |||
+ | К++ это язык, написанный нами с нуля, на основании наших представлений о том, каким должен быть скриптовый язык. Он в полной мере интегрирован с самой платформой и написан на ее основе. Поскольку платформа Диптауна не зависит от ОС, реализация К++ так же получилась кроссплатформенной. | ||
+ | |||
+ | |||
+ | Исключительными правами на язык К++ и на документацию к нему обладают его авторы. Копирование, распространение, а так же использование в других целях программ, текстов документации или любых их частей возможно только по письменному разрешению авторов. | ||
+ | * © Дмитрий Кашицын, 2007-2009 | ||
+ | * © Дмитрий Роот, 2007-2009 | ||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
== Введение == | == Введение == | ||
+ | # [[Предисловие]] | ||
+ | ## [[Предисловие#Роль K++ в проекте Диптаун|Роль K++ в проекте Диптаун]] | ||
+ | ## [[Предисловие#Почему именно K++?|Почему именно K++?]] | ||
+ | ## [[Предисловие#Для кого эта книга|Для кого эта книга]] | ||
+ | ## [[Предисловие#Стиль изложения материала|Стиль изложения материала]] | ||
+ | ## [[Предисловие#Тесная взаимосвязь с gide|Тесная взаимосвязь с gide]] | ||
+ | ## [[Предисловие#Принятые обозначения|Принятые обозначения]] | ||
# [[История создания языка]] | # [[История создания языка]] | ||
# [[Идеология языка]] | # [[Идеология языка]] | ||
− | ## [[Немного теории о языках программирования]] | + | ## [[Идеология языка#Немного теории о языках программирования|Немного теории о языках программирования]] |
− | ## [[Парадигменность]] | + | ## [[Идеология языка#Компиляторы и интерпретаторы|Компиляторы и интерпретаторы]] |
− | ## [[Понятие о типизации]] | + | ## [[Идеология языка#Парадигменность|Парадигменность]] |
− | ## [[Управление памятью]] | + | ## [[Идеология языка#Понятие о типизации|Понятие о типизации]] |
− | ## [[Понятие исключения]] | + | ## [[Идеология языка#Управление памятью|Управление памятью]] |
+ | ## [[Идеология языка#Понятие исключения|Понятие исключения]] | ||
− | == Основы языка | + | == Основы языка == |
− | # [[Переменные, | + | # [[Введение, или краткий обзор]] |
− | ## [[Статическая типизация на примере C++]] | + | ## [[Введение, или краткий обзор#Здравствуй, мир!|Здравствуй, мир!]] |
− | ## [[Динамическая типизация на примере Ruby]] | + | ## [[Введение, или краткий обзор#Более сложный пример|Более сложный пример]] |
− | ## [[Полудинамическая типизация]] | + | ## [[Введение, или краткий обзор#Использование блоков|Использование блоков]] |
− | # [[Типизация при объявлении]] | + | ## [[Введение, или краткий обзор#Расширение классов|Расширение классов]] |
− | # [[Типизация при инициализации]] | + | # [[Переменные]] |
− | # [[Нетипированные (динамические) переменные]] | + | ## [[Переменные#Понятие переменной, тип переменной|Понятие переменной, тип переменной]] |
− | # [[О важности инициализации переменных | + | ## [[Переменные#Статическая типизация на примере C++|Статическая типизация на примере C++]] |
− | + | ## [[Переменные#Динамическая типизация на примере Ruby|Динамическая типизация на примере Ruby]] | |
+ | ## [[Переменные#Полудинамическая типизация|Полудинамическая типизация]] | ||
+ | ## [[Переменные#Типизация при объявлении|Типизация при объявлении]] | ||
+ | ## [[Переменные#Типизация при инициализации|Типизация при инициализации]] | ||
+ | ## [[Переменные#Нетипированные (динамические) переменные|Нетипированные (динамические) переменные]] | ||
+ | ## [[Переменные#О важности инициализации переменных|О важности инициализации переменных]] | ||
# [[Константы]] | # [[Константы]] | ||
− | ## [[Понятие константы]] | + | ## [[Константы#Понятие константы|Понятие константы]] |
− | ## [[Константные объекты]] | + | ## [[Константы#Константные объекты|Константные объекты]] |
− | ## [[Константные функции]] | + | ## [[Константы#Константные функции|Константные функции]] |
− | # [[ | + | # [[Замечания об эффективности кода]] |
− | ## [[О пользе типов]] | + | ## [[Замечания об эффективности кода#О пользе типов|О пользе типов]] |
− | ## [[О пользе спецификаторов доступа]] | + | ## [[Замечания об эффективности кода#О пользе спецификаторов доступа|О пользе спецификаторов доступа]] |
− | # [[ | + | # [[Приведение типов]] |
− | == Синтаксис языка | + | == Синтаксис языка == |
− | # [[ | + | # [[Классы и объекты]] |
− | # [[ | + | ## [[Классы и объекты#История развития ООП|История развития ООП]] |
− | ## [[ | + | ### [[Классы и объекты#Возникновение языков программирования|Возникновение языков программирования]] |
− | ## [[ | + | ### [[Классы и объекты#Появление ассемблера|Появление ассемблера]] |
− | ## [[ | + | ### [[Классы и объекты#Концепция языка высокого уровня|Концепция языка высокого уровня]] |
− | ### [[ | + | ### [[Классы и объекты#Структурное программирование|Структурное программирование]] |
− | ### [[ | + | ### [[Классы и объекты#Объектно-ориентированное программирование|Объектно-ориентированное программирование]] |
− | ### [[ | + | ## [[Классы и объекты#Понятие класса|Понятие класса]] |
− | # [[ | + | ## [[Классы и объекты#Понятие объекта|Понятие объекта]] |
− | ## [[ | + | ## [[Классы и объекты#Наследование|Наследование]] |
− | ## [[ | + | ## [[Классы и объекты#Методы|Методы]] |
− | ## [[ | + | ### [[Классы и объекты#Статические методы|Статические методы]] |
− | ## [[ | + | ### [[Классы и объекты#Конструкторы|Конструкторы]] |
− | # [[ | + | ### [[Классы и объекты#Конструкторы|Абстрактные методы]] |
− | # [[ | + | ## [[Классы и объекты#Поля|Поля]] |
− | ## [[ | + | ## [[Классы и объекты#Свойства|Свойства]] |
− | # [[Интервалы]] | + | ## [[Классы и объекты#Расширения|Расширения]] |
− | # [[Массивы]] | + | # [[Объявление переменных и констант]] |
− | # [[Хеши]] | + | # [[Выражения]] |
− | # [[ | + | ## [[Выражения#Арифметические операции|Арифметические операции]] |
+ | ## [[Выражения#Вызов функций|Вызов функций]] | ||
+ | ## [[Выражения#Доступ к полям|Доступ к полям]] | ||
+ | ## [[Выражения#Операторы|Операторы]] | ||
+ | # [[Стандартные типы данных]] | ||
+ | ## [[Стандартные типы данных#Целые числа|Целые числа]] | ||
+ | ## [[Стандартные типы данных#Числа с плавающей точкой|Числа с плавающей точкой]] | ||
+ | ## [[Стандартные типы данных#Строки|Строки]] | ||
+ | ## [[Стандартные типы данных#Интервалы|Интервалы]] | ||
+ | ## [[Стандартные типы данных#Массивы и списки|Массивы и списки]] | ||
+ | ## [[Стандартные типы данных#Хеши|Хеши]] | ||
+ | ## [[Стандартные типы данных#Указатели|Указатели]] | ||
# [[Функции]] | # [[Функции]] | ||
− | ## [[Объявление | + | ## [[Функции#Объявление|Объявление]] |
− | ## [[Аргументы | + | ## [[Функции#Аргументы|Аргументы]] |
− | ### [[Типизация аргументов]] | + | ### [[Функции#Типизация аргументов|Типизация аргументов]] |
− | ### [[Инициализаторы аргументов (значения по умолчанию)]] | + | ### [[Функции#Инициализаторы аргументов (значения по умолчанию)|Инициализаторы аргументов (значения по умолчанию)]] |
− | ### [[Модификаторы и копирование]] | + | ### [[Функции#Модификаторы и копирование|Модификаторы и копирование]] |
− | ## [[Экспортирование функций]] | + | ### [[Функции#Функции с переменным списком аргументов|Функции с переменным списком аргументов]] |
+ | ## [[Функции#Возврат значения|Возврат значения]] | ||
+ | ## [[Функции#Локальные переменные|Локальные переменные]] | ||
+ | ### [[Функции#Объявление|Объявление]] | ||
+ | ### [[Функции#Область видимости|Область видимости]] | ||
+ | ## [[Функции#Экспортирование функций|Экспортирование функций]] | ||
+ | ## [[Функции#Перегрузка функций и операторов|Перегрузка функций и операторов]] | ||
+ | ### [[Функции#Особенности применения|Особенности применения]] | ||
+ | ### [[Функции#Применение перегрузки в расширениях|Применение перегрузки в расширениях]] | ||
+ | # [[Блоки]] | ||
+ | ## [[Блоки#Применение блоков|Применение блоков]] | ||
+ | ## [[Блоки#Отличие от функций|Отличие от функций]] | ||
+ | ## [[Блоки#Типизация параметров|Типизация параметров]] | ||
+ | ## [[Блоки#Встроенные блоки|Встроенные блоки]] | ||
+ | # [[Основные синтаксические конструкции]] | ||
+ | ## [[Основные синтаксические конструкции#Условный оператор|Условный оператор]] | ||
+ | ### [[Основные синтаксические конструкции#Оператор if|Оператор if]] | ||
+ | ### [[Основные синтаксические конструкции#Оператор if-else|Оператор if-else]] | ||
+ | ### [[Основные синтаксические конструкции#Оператор if-elsif-else|Оператор if-elsif-else]] | ||
+ | ### [[Основные синтаксические конструкции#Постфиксные операторы|Постфиксные операторы]] | ||
+ | ### [[Основные синтаксические конструкции#Тернарный условный оператор|Тернарный условный оператор]] | ||
+ | ## [[Основные синтаксические конструкции#Оператор множественного выбора (switch)|Оператор множественного выбора (switch)]] | ||
+ | ## [[Основные синтаксические конструкции#Циклы|Циклы]] | ||
+ | ### [[Основные синтаксические конструкции#Цикл while|Цикл while]] | ||
+ | ### [[Основные синтаксические конструкции#Цикл for|Цикл for]] | ||
+ | ### [[Основные синтаксические конструкции#Цикл foreach|Цикл foreach]] | ||
+ | ### [[Основные синтаксические конструкции#Управление циклами|Управление циклами]] | ||
+ | ### [[Основные синтаксические конструкции#Понятие бесконечного цикла|Понятие бесконечного цикла]] | ||
+ | ### [[Основные синтаксические конструкции#Взаимозаменяемость циклических структур|Взаимозаменяемость циклических структур]] | ||
+ | # [[Обработка исключений]] | ||
+ | ## [[Обработка исключений#Идеология исключений|Идеология исключений]] | ||
+ | ## [[Обработка исключений#Объект исключения|Объект исключения]] | ||
+ | ## [[Обработка исключений#Генерация исключения|Генерация исключения]] | ||
+ | ## [[Обработка исключений#Перехват исключений|Перехват исключений]] | ||
+ | # [[Управление пакетами]] | ||
+ | ## [[Управление пакетами#Принципы организации кода|Принципы организации кода]] | ||
+ | ## [[Управление пакетами#Импортирование библиотек, ключевое слово import|Импортирование библиотек, ключевое слово import]] | ||
+ | ## [[Управление пакетами#Ключевое слово package|Ключевое слово package]] | ||
+ | ## [[Управление пакетами#Спецификаторы доступа|Спецификаторы доступа]] | ||
+ | # [[Пространства имен]] | ||
− | == | + | == Регулярные выражения == |
− | # [[История создания]] | + | # [[История создания регулярных выражений]] |
# [[Применение регулярных выражений]] | # [[Применение регулярных выражений]] | ||
− | ## [[Зачем нужны регулярные выражения | + | ## [[Применение регулярных выражений#Зачем нужны регулярные выражения|Зачем нужны регулярные выражения]] |
− | ## [[Преимущества регулярных выражений]] | + | ## [[Применение регулярных выражений#Преимущества регулярных выражений|Преимущества регулярных выражений]] |
− | ## [[Применение регулярных выражений на примере разбора лог файла]] | + | ## [[Применение регулярных выражений#Применение регулярных выражений на примере разбора лог файла|Применение регулярных выражений на примере разбора лог файла]] |
# [[Синтаксис регулярных выражений]] | # [[Синтаксис регулярных выражений]] | ||
− | ## [[Классы символов]] | + | ## [[Синтаксис регулярных выражений#Классы символов|Классы символов]] |
− | ## [[Заполнители]] | + | ## [[Синтаксис регулярных выражений#Заполнители|Заполнители]] |
− | ## [[Квантификаторы]] | + | ## [[Синтаксис регулярных выражений#Квантификаторы|Квантификаторы]] |
− | + | ||
− | == | + | == Операторы == |
− | # [[ | + | # [[Обзор операторов]] |
− | ## [[ | + | # [[Типы операторов]] |
− | ## [[ | + | ## [[Типы операторов#Арифметические|Арифметические]] |
− | ## [[ | + | ## [[Типы операторов#Операторы сравнения|Операторы сравнения]] |
− | ## [[ | + | ## [[Типы операторов#Операторы присваивания|Операторы присваивания]] |
− | ## [[ | + | ## [[Типы операторов#Операторы приведения типов|Операторы приведения типов]] |
− | ## [[ | + | ## [[Типы операторов#Оператор индексного доступа|Оператор индексного доступа]] |
− | ## [[ | + | ## [[Типы операторов#Оператор вызова функции|Оператор вызова функции]] |
+ | ## [[Типы операторов#Аксессоры и мутаторы|Аксессоры и мутаторы]] | ||
+ | # [[Использование операторов]] | ||
− | == Системная библиотека | + | == Системная библиотека == |
== GIDE == | == GIDE == | ||
Строка 99: | Строка 167: | ||
# [[Идеология gide]] | # [[Идеология gide]] | ||
# [[Виртуальная машина gide]] | # [[Виртуальная машина gide]] | ||
− | # [[Стандартная библиотека gide]] | + | # [[Стандартная библиотека gide]] |
+ | |||
+ | |||
− | |||
− | + | [[Рабочие заметки]] | |
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + |
Текущая версия на 14:15, 26 октября 2009
По мере разработки платформы Диптаун, нами была осознана необходимость создания удобного и универсального средства для управления платформой. Изначально, мы хотели реализовать ее так, чтобы платформа была максимально гибкой и расширяемой; чтобы она позволяла вносить изменения практически в любую ее часть без необходимости пересмотра и переработки системы в целом. Неотъемлемой частью существующей реализации является виртуальная машина Gide, которая берет на себя большую часть задач по управлению различными частями платформы и организации их взаимодействия. Gide применяется практически во всех задачах: начиная от генерации процедурных текстур и до пользовательского интерфейса; от управления аватарами и до программирования объектов виртуального пространства.
Однако, программирование на Gide это довольно тяжелое и утомительное занятие, как и на любом другом низкоуровневом языке. В связи с этим, было принято решение написать поверх него язык высокого уровня, который позволял бы писать программы, сочетающие в себе удобство языка высокого уровня с гибкостью Gide. В результате получился язык, документацию по которому вы сейчас читаете.
К++ это язык, написанный нами с нуля, на основании наших представлений о том, каким должен быть скриптовый язык. Он в полной мере интегрирован с самой платформой и написан на ее основе. Поскольку платформа Диптауна не зависит от ОС, реализация К++ так же получилась кроссплатформенной.
Исключительными правами на язык К++ и на документацию к нему обладают его авторы. Копирование, распространение, а так же использование в других целях программ, текстов документации или любых их частей возможно только по письменному разрешению авторов.
- © Дмитрий Кашицын, 2007-2009
- © Дмитрий Роот, 2007-2009
[править] Введение
[править] Основы языка
[править] Синтаксис языка
- Классы и объекты
- Объявление переменных и констант
- Выражения
- Стандартные типы данных
- Функции
- Блоки
- Основные синтаксические конструкции
- Обработка исключений
- Управление пакетами
- Пространства имен
[править] Регулярные выражения
- История создания регулярных выражений
- Применение регулярных выражений
- Синтаксис регулярных выражений
[править] Операторы
[править] Системная библиотека
[править] GIDE