Безопасность
0,0
рейтинг
28 февраля 2014 в 16:24

Разработка → ArnoldC: язык программирования из цитат Шварценеггера из песочницы

image

Доброго времени суток, Хабр. Думаю многие люди, хоть каким-то боком относящиеся к программированию хоть раз в жизни слышали об эзотерических языках программирования. Тот же Brainfuck.

 ++++++++++[>+++++++>++++++++++>+++>+<<<<-]>++
 .>+.+++++++..+++.>++.<<+++++++++++++++.>.+++.
 ------.--------.>+.>.

От одного только вида бросает в дрожь, но кто же мог подумать, что найдется человек, который сможет создать язык программирования из цитат известного голливудского актера.
Финский программист Лори Хартикка (Lauri Hartikka) опубликовал на Github описание и компилятор языка программирования ArnoldC. В качестве команд в ArnoldC используются цитаты героев Арнольда Шварценеггера.

Пример кода

BECAUSE I'M GOING TO SAY PLEASE a
TALK TO THE HAND "a is true"
BULLSHIT
TALK TO THE HAND "a is not true"
YOU HAVE NO RESPECT FOR LOGIC


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

Сложение

GET UP operand

Вычитание

GET DOWN operand

Умножение

YOU'RE FIRED operand

Деление

HE HAD TO SPLIT operand


image

Основные операторы (с ссылками на фразу)
False I LIED

True NO PROBLEMO

If BECAUSE I'M GOING TO SAY PLEASE

Else BULLSHIT

EndIf YOU HAVE NO RESPECT FOR LOGIC

While STICK AROUND

EndWhile CHILL

PlusOperator GET UP

MinusOperator GET DOWN

MultiplicationOperator YOU'RE FIRED

DivisionOperator HE HAD TO SPLIT

EqualTo YOU ARE NOT YOU YOU ARE ME

GreaterThan LET OFF SOME STEAM BENNET

Or CONSIDER THAT A DIVORCE

And KNOCK KNOCK

MethodArguments I NEED YOUR CLOTHES YOUR BOOTS AND YOUR MOTORCYCLE

Return I'LL BE BACK

EndMethodDeclaration HASTA LA VISTA, BABY

CallMethod DO IT NOW

AssignVariableFromMethodCall GET YOUR ASS TO MARS

EndMain YOU HAVE BEEN TERMINATED

Print TALK TO THE HAND

AssignVariable GET TO THE CHOPPER

SetValue HERE IS MY INVITATION

EndAssignVariable ENOUGH TALK

ParseError WHAT THE FUCK DID I DO WRONG


В примере ниже мы можем видеть, как реализованы логические операторы.

a = (b || c) && d

GET TO THE CHOPPER a
HERE IS MY INVITATION b
CONSIDER THAT A DIVORCE c
KNOCK KNOCK d
ENOUGH TALK


Вот пример посложнее.
IT'S SHOWTIME
HEY CHRISTMAS TREE result1
YOU SET US UP 0
HEY CHRISTMAS TREE result2
YOU SET US UP 0
HEY CHRISTMAS TREE result3
YOU SET US UP 0
HEY CHRISTMAS TREE result4
YOU SET US UP 0
GET YOUR ASS TO MARS result1
DO IT NOW modulo 9 4
TALK TO THE HAND result1
GET YOUR ASS TO MARS result2
DO IT NOW modulo 4795 87
TALK TO THE HAND result2
GET YOUR ASS TO MARS result3
DO IT NOW modulo 3978 221
TALK TO THE HAND result3
GET YOUR ASS TO MARS result4
DO IT NOW modulo 5559 345
TALK TO THE HAND result4
YOU HAVE BEEN TERMINATED

LISTEN TO ME VERY CAREFULLY modulo
I NEED YOUR CLOTHES YOUR BOOTS AND YOUR MOTORCYCLE dividend
I NEED YOUR CLOTHES YOUR BOOTS AND YOUR MOTORCYCLE divisor
GIVE THESE PEOPLE AIR
HEY CHRISTMAS TREE quotient
YOU SET US UP 0
HEY CHRISTMAS TREE remainder
YOU SET US UP 0
HEY CHRISTMAS TREE product
YOU SET US UP 0
GET TO THE CHOPPER quotient
HERE IS MY INVITATION dividend
HE HAD TO SPLIT divisor
ENOUGH TALK
GET TO THE CHOPPER product
HERE IS MY INVITATION divisor
YOU'RE FIRED quotient
ENOUGH TALK
GET TO THE CHOPPER remainder
HERE IS MY INVITATION dividend
GET DOWN product
ENOUGH TALK
I'LL BE BACK remainder
HASTA LA VISTA, BABY


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

HelloWorld.arnoldc

IT'S SHOWTIME
TALK TO THE HAND "hello world"
YOU HAVE BEEN TERMINATED


Подробнее вы можете ознакомится с этим языком на странице автора.
Амир Еленов @GreamDesu
карма
7,0
рейтинг 0,0
Безопасность
Реклама помогает поддерживать и развивать наши сервисы

Подробнее
Реклама

Самое читаемое Разработка

Комментарии (58)

  • +2
    Извиняюсь, но по моему вынос мозга! Очень тяжело программировать с нагромождением сочетаний фраз. А в целом ради того чтобы увидеть и забыть пойдет.
    • +2
      Полностью с вами согласен. Я уже пробывал написать простейший код, очень быстро начинаешь путаться во фразах.
      • +27
        Поубывал бы за «попробывал».
        • +1
          «Пробовал» конечно же.
      • +1
        А я думал только автору данного языка было ничего делать, а оказывается есть люди которым еще и хочется это попробовать..)
    • +12
      Я уже примерно половину Линукса на этом языке переписал. Стало намного лучше всё работать.
      Только почему-то иногда слышны звуки удаляющегося харлея и всё падает. Не могу понять в чём проблема.
    • –1
      Нет, не извиним.
  • +10
    По Тьюрингу то он полон или как?
    • +3
      Как и BF — да
  • +2
    Это надо в хаб «ненормальное программирование».
  • +7
    Простите за бессмысленный комментарий… но это ВЕЛИКОЛЕПНО!!!
    • 0
      image
  • 0
    Сложение и вычитание — чего с чем, если один операнд? По всей видимости PlusOperator и MinusOperator — это инкремент и декремент.
    • +1
      С операндом из

      HERE IS MY INVITATION первый операнд

  • +15
    Оператор COCAINUM присутствует? Что делает? :)
  • +2
    А еще многие утверждают что программисты не творческие люди!
    • 0
      Вспомнился этот стих.
      • +14
        Извините, Хабр почему-то не хочет показывать изображения.

        Тот самый стих

        if (newGame) resources.free();
        s = FILENAME + 3;
        setLocation(); load(s);
        loadDialog.process();

        try { setGamerColor(RED); }
        catch(Exception e) { reset(); }
        while (notReady) { objects.make();
        if (resourceNotFound) break; }

        byte result; // сменить на int!
        music();
        System.out.print("");
        • +10
          Программисты еще и петь умеют
          Rammstein, например
    • –6
      Кто это утверждает?
      • +3
        В частности наш препод, который с улыбкой говорил, что «научив вас программировать, в вас убили творческую личность»
        Кстати преподаватель он очень хороший, ничего личного.

        А вообще мне не очень понятны подобные (вашим) комментарии, занудные немного чтоли.
        • –8
          Это какие?
          • +1
            Толстовато, кэп.
        • 0
          Тут нужно определение тогда, а то получится как с «гуманитарным складом ума»: творческие личности — это те, у кого отсутствует логическое мышление.
          • 0
            А что, разве это не так?
          • 0
            Я довольно долгое время занимался фотографией, и могу с уверенностью сказать (субъективно), что в программировании творчества на порядок больше :)
  • +14
    Не хватает KAKIE VASHI DOKAZATELSTVA?
    • +7
      эту фразу говорил не Арни, а вот POSHLI VSE VMESTE — он. Можно использовать для объявления массивов, только вот нерусскоязычные не поймут
      • +1
        Ах да, нагуглил. Почему-то думал, что это был он :)
  • +10
    А где оператор «хулиганы»?
    • 0
      Можно было б вместо throw использовать.
  • +3
    Настолько культурно значимый человек, что теперь может похвастаться языком программирования, названным в его честь)
    • 0
      Названным и Паскаль похвастаться может. Тут же созданным в его честь
  • +2
    Данный язык является Тьюринг-полным
    • 0
      Ваш КО.
  • +5
    Так вот на чем написан Скайнет!
    • +1
      Нет, Скайнет написан на ассемблере, кажется уже разбирались.
  • +13
    >>>LISTEN TO ME VERY CAREFULLY modulo
    >>>I NEED YOUR CLOTHES YOUR BOOTS AND YOUR MOTORCYCLE dividend
    >>>I NEED YOUR CLOTHES YOUR BOOTS AND YOUR MOTORCYCLE divisor
    >>>GIVE THESE PEOPLE AIR
    А вот это уже некрасиво. Было бы намного круче, если бы лексемой было бы просто «I NEED», а аргументы функции перечислялись бы как раз как YOUR a, YOUR b and YOUR c.
  • +12
    Ну вы чего, а где же ролик «160 лучших цитат Шварценеггера»?

  • +25
    Жизнь надо прожить так, чтобы потом из твоих цитат создали язык программирования.
    • +20
      Можно сделать аналогичное по творчеству Ленина, кстати.

      ИЗ ВСЕХ ИСКУССТВ ДЛЯ НАС ВАЖНЕЙШИМ ЯВЛЯЕТСЯ x = int x
      МЫ ПОЙДЁМ ДРУГИМ ПУТЁМ = else
      НА ДЕЛЕ ЭТО НЕ МОЗГ, А ГОВНО = break
      УЧИТЬСЯ, УЧИТЬСЯ И УЧИТЬСЯ = continue
      ЕСТЬ ТАКАЯ ПАРТИЯ x = return x
      ПОЛИТИЧЕСКАЯ ПРОСТИТУТКА<x> = dynamic_cast<x>
      • +1
        Да и не только по творчеству Ленина, по всем известным личностям можно, но это уже бред.
  • +2
    Интересно было бы увидеть код прошивки T-800 на этом языке.
  • 0
    Булшит прекрасен :)
  • +9
    Чак уже готовит ответ:

    image
    • +4
      Не получится: всякий, кто попробует язык имени Чака придумать, умирает до начала первой компиляции, а сам Чак программирует без языка, просто силой мысли меняя биты в ячейках памяти. Да и с отладкой у него проблем нет, как известно! )
    • +7
      Чаку не требуется свой язык, он программирует на уровне PN переходов.
    • 0
      Не ты программируешь языком фраз Чака Норриса, это Чак Норрис программирует языком тебя!
      • 0
        Не хотел бы я, чтобы Чак программировал меня языком
  • +3
    Самое время вспомнить про Lingua::Romana::Perligata
    cpansearch.perl.org/src/DCONWAY/Lingua-Romana-Perligata-0.50/demo/
    • +1
      А ведь сработала бы чуть по другому история, вот так бы и писали вместо английского.
  • +2
    Не хватает тернарного оператора:

    Какие ваши доказательства? a : b
    


  • +1
    Изотерические языки программирования всегда доставляют.
    Вот пример из LOLCODE:
     HAI
     CAN HAS STDIO?
     PLZ OPEN FILE "LOLCATS.TXT"?
         AWSUM THX
             VISIBLE FILE
         O NOES
             INVISIBLE "ERRROR!"
     KTHXBYE
    
    • +1
      Только они «эзотерические».
    • +4
      А коммитить вот так:

      alias such=git
      alias very=git
      alias wow='git status'

      $ wow
      $ such commit
      $ very push

      (см также doge meme)
  • 0
    Дааа, давно было Боярское программирование…
    habrahabr.ru/post/41303/

    #define голова main
    #define выводити printf
    цѣла голова( цѣла argc, постоянна буквица* argv[] )
    {
        выводити( "Мiр тѣбѣ, баринъ!" );
    }
    

  • 0
    Чё-то скучно.

    Вот был брейнфак — язык для машины Тьюринга. И к нему налепили клонов — уук, вайтспейс, — которые, по сути, транслируются в брейнфак макропроцессором.
    А тут вообще тупизна, макросы к бейсику какому-то.
    Ещё бы Эллочку-Людоедку в ЯП превратили. Хо-хо, парниша.

    Где эзотерика? Где внезапность полёта мысли?

Только зарегистрированные пользователи могут оставлять комментарии. Войдите, пожалуйста.