Добрый день всем!
 
Добавлю немного своего мёда в бочку.

Плюсы для меня:
*  Внешняя простота и неизбыточность концепции языка. Нет попытки вместить в 
себя всё сразу. Это даёт лёгкость вхождения. А необходимое можно 
допрограммировать и это может выглядеть весьма органично.
*  Язык не навязывает «технарский» тип мышления в духе программ для 
станка-автомата. Программирование на нём не утомляет, а просветляет голову.
*  Гибкость формы записи. Введение мнемонических идентификаторов может создать 
проблемно-ориентированный диалект для непрограммистов. Важно соблюдать меру.
Что хотелось бы добавить в Рефал:
*  Для расширения круга программистов на Рефале нужен осовремененный стандарт 
языка, включающий
1) UNICODE в основе;
2) Удобный механизм подключения внешних библиотек в духе Githab;
3) Лёгкая интеграция с другими современными технологиями (интернет, базы 
данных);
4) Некоторая корректировка архаичного по нынешним меркам синтаксиса;
*  Возможность ускорения вычислений за счёт использование возможностей 
современного «железа»;
*  Всякие «плюшки» вроде распараллеливания и других крутых штучек можно 
рассматривать только после наступления ясности с результатом «реанимационных 
мероприятий».
Мои идеи:
*  Новая сущность: вместо классического исполнения программы 
«загрузил-выполнил-посмотрел результат» использовать циклическую 
последовательность «запустил-открыл сессию-(1)-загрузил-выполнил-остановил или 
перешел к (1)» с сохранением результата в виде обновлённых функций или 
содержимого копилок или ящиков. Причём эти данные могут быть доступны из других 
сессий в реальном времени. Это было реализовано, но не доделано и оставлено «до 
лучших времён». Возможно, это первоначально навеяно средой исполнения языка  
Forth. Мысль зародилась примерно в в 2017 году, но пока она неспешно 
развивалась, ушлые люди создали GhatGPT и теперь догонять их «по прямой» мало 
реально.
*  Реализация Рефала внутри совершенно другой языковой среды средствами этой 
среды. Например golang или sql. Это снимает весьма болезненный вопрос 
встраивания функционала Рефала в различные сложносочинённые приложения.
*  Рефал может быть использован для конструирования и контроля нейронных сетей. 
Фактически это технология альтернативная нейронкам и отвечающая обозначившимся 
потребностям как раз в их контроле.
Мои выводы:
*  Нынче серьёзный проект не запустить малыми силами одиночек, нужно или 
объединение единомышленников с взаимной ответственностью, либо изыскание 
средств со всеми вытекающими проблемами. На меня произвел большое впечатление 
объём вложений в нейронки ведущими компаниями. Даже если сделать что-то лучшее, 
убивая своё здоровье вечерами, этого просто почти никто в мире не заметит.
*  С учётом реалий, сам Рефал обществу не интересен, нужны приложения, которые 
реализовать другими средствами невозможно или сильно затруднительно. И при 
наличии достаточного количества относительно новых языков с очень неплохими 
возможностями, нельзя не оценивать их конкурентные перспективы.
*  Что касается меня, мне Рефал нравится и я не имею желания приспосабливать 
другой, даже бесплатно полученный из Америки или откуда ещё, язык к нуждам 
России. Очень надеюсь ещё поработать на нём и радостью бы принял посильное 
участие в формировании нормального продукта, соответствующего времени. 
>Вторник, 5 ноября 2024, 16:22 +03:00 от Александр Коновалов 
>a.v.konovalov87_AT_mail.ru <[email protected]>:
> 
>Добрый день!  
>Предлагаю порассуждать на тему применимости Рефала сегодня :  какие у него 
>могут быть преимущества перед другими языками и как ими можно воспользоваться. 
> 
>Я могу выделить следующие черты Рефала :
>* 
>динамически типизированный с закрытым набором типов — есть ограниченный набор 
>встроенных типов данных, пользовательские типы конструируются на уровне 
>соглашений (исключение: пара моих реализаций, где есть инкапуслирующие 
>квадратные скобки — небесспорное расширение) — примерно та же ситуация, что и 
>в классической Scheme;
>* 
>мощное сопоставление с образцом — сопоставлением с образцом сейчас уже никого 
>не удивишь, оно есть даже в Питоне (начиная с версии 3.10 или 3.11, и тоже 
>довольно выразительное), но есть две достаточно редкие черты:
>* 
>повторные переменные, и соответственно, встроенное в язык понятие равенства 
>(однако, есть в Racket и есть в Scala),
>* 
>поиск в середине последовательности по образцу «e.X PAT e.Y», аналогичная 
>возможность есть только в  Tom  (предназначен для работы с XML и вообще 
>удивительно похож на Рефал);
>* 
>встроенная в семантику конкатенация — в результатных выражениях она 
>записывается пустым местом, в других языках синтаксис конкатенации более 
>многословный,
>* 
>симметричный доступ к обоим концам последовательности в образцах — в 
>большинстве функциональных языков встроенными (основными) последовательностями 
>являются однонаправленные списки и образцы допускают обращение только слева, 
>исключения — Scala, где есть « :+»  и «+ :»,  сопоставление с эллипсисом в 
>макросах Scheme и образцах Racket, образцы в Python, но там списки — массивы,
>* 
>возврат из функции нескольких значений столь же (не)естественнен, как и 
>передача нескольких аргументов.  
>Подытоживая, Рефал — динамически типизированный функциональный язык с 
>выразительным сопоставлением с образцом, позволяющий удобно преобразовывать 
>иерархические данные, например, синтаксические деревья. И сами данные, и их 
>сопоставление с образцом, и построение новых значений записываются без лишнего 
>синтаксического шума, т.е. всевозможных запятых, значков «+», «++», «+ :»  и 
>прочих. Благодаря динамической типизации, он годится для быстрого написания 
>небольших программ, выполняющих символьные вычисления. Но с другой стороны, 
>написание крупных программ, разрабатываемых коллективами затрудняется: типы 
>всё равно придётся определять и документировать, что для Рефала, как правило, 
>делается комментариями с грамматикой для объектных выражений.  
>Я пока нашёл только одну сферу, где Рефал неплох и абсолютно уместен — рабочий 
>язык для небольшого курса, посвящённого генерации кода. Студенты пишут 
>программы, принимающие на входе синтаксическое дерево, и порождающие код для 
>модельного ассемблера. Пример синтаксического дерева:
>(function gcd (x y)
>  (var (rem 1))
>  (while ((L y) "<>" 0)
>    (rem "=" ((L x) "%" (L y)))
>    (x "=" (L y))
>    (y "=" (L rem))
>  )
>  (return (L x))
>)
>Синтаксическое дерево одновременно выглядит как код на ЯП и одновременно 
>машиночитаемо — это просто запись объектного выражения Рефала-5. Синтаксис 
>Рефала и основные приёмы программирования можно рассказать за две пары, а 
>затем уже студенты могут писать компиляторы для подобных программ в рамках 
>домашних работ. Более подходящего языка для этого курса я не вижу.  
>Других применений, где Рефал уместнее других языков программирования, я пока 
>не встречал. А вы?  
>Где ещё Рефал может быть уместнее других языков программирования?  
>С уважением,
>Александр Коновалов 
 
 
С уважением,
Александр Гусев
[email protected]
 
  • Сф... Александр Коновалов a . v . konovalov87_AT_mail . ru
    • ... Arkady Klimov arkady . klimov_AT_gmail . com
      • ... Александр Коновалов a . v . konovalov87_AT_mail . ru
    • ... Mike Potanin mpotanin_AT_gmail . com
      • ... Александр Коновалов a . v . konovalov87_AT_mail . ru
    • ... Александр Гусев gusev_aleksandr_AT_mail . ru
      • ... Александр Коновалов a . v . konovalov87_AT_mail . ru

Ответить