LINUX.ORG.RU
ФорумTalks

Эзотерические языки. Какие из них не урезаны по возможностям (или не считаются эзотерическими)?


0

1

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

Многие из таких языков пошли по пути максимального сокращения числа доступных операторов. Например, в brainfuck всего восемь операторов: +-<>[],.
В одном из языков программирования, кажется, вообще всего два символа.
В Malbolge тоже команд ненамного больше, к тому же они ещё и шифруются.

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

Как пример я приведу свой любимый dc. Программы на нем выглядят для непосвященных очень даже экзотично, не смотря на то, что официально этот язык эзотерическим не является.
Ещё я приведу в пример J, который обладает синтаксисом весьма жутковатым на вид, хотя может и достаточно простым для понимания.

И за одно, конструкции из C-подобных языков, использующие ++, присваивания со операцией типа += и тернарный оператор ?: в одной строчке.
Так вот, какие ещё есть языки программирования, которые не урезаны по возможностям специально, но позволяют писать код в эзотерическом стиле?
В идеале ещё этот язык не должен содержать слов вроде print или if then else, должен использовать вместо этого другие конструкции, вроде того же тернарного оператора.

И в качестве бонуса:
javascript:alert((![]+[])[+[]]+(![]+[])[+!+[]]+([![]]+[][[]])[+!+[]+[+[]]]+(![]+[])[!+[]+!+[]])

Эту строчку достаточно вставить в адресную строку браузера и нажать энтер. Я уже разобрался, как она работает.

★★★★★

Блин, даже Perl не упомянул. Пичалька...

DNA_Seq ★★☆☆☆ ()

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

И Scala - одна из них :]

yoghurt ★★★★★ ()

http://www.cpan.org/misc/japh

#!/usr/local/bin/perl
  
undef$/;$_=<DATA>;y/ODA\n / /ds;@yoda=map{length}split;print chr
oct join('',splice(@yoda,0,3))-111 while@yoda;
__DATA__
         00O00O000O00O0000      000O         DD000000O0
        0DO0000000O0000O00     O00000        00O00000O0O
        0000      0O0         O00  O00       00D     0DO
         00O0     0O0        00D    000      DO0D00000D
          0O00    DOD       000000O00000     000  O00O
 DD0000D000O0     000      0O00O0000D00DO    0OD   D00O000D00O0
 00000DO00O0      000     000O        00D0   O0D    O00000O0DO0
  
 0O000   OD0D   O00O0   0000         DDDO000000      O00O000000
  0O000 O00DDO 00000   0O0D00        00O0O00000O    0O00O000000
   0O0O00OD00000DDD   00O  0D0       DDD     D0O    00O0D
    00000O00000000   O00    DO0      D00D00O000      00D00
     D0O00  O0000   000O000O00DO     000  00O0        0OD00
      O00    000   0O000D000O00O0    000   0D0O000000O00O00
       0      0   0O0D        0000   0O0    0O0000000O000O

[editorial note: would the author of this JAPH *please* stand up? ]

DNA_Seq ★★☆☆☆ ()
    ''=~(        '(?{'        .('`'        |'%')        .('['        ^'-')
    .('`'        |'!')        .('`'        |',')        .'"'.        '\\$'
    .'=='        .('['        ^'+')        .('`'        |'/')        .('['
    ^'+')        .'||'        .(';'        &'=')        .(';'        &'=')
    .';-'        .'-'.        '\\$'        .'=;'        .('['        ^'(')
    .('['        ^'.')        .('`'        |'"')        .('!'        ^'+')
   .'_\\{'      .'(\\$'      .';=('.      '\\$=|'      ."\|".(      '`'^'.'
  ).(('`')|    '/').').'    .'\\"'.+(    '{'^'[').    ('`'|'"')    .('`'|'/'
 ).('['^'/')  .('['^'/').  ('`'|',').(  '`'|('%')).  '\\".\\"'.(  '['^('(')).
 '\\"'.('['^  '#').'!!--'  .'\\$=.\\"'  .('{'^'[').  ('`'|'/').(  '`'|"\&").(
 '{'^"\[").(  '`'|"\"").(  '`'|"\%").(  '`'|"\%").(  '['^(')')).  '\\").\\"'.
 ('{'^'[').(  '`'|"\/").(  '`'|"\.").(  '{'^"\[").(  '['^"\/").(  '`'|"\(").(
 '`'|"\%").(  '{'^"\[").(  '['^"\,").(  '`'|"\!").(  '`'|"\,").(  '`'|(',')).
 '\\"\\}'.+(  '['^"\+").(  '['^"\)").(  '`'|"\)").(  '`'|"\.").(  '['^('/')).
 '+_,\\",'.(  '{'^('[')).  ('\\$;!').(  '!'^"\+").(  '{'^"\/").(  '`'|"\!").(
 '`'|"\+").(  '`'|"\%").(  '{'^"\[").(  '`'|"\/").(  '`'|"\.").(  '`'|"\%").(
 '{'^"\[").(  '`'|"\$").(  '`'|"\/").(  '['^"\,").(  '`'|('.')).  ','.(('{')^
 '[').("\["^  '+').("\`"|  '!').("\["^  '(').("\["^  '(').("\{"^  '[').("\`"|
 ')').("\["^  '/').("\{"^  '[').("\`"|  '!').("\["^  ')').("\`"|  '/').("\["^
 '.').("\`"|  '.').("\`"|  '$')."\,".(  '!'^('+')).  '\\",_,\\"'  .'!'.("\!"^
 '+').("\!"^  '+').'\\"'.  ('['^',').(  '`'|"\(").(  '`'|"\)").(  '`'|"\,").(
 '`'|('%')).  '++\\$="})'  );$:=('.')^  '~';$~='@'|  '(';$^=')'^  '[';$/='`';
yoghurt ★★★★★ ()

> Многие из таких языков пошли по пути максимального сокращения числа доступных операторов. Например, в brainfuck всего восемь операторов: +-<>[],.

Вы про машину Тюринга слышали?

Relan ★★★★★ ()
Ответ на: комментарий от Relan

> Вы про машину Тюринга слышали?
Если бы не слышал, откуда бы я знал про brainfuck? Хотя это не чисто машина Тьюринга.
Мне интересны языки, которые не как brainfuck уменьшают число доступных команд, а которые наоборот делают количество команд доступных для применения максимальным.

Xenius ★★★★★ ()
Ответ на: комментарий от Xenius

not exp log srand xor s qq qx xor
s x x length uc ord and print chr
ord for qw q join use sub tied qx
xor eval xor print qq q q xor int
eval lc q m cos and print chr ord
for qw y abs ne open tied hex exp
ref y m xor scalar srand print qq
q q xor int eval lc qq y sqrt cos
and print chr ord for qw x printf
each return local x y or print qq
s s and eval q s undef or oct xor
time xor ref print chr int ord lc
foreach qw y hex alarm chdir kill
exec return y s gt sin sort split

DNA_Seq ★★☆☆☆ ()
Ответ на: комментарий от DNA_Seq

Да видел я это всё. Перл у меня второй на очереди для изучения после J (до этого был первый)

Xenius ★★★★★ ()
Ответ на: комментарий от Xenius

>Мне интересны языки, которые не как brainfuck уменьшают число доступных команд, а которые наоборот делают количество команд доступных для применения максимальным.

Таких языков, где есть ограниченный (не обычный API), но притом очень большой набор команд, я не знаю.

Но зато вот в Баше команд хотя и не так много, зато у каждой свой синаксис...

proud_anon ★★★★★ ()
Ответ на: комментарий от proud_anon

> Но зато вот в Баше команд хотя и не так много, зато у каждой свой синаксис...
# <tab><tab>
Display all 2333 possibilities? (y or n)
Это немного?
А на другой машине вообще 3834 команд.

Xenius ★★★★★ ()
Ответ на: комментарий от Xenius

>Display all 2333 possibilities? (y or n)

Это немного?


И что, всё это встроенные команды Bash? Тогда можно сказать, что в языке Си вообще их десятки тысяч, стоит только написать несколько #include...

proud_anon ★★★★★ ()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.