K++ — различия между версиями

Материал из Deeptown Manual
Перейти к: навигация, поиск
м (Синтаксис языка)
 
(не показаны 36 промежуточных версий 2 участников)
Строка 1: Строка 1:
 
__NOTOC__
 
__NOTOC__
(аннотация: написать)
+
[[Изображение:head.png]]
 +
 
 +
По мере разработки платформы Диптаун, нами была осознана необходимость создания удобного и универсального средства для управления платформой. Изначально, мы хотели реализовать ее так, чтобы платформа была максимально гибкой и расширяемой; чтобы она позволяла вносить изменения практически в любую ее часть без необходимости пересмотра и переработки системы в целом. Неотъемлемой частью существующей реализации является [[виртуальная машина Gide]], которая берет на себя большую часть задач по управлению различными частями платформы и организации их взаимодействия. Gide применяется практически во всех задачах: начиная от генерации процедурных текстур и до пользовательского интерфейса; от управления аватарами и до программирования объектов виртуального пространства.
 +
 
 +
Однако, программирование на Gide это довольно тяжелое и утомительное занятие, как и на любом другом низкоуровневом языке. В связи с этим, было принято решение написать поверх него язык высокого уровня, который позволял бы писать программы, сочетающие в себе удобство языка высокого уровня с гибкостью Gide. В результате получился язык, документацию по которому вы сейчас читаете.
 +
 
 +
К++ это язык, написанный нами с нуля, на основании наших представлений о том, каким должен быть скриптовый язык. Он в полной мере интегрирован с самой платформой и написан на ее основе. Поскольку платформа Диптауна не зависит от ОС, реализация К++ так же получилась кроссплатформенной.
 +
 
 +
 
 +
Исключительными правами на язык К++ и на документацию к нему обладают его авторы. Копирование, распространение, а так же использование в других целях программ, текстов документации или любых их частей возможно только по письменному разрешению авторов.
 +
* © Дмитрий Кашицын, 2007-2009
 +
* © Дмитрий Роот, 2007-2009 
 +
 
  
 
== Введение ==
 
== Введение ==
Строка 14: Строка 26:
 
# [[Идеология языка]]
 
# [[Идеология языка]]
 
## [[Идеология языка#Немного теории о языках программирования|Немного теории о языках программирования]]
 
## [[Идеология языка#Немного теории о языках программирования|Немного теории о языках программирования]]
 +
## [[Идеология языка#Компиляторы и интерпретаторы|Компиляторы и интерпретаторы]]
 
## [[Идеология языка#Парадигменность|Парадигменность]]
 
## [[Идеология языка#Парадигменность|Парадигменность]]
 
## [[Идеология языка#Понятие о типизации|Понятие о типизации]]
 
## [[Идеология языка#Понятие о типизации|Понятие о типизации]]
Строка 21: Строка 34:
 
== Основы языка ==
 
== Основы языка ==
  
# [[Переменные, понятие о типе переменной, типизация]]
+
# [[Введение, или краткий обзор]]
## [[Переменные, понятие о типе переменной, типизация#Статическая типизация на примере C++|Статическая типизация на примере C++]]
+
## [[Введение, или краткий обзор#Здравствуй, мир!|Здравствуй, мир!]]
## [[Переменные, понятие о типе переменной, типизация#Динамическая типизация на примере Ruby|Динамическая типизация на примере Ruby]]
+
## [[Введение, или краткий обзор#Более сложный пример|Более сложный пример]]
## [[Переменные, понятие о типе переменной, типизация#Полудинамическая типизация|Полудинамическая типизация]]
+
## [[Введение, или краткий обзор#Использование блоков|Использование блоков]]
# [[Типизация при объявлении]]
+
## [[Введение, или краткий обзор#Расширение классов|Расширение классов]]
# [[Типизация при инициализации]]
+
# [[Переменные]]
# [[Нетипированные (динамические) переменные]]
+
## [[Переменные#Понятие переменной, тип переменной|Понятие переменной, тип переменной]]
# [[О важности инициализации переменных]]
+
## [[Переменные#Статическая типизация на примере C++|Статическая типизация на примере C++]]
# [[Сравнение статического и динамического кода]]
+
## [[Переменные#Динамическая типизация на примере Ruby|Динамическая типизация на примере Ruby]]
 +
## [[Переменные#Полудинамическая типизация|Полудинамическая типизация]]
 +
## [[Переменные#Типизация при объявлении|Типизация при объявлении]]
 +
## [[Переменные#Типизация при инициализации|Типизация при инициализации]]
 +
## [[Переменные#Нетипированные (динамические) переменные|Нетипированные (динамические) переменные]]
 +
## [[Переменные#О важности инициализации переменных|О важности инициализации переменных]]
 
# [[Константы]]
 
# [[Константы]]
 
## [[Константы#Понятие константы|Понятие константы]]
 
## [[Константы#Понятие константы|Понятие константы]]
 
## [[Константы#Константные объекты|Константные объекты]]
 
## [[Константы#Константные объекты|Константные объекты]]
 
## [[Константы#Константные функции|Константные функции]]
 
## [[Константы#Константные функции|Константные функции]]
# [[Объекты]]
 
 
# [[Замечания об эффективности кода]]
 
# [[Замечания об эффективности кода]]
 
## [[Замечания об эффективности кода#О пользе типов|О пользе типов]]
 
## [[Замечания об эффективности кода#О пользе типов|О пользе типов]]
 
## [[Замечания об эффективности кода#О пользе спецификаторов доступа|О пользе спецификаторов доступа]]
 
## [[Замечания об эффективности кода#О пользе спецификаторов доступа|О пользе спецификаторов доступа]]
 +
# [[Приведение типов]]
  
 
== Синтаксис языка ==
 
== Синтаксис языка ==
  
# [[Введение, или краткий обзор]]
+
# [[Классы и объекты]]
 +
## [[Классы и объекты#История развития ООП|История развития ООП]]
 +
### [[Классы и объекты#Возникновение языков программирования|Возникновение языков программирования]]
 +
### [[Классы и объекты#Появление ассемблера|Появление ассемблера]]
 +
### [[Классы и объекты#Концепция языка высокого уровня|Концепция языка высокого уровня]]
 +
### [[Классы и объекты#Структурное программирование|Структурное программирование]]
 +
### [[Классы и объекты#Объектно-ориентированное программирование|Объектно-ориентированное программирование]]
 +
## [[Классы и объекты#Понятие класса|Понятие класса]]
 +
## [[Классы и объекты#Понятие объекта|Понятие объекта]]
 +
## [[Классы и объекты#Наследование|Наследование]]
 +
## [[Классы и объекты#Методы|Методы]]
 +
### [[Классы и объекты#Статические методы|Статические методы]]
 +
### [[Классы и объекты#Конструкторы|Конструкторы]]
 +
### [[Классы и объекты#Конструкторы|Абстрактные методы]]
 +
## [[Классы и объекты#Поля|Поля]]
 +
## [[Классы и объекты#Свойства|Свойства]]
 +
## [[Классы и объекты#Расширения|Расширения]]
 +
# [[Объявление переменных и констант]]
 
# [[Выражения]]
 
# [[Выражения]]
 
## [[Выражения#Арифметические операции|Арифметические операции]]
 
## [[Выражения#Арифметические операции|Арифметические операции]]
## [[Выражения#Доуступ к полям|Доуступ к полям]]
 
 
## [[Выражения#Вызов функций|Вызов функций]]
 
## [[Выражения#Вызов функций|Вызов функций]]
# [[Операторы]]
+
## [[Выражения#Доступ к полям|Доступ к полям]]
 +
## [[Выражения#Операторы|Операторы]]
 
# [[Стандартные типы данных]]
 
# [[Стандартные типы данных]]
## [[Стандартные типы данных#Числа|Числа]]
+
## [[Стандартные типы данных#Целые числа|Целые числа]]  
## [[Стандартные типы данных#Перечисления|Перечисления]]
+
## [[Стандартные типы данных#Числа с плавающей точкой|Числа с плавающей точкой]]
## [[Стандартные типы данных#Строки|Строки]]
+
## [[Стандартные типы данных#Строки|Строки]]
## [[Стандартные типы данных#Массивы|Массивы]]
+
## [[Стандартные типы данных#Интервалы|Интервалы]]
 +
## [[Стандартные типы данных#Массивы и списки|Массивы и списки]]
 
## [[Стандартные типы данных#Хеши|Хеши]]
 
## [[Стандартные типы данных#Хеши|Хеши]]
 
## [[Стандартные типы данных#Указатели|Указатели]]
 
## [[Стандартные типы данных#Указатели|Указатели]]
Строка 58: Строка 94:
 
## [[Функции#Аргументы|Аргументы]]
 
## [[Функции#Аргументы|Аргументы]]
 
### [[Функции#Типизация аргументов|Типизация аргументов]]
 
### [[Функции#Типизация аргументов|Типизация аргументов]]
### [[Функции#Инициализаторы аргументов (значения по умолчанию)|Инициализаторы аргументов (значения по умолчанию)]]
+
### [[Функции#Инициализаторы аргументов (значения по умолчанию)|Инициализаторы аргументов (значения по умолчанию)]]  
 
### [[Функции#Модификаторы и копирование|Модификаторы и копирование]]
 
### [[Функции#Модификаторы и копирование|Модификаторы и копирование]]
 +
### [[Функции#Функции с переменным списком аргументов|Функции с переменным списком аргументов]]
 +
## [[Функции#Возврат значения|Возврат значения]]
 
## [[Функции#Локальные переменные|Локальные переменные]]
 
## [[Функции#Локальные переменные|Локальные переменные]]
 
### [[Функции#Объявление|Объявление]]
 
### [[Функции#Объявление|Объявление]]
 
### [[Функции#Область видимости|Область видимости]]
 
### [[Функции#Область видимости|Область видимости]]
 
## [[Функции#Экспортирование функций|Экспортирование функций]]
 
## [[Функции#Экспортирование функций|Экспортирование функций]]
## [[Функции#Перегрузка функций и операторов|Перегрузка функций и операторов]]
+
## [[Функции#Перегрузка функций и операторов|Перегрузка функций и операторов]]
 +
### [[Функции#Особенности применения|Особенности применения]]
 +
### [[Функции#Применение перегрузки в расширениях|Применение перегрузки в расширениях]]
 
# [[Блоки]]
 
# [[Блоки]]
## [[Блоки#Отличие от функций|Отличие от функций]]
 
 
## [[Блоки#Применение блоков|Применение блоков]]
 
## [[Блоки#Применение блоков|Применение блоков]]
 +
## [[Блоки#Отличие от функций|Отличие от функций]]
 +
## [[Блоки#Типизация параметров|Типизация параметров]]
 +
## [[Блоки#Встроенные блоки|Встроенные блоки]]
 
# [[Основные синтаксические конструкции]]
 
# [[Основные синтаксические конструкции]]
 
## [[Основные синтаксические конструкции#Условный оператор|Условный оператор]]
 
## [[Основные синтаксические конструкции#Условный оператор|Условный оператор]]
 +
### [[Основные синтаксические конструкции#Оператор if|Оператор if]]
 +
### [[Основные синтаксические конструкции#Оператор if-else|Оператор if-else]]
 +
### [[Основные синтаксические конструкции#Оператор if-elsif-else|Оператор if-elsif-else]]
 +
### [[Основные синтаксические конструкции#Постфиксные операторы|Постфиксные операторы]]
 +
### [[Основные синтаксические конструкции#Тернарный условный оператор|Тернарный условный оператор]]
 
## [[Основные синтаксические конструкции#Оператор множественного выбора (switch)|Оператор множественного выбора (switch)]]
 
## [[Основные синтаксические конструкции#Оператор множественного выбора (switch)|Оператор множественного выбора (switch)]]
 
## [[Основные синтаксические конструкции#Циклы|Циклы]]
 
## [[Основные синтаксические конструкции#Циклы|Циклы]]
### [[Основные синтаксические конструкции#Цикл while|Цикл while]]
+
### [[Основные синтаксические конструкции#Цикл while|Цикл while]]  
 
### [[Основные синтаксические конструкции#Цикл for|Цикл for]]
 
### [[Основные синтаксические конструкции#Цикл for|Цикл for]]
 
### [[Основные синтаксические конструкции#Цикл foreach|Цикл foreach]]
 
### [[Основные синтаксические конструкции#Цикл foreach|Цикл foreach]]
 +
### [[Основные синтаксические конструкции#Управление циклами|Управление циклами]]
 +
### [[Основные синтаксические конструкции#Понятие бесконечного цикла|Понятие бесконечного цикла]]
 
### [[Основные синтаксические конструкции#Взаимозаменяемость циклических структур|Взаимозаменяемость циклических структур]]
 
### [[Основные синтаксические конструкции#Взаимозаменяемость циклических структур|Взаимозаменяемость циклических структур]]
 
# [[Обработка исключений]]
 
# [[Обработка исключений]]
## [[Обработка исключений#Идеология|Идеология]]
+
## [[Обработка исключений#Идеология исключений|Идеология исключений]]
 
## [[Обработка исключений#Объект исключения|Объект исключения]]
 
## [[Обработка исключений#Объект исключения|Объект исключения]]
 
## [[Обработка исключений#Генерация исключения|Генерация исключения]]
 
## [[Обработка исключений#Генерация исключения|Генерация исключения]]
Строка 83: Строка 132:
 
# [[Управление пакетами]]
 
# [[Управление пакетами]]
 
## [[Управление пакетами#Принципы организации кода|Принципы организации кода]]
 
## [[Управление пакетами#Принципы организации кода|Принципы организации кода]]
## [[Управление пакетами#Импортирование библиотек, ключевое слово import|Импортирование библиотек, ключевое слово import]]
+
## [[Управление пакетами#Импортирование библиотек, ключевое слово import|Импортирование библиотек, ключевое слово import]]  
 
## [[Управление пакетами#Ключевое слово package|Ключевое слово package]]
 
## [[Управление пакетами#Ключевое слово package|Ключевое слово package]]
 
## [[Управление пакетами#Спецификаторы доступа|Спецификаторы доступа]]
 
## [[Управление пакетами#Спецификаторы доступа|Спецификаторы доступа]]
# [[K++ как объектно ориентированный язык]]
+
# [[Пространства имен]]
## [[K++ как объектно ориентированный язык#Понятие класса|]]
+
## [[K++ как объектно ориентированный язык#Понятие объекта|]]
+
## [[K++ как объектно ориентированный язык#Наследование|]]
+
## [[K++ как объектно ориентированный язык#Методы|]]
+
## [[K++ как объектно ориентированный язык#Поля|]]
+
## [[K++ как объектно ориентированный язык#Свойства|]]
+
## [[K++ как объектно ориентированный язык#Расширения|]]
+
  
 
== Регулярные выражения ==
 
== Регулярные выражения ==
# [[История создания]]
+
# [[История создания регулярных выражений]]
 
# [[Применение регулярных выражений]]
 
# [[Применение регулярных выражений]]
 
## [[Применение регулярных выражений#Зачем нужны регулярные выражения|Зачем нужны регулярные выражения]]
 
## [[Применение регулярных выражений#Зачем нужны регулярные выражения|Зачем нужны регулярные выражения]]
Строка 111: Строка 153:
 
# [[Типы операторов]]
 
# [[Типы операторов]]
 
## [[Типы операторов#Арифметические|Арифметические]]
 
## [[Типы операторов#Арифметические|Арифметические]]
## [[Типы операторов#Логические|Логические]]
 
 
## [[Типы операторов#Операторы сравнения|Операторы сравнения]]
 
## [[Типы операторов#Операторы сравнения|Операторы сравнения]]
 
## [[Типы операторов#Операторы присваивания|Операторы присваивания]]
 
## [[Типы операторов#Операторы присваивания|Операторы присваивания]]
Строка 119: Строка 160:
 
## [[Типы операторов#Аксессоры и мутаторы|Аксессоры и мутаторы]]
 
## [[Типы операторов#Аксессоры и мутаторы|Аксессоры и мутаторы]]
 
# [[Использование операторов]]
 
# [[Использование операторов]]
# [[Автоматически генерируемые операторы]]
 
  
 
== Системная библиотека ==
 
== Системная библиотека ==
Строка 127: Строка 167:
 
# [[Идеология gide]]
 
# [[Идеология gide]]
 
# [[Виртуальная машина gide]]
 
# [[Виртуальная машина gide]]
# [[Стандартная библиотека gide]]  
+
# [[Стандартная библиотека gide]]
 +
 
 +
 
  
== stub ==
 
  
[00:15:28] <Korvin> - о пользе типов
+
[[Рабочие заметки]]
[00:15:47] <Korvin> - о пользе спецификаторов доступа (var, const, mutable)
+
[00:15:56] <Korvin> области видимости
+
[00:15:58] <Korvin> свойства
+
[00:16:11] <Korvin> о гибкости языка: 10 способов посчитать сумму от 1 до 10
+
[00:16:19] <Korvin> операторы, методы. перегрузка
+
[00:16:53] <Korvin> Блоки. идеология, применение блоков на примере метода сортировки для Коллекции
+
[00:17:33] <Korvin> галва синтаксис языка: перечисление основных синтаксических конструкций
+
[00:17:38] <Korvin> глава исключения
+
[00:18:16] <Korvin> глава(раздел) ООП. краткий обзор догм. отличие функциональной парадигмы от ОО
+
[00:19:07] <Korvin> Глава GIDE. Идеология gide. Виртуальная машина gide (фактически копипаст соответствующей документации с комментариями)
+
[00:19:22] <Korvin> managed и unmanaged код
+
[00:19:26] <Korvin> /классы
+
[00:19:28] <Korvin> отличия
+
[00:20:11] <Korvin> расширения. применение расширений на примере метода times()
+
[00:21:12] <Korvin> стандартные объекты языка
+
[00:21:19] <Korvin> массивы, хэши
+
[00:21:31] <Korvin> строки <nowiki>''</nowiki> и ""
+
[00:21:42] <Korvin> глава Регулярные выражения
+
[00:21:45] <Korvin> краткое введение
+
[00:22:07] <Korvin> применение регулярных выражений (usecase) на примере разборов некоторого абстрактного лог файла
+

Текущая версия на 14:15, 26 октября 2009

Head.png

По мере разработки платформы Диптаун, нами была осознана необходимость создания удобного и универсального средства для управления платформой. Изначально, мы хотели реализовать ее так, чтобы платформа была максимально гибкой и расширяемой; чтобы она позволяла вносить изменения практически в любую ее часть без необходимости пересмотра и переработки системы в целом. Неотъемлемой частью существующей реализации является виртуальная машина Gide, которая берет на себя большую часть задач по управлению различными частями платформы и организации их взаимодействия. Gide применяется практически во всех задачах: начиная от генерации процедурных текстур и до пользовательского интерфейса; от управления аватарами и до программирования объектов виртуального пространства.

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

К++ это язык, написанный нами с нуля, на основании наших представлений о том, каким должен быть скриптовый язык. Он в полной мере интегрирован с самой платформой и написан на ее основе. Поскольку платформа Диптауна не зависит от ОС, реализация К++ так же получилась кроссплатформенной.


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

  • © Дмитрий Кашицын, 2007-2009
  • © Дмитрий Роот, 2007-2009


[править] Введение

  1. Предисловие
    1. Роль K++ в проекте Диптаун
    2. Почему именно K++?
    3. Для кого эта книга
    4. Стиль изложения материала
    5. Тесная взаимосвязь с gide
    6. Принятые обозначения
  2. История создания языка
  3. Идеология языка
    1. Немного теории о языках программирования
    2. Компиляторы и интерпретаторы
    3. Парадигменность
    4. Понятие о типизации
    5. Управление памятью
    6. Понятие исключения

[править] Основы языка

  1. Введение, или краткий обзор
    1. Здравствуй, мир!
    2. Более сложный пример
    3. Использование блоков
    4. Расширение классов
  2. Переменные
    1. Понятие переменной, тип переменной
    2. Статическая типизация на примере C++
    3. Динамическая типизация на примере Ruby
    4. Полудинамическая типизация
    5. Типизация при объявлении
    6. Типизация при инициализации
    7. Нетипированные (динамические) переменные
    8. О важности инициализации переменных
  3. Константы
    1. Понятие константы
    2. Константные объекты
    3. Константные функции
  4. Замечания об эффективности кода
    1. О пользе типов
    2. О пользе спецификаторов доступа
  5. Приведение типов

[править] Синтаксис языка

  1. Классы и объекты
    1. История развития ООП
      1. Возникновение языков программирования
      2. Появление ассемблера
      3. Концепция языка высокого уровня
      4. Структурное программирование
      5. Объектно-ориентированное программирование
    2. Понятие класса
    3. Понятие объекта
    4. Наследование
    5. Методы
      1. Статические методы
      2. Конструкторы
      3. Абстрактные методы
    6. Поля
    7. Свойства
    8. Расширения
  2. Объявление переменных и констант
  3. Выражения
    1. Арифметические операции
    2. Вызов функций
    3. Доступ к полям
    4. Операторы
  4. Стандартные типы данных
    1. Целые числа
    2. Числа с плавающей точкой
    3. Строки
    4. Интервалы
    5. Массивы и списки
    6. Хеши
    7. Указатели
  5. Функции
    1. Объявление
    2. Аргументы
      1. Типизация аргументов
      2. Инициализаторы аргументов (значения по умолчанию)
      3. Модификаторы и копирование
      4. Функции с переменным списком аргументов
    3. Возврат значения
    4. Локальные переменные
      1. Объявление
      2. Область видимости
    5. Экспортирование функций
    6. Перегрузка функций и операторов
      1. Особенности применения
      2. Применение перегрузки в расширениях
  6. Блоки
    1. Применение блоков
    2. Отличие от функций
    3. Типизация параметров
    4. Встроенные блоки
  7. Основные синтаксические конструкции
    1. Условный оператор
      1. Оператор if
      2. Оператор if-else
      3. Оператор if-elsif-else
      4. Постфиксные операторы
      5. Тернарный условный оператор
    2. Оператор множественного выбора (switch)
    3. Циклы
      1. Цикл while
      2. Цикл for
      3. Цикл foreach
      4. Управление циклами
      5. Понятие бесконечного цикла
      6. Взаимозаменяемость циклических структур
  8. Обработка исключений
    1. Идеология исключений
    2. Объект исключения
    3. Генерация исключения
    4. Перехват исключений
  9. Управление пакетами
    1. Принципы организации кода
    2. Импортирование библиотек, ключевое слово import
    3. Ключевое слово package
    4. Спецификаторы доступа
  10. Пространства имен

[править] Регулярные выражения

  1. История создания регулярных выражений
  2. Применение регулярных выражений
    1. Зачем нужны регулярные выражения
    2. Преимущества регулярных выражений
    3. Применение регулярных выражений на примере разбора лог файла
  3. Синтаксис регулярных выражений
    1. Классы символов
    2. Заполнители
    3. Квантификаторы

[править] Операторы

  1. Обзор операторов
  2. Типы операторов
    1. Арифметические
    2. Операторы сравнения
    3. Операторы присваивания
    4. Операторы приведения типов
    5. Оператор индексного доступа
    6. Оператор вызова функции
    7. Аксессоры и мутаторы
  3. Использование операторов

[править] Системная библиотека

[править] GIDE

  1. Идеология gide
  2. Виртуальная машина gide
  3. Стандартная библиотека gide



Рабочие заметки

Персональные инструменты
Пространства имён

Варианты
Действия
Навигация
информация
документация
Инструменты