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

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

Я бы не отказался заменить этим языком bash скрипты.
Всегда приветствую статьи по языкам программирования на Хабре. Спасибо!
Хотя описания самого языка в статье крайне мало, но оно и понятно — это интервью, а не обзорная статья.
Интересно, такой высокий уровень абстракции(выше, по крайней мере, точно не доводилось видеть) не помешает дальнейшему развитию языка? Судя по приведенным сниппетам, синтаксис практически эквивалентен человеческому языку. Высочайший уровень абстракции!
Вообще-то, синтаксис слабо связан с уровнем абстракции. Абстракция — это семантика, а не синтаксис.

(Ну и да, о близости приведнных примеров к «человеческому языку» я бы поспорил)
Все так, однако многие ли будут пользоваться мощнейшими абстракциями, если их синтаксис будет тупо неудобен? Удобство очень важная штука, поэтому в Red стараются работать над ситаксисом.

Насчет близости с «человеческим языком» — именно в контексте создания DSL'ей большее значение имеет возможность писать код в терминах предметной области, с наиболее простым синтаксисом, и быть похожим такому языку на «человеческий» совсем не обязательно.
Удобство очень важная штука, поэтому в Red стараются работать над ситаксисом.

Удобство — важная штука, но оно ничего не говорит об уровне абстракции.

быть похожим такому языку на «человеческий» совсем не обязательно.

Не обязательно. Собственно, Red и не похож.
Вот здесь готов поспорить: именно синтаксис передает абстракции. Их «уровень» также передается синтаксисом языка(сравните Assembler с Red`ом).
Правда?

Вот вам два разных уровня абстракции: «Петя толкнул Васю» и «материальное тело передало часть энергии другому материальному телу». Синтаксически они идентичны.
Уровни абстракций, действительно, разные, но вот синтаксически эти выражения отнюдь не идентичны. Идентичен смысл, который они передают тому, кто их читает.
Чем они синтаксически отличны? Если вас смущает второе дополнение, так это в рамках синтаксической вариативности. Я могу сделать и полностью синтаксически идентичные предложения, как вы понимаете.
Да я бы не сказал что там высочайший уровень абстракции. Обычная передача объектов, возвращаемых из одной функции, в другую, кое-где лямбды просматриваются, только скобок нет.
И не факт, что отсутствие скобок — преимущество. Да, это похоже на «человеческий язык», зато повышается вероятность случайно написать что-то синтаксически правильное и правильное с точки зрения «человеческого языка», но приводящее совершенно к другому, неожиданному результату.
Лямбды тут на самом деле не используются, то что внутри квадратных скобочек это так называемый блок, который может интерпретироваться в зависимости от контекста. Это во многом похоже на цитирование в лиспе, а лямбда состоит из двух блоков — блок с аргументами и блок с кодом. То есть они, так сказать, даже более первоклассны чем в языках где lambda (или аналог) является ключевым словом.
А напишите обзорную статью по языку, с описанием всех интересных фич. Думаю, многие здесь с удовольствием прочитают, и возможно будет интересная дискуссия:)
Кстати, хорошая идея. Хоть и вероятно, что на все интересные фичи не удастся сделать обзор, но расширить набор многих «киллер-фич» было бы здорово. Не то, что бы все прям-таки рванутся осваивать Red, но для сравнения с популярными высокоуровневыми языками было бы очень познавательно ;)
По самому Red я не смогу написать обзор, он еще развивается, мало собственной документации да и я его лишь немного попробовал (собственно компиляцию и кросс компиляцию), используя скудные знания Rebol. Постараюсь что-то написать к выходу 1.0, в нем обещают уже графику и поддержку сетевого стека, чего будет достаточно для примеров с вау-эффектом.

Этот перевод был больше нацелен на то, чтобы Red появился на радарах у интересующихся людей и при словах Red/Rebol возникали какие-то ассоциации) А может кто-то как раз искал чего бы такого экзотического изучить, или интересовался DSL'ями, DSL для написания DSL'ей (называется parse) это занятнейшая штука, уверяю вас)
В чем киллер-фича этого ЯП?
Ну там С(++) — эффективность, Erlang — акторы/конкурентность, Go — хипстерский С++ с GC, Java — ну понятно… А тут что (кроме нового синтаксиса)? DSL, Lisp-like? А оно практически нужно как самоцель? Если он метит в нишу Lisp, то вряд ли это будет популярным…
За статью спасибо, может быть интересно как пример дизайна/имплементации ЯП.
Основная киллер-фича которую продвигают создатели — это fullstack programming language. То есть не писать низкоуровневые драйвера на C, конкурентность на Erlang, бизнесс-логику на Java/Python, а фронтенд на JS, а писать все на одном языке. Тут надо понимать «на одном языке» не совсем в привычном смысле, потому как для системного программирования предназначен Red/System — это, в терминологии Rebol, диалект, который может, в разной степени, менять синтаксис и семантику языка.

>Если он метит в нишу Lisp

Очень интересно, а где ниша Lisp?)

>А оно практически нужно как самоцель?

Определенное количество людей считает, что возможности DSL'ей практически не раскрыты сегодня. Вот тут www.moserware.com/2008/04/towards-moores-law-software-part-3-of-3.html можно прочитать как Alan Key и сотоварищи сделали парсер протоколов TCP/IP в 200 строк кода. Вкратце они написали парсер-генератор для схем из RFC и по ним сгенерели парсер протокола.
Потенциальная ниша для Lisp-ов огромна. Я бы даже сказал, что он плохо подойдет только для встраиваемых систем с маленькой памятью и систем жесткого реального времени.
Проблема в основном с маленьким количеством разработчиков.
как же мне организовать потоки в этом red?
Поддержка конкурентности запланированна в 0.9, вот-вот будет выпуск 0.6, поэтому пока можно не суетиться по этому поводу.
Зарегистрируйтесь на Хабре , чтобы оставить комментарий

Публикации

Истории