]]> ]]>
Править | Обсудить | История

LUX

Русское название:
Люкс
Дата создания:
1990
Создан под влиянием:
Парадигма:
Типизация:
Принятые расширения файлов:
lux luc
Язык программирования

Язык программирования LUX

11-го мая 2006 года, на семинаре по программированию, Института Прикладной Математики — ИПМ РАН — было обсуждено сообщение на тему:

“НОВЫЙ ЭФФЕКТИВНЫЙ ПРОЦЕДУРНО-ОРИЕНТИРОВАННЫЙ УНИВЕРСАЛЬНЫЙ ОПЕРАТОРНЫЙ ЯЗЫК ПРОГРАММИРОВАНИЯ В ЛИНГВОПРОЦЕССОРНЫХ ВЫРАЖЕНИЯХ”.

(Докладчик: В.М. Паньков)

Предлагается новый универсальный язык программирования, названный LUX (Lingual Unit’s eXpressions), как язык лингвопроцессорных выражений, изобретенных автором, со следующими свойствами:

Мгновенная компиляция; Самый компактный и быстрый исполняемый код; Самые компактные линеаризованные выражения языка; Самый компактный и быстрый код функций классов объектов; Один терм — оператор транслируется в одну машинную команду; Быстрые компактные понятные, в целом и в деталях, программы; Наилучшие свойства агрегатно — структурного программирования;

Я предлагаю Вам новый язык программирования, названный LUX (Lingual Unit’s eXpressions), как язык лингвопроцессорных выражений, изобретенных мною.

Любая средняя программа на языке LUX на компьютере средней мощности транслируется, практически, — мгновенно, — до миллиона операторов в секунду на мощных процессорах.

Язык LUX имеет место ТОЧНО между языком макроассемблера и языком Си, Паскаль — и ближе к языку Си, на этом, МАГИСТРАЛЬНОМ, направлении.

Подобно ассемблеру, LUX — компилятор генерирует каждый оператор в одну команду процессора и выдает очень быстрый, и очень компактный исполняемый код, поэтому, язык LUX не нуждается в оптимизирующем компиляторе.

Но, подобно языку Си, язык LUX, использует выражения и имеет наилучшие свойства структурного программирования.

Язык LUX имеет тот же набор более компактных структурных операторов типа IF-ELSE и DO-WHILE-FOR, что и язык Си, к тому же язык Люкс также как и Си имеет операторы SWITCH.

Это означает, что язык LUX имеет не меньшие структурные возможности структурного программирования, чем язык Си, что разительно отличает язык Люкс от языка макроассемблера, но по быстродействию и компактности исполняемого кода язык Люкс имеет не меньшие возможности, чем язык макроассемблера.

Таким образом, язык LUX объединяет лучшие достоинства языков Си и Макроассемблера, избавляясь от их недостатков.

Спектр применения языка может быть самым широким, поскольку язык LUX вбирает в себя многие свойства современных процедурно-ориентированных языков.

Сейчас язык LUX уже использован в задачах системного программирования (разработка компиляторов, интерпретаторов, контекстных анализаторов — обрабтчиков текстов, редакторов, драйверов и т.д.) и задачах работы с базами данных.

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

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

Другими словами, на языке LUX во многих случаях можно разрабатывать практически всё то же, что и на языке Си, а в некоторых случаях — и более того.

Председатель семинара — А.В. Забродин — резюмируя дискуссию по этому сообщению, отметил, что язык LUX — (Lingual Unit’s eXpressions), созданный на основе лингвопроцессорных выражений, является полноправным новым АЛЬТЕРНАТИВНЫМ НАПРАВЛЕНИЕМ В ПРОГРАММИРОВАНИИ.

Секретарь семинара — А.Е. Луцкий — также весьма позитивно оценил эту работу по созданию эффективного, фундаментального языка программирования, максимально использующего особенности архитектуры современных компьютеров.


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

Но абсолютно тот же логический постулат можно достоверно дать и для языка Люкс, то есть:

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

Любому программисту должно быть понятно, что трудоёмкость разработки программы на языке Си меньше, чем на языке ассемблера, исключительно за счёт более эффективных свойств структурного программирования в языке Си, нежели чем в языке ассемблера.

Но абсолютно тот же логический постулат можно достоверно дать и для языка Люкс, то есть:

Любому программисту должно быть понятно, что трудоёмкость разработки программы на языке Люкс меньше, чем на языке ассемблера, исключительно за счёт более эффективных свойств структурного программирования в языке Люкс, нежели чем в языке ассемблера.

Любому программисту должно быть понятно, что для любого структурного агрегата-оператора языка Си, по существу можно видеть наличие точно такого же по назначению структурного агрегата операторов языка Люкс, а именно:

СТРУКТУРНЫЙ ОПЕРАТОР IF-THEN

if ( cond() ) exec() ; <––-> @cond ?- @exec !

СТРУКТУРНЫЙ ОПЕРАТОР IF-THEN-ELSE

if ( cond() ) exec() ; else exed() ; <––-> @cond ?- @exec ? @exed !

СТРУКТУРНЫЙ ОПЕРАТОР ЦИКЛА WHILE

while ( cond() ) body() ; <––-> [ @cond ?- @body ]

СТРУКТУРНЫЙ ОПЕРАТОР ЦИКЛА DO-WHILE

do body() ; while ( cond() ) ; <––-> [ @body @cond ]<>0

СТРУКТУРНЫЙ ОПЕРАТОР ЦИКЛА FOR ++

for ( i = 0; i <= delta; i++ ) body(); <–> B:=0 [ B<=delta @body ++B ]

СТРУКТУРНЫЙ ОПЕРАТОР ЦИКЛА FOR —

for ( i = alpha; i > 0; i— ) body(); <––-> [alpha @body ]-

СТРУКТУРНЫЙ ОПЕРАТОР СРАВНЕНИЯ С ВЕТВЛЕНИЕМ

if ( b>c ) exec() ; <––-> B>C @exec !

СТРУКТУРНЫЙ ОПЕРАТОР СРАВНЕНИЯ С ВЕТВЛЕНИЕМ

if ( b>c ) exec() ; else exed() ; <––-> B>C @exec ? @exed !

СТРУКТУРНЫЙ ОПЕРАТОР СРАВНЕНИЯ И ЦИКЛА WHILE

while ( b>c ) body() ; <––-> [ B>C @body ]

СТРУКТУРНЫЙ ОПЕРАТОР ЦИКЛА WHILE И СРАВНЕНИЯ

do body() ; while ( b>c ) ; <––-> [ @body B]>C

СТРУКТУРНЫЙ ОПЕРАТОР ЦИКЛА FOR++ И СРАВНЕНИЯ

for ( b = 0; b<=d ; b++ ) body(); <––-> B:=0 [ B<=D @body ++B ]

СТРУКТУРНЫЙ ОПЕРАТОР ЦИКЛА FOR— И СРАВНЕНИЯ

for ( c = b; c > 0; c— ) body(); <––-> [B @body ]-


Как видно, язык Люкс имеет тот же набор более компактных структурных операторов типа IF-ELSE и DO-WHILE-FOR, что и язык Си, к тому же язык Люкс также как и Си имеет операторы SWITCH.

Это означает, что язык Люкс имеет не меньшие структурные возможности структурного программирования, чем язык Си, что разительно отличает язык Люкс от языка макроассемблера, но по быстродействию и компактности исполняемого кода язык Люкс имеет не меньшие возможности, чем язык макроассемблера.

Таким образом, язык Люкс объединяет лучшие достоинства языков Си и Макроассемблера, избавляясь от их недостатков.


СРАВНИТЕЛЬНЫЙ ВИД ОПЕРАЦИЙ НА ЯЗЫКАХ СИ, LUX И ЯЗЫКЕ АССЕМБЛЕРА

В УПОМЯНУТЫХ ЯЗЫКАХ ТРАДИЦИОННО УПОТРЕБЛЯЮТСЯ ОПЕРАЦИИ ВИДА:

‘ ‘ <–—> var <–—> mov ax,var <––––—> Загрузка

‘ + ‘ <–> +var <–—> add ax,var <––––—> Сложение

‘ — ‘ <–> -var <–—> sub ax,var <––––—> Вычитание, унарный —

‘ * ‘ <–> *var <–—> imul w,var <––––—> Умножение

‘ / ‘ <–> /var <–—> idiv w,var <––––—> Деление

++ <—> ++var <–-> inc w,var <–––––> Инкремент

— <—> —var <–-> dec w,var <–––––> Декремент

‘ ‘ <–-> C <––-> mov ax,cx <–––––> Загрузка

‘ + ‘ <–> +C <––-> add ax,cx <–––––> Сложение

‘ — ‘ <–> -C <––-> sub ax,cx <–––––> Вычитание, унарный —

‘ * ‘ <–> *C <––-> imul cx <–––––—> Умножение

‘ / ‘ <–> /C <––-> idiv cx <–––––—> Деление

‘ % ‘ <–> %C <––-> xchg cx,ax <––––—> Остаток

++ <—> ++C <––> inc cx <––––––> Инкремент

— <—> —C <––> dec cx <––––––> Декремент

‘ << ‘ <–-> <<var <–-> mov cx,var shl ax,cl <–> Сдвиг влево

‘ >> ‘ <–-> >>var <–-> mov cx,var shr ax,cl <–> Сдвиг вправо

‘ << ‘ <–-> <<C <––> shl ax,cl <–––––> Сдвиг влево

‘ >> ‘ <–-> >>C <––> shr ax,cl <–––––> Сдвиг вправо

& <–> &var <–—> and ax,var <––––—> Побитовое И, адрес от

| <–> |var <–—> or ax,var <–––––> Побитовое ИЛИ

^ <–> ^var <–—> xor ax,var <––––—> Побитовое ЛИБО

& <–> &C <––-> and ax,cx <–––––> Побитовое И, адрес от

| <–> |C <––-> or ax,cx <–––––-> Побитовое ИЛИ

^ <–> ^C <––-> xor ax,cx <–––––> Побитовое ЛИБО

~ <–> ~C <––-> not cx <––––––> Побитовое дополнение

&& <—> &var <–—> and ax,var <––––—> Логическое И

|| <—> |var <–—> or ax,var <–––––> Логическое ИЛИ

&& <—> &C <––-> and ax,cx <–––––> Логическое И

|| <—> |C <––-> or ax,cx <–––––-> Логическое ИЛИ

! <–> ~C <––-> not cx <––––––> Логическое НЕ

= <–> var:=012 <-> mov w,var,012 <–––—> Присваивание-запись

= <–> var:=val <-> mov w,var,012 <–––—> Присваивание-запись

= <–> C:=01234 <-> mov cx,01234 <––––> Присваивание-запись

= <–> C:=val <–> mov cx,01234 <––––> Присваивание-запись

= <–> B:=C <–—> mov bx,cx <–––––> Присваивание-запись

= <–> C:=B <–—> mov cx,bx <–––––> Присваивание-запись

= <–> val :var <-> mov ax,01234 mov var,ax <-> Присваивание-запись

= <–> vas :var <-> mov ax,vas mov var,ax <–> Присваивание-запись

= <–> val :C <–> mov ax,01234 mov cx,ax <—> Присваивание-запись

= <–—> B :C <–> mov ax,bx mov cx,ax <–—> Присваивание-запись


Знак операции — % (процент), употребляемый в Си для операции:

% <–> Остаток Деления, в языке LUX используется в операции:

%var <–—> xchg ax,var <––-> Обмен значений переменных,

поскольку операция деления выдаёт и остаток в другой регистр.

% <—> /C D:rest <-> idiv cx mov rest,dx <–—> Деление с Остатком


Следует отметить, что нижеследующие операции — вида:

+= <—> +:var <–> add var,ax <–––––> Сложение-запись

-= <—> -:var <–> sub var,ax <–––––> Вычитание-запись

= <—> :var <–> mov var,ax <–––––> Умножение-запись

/= <—> /:var <–> mov var,ax <–––––> Деление-запись

%= <—> %:var <–> xchg var,ax <––––—> Остаток-запись

+= <—> +:C <–—> add cx,ax <–––––-> Сложение-запись

-= <—> -:C <–—> sub cx,ax <–––––-> Вычитание-запись

= <—> :C <–—> mov cx,ax <–––––-> Умножение-запись

/= <—> /:C <–—> mov cx,ax <–––––-> Деление-запись

%= <—> %:C <–—> xchg cx,ax <–––––> Остаток-запись

‘ >>= ‘ <-> >>vas <–> mov cx,vas shr ax,cl <–—> Сдвиг вправо-запись <–—> :var <–> mov var,ax

‘ <<= ‘ <-> “<<” vas <–> mov cx,vas shl ax,cl <—> Сдвиг влево-запись <–—> :var <–> mov var,ax

‘ >>= ‘ <-> >>B <–—> mov cx,bx shr ax,cl <––> Сдвиг вправо-запись <–—> :C <–—> mov cx,ax

‘ <<= ‘ <-> “<<” B <–—> mov cx,bx shl ax,cl <–> Сдвиг влево-запись <–—> :C <–—> mov cx,ax

&= <—> &:var <–> and var,ax <–––––> Побитовое И-запись

|= <—> |:var <–> or var,ax <–––––-> Побитовое ИЛИ-запись

^= <—> ^:var <–> xor var,ax <–––––> Побитовое ЛИБО-запись

&= <—> &:C <–—> and cx,ax <–––––-> Побитовое И-запись

|= <—> |:C <–—> or cx,ax <–––––—> Побитовое ИЛИ-запись

^= <—> ^:C <–—> xor cx,ax <–––––-> Побитовое ЛИБО-запись

  • довольно редко употребляются в практическом программировании на языке LUX — впрочем как и НА ЯЗЫКЕ СИ И ЯЗЫКЕ АССЕМБЛЕРА, а обычно, употребляются более ТРАДИЦИОННЫЕ ОПЕРАЦИИ, упомянутые, здесь, в начале этого списка.

Следует особо отметить, что операции сравнения — вида:

‘ < ‘ <–> <:var <–-> cmp ax,var setl al cbw <—> Меньше

‘ <= ‘ <—> <=:var <–> cmp ax,var setle al cbw <-> Меньше или равно

‘ > ‘ <–> >:var <–-> cmp ax,var setg al cbw <—> Больше

‘ >= ‘ <—> >=:var <–> cmp ax,var setge al cbw <-> Больше или равно

‘ = ‘ <–> =:var <–-> cmp ax,var sete al cbw <—> Равно

‘ != ‘ <—> <>:var <–> cmp ax,var setne al cbw <-> Не равно

‘ < ‘ <–> <:C <––> cmp ax,cx setl al cbw <–> Меньше

‘ <= ‘ <—> <=:C <–—> cmp ax,cx setle al cbw <—> Меньше или равно

‘ > ‘ <–> >:C <––> cmp ax,cx setg al cbw <–> Больше

‘ >= ‘ <—> >=:C <–—> cmp ax,cx setge al cbw <—> Больше или равно

‘ = ‘ <–> =:C <––> cmp ax,cx sete al cbw <–> Равно

‘ != ‘ <—> <>:C <–—> cmp ax,cx setne al cbw <—> Не равно

  • с вычислением, и записью в регистр результата
  • в виде логического значения булевской алгебры
  • true или false — довольно редко употребляются в практическом программировании на языке LUX, а обычно, употребляются более компактные агрегаты операторов условия, вида:

СТРУКТУРНЫЙ ОПЕРАТОР СРАВНЕНИЯ С ВЕТВЛЕНИЕМ

B>C @exec !

СТРУКТУРНЫЙ ОПЕРАТОР СРАВНЕНИЯ С ВЕТВЛЕНИЕМ

B>C @exec ? @exed !

СТРУКТУРНЫЙ ОПЕРАТОР СРАВНЕНИЯ И ЦИКЛА WHILE

[ B>C @body ]

СТРУКТУРНЫЙ ОПЕРАТОР ЦИКЛА WHILE И СРАВНЕНИЯ

[ @body B]>C

СТРУКТУРНЫЙ ОПЕРАТОР ЦИКЛА FOR++ И СРАВНЕНИЯ

[ B<=D @body ++B ]

СТРУКТУРНЫЙ ОПЕРАТОР ЦИКЛА FOR— И СРАВНЕНИЯ

[B @body ]-


Основной Сайт:

www.pancov.narod.ru



Комментарии

]]>

blog comments powered by Disqus

]]>

Работа программистам