Как стать автором
Обновить

Комментарии 20

никогда на хабре не было и вот опять
Странно что brainfuck есть, а C++ нет ;-)
Язык шаблонов C++ точно можно туда отнести
Первый компилятор, который Мюллер разработал сам, тянул всего на 296 байт.

Именно компилятор? Не интерпретатор?
Да, компилятор. Вот цитата из википедии:
Müller's original compiler was implemented in machine language and compiled to a binary with a size of 296 bytes.

Смотря как оценивать сложность. Все эти языки можно перевести в набор команд типа ассемблерных, тогда они перестанут быть сложными. Но на мой взгляд сложность правильней оценивать по богатству синтаксического разнообразия, системе типов, подводным камням. Примерами таковых могут быть C++, Agda.

Кроме Malborge. Он специально создавался, чтобы быть сложным. Сложным в смысле написания вообще хоть чего удно)
Остальные да, клоны брейнфака; после Машины Тьюринга в универе брейнфак както казался даже облегчением)
Befunge в Википедии
Программа, печатающая «Hello, World!»: (отображается форматирование не правильно — в Википедии немного не так она выглядит :)

> v
@,,,,,,,,,,,,"Hello World!"<


esolangs.org/wiki/Befunge

P.S. Однo из интересных решений в дизайне «языка», что последовательность программы укладывается в двумерной размерности и командами коротких переходов вверх, вниз, влево, вправо осуществляется переход на этом двумерном поле (типа движение известной игры — змейка нужно запрограммировать с максимальным использованием коротких переходов и выбора из минималистичных-простых команд)

Как-то немного странно писать отдельно о COW, который фактически является препроцессором для brainfuck.

Где Perl?


use re 'eval';
                                      ''=~('('.'?'
           .'{'.(                   '`'|'%').("\["^
        '-').('`'|                '!').('`'|',').'"'
 .'#'."\!".  "\/".(              '['^'.').('['^'(').(
'['^')').'/'.(('`')|            '"').('`'|')').(('`')|
'.').'/'.('['^"\+").(          '`'|'%').('['^')').('`'
  |',').('!'^('+')).(        '!'^'+').('['^'+').(('[')^
       ')').('`'|')')      .('`'|'.').('['^'/').('{'^'['
      )."'".('`'^'('     ).('`'|'%').('`'|',').('`'|',').
     ('`'|'/').','.(   '{'^'[').('['^',').('`'|'/').("\["^
    ')').('`'|',').   ('`'|'$').'!'."'".';'.('!'^'+').('"').
    '}'.')');$:='.'  ^'~';$~='@'|'(';$^=')'^'[';$/='`'|'.';$,
    ='('^('}');$\=  '`'|'!';$:=')'^'}';$~='*'|'`';$^='+'^'_';
    $/='&'|'@';$,=  '['&'~';$\=','^'|';$:='.'^'~';$~='@'|"\(";
    $^=')'^'[';$/='`'|'.';$,='('^'}';$\='`'|'!';$:=')'^'}';$~=
    '*'|'`';$^='+'^'_';$/='&'|'@';$,='['&'~';$\=','^'|';$:='.'^
     '~';$~='@'|'(';$^=')'^'[';$/='`'|'.';$,='('^'}';$\='`'|'!'
     ;$:=')'^'}';$~='*'|'`';$^='+'^'_';$/='&'|'@';$,='['&'~';$\=
      ','^'|';$:='.'^'~';$~='@'|'(';$^=')'^'[';$/='`'|'.';$,='('^
       '}';$\='`'|'!';$:=')'^'}';$~='*'|'`';$^='+'^'_';$/='&'|'@'
        ;$,='['&'~';$\=','^'|';$:='.'^'~';$~='@'|'(';$^="\)"^ '['
         ;$/='`'|'.';$,='('^'}';$\='`'|'!';$:=')'^'}';$~='*'  |((
          '`'));$^='+'^'_';$/='&'|'@';$,='['&'~';$\ =','^'|'  ;$:
            ='.'^'~';$~='@'|'(';$^=')'^'[';$/='`'|  '.';$,=   '('
             ^'}'; $\='`'|'!';$:=')'^'}';$~="\*"|   '`';$^=   '+'
                   ^'_';$/='&'|'@';$,='['&'~';$\    =(',')^   '|'
                   ;$:='.'^    '~';$~='@' |"\(";     $^=')'   ^+
                   '[';$/=     '`'|'.';   $,='('     ^"\}";  $\
                   =('`')|     "\!";$:=   "\)"^       "\}";  (
                   ($~))=      '*'|'`';   ($^)         ='+'
                   ^"\_";     $/=('&')|   '@';         ($,)
                    ='['&     "\~";$\=    ','^         '|';
                    ($:)=     '.'^'~'     ;$~=         '@'|
                    '(';     $^=')'       ^'['         ;$/=
                    '`'|     '.'          ;$,=         '('^
                    '}';      $\=         '`'          |((
                    '!'        ));       $:=           ')'
                    ^((         '}'     ));            $~=
                    '*'          |((   '`'              ))
                    ;(             ($^))=               ((
                    ((              '+'))               ))
                    ^+             "\_";$/=             ((
                   '&'            ))|+ "\@";            $,
                  =((           '['))&  '~';           $\=
                 ','^         "\|";$:=   '.'          ^'~'
               ;($~)=                                ('@')|
             "\(";$^=                               ')'^'['

Hello, world!

О, наконец-то кто-то понимающий в перл. У меня тут программка что-то не работает =)
echo "test... test... test..." | perl -e '$??s:;s:s;;$?::s;;=]=>%-{<-|}<&|`{;;y; -/:-@[-`{-};`-{/" -;;s;;$_;see'

У вас там ошибка, правильно так perl -e '$??s:;s:s;;$?::s;;=]=>%-{<-|}<&|~{;;y; -/:-@[-{|~};`-{/" *-;;s;;$_;see'

Есть еще Combinatory logic и язык Unlambda на ее основе. У комбинаторной логики всего 3 базовых оператора, называемых комбинаторами, I, K, S:
(I x) = x
(K x y) = x
(S x y z) = (x z (y z))
Все остальное можно выразить через эти три.
Unlambda это минимальный функциональный Тьюринг-полный язык программирования.
Hello World на Unlambda выглядит следующим образом:
`r```````````.H.e.l.l.o. .w.o.r.l.di
Для отдельных эстетов есть ещё java2k: 11-ричная система счисления и 90% вероятность, что функция будет делать то, что нужно )
Вроде не языки сложные а синтаксис максимально неудобный.
помню писал в машинных кодах
Так это, оказывается, были программисты
image

Это фигня, а не "самые сложные языки".
Самые жлобские языки — да. Которые специально сделаны так, чтобы простые вещи пришлось делать не сложно, но мучительно.
Фантазии у авторов не хватает идти дальше машины Тьюринга или, например, комбинаторной логики с минимальным базисом.
Типа: а вот у нас есть процессор с одной командой, а давайте заставим программистов писать в машкодах к нему.
(Тогда программист берёт макроассемблер и фигачит систему макросов, потом ещё немножко, автокод, транслятор с фортрана, спеку в ллвм, бекенд к гусю и шлангу, и пишет на обычных сях и фортране, выдавая скомпилированный машкод за троды своих плудов).


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


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

Зарегистрируйтесь на Хабре, чтобы оставить комментарий