====== Язык программирования Xi ====== Xi — это универсальный расширяемый язык программирования. В данный момент он находится в процессе разработки. ====== Введение ====== **Зачем нужен ещё один язык программирования?** В настоящий момент существует огромное количество различных языков программирования. Разные языки по-разному проявляют свои сильные стороны в различных задачах. При построении крупных программных систем зачастую возникает необходимость решать существенно различные подзадачи в рамках одного проекта. Естественным образом возникает вопрос об использовании нескольких языков в рамках одного проекта. Существует несколько решений сформулированной проблемы. Среди них стоит выделить следующие. * Встраивание интерпретатора одного языка в программу на другом. Например, интерпретаторы [[http://en.wikipedia.org/wiki/Tcl|Tcl]], [[http://en.wikipedia.org/wiki/Perl|Perl]], [[http://en.wikipedia.org/wiki/Python_%28programming_language%29|Python]] и других скриптовых языков могут быть встроены в программу на C или C++. * Трансляция с одного языка программирования на другой. Например, таким образом работает [[http://call-cc.org/|Chicken Scheme]], реализация языка [[http://en.wikipedia.org/wiki/Scheme_(programming_language)|Scheme]]. * Создание нового языка или расширение существующего. * Метод непосредственной интеграции, см. [[projects:intelib|Intelib]]. Предполагается, что язык Xi явит собой развитие последнего из перечисленных методов. Он должен быть спроектирован таким образом, чтобы предоставлять программисту широкие возможности по моделированию конструкций различных языков программирования в программах на Xi. ====== Основные требования к языку ====== Язык должен: * быть компилируемым * быть статически типизированным * допускать низкоуровневое программирования * требовать минимальную поддержку во время исполнения * позволять использование библиотек, написанных на C * иметь мощные средства расширения базового языка TODO //пояснить и обосновать// ====== Базовые средства ====== Базовые средства языка должны быть близки к таковым языка C. TODO //дать краткое описание// ====== Макросредства ====== На данный момент принято решение реализовать в языке систему макросов сходную с используемой в Nemerle-2 (см. [[http://code.google.com/p/nemerle-2/wiki/NewMacroSyntax|описание]]) TODO //дать краткое описание, а также привести отличия// ====== Формальное описание языка ====== TODO ====== Реализация ====== В данный момент в разработке находится две экспериментальные реализации. ====== Планы на будущее ====== После получения работающего компилятора или интерпретатора попытаться реализовать средствами языка: * систему исключений * простой вариант ООП * базовую версию лиспа * базовую версию пролога