J: программирование на смайликах

    Язык J многими, в том числе и на хабре, считается write-only language (что, в общем-то, неправда) или программированием через регэкспы. Важно помнить, что J — это ASCII-версия математической нотации Айверсона, лежащей в основе APL. Точно так же, как невозможно прочесть Хиндли-Милнера, не зная математической нотации, код вроде value =: [:(]`{.@.([:1&=#))[:,[:>[((([:<[)=[:{.])#[:{:])[:>] не может быть понятен человеку, незнакомому хотя бы со словарём языка.

    Под катом небольшая подборка учебников и туториалов по теме для заинтересовавшихся. (Внимание: все ресурсы на английском языке)

    Официальные ресурсы (часть этого идёт в комплекте с J):
    • Официальный сайт
    • Wiki
    • Vocabulary — словарик, очень полезный как во время изучения, так и при использовании J
    • Краткий Reference
    • J for C programmers (pdf) — учебник для привыкших к императивному программированию, который пытается помочь избежать культурного шока
    • Learning J — ещё один учебник. В нём больше примеров, и каждый шаг расписывается подробнее, чем в предыдущем.
    • Puzzles — задачки для закрепления материала и просто шевеления мозгами
    • Phrases — полезные конструкции-однострочники с разбиением по темам
    • Essays — статьи о J, больше текста, чем кода
    • Plot — построение графиков встроенными средствами J

    Другое:

    И конечно, предлагайте статьи в комментариях или личке.
    Share post

    Comments 8

      +2
      А что такого умеет J, что может побудить использовать этот язык в промышленной, научной или учебной разработке?
        +4
        • Ну например, он очень прост в написании (внезапно, но так).
        • J векторный — если программа работает с матрицами, лучше писать её на J, чем на C.
        • В Success Stories есть пример, когда J справляется с большим набором данных лучше, чем SQL.
        • Популярен в статистическом и математическом анализах наборов данных.
        • Короткие программы — в итоге читать код не намного дольше сишного.
        • Как пример функциональной парадигмы — это в плане обучения.
        • Это просто весело, в конце концов. (ИМХО, естественно)


        Опять-таки, J уже используется в крупных компаниях, таких как Intel, MS и HP.

        Ну и личные впечатления, куда ж без них.
        I feel like my mind just made a baby. And, it's beautiful.
          +3
          Ну, допустим, мы выяснили, в каких задачах он лучше С или SQL. А в каких он может составить конкуренцию C# или Phyton?

          И краткость записи — это одновременно и достоинство и недостаток. Мне сразу вспоминается ультракороткий язык программирования RS с генимальным оператором «повернуть матрицу на 45°».
            +1
            Ну опять же, в обработке массивов данных и матриц. В принципе, Python с J примерно в одной весовой категории: оба интерпретируемые, в Python есть примесь функциональщины, и, скорее всего, я просто не умею обрабатывать на нём матрицы.

            C# вообще сравнительно громоздкий, и проигрывает J в тех же категориях, что и C, скорее всего. (Плохо знаком с шарпом, не могу сказать точнее).

            И краткость записи — это одновременно и достоинство и недостаток.
            Ну это же адаптация математической нотации, так что несёт в себе хоть какой-то исходный смысл :) RS, конечно, фееричен.
            +1
            >прост в написании
            Perl тоже, знаете ли, прост в написании :-)

            >J векторный — если программа работает с матрицами, лучше писать её на J, чем на C.
            Нашли, с чем сравнивать. Писать математические программы на чистом C в век numpy — это как-то странно.

            >В Success Stories есть пример, когда J справляется с большим набором данных лучше, чем SQL.
            SQL — это стандарт языка, а не реализация. В этой success story обгоняется MS Access. Стоит ли комментировать далее? :-)

            >Популярен в статистическом и математическом анализах наборов данных.
            По-моему, там гораздо больше используются R и Python.

            Честно говоря, на мой вкус, APL выглядит значительно аккуратнее и проще J.
              0
              Perl тоже, знаете ли, прост в написании :-)
              А чем плох Perl? :)
              В Success Stories есть пример, когда J справляется с большим набором данных лучше, чем SQL.
              SQL — это стандарт языка, а не реализация. В этой success story обгоняется MS Access.
              Ну я же не говорю, что J сам по себе лучше, чем SQL. Это пример обработки приличного объёма данных, с которым не справилась СУБД.
              Честно говоря, на мой вкус, APL выглядит значительно аккуратнее и проще J.
              Мне тоже APL нравится больше, но всё же ASCII-операторы — большой плюс.
          +2
          Мне не показалось, и на картинке действительно реализация симплекс-метода?
            +2
            title="Симплекс-метод из стандартной библиотеки — /math/simplex.ijs"
            Не кажется :)

          Only users with full accounts can post comments. Log in, please.