LINUX.ORG.RU

Red 0.6.3

 ,


4

6

Red — императивный функциональный язык программирования, представленный в 2011 году французским программистом Ненадом Ракоцевичем. Его синтаксис унаследован от интерпретируемого языка REBOL.

Цель создания Red — преодоление ограничений REBOL. По словам создателя, Red является «языком полного стека».

Red может использоваться как для высокоуровневого предметно-ориентированного программирования и создания графических интерфейсов, так и для низкоуровневого программирования операционных систем и драйверов.Его основные черты: простой синтаксис, гомоиконность, система макросов, статическая и JIT-компиляция, кросс-компиляция, малый размер исполняемых файлов (при отсутствии внешних зависимостей), REPL, возможность использовать как встраиваемый язык.

Данный релиз содержит порядка 800 исправлений и закрывает 86 задач. Одна из основных новостей — поддержка GUI под macOS с помощью нового бэкенда (что делает GUI полностью кросс-платформенным). Также можно отметить появление типа данных date!, расширения IO API, обновления LibRed.

>>> Подробности

★★★

Проверено: jollheef ()
Последнее исправление: sudopacman (всего исправлений: 4)

малый размер исполняемых файлов(при отсутствии внешних зависимостей)

То есть умеет в нативную компиляцию, я правильно понял?

anonymous
()
Ответ на: комментарий от pftBest

Слово «наверное» освобождает от необходимости давать пруфы (наверное).

anonymous
()
Ответ на: комментарий от batya

Шо? Одновременно? Втф?

Щаз для этого есть модное слово «мультипарадигменный», я даже удивлён, что ТС его в новость не вставил.

anonymous
()
Ответ на: комментарий от Romaboy

GTK бекенд на линуксе не готов, ждем пока команда реда поставит его в приоритет или кто-то из сообщества возьмется за него.

Про x64 уже отвечал - все будет, но, к сожалению, не сразу.

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

А он умеет конпилироваться в жаваскрипт?

В ЖС возможно и не будет компилиться, у них есть план компилить в веб ассемблер.

loz ★★★★★
()
Последнее исправление: loz (всего исправлений: 1)
Ответ на: комментарий от anonymous

Как он в сравнении с Erlang? (На последнем даже обработку больших сетевых потоковых данных пишут и нахваливают, если что.)

Если что эрланг для этого и создавался :)

В сравнении - два очень разных языка, параллельность это основное свойство эрланга, пока в реде этого нет трудно сравнивать их.

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

И вот еще немного инфы:

What does the `-no-runtime` option do?

It does not include the Red/System runtime when compiling the source.
It should be compilable but the executable will not run on Linux.
The Red/System runtime is required for the program to communicate with the operating system. If you don't include it, your program must communicate directly with the OS.
I believe the --no-runtime option is intended to compile programs for «minimal» environments such as Arduino.

loz ★★★★★
()

французским программистом Ненадом Ракоцевичем.

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

Sociopsih ★☆
()

Хорошее, годное поделие

Отвлекает на себя массу кулькакеров (с шизоидным расстройством личности), которые иначе бы мешались в серьезных конторах.

Bioreactor ★★★★★
()

тред нечитал. Оно все еще требует ребол для сборки?

anonymous
()
Ответ на: Хорошее, годное поделие от Bioreactor

Может я и с расстройством, но вообще присматривался из-за простоты гуистроительства. Гуистроительство нынче в кризисе жанра. Хочется простого и реально кроссплатформенного и одним блобом.

anonymous
()

Нужно больше золота языков программирования.

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

Red - ИМХО на втором месте после R из LISP'ерских языков по степени удобства и читабельности. Очень интересный язык, но как у многих подобных начинаний - ему не хватает ресурсов для разработки: в частности GUI у него никакое не кроссплатформенное и при всё своём изяществе работает только под оффтопиком.

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

Иисус на ЛОРе?

Уже нет. Он был забанен за наши грехи.

anonymous
()
Ответ на: комментарий от loz

Ну вот в том-то и дело, что с такими темпами развития язык мало кому нужен. REBOL уже давно не, Red ещё совсем не. А тем временем инфраструктура Питона и Явы растёт во вселенских уже масштабах.

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

Решение давно есть — Lazarus. Нативная компиляция с оптимизациями, отличный очень простой ГУЙ, статическая компановка.

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

Всегда емть некоторый минимум, которого оказывается достаточно при хорошем построении самого языка. Тот же Питон ни разу не годился изначально для научных расчётов. Но после создания numpy процесс пошёл необратимо.

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

ну можно взять классику - тот же dhrystone. скомпилить на gcc с -О3 и march=native, и переписать на red.

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

Но после создания numpy процесс пошёл необратимо.

Если не ошибаюсь, numpy и scipy - обертки над нормальным кодом на си-шечки да фортране?

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

В значительной степени да. Но это не отменяет удобства их дизайна.

Vudod ★★★★★
()

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

PS лисп машины уже были https://en.wikipedia.org/wiki/Symbolics

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

Хочется простого и реально кроссплатформенного и одним блобом.

Racket. Точнее racket/gui.

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

Это правда, но какое это имеет значение? Главное что есть либа на питоне для удобной и быстрой работы с матаном.

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

Такой ends-with немножко не очень, ибо полное сканирование, когда можно было бы (если это, конечно, нормальная строка, а не Сцешный нуль-терминированный буфер) просто посмотреть длину, а потом сравнить с окончанием если хватает длины.

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

Ты прав, так лучше :)

>> ends-with: func [s1 s2] [
    if (length? s1) >= (length? s2) [
     s2 = at s1 1 + (length? s1) - (length? s2)
    ]
   ]
loz ★★★★★
()
Ответ на: комментарий от dnb

Пока в нем рудиментарный апи который делает http запросы curl-ом. Полноценный IO пилят к следующей версии.

>> parse read http://linux.org.ru [collect [skip thru "<title>" keep to "</title>"]]
== ["LINUX.ORG.RU - Русская информация об ОС Linux"]
loz ★★★★★
()
Последнее исправление: loz (всего исправлений: 1)
Ответ на: комментарий от loz

А, точно) А можно хотя бы приблизительно спрогнозировать дату следующего релиза? И как собрать именно компилятор с исходников? А то как-то некошерно брать готовые бинари, а компилируется без -c.

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

Что конкретно ты под этим подразумеваешь?

Суперкомпиляция, специализация программ методом частичных вычислений. Например вот: http://keldysh.ru/papers/2008/prep12/prep2008_12.html#_Toc193602742

Предположим есть код вида

if (x == 5)
  foo(a, x)
else
  foo(a, x+1)
и у нас по статистике условие x == 5 срабатывает чрезвычайно часто, то тогда можно функцию foo специализировать в одном случае, и будет:
if (x == 5)
  foo5(a)
else
  foo(a, x+1)

Или даже еще лучше

char a[300];
scanf (a[0...299]);
char a1_sorted[300] ATTRIBUTE(...)
char a2_sorted[300] ATTRIBUTE(...)
qsort(a, a1_sorted);
bubble_sort(a, a2_sorted);
if(a1_sorted == a2_sorted) // тут компилятор эту проверку должен вообще выкинуть, оставив только printf("ok, good!");
  printf("ok, good!");
else
  printf("impossible");
т.е. если компилятору можно дать инфу что qsort и bubble_sort дают одинаковый результат(или если компилятор может логически доказать, что сортировка и та и другая для всех возможных входных данных дает одинаковый результат через символьные вычисления над кодом (логика Хоара)), то компилятор может куски кода выкинуть нафиг, которые невозможны. И тогда от всего кода может остаться только scanf (a[0...299]); и printf("ok, good!");. И притом этот scanf (a[0...299]); может быть тоже заспециализирован(оптимизирован) таким образом, что ничего не будет записывать в память, т.е. просто повторять наблюдаемое поведения (пользователь вводит какие-то там цифры, программа их типа читает), но реально никуда никакие числа в память заноситься не будут, и массива char a[300]; самого не будет.

SZT ★★★★★
()
Последнее исправление: SZT (всего исправлений: 1)
Ответ на: комментарий от anonymous

Я и на сях могу в функциональном стиле писать, однако язык должен позволять это делать без пердолинга.

batya
()
Ответ на: комментарий от SZT

И да, синтаксис наверное как раз таки надо делать скобочковый, как в лиспах, над синтаксисом пока думаю

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

Так Тьюринг-полный язык программирования же. Вот если уже взять какой-то idris или еще что подобное с total functional programming то оно уже не Тьюринг-полное (хотя в Idris сие лишь строгая, но рекомендация). Но, по крайней мере, idris pac-man complete. Хотя некоторые возможности к системному программированию есть. А тут тем более не вижу трудностей, тем более есть же Red/System в котором есть указатели.

мимо наркоман

anonymous
()
Ответ на: комментарий от monk

1995: увы - на работе пишу на C++ и из этой колеи нет выхода
2005: увы - на работе пишу на Java и из этой колеи нет выхода
2017: увы - на работе пишу на C# и из этой колеи нет выхода
2025: увы - на работе пишу на ???

На Ди, конечно! :))))))))))))))))))))))

Я понимаю, что вы хотели сказать, но вы же чувствуете разницу между 1995 и 2015-ым! «Тогда» было время панков, свободы, авангарда, десятки языков и даже какая-то видимость борьбы между операционками (SCO, OS/2, Netware, FreeBSD, Solaris - помните ещё? ). Сейчас таких прыжков, какой сделал C#, уже не сделать. Это как профессиональный спорт: до опр. времени рекорды прыжков в высоту шли десятками сантиметров. Сейчас - хоть миллиметрами повышай. :) Это оно - предел насыщения, количество в качество, шелуха отсеялась и сейчас я не поставлю и Яги на какой-нибудь ЛИСП или Смоллток, хотя технически уважаю эти языки.

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

C# как язык как по мне вообще ниочем. Вот может быть наваяю какой-нибудь прототип своего принципиально нового языка на s-expression, и посмотрим, кто на чем будет писать :)))))))))))))))

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

Зачем ты это пишешь, если не слова не понял.

REPL это бейсик, да.

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

parse кстати может быти и интересно для ПРАКТИЧЕСКОГО применения, несмотря на наркоманский синтаксис основной части языка (когда я читать о parse N лет назад в реболе, я просто не понял — по-моему, там оно ужасно было описано)

>> parse read http://linux.org.ru [collect [skip thru "<title>" keep to "</title>"]]
== ["LINUX.ORG.RU - Русская информация об ОС Linux"]

а как будет выглядеть парсер, приближенный к настоящему?

т.е.:

1. все от тега <script> до </script> надо пропустить

2. внутри кавычек должен быть другой контекст, т.е. должен нормально парситься код вида

<img src="picture1.jpg" alt="<title>">тут точно не тайтл<img src="picture2.jpg" alt="</title>">
<img src='picture1.jpg' alt='<title>'>и тут точно не тайтл<img src="picture2.jpg" alt="</title>">

короче: им хтмл таки можно парсить, или еще нет?

www_linux_org_ru ★★★★★
()
Последнее исправление: www_linux_org_ru (всего исправлений: 5)
Ответ на: комментарий от SZT

описание фич у тебя хорошее, хотя и немного неполное

вот только объясни мне пожалуйста, зачем гомоиконность нужна при наличии ССВ над своим кодом? т.е. чем ее отсутствие сделает ССВ хуже?

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

сейчас уже не актуально. Го уже отлично себя чувствует в ИТ

Блажен, кто верует.
Я же не зря описал всё то, что входит в понятие «широко принятый язык». То, что есть десяток маргиналов, готовых переписывать Линукс на Го, не означает вообще ничего - пыль под ногами. Язык должен быть принят мэйнстримом, без него языку кранты. Попишут, повыпендриваются пару-пяток лет, потом придут профессионалы и перепишут всё на С++. :) Это реально.

Тут ведь не надо забывать даже чисто человеческий фактор ЛЕНЬ. Вот ты вложил кучу сил в изучение Си. И есть работа на Си. (это важно) Есть море книг, ответов в тырнетах. Ты будешь тратить время на какую-нибудь Полихрень-2.0? Ты на нём(языке) даже окна с кнопкой не сделаешь, пока не потратишь время. Причём без гарантии того, что этот язык действительно достоин существования. А потом окажется, что доки - неполные, компилятор - багнутый и плохо оптимизирующий, локализация хромает, сетевая либа - плохого качества (а ложкой дёгтя можно испортить всю бочку мёда).... вот ЭТО ВСЁ - риски. Думаешь, бизнесмен будет вкладывать в этот «смелый экскремент» хоть копейку? А бизнес - это и есть те ребята, благодаря которым язык вообще может существовать.

Да, C# далеко не везде, но там, где он есть - их легион. Это сила. За ними стоит бизнес. Если завтра вылезет «суперязык», никто даже бровью не поведёт, ибо бизнес уже вложился в целую инфраструктуру и менять ничего не будет.
Вот когда ты сам заведёшь бизнес, когда купишь хотя бы лицензию на венду и студию, ты сразу почувствуешь, как из тебя выдувает «дух новатора» и влезает мелкий скупердяй, желающий получить рубль с каждой вложенной копейки. :) Образно, конечно, но суть точна.

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

Так Тьюринг-полный язык программирования же.

brainfuck тоже тьюринг полный, но на нем ядро не напишешь.

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

C# как язык как по мне вообще ниочем.

Ты такой смешной... ты думаешь языки изобретают, чтобы какой-то ЛОРовский «иксперд» сказал «Уважуха!»?? :)
Язык с прицелом на мэйнстрим должен быть:
1. Сопровождаемым. Вот самый первый фактор, выше всего, что ты мог себе представить! Просто умри, но код на этом языке должен читаться, модифицироваться, быть совместимым, легко переносимым (реюзабельным, слабо связанным), и т.п.

В этом плане C# превосходен - если какой-нть яйцеголовый не понапишет десятикратно вложенных лямбд, код всегда будет простой. Не всегда можно понять алгоритм, но всегда можно понять код.
Это «о чём». Что лично ты не нашёл в языке - никому не интересно, потому что мэйнстрим его уже принял и поддерживает.

Можно взять даже ЛИСП, который конечно же стократ мощнее C#. А тепеь перечитай первый пункт и подумай, в какое путешествеие тебя отправит бизнес, если ты придёшь к нему вот с этим «скобочным ужасом». Или «s-expression"ами. Или функциональщиной. Много вас, изобретателей, а задача - одна и сделать её надо было ещё вчера.

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

вот только объясни мне пожалуйста, зачем гомоиконность нужна при наличии ССВ над своим кодом?

Ну а как производить символьные вычисления над собственным кодом, если сам код не является данными, не представлен в такой форме, чтобы программисту было понятно, как его трансформировать другим кодом на этом же языке? Чтобы код отражал AST

SZT ★★★★★
()
Последнее исправление: SZT (всего исправлений: 1)
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.