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