По мере разработки платформы Диптаун, нами была осознана необходимость создания удобного и универсального средства для управления платформой. Изначально, мы хотели реализовать ее так, чтобы платформа была максимально гибкой и расширяемой; чтобы она позволяла вносить изменения практически в любую ее часть без необходимости пересмотра и переработки системы в целом. Неотъемлемой частью существующей реализации является виртуальная машина Gide, которая берет на себя большую часть задач по управлению различными частями платформы и организации их взаимодействия. Gide применяется практически во всех задачах: начиная от генерации процедурных текстур и до пользовательского интерфейса; от управления аватарами и до программирования объектов виртуального пространства.
Однако, программирование на Gide это довольно тяжелое и утомительное занятие, как и на любом другом низкоуровневом языке. В связи с этим, было принято решение написать поверх него язык высокого уровня, который позволял бы писать программы, сочетающие в себе удобство языка высокого уровня с гибкостью Gide. В результате получился язык, документацию по которому вы сейчас читаете.
К++ это язык, написанный нами с нуля, на основании наших представлений о том, каким должен быть скриптовый язык. Он в полной мере интегрирован с самой платформой и написан на ее основе. Поскольку платформа Диптауна не зависит от ОС, реализация К++ так же получилась кроссплатформенной.
Исключительными правами на язык К++ и на документацию к нему обладают его авторы. Копирование, распространение, а так же использование в других целях программ, текстов документации или любых их частей возможно только по письменному разрешению авторов.
- © Дмитрий Роот, 2007-2008
- © Дмитрий Кашицын, 2007-2008
Введение
- Предисловие
- Роль K++ в проекте Диптаун
- Почему именно K++?
- Для кого эта книга
- Стиль изложения материала
- Тесная взаимосвязь с gide
- Принятые обозначения
- История создания языка
- Идеология языка
- Немного теории о языках программирования
- Компиляторы и интерпретаторы
- Парадигменность
- Понятие о типизации
- Управление памятью
- Понятие исключения
Основы языка
- Введение, или краткий обзор
- Здравствуй, мир!
- Более сложный пример
- Использование блоков
- Расширение классов
- Переменные
- Понятие переменной, тип переменной
- Статическая типизация на примере C++
- Динамическая типизация на примере Ruby
- Полудинамическая типизация
- Типизация при объявлении
- Типизация при инициализации
- Нетипированные (динамические) переменные
- О важности инициализации переменных
- Константы
- Понятие константы
- Константные объекты
- Константные функции
- Замечания об эффективности кода
- О пользе типов
- О пользе спецификаторов доступа
- Приведение типов
Синтаксис языка
- Классы и объекты
- История развития ООП
- Возникновение языков программирования
- Появление ассемблера
- Концепция языка высокого уровня
- Структурное программирование
- Объектно-ориентированное программирование
- Понятие класса
- Понятие объекта
- Наследование
- Методы
- Статические методы
- Конструкторы
- Поля
- Свойства
- Расширения
- Объявление переменных и констант
- Выражения
- Арифметические операции
- Вызов функций
- Доступ к полям
- Операторы
- Стандартные типы данных
- Целые числа
- Числа с плавающей точкой
- Строки
- Интервалы
- Массивы и списки
- Хеши
- Указатели
- Функции
- Объявление
- Аргументы
- Типизация аргументов
- Инициализаторы аргументов (значения по умолчанию)
- Модификаторы и копирование
- Функции с переменным списком аргументов
- Возврат значения
- Локальные переменные
- Объявление
- Область видимости
- Экспортирование функций
- Перегрузка функций и операторов
- Особенности применения
- Применение перегрузки в расширениях
- Блоки
- Применение блоков
- Отличие от функций
- Типизация параметров
- Встроенные блоки
- Основные синтаксические конструкции
- Условный оператор
- Оператор if
- Оператор if-else
- Оператор if-elsif-else
- Тернарный условный оператор
- Оператор множественного выбора (switch)
- Циклы
- Цикл while
- Цикл for
- Цикл foreach
- Управление циклами
- Понятие бесконечного цикла
- Взаимозаменяемость циклических структур
- Обработка исключений
- Идеология исключений
- Объект исключения
- Генерация исключения
- Перехват исключений
- Управление пакетами
- Принципы организации кода
- Импортирование библиотек, ключевое слово import
- Ключевое слово package
- Спецификаторы доступа
- Пространства имен
Регулярные выражения
- История создания регулярных выражений
- Применение регулярных выражений
- Зачем нужны регулярные выражения
- Преимущества регулярных выражений
- Применение регулярных выражений на примере разбора лог файла
- Синтаксис регулярных выражений
- Классы символов
- Заполнители
- Квантификаторы
Операторы
- Обзор операторов
- Типы операторов
- Арифметические
- Логические
- Операторы сравнения
- Операторы присваивания
- Операторы приведения типов
- Оператор индексного доступа
- Оператор вызова функции
- Аксессоры и мутаторы
- Использование операторов
- Автоматически генерируемые операторы
Системная библиотека
GIDE
- Идеология gide
- Виртуальная машина gide
- Стандартная библиотека gide
Рабочие заметки