K++ — различия между версиями
Root (обсуждение | вклад) м (→Основы языка К++) |
Korvin (обсуждение | вклад) м (→Синтаксис языка) |
||
(не показаны 52 промежуточные версии 3 участников) | |||
Строка 1: | Строка 1: | ||
− | + | __NOTOC__ | |
+ | [[Изображение:head.png]] | ||
+ | |||
+ | По мере разработки платформы Диптаун, нами была осознана необходимость создания удобного и универсального средства для управления платформой. Изначально, мы хотели реализовать ее так, чтобы платформа была максимально гибкой и расширяемой; чтобы она позволяла вносить изменения практически в любую ее часть без необходимости пересмотра и переработки системы в целом. Неотъемлемой частью существующей реализации является [[виртуальная машина Gide]], которая берет на себя большую часть задач по управлению различными частями платформы и организации их взаимодействия. Gide применяется практически во всех задачах: начиная от генерации процедурных текстур и до пользовательского интерфейса; от управления аватарами и до программирования объектов виртуального пространства. | ||
+ | |||
+ | Однако, программирование на Gide это довольно тяжелое и утомительное занятие, как и на любом другом низкоуровневом языке. В связи с этим, было принято решение написать поверх него язык высокого уровня, который позволял бы писать программы, сочетающие в себе удобство языка высокого уровня с гибкостью Gide. В результате получился язык, документацию по которому вы сейчас читаете. | ||
+ | |||
+ | К++ это язык, написанный нами с нуля, на основании наших представлений о том, каким должен быть скриптовый язык. Он в полной мере интегрирован с самой платформой и написан на ее основе. Поскольку платформа Диптауна не зависит от ОС, реализация К++ так же получилась кроссплатформенной. | ||
+ | |||
+ | |||
+ | Исключительными правами на язык К++ и на документацию к нему обладают его авторы. Копирование, распространение, а так же использование в других целях программ, текстов документации или любых их частей возможно только по письменному разрешению авторов. | ||
+ | * © Дмитрий Кашицын, 2007-2009 | ||
+ | * © Дмитрий Роот, 2007-2009 | ||
− | |||
== Введение == | == Введение == | ||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | + | # [[Предисловие]] | |
+ | ## [[Предисловие#Роль K++ в проекте Диптаун|Роль K++ в проекте Диптаун]] | ||
+ | ## [[Предисловие#Почему именно K++?|Почему именно K++?]] | ||
+ | ## [[Предисловие#Для кого эта книга|Для кого эта книга]] | ||
+ | ## [[Предисловие#Стиль изложения материала|Стиль изложения материала]] | ||
+ | ## [[Предисловие#Тесная взаимосвязь с gide|Тесная взаимосвязь с gide]] | ||
+ | ## [[Предисловие#Принятые обозначения|Принятые обозначения]] | ||
+ | # [[История создания языка]] | ||
+ | # [[Идеология языка]] | ||
+ | ## [[Идеология языка#Немного теории о языках программирования|Немного теории о языках программирования]] | ||
+ | ## [[Идеология языка#Компиляторы и интерпретаторы|Компиляторы и интерпретаторы]] | ||
+ | ## [[Идеология языка#Парадигменность|Парадигменность]] | ||
+ | ## [[Идеология языка#Понятие о типизации|Понятие о типизации]] | ||
+ | ## [[Идеология языка#Управление памятью|Управление памятью]] | ||
+ | ## [[Идеология языка#Понятие исключения|Понятие исключения]] | ||
− | + | == Основы языка == | |
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | # [[Введение, или краткий обзор]] | |
+ | ## [[Введение, или краткий обзор#Здравствуй, мир!|Здравствуй, мир!]] | ||
+ | ## [[Введение, или краткий обзор#Более сложный пример|Более сложный пример]] | ||
+ | ## [[Введение, или краткий обзор#Использование блоков|Использование блоков]] | ||
+ | ## [[Введение, или краткий обзор#Расширение классов|Расширение классов]] | ||
+ | # [[Переменные]] | ||
+ | ## [[Переменные#Понятие переменной, тип переменной|Понятие переменной, тип переменной]] | ||
+ | ## [[Переменные#Статическая типизация на примере 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 == | ||
− | # [[ | + | # [[Идеология gide]] |
− | # [[ | + | # [[Виртуальная машина gide]] |
+ | # [[Стандартная библиотека gide]] | ||
+ | |||
+ | |||
− | |||
− | + | [[Рабочие заметки]] | |
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + |
Текущая версия на 14:15, 26 октября 2009
По мере разработки платформы Диптаун, нами была осознана необходимость создания удобного и универсального средства для управления платформой. Изначально, мы хотели реализовать ее так, чтобы платформа была максимально гибкой и расширяемой; чтобы она позволяла вносить изменения практически в любую ее часть без необходимости пересмотра и переработки системы в целом. Неотъемлемой частью существующей реализации является виртуальная машина Gide, которая берет на себя большую часть задач по управлению различными частями платформы и организации их взаимодействия. Gide применяется практически во всех задачах: начиная от генерации процедурных текстур и до пользовательского интерфейса; от управления аватарами и до программирования объектов виртуального пространства.
Однако, программирование на Gide это довольно тяжелое и утомительное занятие, как и на любом другом низкоуровневом языке. В связи с этим, было принято решение написать поверх него язык высокого уровня, который позволял бы писать программы, сочетающие в себе удобство языка высокого уровня с гибкостью Gide. В результате получился язык, документацию по которому вы сейчас читаете.
К++ это язык, написанный нами с нуля, на основании наших представлений о том, каким должен быть скриптовый язык. Он в полной мере интегрирован с самой платформой и написан на ее основе. Поскольку платформа Диптауна не зависит от ОС, реализация К++ так же получилась кроссплатформенной.
Исключительными правами на язык К++ и на документацию к нему обладают его авторы. Копирование, распространение, а так же использование в других целях программ, текстов документации или любых их частей возможно только по письменному разрешению авторов.
- © Дмитрий Кашицын, 2007-2009
- © Дмитрий Роот, 2007-2009
[править] Введение
[править] Основы языка
[править] Синтаксис языка
- Классы и объекты
- Объявление переменных и констант
- Выражения
- Стандартные типы данных
- Функции
- Блоки
- Основные синтаксические конструкции
- Обработка исключений
- Управление пакетами
- Пространства имен
[править] Регулярные выражения
- История создания регулярных выражений
- Применение регулярных выражений
- Синтаксис регулярных выражений
[править] Операторы
[править] Системная библиотека
[править] GIDE