1. Программы должны быть высокоэффективными. 2. Программы должны быть платформонезависимыми. 3. Программы должны разрабатываться очень быстро и легко модифицироваться. 4. Наглядность - важнейший показатель. Обозримость, осязаемость, логика, понимаемость программы. 5. Текст - Вы уверены, что это самое лучшее и оптимальное представление для исходного вида программы? 6. Появляются всё новые и новые версии компиляторов? Следовательно, традиционный подход: "Текст программы -> Компилятор -> Машинный код" неэффективен. {?} Потому что расширения нужно предусмотреть не в компиляторе, а в самом языке. Язык должен быть _гибким_. Тезис: достаточно гибкий язык есть метаязык. 7. Программа обязательно должна быть транслирована в оптимальный машинный код, учитывающий особенности и преимущества аппаратуры и ОС, конкретного набора комманд процессора (RISC, CISC etc), 8. a) эффективность (ассемблер?); b) портабельность/расширяемость/универсальность (скрипты?); Противоречие? Никакого. Язык должен иметь абсолютно платформонезависимую стандартизированную идеологию, но должен быть также эффективен. Необходимо сделать так, чтобы необходимые машинные (и прочие) средства эффективности реализации можно было ввести в качестве объектов/аспектов/контекстов/конструкций: 16bitRegister AX ' Описывается объект регистр Operations: + - * / move push pop etc.. ' и вводятся операции над ним Так различная внутримашинная реализация регистра AX не должна мешать использовать эффективность реализации на X86, 68000, RISC. 9. Необходима большая лёгкость проектирования независимых разноаспектных модулей, плагинов (расширителей среды) и компонентов. Каждый включает в себя пример использования, свойства (кол-во, цвет, форма), аспекты (OS/2, Win32, ZX Consoled\Windowed), плагины (vtx,mod->your program). 10. Возможность легчайшего использования готовых наработок. Среди них: сетевые, машинно-ориентированне, кроссплатформенные (кинестетика, логика, кроссвизуализация, кроссзвук). Представляется возможным наряду с плагинами вида "MIDI -> your program" использовать контексты преобразований и согласования с встроенными языками (asm, Forth, Lisp, Sphinx C--). Первый будет рассматриваться в качестве машиннозависимого решения. Необходим язык, на котором можно проектировать и создавать другие проблемно-ориентированные языки со своим синтаксисом и логикой. Введём для таких языков алиас: жаргон. Специализированный язык для описания проблемы в её терминах. 11. Сборка программы - взаимодействие средств и плагинов по перегонке графики, потоков данных, текстов, звука, исходного текста, бинарных форм представления программы в результирующий набор файлов для некоторой выбранной платформы. Если используются кроссплатформенные решения, с одного исходника можно получить программу/приложение для совершенно различных платформ (MacOS, Linux, Atari, Palm). 12. Никакой условной компиляции; всякий раз, когда она используется, подразумевается какой-то аспект сборки программы. Следовательно, необходима спецификация этого в явном виде - виде аспекта. Если Вы строите приключенческую игру (adventure), Вам может захотеться написать язык, позволяющий описывать чудовищ, комнаты и т.д. Вы могли бы создать определяющее слово КОМНАТА для использования в виде: КОМНАТА ТЕМНИЦА Затем создать набор слов для описания атрибутов комнаты, строя невидимые структуры данных, связанные с комнатой: К-ВОСТОКУ ЛОГОВО-ДРАКОНА К-ЗАПАДУ МОСТ СОДЕРЖИТ ГОРШОК-С-ЗОЛОТОМ и т.д. Не обязательно нужен интерпретатор скрипта, достаточно метакомпилятора, преобразующего задачу в код. Этот фрагмент может быть закодирован на Coloss в качестве контекстных определений, с использованием метакомпилятора, без необходимости написания специализированного интерпретатора или компилятора. По-настоящему гибким является язык, в котором можно переопределить любую запятую, программы на котором очень легко модифицируются до неузнаваемости, который может интерпретировать стихи - при предварительном объявлении значений слов естественного языка. Программисты, использующие С++, 10 лет ждали реализации конструкции выхода из цикла на метку (вместо break), и наконец дождались её... в языке Java. Если бы мне потребовалась такая конструкция (к слову, она мне не нужна :), я бы добавил её в Coloss за 2 минуты.