|
|
||
Новейший язык программирования, ориентированный на программистов. Только для специалистов по программированию. |
Язык пятого поколения
LOGICAL
- истинный язык программирования,
ориентированный на программиста
(краткое сообщение)
ВВЕДЕНИЕ
За период развития вычислительной техники было создано несколько сот различных языков программирования, основанных на самых разнообразных принципах и предназначенных для решения задач пользователей. Многие из этих языков даже удостаивались названия “универсальных”, но ни один из них в полной мере не удовлетворял потребностей людей, непосредственно работающих с языками - программистов. За рубежом была предпринята только одна серьезная попытка создания такого языка (он назывался “Бэббидж”), но дальше проекта дело не пошло. Теперь, благодаря нашим, отечественным программистам, дело сдвинулось с мертвой точки.
Какие соображения легли в основу нового языка? Несмотря на гигантские усилия и средства, вкладывемые в разработку систем искусственного интеллекта ведущими фирмами США, Японии и др. стран, традиционные подходы к разработке языков программирования так и не смогли преодолеть тот порог, который отделяет языки интеллектульного уровня от неудобных для программиста и жесткологичных языков третьего уровня (3GL), таких, как PL/1, Си, Паскаль и др., в которых программист больше занят отлавливанием ошибок в своих программах, чем настоящей творческой деятельностью. Появление же объектноориентирванного подхода к написанию программ и создание так называемых языков четвертого уровня (4GL) типа QBE и SQL не только не смогли улучшить положение вещей, но и явно обозначили последний предел ограниченности традиционных подходов к программированию.
Язык LOGICAL, получивший название от своего самого мощного оператора, обладает всеми возможностями языка сверхвысокого уровня (по принятой классификации - 5GL). Программы, написанные на этом языке, получаются предельно структурированными, абсолютно защищены от ошибок, не зависят от особенностей используемой программистом вычислительной системы и практически не требуют отладки. Можно смело сказать, что язык LOGICAL - реальный прорыв в области интеллекта, называемого искуственным.
В настоящем сообщении приведено краткое описание конструкций и операторов языка согласно международных стандартов. В фигурных скобках приведена русскоязычная транскрипция операторов.
ОСНОВНЫЕ КОНСТРУКЦИИ ЯЗЫКА.
Алфавит - любые допустимые для конкретной вычислительной системы символы.
Переменные - любые ограничения на использование переменных в традиционном программировании приводят к ошибкам, поэтому в LOGICAL идентификаторами переменных могут быть любые имена неограниченной длины из произвольного набора символов, включая пробелы и знаки препинания.
Метки - при написании программ в полном соответствии с принципами структурного программирования надобность в метках отпадает. В LOGICAL они сохранены только для удобства использования программистами-ветеранами. Практически метки в LOGICAL - это то же, что и переменные, просто подразумевается, что это метки.
Арифметические выражения - основные ограничения в принципе те же, что имеются в большинстве классических языков программирования, только без сбивающего с толку ограничения на парность скобок и однонаправленность операторов присваивания.
Примечание: на операторе присваивания есть смысл остановиться и рассмотреть его более подробно. Ввиду того, что результатом выполнения оператора присваивания должно являться равенство его правой и левой части, в LOGICAL этот оператор сделан сразу двунаправленным, т.е. язык позволяет присваивать как значение выражения в левой части значению правой части, так и наоборот. В самом деле, на каком разумном основании математики ввели в программирование совершенно дикое ограничение, когда сказать, что SIN(0)=1 можно, но сказать, что 1=SIN(0) почему-то нельзя? В LOGICAL этот недостаток ликвидирован и нижеследующие операторы присваивания абсолютно эквивалентны:
А=B
B=A
где A и B - любые выражения.
Константы и функции - чрезвычайно избыточное множество констант для арифметических и физических вычислений, подавляюще громоздкое количество плохо описанных функций традиционных языков, заставляющее программиста рыться в огромных фолиантах документации и HELP-ах в языке LOGICAL сведено всего к двум функциям:
CONST (X) {константа} - выдать программе нужную константу, где Х - нужная константа.
FUNC ([А], Х) {фанк}- дать значение необходимой программисту функции, где А-необязательный аргумент функции, а X - значение функции, которое хочет получить программист.
ТИПЫ ДАННЫХ
Поскольку для программиста проблема преобразования типов данных при традиционном программировании всегда служила неисчерпаемым источником ошибок, затрудняла написание программ, снижало надежность их работы, то в LOGICAL все ограничения на типы данных сняты. Грубо говоря, все считается на штуки, и лишь иногда на протяженность, что позволяет компилятору все преобразования типов данных производить полностью автоматически. Исключение составляют лишь два значения булевых переменных, но в отличие от ограниченных TRUE и FALSE традиционного программирования, они заменены на логические значения, присущие системам искуственного интеллекта (ИИ), как то:
TRUE {тру}- для преемственности языков сохранило смысл “истина”
Значение же FALSE (бывшая инверсия булевского TRUE), поскольку рано или поздно любая ложь раскрывается (разоблачается, т.е. вновь инвертируется с FALSE на TRUE) заменен на:
TPRU {тпру}- и имеет значение “правда”.
В самом деле, что такое “правда”? Правда - суть дважды инвертированная истина. Эти два мощных логических значения ИИ полностью ограждают вычислительную систему от какой-либо ложности обрабатываемой информации, позволяя работать только с истинными и правдивыми значениями.
ОПЕРАТОРЫ МОДИФИКАЦИИ ПЕРЕМЕННЫХ (ПРЕПРОЦЕССОР)
SHORT {короче!} - этот оператор устраняет “проблему длинных листингов” программ. При выполнении оператора все идентификаторы переменных и операторы программы сокращаются до одного (чаще всего первого) символа. Последовательное выполнение двух операторов SHOT устраняет из листинга также и все пробельные строки и символы.
LONGER {длиннее} - выполняет действие, обратное SHOT, дополняя ваши идентификаторы переменных и операторы программы случайными символами. Распечатка программы после выполнения оператора LONGER приобретает значительный объем и вес, особенно в глазах неискушенных пользователей и некоторых научных советов.
ОПЕРАТОРЫ КЛАССИЧЕСКОГО ПРОГРАММИРОВАНИЯ
Эта группа операторов сохранена только для удобства перехода на язык LOGICAL программистов, привыкших к языкам более низких уровней. Приобретение навыков программирования на LOGICAL вызовет естественный отказ от применения этих операторов, так как ИИ снимает с классических операторов все излишние синтаксическо-смысловые ограничения, только мешающие быстрому и эффективному написанию программ.
CYCLE [число] {цикл} - организация циклических процессов. Необязательный параметр [число] обозначает примерное количество итераций для тела цикла. При указании отрицательного значения параметра операторы тела цикла будут выполняться в обратном порядке - снизу вверх. Отметим, что как определение количества итераций, так и количество операторов, входящих в тело цикла определяются компилятором автоматически.
IF {иф} - условно выполнить. Все следующие за IF операторы выполняются лишь условно.
FI {фи} - безусловно выполнить. Все следующие за FI операторы выполняются безусловно.
GOTO {уйти} - уйти куда-нибудь.
RETURN {вернуться} - вернуться оттуда.
GOSUB {войти} - войти куда-то.
WAYOUT {выйти} - выйти хоть откуда. Весьма эффективный оператор, гарантирущий, что ваша система никогда не зависнет.
SELECT <выражение> {выбрать} - оператор выбора. Когда система выберет что-нибудь, она выдаст на экран текст, выраженный параметром <выражение>.
ОПЕРАТОРЫ ВВОДА-ВЫВОДА
Во избежание путаницы и дублирования разнообразных возможностей и фукций вывода-вывода, система ИИ позволяет избежать написания утомительных списков переменных и указаний на какие-либо имена файлов, ссылок на буферы и прочие туманные вещи. LOGICAL все сделает сам, используя только два оператора ввода-вывода:
READ {читать} - ввести все, что нужно, туда, куда можно.
WRITE {писать}- вывести все, что можно, туда, куда нужно.
ОПЕРАТОРЫ ВЫСОКОГО УРОВНЯ.
Именно эта группа операторов придает языку LOGICAL свойства 5GL, позволяет существенно экономить ресурсы внешней и оперативной памяти, четко и однозначно определять требования к характеристикам программ, обеспечивает их гибкость, надежность и простоту отладки.
COMPRESS [имя], [число] {сжатие} - в противовес расплодившимся программам-архиваторам с непредсказуемым коэффициентом сжатия для различных типов файлов, оператор COMPRESS сжимает программы и файлы пользователя до указанного в параметре [число] количества байт. Как видно из синтаксиса оператора, оба параметра являются необязательными - по умолчанию сжатие производится для всех файлов, имеющихся в вычислительной системе, размер сжатых файлов по умолчанию ограничивается размером в 1 байт (Примечание: в следующей версии компилятора планируется обеспечение сжатия любых файлов до 1 бита).
SPACE <число> {пространство} - этот оператор снимает проблему нехватки оперативной памяти системы, расширяя её до указанного в параметре <число> количества мегабайт.
QUICKLY {быстрее} - каждое выполнение этого оператора на порядок повышает скорость выполнения вашей программы.
TIME <число> {время} - с помощью этого оператора программист может указать программе точное время, за которое она должна быть выполнена.
AGAIN {снова} - при обнаружении ошибки в программе происходит автоматический её перезапуск до тех пор, пока программа не будет выполнена без ошибок.
NOERRORS {отменить ошибки} - оператор, отменяющий ошибки программиста. При установке этого оператора в программе первым какие-либо ошибки программиста исключены.
KILLER {упорядочивание работы} - очень полезный для отладки программ оператор, по которому все переменные, программы и файлы, мешающие нормальному выполнению отлаживаемой вами в данный момент программы автоматически и бесследно уничтожаются из системы.
REABILITATION {возобновить} - если оператор KILLER уничтожил нужные вам файлы и программы из других приложений, то оператор REABILITATION просмотрит исходный текст вашей программы и также автоматически и бесследно уничтожит все встретившиеся в ней операторы KILLER.
ОПЕРАТОРЫ СВЕРХВЫСОКОГО УРОВНЯ (уровень 5GP).
Этих операторов немного, но именно они обеспечивают язык LOGICAL теми возможностями, которые и придают языку функции искуственного интеллекта.
PROCESSOR {процессор} - известно, что одной из самых важных проблем оптимального использования вычислительных систем является минимизация времени простоя процессора. Оператор PROCESSOR обеспечивает 100%-ную загрузку процессора вне зависимости от типа выполняемой вычислительной системой задачи.
SUPERSECRET {суперсекретность} - любые программы и процедуры обеспечения секретности ваших программ и файлов для языков 3GL и 4GL не обеспечивают достаточной надежности. Их “взлом” - лишь вопрос времени. Оператор же SUPERSECRET языка LOGICAL гарантирует секретность ваших файлов более чем на 99,(9)%. При встрече этого оператора в программе вычислительная система запрашивает у пользователя пароль. Если введенный пользователем пароль не совпадает с паролем, случайным образом сгенерированным системой, то производится ускоренная процедура очистки всей внешней и оперативной памяти вычислительной системы. Для обеспечения 100% уровня секретности в вычислительной системе предусмотрена подача удвоенного или утроенного уровня напряжения электропитания на все устройства в обход стандартного блока питания.
DRINKTEA {дринькчи} - при встрече этого оператора вычислительная система подает напряжение на розетку, к которой подключен электрический чайник и ждет, пока тот закипит.
SMOKING {смокинг} - после встречи этого оператора система продолжает нормальную работу, выдавая на экран различные сообщения, не требующие вмешательства программиста, сам же программист в это время имеет возможность сходить на перекур, почистить сапоги и смокинг.
LOGICAL {логический} - самый мощный оператор языка. Заменяет все логически неправильные последовательности операторов программы на логически правильные.
РЕЗЮМЕ
Приведенный краткий список операторов языка LOGICAL позволяет убедиться, что этого, далеко не полного перечня операторов уже достаточно для того, чтобы не только свести до минимума трудоемкость работы программиста, но и обеспечить эффективное и надежное выполнение ваших программ. Одним из приятных следствий при использовании языка LOGICAL является полное отсутствие необходимости для программиста нудного и кропотливого изучения документации как по вашей вычислительной системе, так и по самому языку. Ознакомившись с настоящим сообщением, программист может сразу же включать LOGICAL в свою систему и приступать к разработке любых самых сложных программ.
УСПЕХОВ ВАМ, ДОРОГИЕ ПРОГРАММИСТЫ !
1999 г.