The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]



"В июне в Переславле-Залесском состоится конференция 'СПО в высшей школе'"
Вариант для распечатки  
Пред. тема | След. тема 
Форум Разговоры, обсуждение новостей
Изначальное сообщение [ Отслеживать ]

"В июне в Переславле-Залесском состоится конференция 'СПО в высшей школе'"  +/
Сообщение от opennews (??), 27-Май-24, 21:46 
В Переславле-Залесском состоится XIX конференция "Свободное программное обеспечение в высшей школе" (OSEDUCONF-2024), которая  пройдёт 28 - 30 июня 2024 года в Институте программных систем РАН. В конференции примут участие представители образовательного сообщества, использующие или создающие свободное ПО в учебном или научном процессе. Основной целью является налаживание личных контактов между специалистами, обсуждение перспектив и новинок области...

Подробнее: https://www.opennet.dev/opennews/art.shtml?num=61252

Ответить | Правка | Cообщить модератору

Оглавление

Сообщения [Сортировка по времени | RSS]


3. "В июне в Переславле-Залесском состоится конференция СПО в вы..."  +10 +/
Сообщение от Аноним (3), 27-Май-24, 21:55 
Почему-то такой серьёзный организатор, а пива и метания клавиатур не обещают.
Ответить | Правка | Наверх | Cообщить модератору

190. "В июне в Переславле-Залесском состоится конференция СПО в вы..."  +/
Сообщение от Аноним (190), 30-Май-24, 20:49 
Может, тебе ещё Эрику из торта?? :))
Ответить | Правка | Наверх | Cообщить модератору

4. "В июне в Переславле-Залесском состоится конференция СПО в вы..."  +5 +/
Сообщение от Аноним (4), 27-Май-24, 21:58 
>Социальные и экономико-правовые особенности

https://www.interfax.ru/russia/956440

Ответить | Правка | Наверх | Cообщить модератору

5. "В июне в Переславле-Залесском состоится конференция СПО в вы..."  –4 +/
Сообщение от Аноним (5), 27-Май-24, 22:52 
Компания Microsoft активно работает над тем, чтобы такие планы появились.
Ответить | Правка | Наверх | Cообщить модератору

28. "В июне в Переславле-Залесском состоится конференция СПО в вы..."  –4 +/
Сообщение от Аноним (28), 28-Май-24, 09:44 
Причем тут это? Статья и конференция о СПО.
Ответить | Правка | К родителю #4 | Наверх | Cообщить модератору

38. "В июне в Переславле-Залесском состоится конференция СПО в вы..."  +4 +/
Сообщение от Аноним (4), 28-Май-24, 10:49 
>Статья и конференция о СПО

Статья как раз о бизнесе на сотни млн., но про которые запретили говорить на этой конференции.
https://www.kommersant.ru/doc/6238455

Ответить | Правка | Наверх | Cообщить модератору

80. "В июне в Переславле-Залесском состоится конференция СПО в вы..."  +/
Сообщение от Аноним (80), 28-Май-24, 14:07 
Конференция о ПО для отрасли, из которой рождаются инновации для бизнеса.

Коммерческие применения возникают после того, как эта отрасль что-либо создаст. Топовые коммерсы - потребители результата Высшей школы. Глядя на MS, Apple, Android: в коммерческих проектах развитие подавлено патентованием и закрытостью участия.

Наука и инновации развиваются и дают результат при обмене знаниями и инструментами. А внутри коммерческих контор с их ограничениями развитие медленнее. Потому: коммерсы - лишние в Высшей школе. Пусть платят за учёбу будущих сотрудников в ВШ, и студенты окупятся на производстве.

Ответить | Правка | Наверх | Cообщить модератору

100. "В июне в Переславле-Залесском состоится конференция СПО в вы..."  +2 +/
Сообщение от n00by (ok), 28-Май-24, 15:08 
Microsoft не обеспечивает поддержку на территории России, но при этом гарантирует достаточную стабильность API. Отсюда и ответ на вопрос "под какую ОС писать ПО" достаточно предсказуем.
Ответить | Правка | К родителю #38 | Наверх | Cообщить модератору

7. "В июне в Переславле-Залесском состоится конференция СПО в вы..."  +/
Сообщение от Avririon (ok), 28-Май-24, 00:01 
Столько названий у "Как переименовать Debian и назвать отечественной разработкой".
Ответить | Правка | Наверх | Cообщить модератору

10. "В июне в Переславле-Залесском состоится конференция СПО в вы..."  +/
Сообщение от Аноним (10), 28-Май-24, 01:04 
Почему только дебиан? Создатели RedOS и Росы смотрят с искренним недоумением.
Ответить | Правка | Наверх | Cообщить модератору

20. "В июне в Переславле-Залесском состоится конференция СПО в вы..."  +2 +/
Сообщение от AleksK (ok), 28-Май-24, 08:59 
Как переименовать убунту в зорин ос и продать её за 40 евро. Или Это другое? Астра хотябы свое DE предлагает в отличие от. А Альт и Роса вообще имеют собственную пакетную базу, свою инфраструктуру сборки.
Ответить | Правка | К родителю #7 | Наверх | Cообщить модератору

33. "В июне в Переславле-Залесском состоится конференция СПО в вы..."  –1 +/
Сообщение от n00by (ok), 28-Май-24, 10:13 
А что даёт "пакетная база" и "инфраструктура сборки"? Какое это вообще имеет отношение к проектированию, написанию исходных текстов и тестированию авторами -- то есть созданию программного обеспечения?
Ответить | Правка | Наверх | Cообщить модератору

40. "В июне в Переславле-Залесском состоится конференция СПО в вы..."  +/
Сообщение от AleksK (ok), 28-Май-24, 10:56 
> А что даёт "пакетная база" и "инфраструктура сборки"? Какое это вообще имеет
> отношение к проектированию, написанию исходных текстов и тестированию авторами -- то
> есть созданию программного обеспечения?

Ну так посиди на каком-нибудь Linux From Scratch. Авторы программ уже все сделали, оттестировали, исходники выложили. Пользуйся. Не хочешь?

Ответить | Правка | Наверх | Cообщить модератору

45. "В июне в Переславле-Залесском состоится конференция СПО в вы..."  +/
Сообщение от n00by (ok), 28-Май-24, 11:08 
Я хочу увидеть ответ на простой и понятный вопрос, а не демагогию. Посижу тем временем на специально для того предназначенной мебели.
Ответить | Правка | Наверх | Cообщить модератору

46. "В июне в Переславле-Залесском состоится конференция СПО в вы..."  +1 +/
Сообщение от AleksK (ok), 28-Май-24, 11:15 
> Я хочу увидеть ответ на простой и понятный вопрос, а не демагогию.
> Посижу тем временем на специально для того предназначенной мебели.

То есть сам ты собирать систему и софт не хочешь? Тогда какие претензии к СПО Базальт? Они это делают за тебя, и лично с тебя за это ничего не просят. Дистрибутив самостоятельный? Ни на чем не основан? Пакеты у родителя не тырит? Самостоятельный, не основан, пакеты не тырит. Какие у тебя ещё вопросы? Они не авторы всего софта в дистрибутиве? Так нет ни одного дистрибутива который не использует сторонний софт. Все дистрибутивы занимаются просто сборкой разного софта.

Ответить | Правка | Наверх | Cообщить модератору

82. "В июне в Переславле-Залесском состоится конференция СПО в вы..."  +/
Сообщение от n00by (ok), 28-Май-24, 14:09 
>> Я хочу увидеть ответ на простой и понятный вопрос, а не демагогию.
>> Посижу тем временем на специально для того предназначенной мебели.
> То есть сам ты собирать систему и софт не хочешь?

Я хочу увидеть внятный ответ на вопрос: что даёт "пакетная база" и "инфраструктура сборки"? Ответом можно считать "дают то-то и то-то".

Система и софт у меня собирается без проблем.

Проблемы начинаются, когда мне надо собрать свой софт. Например https://github.com/STrusov/plasma-browser-integration-glib
Там есть и spec как раз для Alt, и ebuild для Gentoo.
Во втором случае я добавляю ebuild в свой оверлей, и оно всё само собирается.
В первом случае мне надо сначала три раза присесть, собрав вручную - для проверки. Потом сказать три раза "ку", что бы это добавить в "собственную пакетную базу". После этого оно начнёт где-то там собираться и устанавливаться. Как видно, в моём случае оно даёт лишь головную боль и зависимость.

> Тогда какие претензии к СПО Базальт?

Поскольку ты сам придумал какие-то претензии, то и отвечать на этот вопрос - тебе.

> Дистрибутив самостоятельный?

Что бы узнать ответ, следует перевести "дистрибутив" на русский язык. Естественно, нет, как и все _распространители_. Зависит от владельцев франшизы, главным образом от RedHat. Если бы мне нужна была "пакетная база", проще всего было бы использовать непосредственно от создателя GNU/Linux, как наиболее совместимую со всей массой софта. И не надо сказок про "санкции", зеркал достаточно. Пусть эти сказки рассказывают одновременно с "мы будем поддерживать Qt ещё 10 лет, ведь git репозиторий не забанили!"

Ответить | Правка | Наверх | Cообщить модератору

106. "В июне в Переславле-Залесском состоится конференция СПО в вы..."  +/
Сообщение от AleksK (ok), 28-Май-24, 16:11 
Я уже понял что кто-то из альтовцев тебе какал на коврик перед дверью и писал в чай, возможно сам Шигорин.
Так что твои претензии в основном необоснованные больше похожи на личную неприязнь. И чем альт зависит от красношляпы вот вообще непонятно. Они используют rpm вот и вся "зависимость". У красношляпы монополия на rpm? Даже гном тут обновляется раньше чем в Федоре.
Ответить | Правка | Наверх | Cообщить модератору

111. "В июне в Переславле-Залесском состоится конференция СПО в вы..."  +/
Сообщение от n00by (ok), 28-Май-24, 17:57 
Примечательно, что когда нечего ответить по существу, начинаются вот такие проекции. Я надеюсь, сам Шигорин прочитает, что он сделал с дверью и чаем, по мнению активного пользователя.

Но остался один вопрос: ты пользователь, кого купили, подарив лицуху за 10 т.р, или ты программист, который не понимает, что такое исходные тексты и каким чудом они появляются?

Ответить | Правка | Наверх | Cообщить модератору

123. "В июне в Переславле-Залесском состоится конференция СПО в вы..."  +/
Сообщение от AleksK (ok), 28-Май-24, 19:21 
Я пользователь ximper linux. Знаешь что это такое? Абсолютно бесплатный ролинг на базе сизифа только с официальной поддержкой гнома. И он для меня по многим параметрам лучше федоры. А Федора сейчас имхо один из лучших дистрибутивов для дома. Так что они мне абсолютно бесплатно сделали отличный дистрибутив.
А на счёт исходных кодов я отлично знаю откуда они появляются, но они часто бывают бесполезны если кто-то из них не собрал пакет для нужного дистрибутива.
Ответить | Правка | Наверх | Cообщить модератору

133. "В июне в Переславле-Залесском состоится конференция СПО в вы..."  +/
Сообщение от Аноним (-), 29-Май-24, 09:09 
>А на счёт исходных кодов я отлично знаю откуда они появляются, но они часто бывают бесполезны если кто-то из них не собрал пакет для нужного дистрибутива.

Ох уж эти сакральные умения ./configure; make; make install

Ответить | Правка | Наверх | Cообщить модератору

137. "В июне в Переславле-Залесском состоится конференция СПО в вы..."  +/
Сообщение от AleksK (ok), 29-Май-24, 09:41 
> Ох уж эти сакральные умения ./configure; make; make install

Да только в итоге получится что систему надо превратить в помойку с гигабайтами ненужных dev либ чтобы собрать пару небольших проектов. И то далеко не всегда получится собрать без проблем. Оно мне надо?

Ответить | Правка | Наверх | Cообщить модератору

170. "В июне в Переславле-Залесском состоится конференция СПО в вы..."  +/
Сообщение от AleksK (ok), 30-Май-24, 10:11 
> Ясно.

Ещё один пользователь LFS? Не? Зачем такому спецу дистрибутивы вообще?

Ответить | Правка | Наверх | Cообщить модератору

150. "В июне в Переславле-Залесском состоится конференция СПО в вы..."  +/
Сообщение от n00by (ok), 29-Май-24, 17:16 
> Я пользователь ximper linux. Знаешь что это такое?

Я не знаю, как это связанно с ответом на мой исходный вопрос. Но мотивация ясна как день.

Ответить | Правка | К родителю #123 | Наверх | Cообщить модератору

157. "В июне в Переславле-Залесском состоится конференция СПО в вы..."  +/
Сообщение от AleksK (ok), 29-Май-24, 20:02 
Значит ты не умеешь читать.
Ответить | Правка | Наверх | Cообщить модератору

159. "В июне в Переславле-Залесском состоится конференция СПО в вы..."  +/
Сообщение от n00by (ok), 30-Май-24, 04:30 
> Значит ты не умеешь читать.

Значит, ты не умеешь писать. Не считая предыдущего, в ответ на мой вопрос "что даёт..." ты написал 3 (три) сообщения. Вместо прямого ответа с указанием преимуществ "собственной пакетной базы" они содержали посредственную риторику, ставящую своей целью что-то мне доказать.

Совершенно естественно, что, увидев в начале 4-го ответа унылую манипуляцию "Знаешь что это такое?" я прекратил чтение. Части ответа "пользователь" вполне достаточно для объяснения, почему вместо ответа шла демагогия: тебя купили дарёной лицензией.

Ответить | Правка | Наверх | Cообщить модератору

171. "В июне в Переславле-Залесском состоится конференция СПО в вы..."  +1 +/
Сообщение от AleksK (ok), 30-Май-24, 10:22 
> Значит, ты не умеешь писать.

Ты не дал внятного обоснования ни одной своей претензии. А ещё обвиняешь меня в том что меня "подкупили". Да "подкупили" отличным дистрибутивом, на котором я могу и работать и играть. И да это не очередная стотысячная убунта с нескучными обоями, это самостоятельный дистрибутив, который исторически вышел из мандрейка, но от мандрейка тут давно уже ничего не осталось да и сам мандрейк давно помер.

Ответить | Правка | К родителю #159 | Наверх | Cообщить модератору

172. "В июне в Переславле-Залесском состоится конференция СПО в вы..."  +/
Сообщение от n00by (ok), 30-Май-24, 11:42 
>> Значит, ты не умеешь писать.
> Ты не дал внятного обоснования ни одной своей претензии.

То есть ты и читать не умеешь.

Ещё раз перечитай моё сообщение №33: А что даёт "пакетная база" и "инфраструктура сборки"?

Это вопрос, а не претензия. Я повторял его три раза. Ответа на него я уже не жду. Понятно, что ничего толком не даёт, и из этого факта очень хочется как-то выкрутиться.

Ответить | Правка | К родителю #171 | Наверх | Cообщить модератору

173. "В июне в Переславле-Залесском состоится конференция СПО в вы..."  +/
Сообщение от AleksK (ok), 30-Май-24, 11:52 
> А что даёт "пакетная база" и "инфраструктура сборки"?

А разве это не очевидно? Дает самостоятельный дистрибутив. Мало того у них свой уникальный менеджер пакетов.

Ответить | Правка | К родителю #172 | Наверх | Cообщить модератору

175. "В июне в Переславле-Залесском состоится конференция СПО в вы..."  +/
Сообщение от n00by (ok), 30-Май-24, 12:05 
>> А что даёт "пакетная база" и "инфраструктура сборки"?
> А разве это не очевидно?

Нет, это не очевидно.

> Дает самостоятельный дистрибутив.

Очевидно, что это написано без понимания смысла слов. Дистрибутив - это распространение. Распространение не может быть самостоятельным. Оно всегда зависит от поставщика, у которого дистрибутор берёт распространяемое. В случае дистрибутивов - это исходники для сборки пакетиков. В ГОСТ все эти "майнтейнервы" так и названы - сборщики.

Ответить | Правка | К родителю #173 | Наверх | Cообщить модератору

176. "В июне в Переславле-Залесском состоится конференция СПО в вы..."  +/
Сообщение от AleksK (ok), 30-Май-24, 12:25 
> Очевидно, что это написано без понимания смысла слов. Дистрибутив - это распространение.
> Распространение не может быть самостоятельным. Оно всегда зависит от поставщика, у
> которого дистрибутор берёт распространяемое. В случае дистрибутивов - это исходники для
> сборки пакетиков. В ГОСТ все эти "майнтейнервы" так и названы -
> сборщики.

Ты решил попридираться к терминам? Любой дистрибутив это комплект собранного софта. Только большинство дистрибутивов основано на других дистрибутивах и полностью от них зависят.

Давай я тогда назову Альт одним из корневых дистрибутивов. Такое определение тебя устроит?

Ответить | Правка | К родителю #175 | Наверх | Cообщить модератору

196. "В июне в Переславле-Залесском состоится конференция СПО в вы..."  +/
Сообщение от n00by (ok), 31-Май-24, 12:17 
>> Очевидно, что это написано без понимания смысла слов. Дистрибутив - это распространение.
>> Распространение не может быть самостоятельным. Оно всегда зависит от поставщика, у
>> которого дистрибутор берёт распространяемое. В случае дистрибутивов - это исходники для
>> сборки пакетиков. В ГОСТ все эти "майнтейнервы" так и названы -
>> сборщики.
> Ты решил попридираться к терминам?

Я решил, что типапатриотам пора начать уважать русский язык и хватит пудрить мозг обывателю заумными словечками, обесценивая труд программистов. Покупатель авто вполне понимает, чем отличается сборка от собственного производства комплектующих, на этом основании делает выбор. Франчайзи GNU/Linux ведь догадываются, что занимаются не производством, а дистрибуцией, потому и не продают частникам - по ЗоЗПП примутся возвращать за недостоверную информацию о товаре.

> Любой дистрибутив это комплект собранного софта. Только
> большинство дистрибутивов основано на других дистрибутивах и полностью от них зависят.

"Все так делают, потому и я тут справил нужду" (ц).

> Давай я тогда назову Альт одним из корневых дистрибутивов. Такое определение тебя
> устроит?

Меня устроит определение, не искажающее суть вещей, а не сочинение новых по ходу пьесы.

Ответить | Правка | К родителю #176 | Наверх | Cообщить модератору

197. "В июне в Переславле-Залесском состоится конференция СПО в вы..."  +/
Сообщение от AleksK (ok), 31-Май-24, 12:43 
По логу модерирования в теме про блокировку докерхаба я уже понял почему ты ненавидишь все проекты из России. Не вижу смысла спорить.
Ответить | Правка | К родителю #196 | Наверх | Cообщить модератору

198. "В июне в Переславле-Залесском состоится конференция СПО в вы..."  +/
Сообщение от n00by (ok), 31-Май-24, 13:17 
> ты ненавидишь все проекты из России

По отсутствию гитхаба и неспособности найти на моём например забытый торгашами Рефал В.Ф. Турчина (это как раз то, чем известен Переславль-Залесский) я сразу понял, почему ты проецируешь. Но мне интересно, что с вами такими делать.

Ответить | Правка | К родителю #197 | Наверх | Cообщить модератору

199. "В июне в Переславле-Залесском состоится конференция СПО в вы..."  +/
Сообщение от AleksK (ok), 31-Май-24, 13:50 
> По отсутствию гитхаба

У тебя открылись экстрасенсорные способности. Пора давать объявление: Ищу гитхаб по фотографии и нику.

> торгашами Рефал В.Ф. Турчина

Кто все эти люди?

Ответить | Правка | К родителю #198 | Наверх | Cообщить модератору

200. "В июне в Переславле-Залесском состоится конференция СПО в вы..."  +/
Сообщение от n00by (ok), 31-Май-24, 14:50 
>> По отсутствию гитхаба
> У тебя открылись экстрасенсорные способности. Пора давать объявление: Ищу гитхаб по фотографии
> и нику.

Я тебя спрашивал, ты ответил, что пользователь.

>> торгашами Рефал В.Ф. Турчина
> Кто все эти люди?

Турчин Валентин Фёдорович - русский учёный, создал язык Рефал на основе нормальных алгоритмов Маркова А.А. (младшего), русского математика, сына русского математика Маркова А.А.

Ты не знаешь всё это и пытаешься показать своё остроумие, ведь "ненавидишь все проекты из России" ты про себя писал.

Ответить | Правка | К родителю #199 | Наверх | Cообщить модератору

202. "В июне в Переславле-Залесском состоится конференция СПО в вы..."  +/
Сообщение от AleksK (ok), 31-Май-24, 15:42 
> Я тебя спрашивал, ты ответил, что пользователь.

И?

> Ты не знаешь всё это и пытаешься показать своё остроумие, ведь "ненавидишь все проекты из России" ты про себя писал.

ой а кто это у нас не хочет чтобы к ним заходили из России?
https://freeimage.host/i/JbBqAs2

Ответить | Правка | К родителю #200 | Наверх | Cообщить модератору

206. "В июне в Переславле-Залесском состоится конференция СПО в вы..."  +/
Сообщение от n00by (ok), 31-Май-24, 18:23 
>> Я тебя спрашивал, ты ответил, что пользователь.
> И?

Если ты пользователь, ты в праве судить о потребительских свойствах ПО, но никак не о вопросах его создания.

>> Ты не знаешь всё это и пытаешься показать своё остроумие, ведь "ненавидишь все проекты из России" ты про себя писал.
> ой а кто это у нас не хочет чтобы к ним заходили
> из России?
> https://freeimage.host/i/JbBqAs2

Зачем ты меня об этом спрашиваешь? Я не собираюсь за тебя искать, кто владелец хостинга. Могу лишь сообщить, что владелец сайта лет 5 назад не ответил на моё письмо и не удивлюсь, что он ровесник Турчина.

Ответить | Правка | К родителю #202 | Наверх | Cообщить модератору

203. "В июне в Переславле-Залесском состоится конференция СПО в вы..."  +/
Сообщение от AleksK (ok), 31-Май-24, 15:48 
> все проекты из России" ты про себя писал.

Ой, а чей это тут флаг

https://freeimage.host/i/JbBRkWF

Я же сказал что я уже понял откуда у тебя такая ненависть к альту.

Ответить | Правка | К родителю #200 | Наверх | Cообщить модератору

205. "В июне в Переславле-Залесском состоится конференция СПО в вы..."  +/
Сообщение от n00by (ok), 31-Май-24, 18:19 
Ты к чему этот вопрос задал? К месту рождения того сотрудника, фамилию которого ты тут недавно писал? Или в очередной раз приписать мне свои чувства? Заметь, ты сам пишешь не Альт, а "альт".
Ответить | Правка | К родителю #203 | Наверх | Cообщить модератору

207. "В июне в Переславле-Залесском состоится конференция СПО в вы..."  +/
Сообщение от AleksK (ok), 31-Май-24, 18:49 
Я тебе вопросов не задавал, я просто констатировал факт где находится домашняя страничка твоего рефала. При чем тут проекты из России?
Типичная история колбасный мигрант родился под куевом, но образование получил в Москве, а теперь всячески изображает из себя угнетенного.
Ответить | Правка | К родителю #205 | Наверх | Cообщить модератору

208. "В июне в Переславле-Залесском состоится конференция СПО в вы..."  +/
Сообщение от n00by (ok), 31-Май-24, 19:00 
> Я тебе вопросов не задавал, я просто констатировал факт где находится домашняя
> страничка твоего рефала.

У тебя проблемы с пониманием русского языка? Рефал придумал не я, а Валентин Фёдорович Турчин в 1966 году. Родился автор в городе Подольск. Ты мог бы и сам это узнать, если бы хоть сколько интересовался историей страны, где ты живёшь ("родной" в твоём случае не подходит). Страничку ту создал не я. Если создатель сайта живёт не в России, то ты кидаешь камень в огород подобных себе, променявших историю на стеклянные бусы.

> При чем тут проекты из России?
> Типичная история колбасный мигрант родился под куевом, но образование получил в Москве,
> а теперь всячески изображает из себя угнетенного.

За что ты так с ним? Он же теперь хвалит Эльбрус, продавая забугорное ПО.

Ответить | Правка | К родителю #207 | Наверх | Cообщить модератору

210. "В июне в Переславле-Залесском состоится конференция СПО в вы..."  +/
Сообщение от AleksK (ok), 31-Май-24, 19:57 
> Валентин Фёдорович Турчин в 1966 году. Родился автор в городе Подольск.

А теперь открываем Википедию и видим про корни из под Киева и длиннющую историю про его диссидентство и т.д.

Далее, домашняя страница рефала находится в/на и из России недоступна.

К чему ты вообще про него вспомнил? Типичная политнаброс? Можешь объяснить?

Ответить | Правка | К родителю #208 | Наверх | Cообщить модератору

216. "В июне в Переславле-Залесском состоится конференция СПО в вы..."  +/
Сообщение от n00by (ok), 01-Июн-24, 12:16 
>> Валентин Фёдорович Турчин в 1966 году. Родился автор в городе Подольск.
> А теперь открываем Википедию

РКН: иностранный владелец ресурса нарушает закон РФ

> и видим про корни из под Киева и

Это применимо к ранее упомянутому тобой сотруднику Альта, якобы что-то сделавшего с моими дверью и стаканом, я верно тебя понял?

> длиннющую историю про его диссидентство и т.д.

Ты видео с "диссидентом" не посмотрел? Смотри ещё вот это https://vk.com/video-667081_456239155?t=2h28m21s
И кидай какахи шибче: докладчик увернётся, а сидящий за спиной слишком отвлечён.

> Далее, домашняя страница рефала находится в/на и из России недоступна.

А если я попрошу кого-то зарегистрировать там же домен AleksK, захостить там же сайт и опубликовать вот эти твои пёрлы, что ты будешь делать? Запоёшь извечное "а нас за шо"?

> К чему ты вообще про него вспомнил? Типичная политнаброс? Можешь объяснить?

Ну я же писал: мне надо понять, что с такими типапатриотами, кто ничего не создал, делать. Вас тут слишком много собралось вокруг идей гражданина США Ричарда Столлмана, но понять их вам почему-то не дано, даже "not as in free beer".

Ответить | Правка | К родителю #210 | Наверх | Cообщить модератору

217. "В июне в Переславле-Залесском состоится конференция СПО в вы..."  +/
Сообщение от AleksK (ok), 01-Июн-24, 12:43 
> Это применимо к ранее упомянутому тобой сотруднику Альта, якобы что-то сделавшего с моими дверью и стаканом, я верно тебя понял?

Это применимо к типичному хо*лоср*чу, то чем на опеннете многие любили заниматься задолго не то что 22-го года, а даже 14-го. Я видел тут такое и в 9-ом году и даже раньше.

> А если я попрошу кого-то зарегистрировать там же домен AleksK, захостить там же сайт и опубликовать вот эти твои пёрлы, что ты будешь делать? Запоёшь извечное "а нас за шо"?

Нет дружок, это так не работает. Домашняя страница проекта, это не левый сайтик, он имеет непосредственное отношение к авторам проекта это их сознательный выбор. Так что не надо тут прикидываться. Поэтому опять спрашиваю. К чему вообще ты его тут упомянул?

Тем более что пакет refal-plus есть в сизифе, но его нет ни в репах Debian ни в репах Fedora. Так что альтовцы то как краз не забыли про рефал, в отличие от.

https://i.postimg.cc/fzjYSjKS/2024-06-01-12-35-21.png

Ответить | Правка | К родителю #216 | Наверх | Cообщить модератору

222. "В июне в Переславле-Залесском состоится конференция СПО в вы..."  +/
Сообщение от n00by (ok), 01-Июн-24, 14:20 
>> Это применимо к ранее упомянутому тобой сотруднику Альта, якобы что-то сделавшего с моими дверью и стаканом, я верно тебя понял?
> Это применимо к типичному хо*лоср*чу, то чем на опеннете многие любили заниматься
> задолго не то что 22-го года, а даже 14-го. Я видел
> тут такое и в 9-ом году и даже раньше.

То есть я совершенно верно к тебе применил. И вполне ожидаемо, что вместо ответа на неудобный вопрос увидел "а нас за шо".

>> А если я попрошу кого-то зарегистрировать там же домен AleksK, захостить там же сайт и опубликовать вот эти твои пёрлы, что ты будешь делать? Запоёшь извечное "а нас за шо"?
> Нет дружок, это так не работает. Домашняя страница проекта, это не левый
> сайтик, он имеет непосредственное отношение к авторам проекта это их сознательный
> выбор. Так что не надо тут прикидываться.

Это работает очень просто: когда бы ты понимал, чем автор отличается от всех остальных. Или хотя бы умел работать с информацией на сайтах, ходить по ссылкам.

Поскольку у тебя с этим плохо, сделаю это за тебя http://refal.ru/webteam.html

НАШ САЙТ

    Авторы:     
    
Белоус Леонид
Белоус Валерия

А вот тебе контрольный в голову http://refal.ru/news.html

META 2016
Fifth International Valentin Turchin Workshop on Metacomputation

Pereslavl - Zalessky, Russia
June 27 - July 1,  2016
http://meta2016.pereslavl.ru

Ты уже направил лучи своего добра автору новости и его работодателю? Pereslavl - Zalessky же.

> Тем более что пакет refal-plus есть в сизифе

Не надо мне доказывать, что ты не видишь разницы между созданием программы и сборкой пакетика.

Еще раз тебе повторю: прекрати обнулять ценность труда программистов, сравнивая с упаковщиками, как они названы в ГОСТ.

Ответить | Правка | К родителю #217 | Наверх | Cообщить модератору

225. "В июне в Переславле-Залесском состоится конференция СПО в вы..."  +/
Сообщение от AleksK (ok), 01-Июн-24, 15:59 
> То есть я совершенно верно к тебе применил. И вполне ожидаемо, что вместо ответа на неудобный вопрос увидел "а нас за шо".

Твоя кастрюлька видна издалека.

> Это работает очень просто: когда бы ты понимал, чем автор отличается от всех остальных. Или хотя бы умел работать с информацией на сайтах, ходить по ссылкам.

А ещё я умею читать википедию:

https://i.ibb.co/HpCWWfp/2024-06-01-15-41-45.png

Какой сайт указан в википедии? Но я, видите ли, виноват, что не изучаю вопрос. Оно мне надо? Я пока не открыл википедию и не знал что такой язык существует.

> Не надо мне доказывать, что ты не видишь разницы между созданием программы и сборкой пакетика.

Ой, а что же ваши лучшие партнеры и друзья даже не озаботились пакетики собрать? Нет его ни в дебиане ни в федоре. А альтовцы собирают и добавляют в основной репозиторий.

Ответить | Правка | К родителю #222 | Наверх | Cообщить модератору

209. "В июне в Переславле-Залесском состоится конференция СПО в вы..."  +/
Сообщение от n00by (ok), 31-Май-24, 19:04 
На тебе ещё для расширения кругозора: Refal5-Version П3 (Андрей Немытых, OSSDEVCONF-2023)
https://youtu.be/YkltHXngryg
И осторожнее с какахометанием, когда тебе подставляют зеркало. Пока что ты как раз рекламируемую в новости конференцию закидал.
Ответить | Правка | К родителю #207 | Наверх | Cообщить модератору

53. "В июне в Переславле-Залесском состоится конференция СПО в вы..."  +/
Сообщение от kusb (?), 28-Май-24, 11:47 
Сборка и создание дистрибутива это труд, а система сборки это программное обеспечение. Конечно сборку Linux нельзя назвать отечественной ОС, но "отечественным дистрибутивом" таки да. И это труд.
(А ещё они всякие патчи присылают, иногда)
Ответить | Правка | К родителю #40 | Наверх | Cообщить модератору

60. Скрыто модератором  –3 +/
Сообщение от Sw00p aka Jerom (?), 28-Май-24, 11:55 
Ответить | Правка | Наверх | Cообщить модератору

71. Скрыто модератором  +/
Сообщение от kusb (?), 28-Май-24, 12:53 
Ответить | Правка | Наверх | Cообщить модератору

79. Скрыто модератором  +1 +/
Сообщение от Sw00p aka Jerom (?), 28-Май-24, 14:04 
Ответить | Правка | Наверх | Cообщить модератору

87. Скрыто модератором  +/
Сообщение от kusb (?), 28-Май-24, 14:28 
Ответить | Правка | Наверх | Cообщить модератору

93. Скрыто модератором  –1 +/
Сообщение от Sw00p aka Jerom (?), 28-Май-24, 14:43 
Ответить | Правка | Наверх | Cообщить модератору

99. Скрыто модератором  +/
Сообщение от kusb (?), 28-Май-24, 15:07 
Ответить | Правка | Наверх | Cообщить модератору

104. Скрыто модератором  –1 +/
Сообщение от Sw00p aka Jerom (?), 28-Май-24, 15:17 
Ответить | Правка | Наверх | Cообщить модератору

83. "В июне в Переславле-Залесском состоится конференция СПО в вы..."  –3 +/
Сообщение от n00by (ok), 28-Май-24, 14:18 
Переливание из пустого в порожнее - таки тоже труд. "Необходимость" в отечественных дистрибутивах возникла из печального факта: подобное ПО в России не создано. Дистрибутив, то есть распространение чужого ПО, никак не решает проблему в корне. При этом распространители конкурируют с местными производителями (есть кто пытается), ничего не вкладывая в создание.
Ответить | Правка | К родителю #53 | Наверх | Cообщить модератору

88. "В июне в Переславле-Залесском состоится конференция СПО в вы..."  +/
Сообщение от Sw00p aka Jerom (?), 28-Май-24, 14:33 
> "Необходимость" возникла из

и из какой такой "необходимости" возникла "рашенводкагуд"?


Ответить | Правка | Наверх | Cообщить модератору

97. "В июне в Переславле-Залесском состоится конференция СПО в вы..."  +/
Сообщение от n00by (ok), 28-Май-24, 15:02 
Вопрос не понял, но Менделеев в своё время сбалансировал алхимические огонь и воду, таким образом и получил 40 градусов спиритуса.
Ответить | Правка | Наверх | Cообщить модератору

101. "В июне в Переславле-Залесском состоится конференция СПО в вы..."  +/
Сообщение от Sw00p aka Jerom (?), 28-Май-24, 15:12 
> Вопрос не понял, но Менделеев в своё время сбалансировал алхимические огонь и
> воду, таким образом и получил 40 градусов спиритуса.

перефразирую, в каком веке (даже не году) было добавлено слово "алкоголизм" в великий-могучий словарь? В словаре Даля его нет, если че.  

Ответить | Правка | Наверх | Cообщить модератору

115. "В июне в Переславле-Залесском состоится конференция СПО в вы..."  +/
Сообщение от n00by (ok), 28-Май-24, 18:15 
Не знаю. Применительно к теме новости и всей СПО движухе любопытно совсем иное:

"""
«Съезжий праздник, — объяснял крестьянин Бутурлинской волости Барнаульского округа П. Школдин (1863) — это очередь известной деревни, на которой она должна дать своим соседям пир».

В огромном количестве российских местностей очередность проведения праздников носила совершенно четко выраженный, можно сказать, вполне институциональный характер. Скажем, в Орловском уезде Вятской губернии существовал своеобразный союз трех деревень. Каждая их них в определенный день (для одной из них это был Ильин день, для другой — Петров, для третьей — Спасов) сообща угощала две остальные...
"""
https://teletype.in/@tsalvsh/loMS0EZbbwv

Никогда такого не было, что бы одна деревня питалась за счёт других.

Ответить | Правка | Наверх | Cообщить модератору

130. "В июне в Переславле-Залесском состоится конференция СПО в вы..."  +/
Сообщение от Sw00p aka Jerom (?), 28-Май-24, 22:37 
> Никогда такого не было, что бы одна деревня питалась за счёт других.

вспомнилось :)

https://dzen.ru/a/Y2FEP3viYUQQfWwz

Ответить | Правка | Наверх | Cообщить модератору

102. "В июне в Переславле-Залесском состоится конференция СПО в вы..."  +/
Сообщение от Sw00p aka Jerom (?), 28-Май-24, 15:13 
> но Менделеев в своё время

эт как Ньютону в свое время яблоком долбануло?

Ответить | Правка | К родителю #97 | Наверх | Cообщить модератору

116. "В июне в Переславле-Залесском состоится конференция СПО в вы..."  +/
Сообщение от n00by (ok), 28-Май-24, 18:20 
>> но Менделеев в своё время
> эт как Ньютону в свое время яблоком долбануло?

https://viewer.rsl.ru/ru/rsl01003567718?page=1

До времён Менделеева алхимия была вполне себе наукой, не все превращали свинец в золото. Спирт это такая форма элемента Огонь, потому он сушит (например, печатные платы), впитывая воду и испаряясь вместе с ней.

Ответить | Правка | Наверх | Cообщить модератору

131. "В июне в Переславле-Залесском состоится конференция СПО в вы..."  +/
Сообщение от Sw00p aka Jerom (?), 28-Май-24, 22:42 
> До времён Менделеева алхимия

ну да от арабского аль-Кимья - нынешняя химия, и алкоголь от арабского. На момент составления Далем словаря "великого-могучего", слово акоголь было включено, но не было слова алкоголизм.


Ответить | Правка | Наверх | Cообщить модератору

149. "В июне в Переславле-Залесском состоится конференция СПО в вы..."  +/
Сообщение от n00by (ok), 29-Май-24, 17:15 
Называется, может от "аль-Кимья", но берёт начало от Платона и Аристотеля. Тогда философией вроде бы звалась и имела какой-то практический смысл, в отличие от нынешней.
Ответить | Правка | Наверх | Cообщить модератору

179. "В июне в Переславле-Залесском состоится конференция СПО в вы..."  +/
Сообщение от bircoph (ok), 30-Май-24, 15:40 
> А ещё они всякие патчи присылают, иногда

А ещё они апстрим strace и релиз-менеджеры glibc.

Ответить | Правка | К родителю #53 | Наверх | Cообщить модератору

191. "В июне в Переславле-Залесском состоится конференция СПО в вы..."  +/
Сообщение от n00by (ok), 31-Май-24, 07:39 
>> А ещё они всякие патчи присылают, иногда
> А ещё они апстрим strace и релиз-менеджеры glibc.

У "них" программистов glibc не осталось? https://bugzilla.altlinux.org/show_bug.cgi?id=38212#c2

Ответить | Правка | Наверх | Cообщить модератору

110. "В июне в Переславле-Залесском состоится конференция СПО в вы..."  +/
Сообщение от Аноним (-), 28-Май-24, 17:25 
>Как переименовать убунту в зорин ос и продать её за 40 евро. Или Это другое?

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

Ответить | Правка | К родителю #20 | Наверх | Cообщить модератору

128. "В июне в Переславле-Залесском состоится конференция СПО в вы..."  +/
Сообщение от AleksK (ok), 28-Май-24, 21:29 
> Внезапно, но продавать, а не впихивать по приказу сверху - это другое.

Внезапно Зорин имеет неплохой гешефт от контрактов с госструктурами. Они там тоже хотят Линукс от местного производителя.

Ответить | Правка | Наверх | Cообщить модератору

134. "В июне в Переславле-Залесском состоится конференция СПО в вы..."  +/
Сообщение от Аноним (-), 29-Май-24, 09:10 
Где пруфы, Билли?
Ответить | Правка | Наверх | Cообщить модератору

141. "В июне в Переславле-Залесском состоится конференция СПО в вы..."  +/
Сообщение от AleksK (ok), 29-Май-24, 10:04 
> Где пруфы, Билли?

Например:

https://forum.zorin.com/t/zorin-os-used-by-local-authorities...

Ответить | Правка | Наверх | Cообщить модератору

13. "В июне в Переславле-Залесском состоится конференция СПО в вы..."  –1 +/
Сообщение от Аноним (13), 28-Май-24, 05:58 
Боги Тьмы, какое счастье что для меня это уже далёкое и невозвратное прошлое - все эти MLUG, линуксфесты и прочее ненужное.
Ответить | Правка | Наверх | Cообщить модератору

50. "В июне в Переславле-Залесском состоится конференция СПО в вы..."  +6 +/
Сообщение от AleksK (ok), 28-Май-24, 11:37 
> Боги Тьмы, какое счастье что для меня это уже далёкое и невозвратное
> прошлое - все эти MLUG, линуксфесты и прочее ненужное.

Я бежала три дня, что бы сказать как вы мне безразличны.

Ответить | Правка | Наверх | Cообщить модератору

109. "В июне в Переславле-Залесском состоится конференция СПО в вы..."  –1 +/
Сообщение от Аноним (109), 28-Май-24, 17:14 
Сказала. Беги обратно.
Ответить | Правка | Наверх | Cообщить модератору

14. "В июне в Переславле-Залесском состоится конференция СПО в вы..."  +2 +/
Сообщение от Аноним (28), 28-Май-24, 06:47 
Альт Линукс пригласите. Пусть расскажет, как внедрял СПО в школе путем массовой рассылки битых носителей.
Ответить | Правка | Наверх | Cообщить модератору

22. "В июне в Переславле-Залесском состоится конференция СПО в вы..."  +/
Сообщение от AleksK (ok), 28-Май-24, 09:11 
> Альт Линукс пригласите. Пусть расскажет, как внедрял СПО в школе путем массовой
> рассылки битых носителей.

У тебя нет интернета?

https://www.basealt.ru/alt-education/download

Ответить | Правка | Наверх | Cообщить модератору

26. "В июне в Переславле-Залесском состоится конференция СПО в вы..."  +/
Сообщение от Аноним (28), 28-Май-24, 09:40 
> У тебя нет интернета?

У тебя есть Интернет.
https://users.livejournal.com/aen-/110138.html

Ответить | Правка | Наверх | Cообщить модератору

30. "В июне в Переславле-Залесском состоится конференция СПО в вы..."  +1 +/
Сообщение от AleksK (ok), 28-Май-24, 09:58 
> https://users.livejournal.com/aen-/110138.html

Даже по твоей ссылке написано, что тиражированием дисков занималась компания которая не имеет никакого отношения к СПО Базальт.

Ответить | Правка | Наверх | Cообщить модератору

56. "В июне в Переславле-Залесском состоится конференция СПО в вы..."  –1 +/
Сообщение от Аноним (56), 28-Май-24, 11:50 
Если бы в России была обязательная госрегистрация отношений мужчины и мужчины (что сейчас запрещено, грех же), аффилиированность компаний было бы доказать не просто, а очень просто.
Ответить | Правка | Наверх | Cообщить модератору

25. "В июне в Переславле-Залесском состоится конференция СПО в вы..."  –1 +/
Сообщение от Аноним (25), 28-Май-24, 09:24 
Потому эту рассылку и сделали, чтобы главный начальник не узнал, что склад забит неисправленными носителями, купленными с откатом.
Ответить | Правка | К родителю #14 | Наверх | Cообщить модератору

27. "В июне в Переславле-Залесском состоится конференция СПО в вы..."  +1 +/
Сообщение от prokoudineemail (ok), 28-Май-24, 09:41 
> Альт Линукс пригласите

Предлагаешь организаторам пригласить самих себя?

Ответить | Правка | К родителю #14 | Наверх | Cообщить модератору

78. "В июне в Переславле-Залесском состоится конференция СПО в вы..."  +/
Сообщение от crypt (ok), 28-Май-24, 13:39 
я не знаю, как там в высшей школе, но пока в обычной экзаменационные программы и ПО для экзаменов не будет согласовано с СПО, это все просто возня. годы идут, а прогресса ноль.
Ответить | Правка | Наверх | Cообщить модератору

31. "В июне в Переславле-Залесском состоится конференция СПО в вы..."  +/
Сообщение от n00by (ok), 28-Май-24, 10:02 
Так внедряли не они, вот тех и надо пригласить с докладом "как выгодно внедрить чужой дистрибутив, а потом обанкротиться".
Ответить | Правка | К родителю #14 | Наверх | Cообщить модератору

69. "В июне в Переславле-Залесском состоится конференция СПО в вы..."  +/
Сообщение от Аноним (-), 28-Май-24, 12:32 
>а потом обанкротиться

Где-то убыло - где-то прибыло.

Ответить | Правка | Наверх | Cообщить модератору

41. "В июне в Переславле-Залесском состоится конференция СПО в вы..."  +3 +/
Сообщение от Аноним (41), 28-Май-24, 10:57 
Вот так, левый подрядчик Рособразования без спроса и уведомления об изменении добавил своё содержимое на диски и не проверил их работу, а виноват Альт Линукс.
https://www.opennet.dev/opennews/art.shtml?num=22138
Ответить | Правка | К родителю #14 | Наверх | Cообщить модератору

15. "В июне в Переславле-Залесском состоится конференция СПО в вы..."  +1 +/
Сообщение от Аноним (28), 28-Май-24, 06:50 
На конференции можно поговорить о чем угодно. Но в вузах исключительно ... Министерства рассылают документы только в форматах ... Преподают исключительно на основе продуктов ... К тому же все научные издательства требуют ...
Тут другие организации должны организовывать.
Ответить | Правка | Наверх | Cообщить модератору

17. "В июне в Переславле-Залесском состоится конференция СПО в вы..."  –1 +/
Сообщение от Аноним (28), 28-Май-24, 07:36 
> Доклады о бизнесе, рекламные и о проприетарном ПО запрещены.

Но российское ПО, основанное на СПО, на которое переходят учреждения в ходе импортозамещения, проприетарное. У меня - диссонанс.

Ответить | Правка | Наверх | Cообщить модератору

18. "В июне в Переславле-Залесском состоится конференция СПО в вы..."  +/
Сообщение от cheburnator9000 (ok), 28-Май-24, 08:18 
Все правильно, как им еще зарабатывать? Никто в России не будет платить за тех.поддержку, проще нанять красноглазого сисадмина который за минималку будет делать все что прикажет начальник. Откроешь ПО так сразу своруют и все.
Ответить | Правка | Наверх | Cообщить модератору

32. "В июне в Переславле-Залесском состоится конференция СПО в вы..."  +1 +/
Сообщение от n00by (ok), 28-Май-24, 10:07 
А надо ли, что бы торговцы таким "СПО" зарабатывали? Цель СПО, согласно ГОСТ Р 54593-2011 - удалить с рынка тех, кто создаёт ПО:

4.1 Цели, задачи, классификация и критерии свободного программного обеспечения

4.1.1 СПО создается и применяется в целях формирования такого рынка, любая услуга на котором, такая как, например, копирование, тиражирование, модификация, исправление ошибки, добавление функциональности и т.п., может продаваться и покупаться на конкурентном рынке свободной контрактацией двух сторон - поставщика и приобретателя услуги, без апелляции к третьей стороне.

"третья сторона" здесь - авторы ПО.

Ответить | Правка | Наверх | Cообщить модератору

35. "В июне в Переславле-Залесском состоится конференция СПО в вы..."  –1 +/
Сообщение от Аноним (35), 28-Май-24, 10:41 
Цель государства - помогать барыгам и бюрократии вас обдирать. Может вы думали, что цель другая?
Ответить | Правка | Наверх | Cообщить модератору

43. "В июне в Переславле-Залесском состоится конференция СПО в вы..."  +/
Сообщение от n00by (ok), 28-Май-24, 11:05 
Государство заявило свои цели волне доступно, в том числе и уход от зависимости. Обязало подчинённые структуры покупать отечественный продукт. Почему особо догадливые продавцы сами при этом берут заморское, внедряя новую зависимость, а не покупают отечественное - это уже другой вопрос.
Ответить | Правка | Наверх | Cообщить модератору

70. "В июне в Переславле-Залесском состоится конференция СПО в вы..."  +/
Сообщение от Аноним (-), 28-Май-24, 12:39 
>Государство заявило свои цели волне доступно, в том числе и уход от зависимости.

Это не цель, а внешний нарратив. Если условное эльдорадо говорит о страшных китайских подделках - это не значит, что оно ими же не торгует. Если государство поддерживает условное эльдорадо - это значит, что decision maker-у от этого что-то перепадёт.

>Почему особо догадливые продавцы сами при этом берут заморское, внедряя новую зависимость, а не покупают отечественное - это уже другой вопрос.

Потому что оно так и было задумано с самого линукса-в-школы.

Ответить | Правка | Наверх | Cообщить модератору

86. "В июне в Переславле-Залесском состоится конференция СПО в вы..."  –1 +/
Сообщение от n00by (ok), 28-Май-24, 14:28 
Если посмотреть на рыночные доли в 23-м году, то Астре принадлежит 76%, Альту и РедОС по 11%, а т.н. "Российская ОС" вообще не упоминается. При этом есть странное совпадение: Астра это не просто "пакетики от Дебиан", как любят её рисовать некоторые, а СЗИ Девянина и FlyDE. Плюс ещё GitFlic и так далее. Вот как-то так получается, что внешний нарратив коррелирует с рукой рынка. Что по этому поводу написано в методичке Анонима с Канадьчины?
Ответить | Правка | Наверх | Cообщить модератору

98. "В июне в Переславле-Залесском состоится конференция СПО в вы..."  +1 +/
Сообщение от Аноним (-), 28-Май-24, 15:04 
>Вот как-то так получается, что внешний нарратив коррелирует с рукой рынка.

А рука рынка - это случайно не заказ из Минобороны?

> При этом есть странное совпадение: Астра это не просто "пакетики от Дебиан", как любят её рисовать некоторые, а СЗИ Девянина и FlyDE.

Тебе Росы и Альта было мало, хочешь ещё шишек набить?

>Что по этому поводу написано в методичке Анонима с Канадьчины?

А про пейсы что-нибудь скажешь?

Ответить | Правка | Наверх | Cообщить модератору

103. "В июне в Переславле-Залесском состоится конференция СПО в вы..."  +/
Сообщение от n00by (ok), 28-Май-24, 15:15 
>>Вот как-то так получается, что внешний нарратив коррелирует с рукой рынка.
> А рука рынка - это случайно не заказ из Минобороны?

Не заказ, а приказ. Да и какая разница, как государство добивается заявленных целей и отодвигает с рынка торговцев? Так то и мастеров в переобувание не стоит упускать.

> Тебе Росы и Альта было мало, хочешь ещё шишек набить?

Кому? Ты поэтому Аноним?

Ответить | Правка | Наверх | Cообщить модератору

105. "В июне в Переславле-Залесском состоится конференция СПО в вы..."  +4 +/
Сообщение от тоже Анонимemail (ok), 28-Май-24, 15:24 
Вряд ли корректно называть хотелки левой пятки (госзакупки по приказу) "рыночной долей".
Рынка в этом симулякре просто не было, и экстраполировать гешефт за его пределы не стоит.
Ответить | Правка | Наверх | Cообщить модератору

117. "В июне в Переславле-Залесском состоится конференция СПО в вы..."  +/
Сообщение от n00by (ok), 28-Май-24, 18:24 
Всё это было в ответ на "цель государства - помогать барыгам и бюрократии вас обдирать". Как не назови, но в госзакупки почему-то щаче попадает Астра, где своего кода больше прочих. То есть государство ставит задачу и имеющимися средствами пытается обеспечить выполнение. Не расстреливать же чистых торгашей?
Ответить | Правка | Наверх | Cообщить модератору

127. "В июне в Переславле-Залесском состоится конференция СПО в вы..."  –1 +/
Сообщение от Аноним (80), 28-Май-24, 20:42 
Не ясно, если машиностроение такое как есть, то отчего другая и тоже мозгоёмкая индустрия не окажется в том же положении.

Желания и результат не матчатся. Проблема.

Ответить | Правка | Наверх | Cообщить модератору

139. "В июне в Переславле-Залесском состоится конференция СПО в вы..."  +/
Сообщение от userd (ok), 29-Май-24, 10:00 
> Астра, где своего кода больше прочих

Приятно видеть человека, который может сравнивать.
Про Альт можно начать с https://www.altlinux.org/Upstream и потом пойти на https://packages.altlinux.org , найти спеки, исходный код и патчи пакетов в разных ветках.

Подскажите, где располагаются аналогичные материалы для Астры?
В настоящий момент у меня интерес довольно абстрактный; но недавно пришлось поломать голову, почему обновление Астры у клиента сломало нашу программу. С доступными спеками и патчами было бы немного проще.

Ответить | Правка | Наверх | Cообщить модератору

148. "В июне в Переславле-Залесском состоится конференция СПО в вы..."  +/
Сообщение от n00by (ok), 29-Май-24, 16:51 
>> Астра, где своего кода больше прочих
> Приятно видеть человека, который может сравнивать.
> Про Альт можно начать с https://www.altlinux.org/Upstream и потом пойти на https://packages.altlinux.org
> , найти спеки, исходный код и патчи пакетов в разных ветках.
> Подскажите, где располагаются аналогичные материалы для Астры?

Простите за нескромный вопрос: а что здесь сравнивается?

Исходники ПО, которые написаны, но не открыты, со сборочными сценариями для написанных кем-то исходников?

И зачем это сравнивать? "Рука рынка" расставила весовые коэффициенты в уравнении. Можно строить конспирологические теории о приказах или коррупции, но факт остаётся фактом: государство ставит задачей уход от зависимости, и каким-то чудом финансируются в первую очередь те, кто создаёт своё. Это при том, что Альту 30 с лишним лет.

> В настоящий момент у меня интерес довольно абстрактный; но недавно пришлось поломать
> голову, почему обновление Астры у клиента сломало нашу программу. С доступными
> спеками и патчами было бы немного проще.

Сломало оно в первую очередь потому, что и Астре далеко не всё подконтрольно. И никто толком не понимает, что пишут RedHat и прочие, по большому счёту -- просто не всем Даннинг с Крюгером позволяют о том говорить.

И это частный случай. При этом сравнение трудозатрат проводилось отчасти умозрительно.

Вот другой частный случай: https://bugzilla.altlinux.org/show_bug.cgi?id=38212#c2

4 года прошло. Открытые исходники дали что для решения? Без исходников проблема вполне решается и как раз на том уровне, докуда докопали имея исходники. В исходниках очевидная ошибка, на которую смотрит Тысячеглаз, но так эти макросы с бородатых времён никто и не осмелился выкинуть.

Ответить | Правка | К родителю #139 | Наверх | Cообщить модератору

153. "В июне в Переславле-Залесском состоится конференция СПО в вы..."  +/
Сообщение от userd (ok), 29-Май-24, 18:20 
>> Астра, где своего кода больше прочих
> Простите за нескромный вопрос: а что здесь сравнивается?
>Исходники ПО, которые написаны, но не открыты, со сборочными сценариями для написанных кем-то исходников?

По первой ссылке можно найти ПО, которое написано и открыто. Как я понял, Вы обладаете умением сравнивать объём кода в проектах которые написаны и открыты Альтом и объём кода в проектах которые предположительно написаны и не открыты Астрой. Хотел изучить этот метод, но, вероятно, не судьба.

> Сломало оно в первую очередь потому, что и Астре далеко не всё подконтрольно.

ну да, ну да. Заменить в сборочной зависимости mysql на mariadb и не учесть изменения каких-то макросов - вероятно не подконтрольно. Собралось - и ладно :)

Кстати, вот про багтрекер. У Альта Вы его нашли. А для Астры дадите ссылочку? Та, что у меня была как-то протухла...

Ответить | Правка | К родителю #148 | Наверх | Cообщить модератору

160. "В июне в Переславле-Залесском состоится конференция СПО в вы..."  +/
Сообщение от n00by (ok), 30-Май-24, 05:58 
>>> Астра, где своего кода больше прочих
>> Простите за нескромный вопрос: а что здесь сравнивается?
>>Исходники ПО, которые написаны, но не открыты, со сборочными сценариями для написанных кем-то исходников?
> По первой ссылке можно найти ПО, которое написано и открыто.

Это про Alterator (к которому существенные коммиты были когда в последний раз?) или из разряда "spec для rpm формально можно считать программой на диалекте ЯП bash"?

> Как я
> понял, Вы обладаете умением сравнивать объём кода в проектах которые написаны
> и открыты Альтом и объём кода в проектах которые предположительно написаны
> и не открыты Астрой. Хотел изучить этот метод, но, вероятно, не
> судьба.

Вероятно, не судьба: со временем когнитивная ригидность гарантированно растёт, нередко и когнитивная слепота. Если же кто занимался реверсом, у того нарабатываются эмпирические коэффициенты, на какие следует помножить размер исполняемого файла для оценки в первом приближении. Если кто занимался написанием исходных текстов и сборкой, обычно так же имеет примерное представление о соотношении, из наблюдений, сколько получается на выходе. Если кто занимался проектированием, тот, случается, приходит к выводу: эти коэффициенты мало что значат для оценки трудозатрат, важнее избегать просчётов при планировании.

Нам же сейчас достаточно, что коэффициенты отличны от нуля.

"СИЗ Девянина" - 1 : 0 в пользу Астры.
FlyDE - 1 : 0 в пользу Астры.
Alterator - 1 : 0 в пользу Альта.

Итого, примерно 2 : 1. Без учёта весовых коэффициентов каждого компонента в системе.

>> Сломало оно в первую очередь потому, что и Астре далеко не всё подконтрольно.
> ну да, ну да. Заменить в сборочной зависимости mysql на mariadb и
> не учесть изменения каких-то макросов - вероятно не подконтрольно. Собралось -
> и ладно :)

Конечно. Точно так же отваливается Gitea и Transmission при обновлении Альта - всё это неподконтрольно _сборщикам_ и проверяется пользователями, в лучшем случае.

Кстати, как утверждают некоторые на форуме Альта: Астра просто берёт готовые пакетики от Debian. Непонятно, что мешало посмотреть тамошние сборочные сценарии.

> Кстати, вот про багтрекер. У Альта Вы его нашли. А для Астры
> дадите ссылочку? Та, что у меня была как-то протухла...

Зачем? Это попытка доказать что? Я в этой ветке начал в №32 с цитаты ГОСТ, где целью СПО ставится удаления авторов ПО с "конкурентного" рынка. Далее показывал на примере с долями рынка, что ответное заявление "цель государства - помогать барыгам и бюрократии вас обдирать" несколько не соответствует действительности.

Ответить | Правка | К родителю #153 | Наверх | Cообщить модератору

107. "В июне в Переславле-Залесском состоится конференция СПО в вы..."  +/
Сообщение от Аноним (-), 28-Май-24, 16:54 
>Не заказ, а приказ.

Ну видишь, сам всё понимаешь.

>Да и какая разница, как

Действительно, какая разница - самолёты из металла или соломы, 30 или 90, по вакансии или кого надо, не убий или сотри с лица земли.

>Кому?

Очевидно же, себе - кушая один кактус за другим. Но раз уж ты избрал этот путь, опубликуй все заметки где-нибудь потом.

>Ты поэтому Аноним?

Почему?

Ответить | Правка | К родителю #103 | Наверх | Cообщить модератору

118. "В июне в Переславле-Залесском состоится конференция СПО в вы..."  +/
Сообщение от n00by (ok), 28-Май-24, 18:26 
>>Не заказ, а приказ.
> Ну видишь, сам всё понимаешь.

Даже то, что ты столь навязчиво мне пишешь, потому что у тебя работа такая.

Ответить | Правка | Наверх | Cообщить модератору

135. "В июне в Переславле-Залесском состоится конференция СПО в вы..."  +1 +/
Сообщение от Аноним (-), 29-Май-24, 09:23 
Если одна компания по долгу трудоустройства требует защищать свой дистрибутив на форумах, это не значит, что все, кому это явление не нравится, защищают другие дистрибутивы тоже у кого-то на зарплате.
В противном случае, как минимум, была бы площадка, на которой любые упоминания дистрибутивов из реестра банились бы ещё на подлёте.
Ответить | Правка | Наверх | Cообщить модератору

151. "В июне в Переславле-Залесском состоится конференция СПО в вы..."  +/
Сообщение от n00by (ok), 29-Май-24, 17:19 
Это вообще о чём? Какая-то компания наняла Анонимов писать через Тор? Или наняла Анонимов донимать меня несвязными текстурками? Боюсь, это не вернёт ей профуканный последний 1%.
Ответить | Правка | К родителю #135 | Наверх | Cообщить модератору

124. "В июне в Переславле-Залесском состоится конференция СПО в вы..."  +/
Сообщение от Аноним (80), 28-Май-24, 20:20 
Если заявило и обязало, но это так не работает, то вопрос-то совершенно не другой. А, может, - как раз часть ответа.
Ответить | Правка | К родителю #43 | Наверх | Cообщить модератору

39. "В июне в Переславле-Залесском состоится конференция СПО в вы..."  +/
Сообщение от cheburnator9000 (ok), 28-Май-24, 10:49 
Вообще ничего не понял, но да ладно.
Ответить | Правка | К родителю #32 | Наверх | Cообщить модератору

44. "В июне в Переславле-Залесском состоится конференция СПО в вы..."  +/
Сообщение от n00by (ok), 28-Май-24, 11:06 
Это нормально, когда программист не понимает в экономике или юридическом крючкотворстве. На то и расчёт. Поставщик - продаёт. Приобретатель услуги - платит поставщику. Что бы появилось ПО, его кто-то должен спроектировать и написать. Слова "программист" в ГОСТ нет, есть лишь "третья сторона".
Ответить | Правка | Наверх | Cообщить модератору

24. "В июне в Переславле-Залесском состоится конференция СПО в вы..."  +/
Сообщение от Аноним (25), 28-Май-24, 09:19 
снимите лапшу с ушей, переходят они...
Ответить | Правка | К родителю #17 | Наверх | Cообщить модератору

54. "В июне в Переславле-Залесском состоится конференция СПО в вы..."  –1 +/
Сообщение от Аноним (28), 28-Май-24, 11:48 
Если проанализировать доходы поставщиков такого ПО, то - да, переходят.
Ответить | Правка | Наверх | Cообщить модератору

90. "В июне в Переславле-Залесском состоится конференция СПО в вы..."  +/
Сообщение от Аноним (35), 28-Май-24, 14:34 
от силы переходят на "отечественную" ось, остальное ПО переклеенными шильдиками не заменить
Ответить | Правка | Наверх | Cообщить модератору

55. "В июне в Переславле-Залесском состоится конференция СПО в вы..."  +/
Сообщение от kusb (?), 28-Май-24, 11:50 
Ну один отечественный офис пытается делать своим главным форматом docx. Причём стандарт вроде-как открыт. И если открывать там odf, то внутри оно превращается в docx подобные структуры или типа того, потому что программа на этот формат завязана, как на родной.
Ответить | Правка | К родителю #15 | Наверх | Cообщить модератору

67. "В июне в Переславле-Залесском состоится конференция СПО в вы..."  +/
Сообщение от Аноним (28), 28-Май-24, 12:13 
Как будто это плохо. Работаю в LibreOffice. Есть у меня документ - черновик научной монографии с формулами. Занимает 30 Мб в формате odt. То же, сохраненное из того же LibreOffice в формате docx, занимает 3 Мб. Какой формат мне выбрать?
Ответить | Правка | Наверх | Cообщить модератору

84. "В июне в Переславле-Залесском состоится конференция СПО в вы..."  +/
Сообщение от Аноним (4), 28-Май-24, 14:19 
https://forumooo.ru
Ответить | Правка | Наверх | Cообщить модератору

95. "В июне в Переславле-Залесском состоится конференция СПО в вы..."  +/
Сообщение от тоже Анонимemail (ok), 28-Май-24, 14:45 
Для LO есть расширение Writer2LaTeX, например.
Ответить | Правка | К родителю #67 | Наверх | Cообщить модератору

72. "В июне в Переславле-Залесском состоится конференция СПО в вы..."  +/
Сообщение от kusb (?), 28-Май-24, 13:03 
Нет, это не плохо. Может быть odf длинно хранит формулы и может получится это сжать архиватором.
Ответить | Правка | К родителю #55 | Наверх | Cообщить модератору

125. "В июне в Переславле-Залесском состоится конференция СПО в вы..."  +/
Сообщение от Аноним (80), 28-Май-24, 20:26 
> ... стандарт вроде-как открыт ...

Беда в том, что MS пишет так, что стандарты и использование MS без MS - вещи плохо совместимые.

В идеале должен быть одинаковый интерпретатор docx, odt или чего-ещё, что недостижимо в MS из-за нарушений стандартов самими MS, а код закрыт/проприетарен.

Поэтому странно пытаться опираться на docx, если только может успеешь уволиться до того, как это принесёт проблему.

Ответить | Правка | К родителю #55 | Наверх | Cообщить модератору

16. "В июне в Переславле-Залесском состоится конференция СПО в вы..."  +1 +/
Сообщение от Ivan_83 (ok), 28-Май-24, 06:53 
> всем участникам предоставляется трансфер из Москвы и обратно, а также от гостиницы «Переславль» до места проведения конференции: Ярославская область, Переславский район, с. Веськово, улица Петра Первого, д. 4А

Звучит как угроза или наказание :)

Ответить | Правка | Наверх | Cообщить модератору

129. "В июне в Переславле-Залесском состоится конференция СПО в вы..."  +/
Сообщение от пох. (?), 28-Май-24, 21:41 
Пройду я по Ульянова, потом сверну на Кирова, на Комсомольской улице я постою в тени...

Ответить | Правка | Наверх | Cообщить модератору

29. "В июне в Переславле-Залесском состоится конференция СПО в вы..."  –1 +/
Сообщение от Аноним (29), 28-Май-24, 09:54 
Какое жеж это "свободное" программное обеспечение, если на него надо покупать лицензию? "Свободное" оно только для тех, кто ее продает.
Ответить | Правка | Наверх | Cообщить модератору

34. "В июне в Переславле-Залесском состоится конференция СПО в вы..."  +2 +/
Сообщение от n00by (ok), 28-Май-24, 10:18 
Очень просто. Написал к примеру я "никому не нужную" (ц) программку. Мне и говорят: делай нам из неё пакетик, и свободен.
Ответить | Правка | Наверх | Cообщить модератору

62. "В июне в Переславле-Залесском состоится конференция СПО в вы..."  –1 +/
Сообщение от Sw00p aka Jerom (?), 28-Май-24, 12:00 
программиравайдавай.jpg
Ответить | Правка | Наверх | Cообщить модератору

147. "В июне в Переславле-Залесском состоится конференция СПО в вы..."  +/
Сообщение от n00by (ok), 29-Май-24, 16:14 
> программиравайдавай.jpg

Напрограммировал:


* The Tribute to Pereslavl-Zalessky

ноль "0";
один "1";
_2-e { ноль; один }
_8-e { _2-e; "2"; "3"; "4"; "5"; "6"; "7"; }
_10e { _8-e; "8"; "9" }
_16e { _10e; "A"; "B"; "C"; "D"; "E"; "F"; }

тип {
  _2-e = _2-e;
  _8-e = _8-e;
  _10e = _10e;
  _16e = _16e;
  .    = -;
}

очередь {
      = ;
  ? . = (? " - " <тип ?>) "\t" <очередь .>;
}

начало = <очередь "0123456789ABCDEFG">;


$ refal radix.ref
Поле зрения:
(0 - _2-e)    (1 - _2-e)    (2 - _8-e)    (3 - _8-e)    (4 - _8-e)    (5 - _8-e)    (6 - _8-e)
(7 - _8-e)    (8 - _10e)    (9 - _10e)    (A - _16e)    (B - _16e)    (C - _16e)    (D - _16e)
(E - _16e)    (F - _16e)    (G - -)


Теперь думаю, что это такое вообще.
Ответить | Правка | Наверх | Cообщить модератору

154. "В июне в Переславле-Залесском состоится конференция СПО в вы..."  +/
Сообщение от Sw00p aka Jerom (?), 29-Май-24, 18:26 
>[оверквотинг удален]
> начало = <очередь "0123456789ABCDEFG">;
> $ refal radix.ref
> Поле зрения:
> (0 - _2-e) (1 - _2-e) (2 - _8-e) (3 - _8-e)
> (4 - _8-e) (5 - _8-e) (6 - _8-e)
> (7 - _8-e) (8 - _10e) (9 - _10e) (A - _16e)
> (B - _16e) (C - _16e) (D - _16e)
> (E - _16e) (F - _16e) (G - -)
>
> Теперь думаю, что это такое вообще.

Тут _2-e

8-e { _2-e; "2"; "3"; "4"; "5"; "6"; "7"; }

разве не подмножество?

8-e { { ноль; один }; "2"; "3"; "4"; "5"; "6"; "7"; }

и как в таком случае у вас метчинг происходит?

Ответить | Правка | Наверх | Cообщить модератору

161. "В июне в Переславле-Залесском состоится конференция СПО в вы..."  +/
Сообщение от n00by (ok), 30-Май-24, 06:50 
>[оверквотинг удален]
>> (7 - _8-e) (8 - _10e) (9 - _10e) (A - _16e)
>> (B - _16e) (C - _16e) (D - _16e)
>> (E - _16e) (F - _16e) (G - -)
>>
>> Теперь думаю, что это такое вообще.
> Тут _2-e
> 8-e { _2-e; "2"; "3"; "4"; "5"; "6"; "7"; }
> разве не подмножество?
> 8-e { { ноль; один }; "2"; "3"; "4"; "5"; "6"; "7";
> }

8-e по смыслу получается { "0"; "1"; "2"; "3"; "4"; "5"; "6"; "7"; }

В Рефале подобное называется функцией. Но там положено, что бы в каждом предложении был спецсимвол =. Слева от него образец, а справа результат - вычисляется, если аргумент подходит под образец. Иначе рассматривается следующее предложение (разделяются точкой с запятой).

> и как в таком случае у вас метчинг происходит?

По вот этой очереди:

тип {
  _2-e = _2-e;
  _8-e = _8-e;
  _10e = _10e;
  _16e = _16e;
  .    = -;
}

Если убрать первое предложение, то "0" распознается как _8-e и т.д. Но это так у меня.

В Рефал-5, что бы получить тот же вывод, функция "тип" должны быть примерно такой:

type {
  "0" = _2-e;
  "1" = _2-e;
  "2" = _8-e;
  "3" = _8-e;
  "4" = _8-e;
  "5" = _8-e;
  "6" = _8-e;
  "7" = _8-e;
  "8" = _10e;
  "9" = _10e;
  "A" = _16e;
  "B" = _16e;
  "C" = _16e;
  "D" = _16e;
  "E" = _16e;
  "F" = _16e;
   .  = -;
}

Если же надо проверить, является ли "0" шестнадцатиричной, тогда придётся написать отдельную функцию. Рефал как бы очень высокоуровневый и сортирует списки меньшим количеством строк чем Лисп, но где-то регекспы получаются проще.

В Рефал нельзя так просто слева от скобки указать имя функции (оно рассматривается просто как идентификатор и матчится только с таким же). У меня разрешено объявление функций только с образцом, а если их имена встречаются в образце, тогда их образцы подставляются вместо имени. Теперь я буду джва года думать, почему авторы языка так не сделали.

Ответить | Правка | Наверх | Cообщить модератору

180. "В июне в Переславле-Залесском состоится конференция СПО в вы..."  +/
Сообщение от Sw00p aka Jerom (?), 30-Май-24, 17:10 
> 8-e по смыслу получается { "0"; "1"; "2"; "3"; "4"; "5"; "6";
> "7"; }
> В Рефале подобное называется функцией. Но там положено, что бы в каждом
> предложении был спецсимвол =. Слева от него образец, а справа результат
> - вычисляется, если аргумент подходит под образец. Иначе рассматривается следующее предложение
> (разделяются точкой с запятой).

Ясно, пришлось прочитать справочник. http://www.refal.net/rf5_frm.htm

Но, что это такое?

ноль "0";
один "1";

почему вне функций? Или вот это

_2-e { ноль; один }

Где сопоставления внутри функции?

Вот БНФ функции

program ::= f-definition
        f-definition  program
        f-definition ;  program
            external-decl ;  program
            program  external-decl ;

f-definition ::= f-name {  block }
         $ENTRY  f-name {  block }

external-decl ::= $EXTERNAL  f-name-list
                  $EXTERN  f-name-list
                  $EXTRN  f-name-list

f-name-list ::= f-name
                f-name , f-name-list

block ::= sentence
          sentence ;
          sentence ;  block

sentence ::= left-side  conditions  =   right-side
         left-side  conditions  ,  block-ending

left-side ::= pattern

conditions ::= empty
               , arg : pattern conditions

arg ::= expression

right-side ::= expression

block-ending ::= arg : { block }


И имена идентификаторов с маленькой буквы. Эт вообще валидный синтаксис? Или это диалект Рефала?

> У меня разрешено объявление функций только с образцом, а если их имена
> встречаются в образце, тогда их образцы подставляются вместо имени.

Эт ваш диалект Рефала?


left-side ::= pattern

А где определение pattern ?

right-side ::= expression

Тут понятно - общее выражение судя БНФ.

expression ::= empty
               term expression

term ::= symbol
         variable  
         (expression)
         <f-name expression>

f-name ::= identifier
empty ::=


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

Я немного не понял, что вы имеете ввиду, вы хотите в left-side иметь возможность указать идентификаторы функций?


пс: мне чет не понравился этот Рефал, ерланг намного понятней. Рефал ближе к истокам понятия Кодирование Чёрча, чем к функциональному яп современного мира.

Ответить | Правка | Наверх | Cообщить модератору

195. "В июне в Переславле-Залесском состоится конференция СПО в вы..."  +/
Сообщение от n00by (ok), 31-Май-24, 11:34 
>[оверквотинг удален]
>> "7"; }
>> В Рефале подобное называется функцией. Но там положено, что бы в каждом
>> предложении был спецсимвол =. Слева от него образец, а справа результат
>> - вычисляется, если аргумент подходит под образец. Иначе рассматривается следующее предложение
>> (разделяются точкой с запятой).
> Ясно, пришлось прочитать справочник. http://www.refal.net/rf5_frm.htm
> Но, что это такое?
> ноль "0";
> один "1";
> почему вне функций?

Это сахар над

ноль { "0"; }

Функции с одним предложением можно без скобочек. Такое есть и в диалекте FLAC, там можно даже предложения одной функции раскидывать по разным файлам.

> Или вот это
> _2-e { ноль; один }
> Где сопоставления внутри функции?

Сопоставление происходит в той функции, где имя данной встречается в образце.

В Рефал-5 в таком случае имена функций рассматриваются как уникальные значения, совпадать может только с таким же именем, если оно встретится в аргументе.

Поскольку язык как бы функциональный, но иногда надо где-то хранить значения, там придумана "копилка", во время исполнения вот таким вызовом присваивается значение:

<Br "ноль" "=" "0">

С ней есть проблема: имена "переменных" нигде не объявляются, их приходится искать текстовым редактором. Я под переменные задействовал те функции, что не валидны с точки зрения языка. Это "ноль" можно ещё и во время исполнения изменять, удалять или добавлять предложения. Просто потому, что это очень просто технически: скомпилированные в байт-код функции хранятся в том же списке, где и аргументы ("поле зрение" в терминологии Рефала). Потом немного доработал распознаватель в исполнителе байт-кода, и получилось вот такое. Если бы "функция ноль" не была определена в исходнике таким образом, то распознавалась бы как и раньше.

>[оверквотинг удален]
> sentence ::= left-side  conditions  =   right-side
>       left-side  conditions  ,  
> block-ending
> left-side ::= pattern
> conditions ::= empty
>            
>    , arg : pattern conditions
> arg ::= expression
> right-side ::= expression
> block-ending ::= arg : { block }

Турчин сделал Рефал, что бы вот такое не писать, а описывать на Рефале. Не знаю, какой смайлик тут ставить. %)

> И имена идентификаторов с маленькой буквы. Эт вообще валидный синтаксис? Или это
> диалект Рефала?

Диалект.

>> У меня разрешено объявление функций только с образцом, а если их имена
>> встречаются в образце, тогда их образцы подставляются вместо имени.
> Эт ваш диалект Рефала?

Скорее, опытный образец.

> left-side ::= pattern
> А где определение pattern ?

Весь язык в книге Турчина на страницах 3 и 4. Паттерн идёт до знака равенства и может быть пуст. может содержать цифры, буквы, идентификаторы (имена функций) и структурные скобки (для группировки данных, должны быть парными) - если образец совпадает с аргументами, тогда вычисляется идущее после =, иначе смотрится следующее предложение. Ещё могут встречаться переменные, куда попадают оставшиеся данные.

> right-side ::= expression
> Тут понятно - общее выражение судя БНФ.

Оно же выражение-результат. После знака равенства.

>[оверквотинг удален]
> term ::= symbol
>          variable
>          (expression)
>          <f-name expression>
> f-name ::= identifier
> empty ::=
>> Теперь я
>> буду джва года думать, почему авторы языка так не сделали.
> Я немного не понял, что вы имеете ввиду, вы хотите в left-side
> иметь возможность указать идентификаторы функций?

Я хочу понять, почему Турчин и последователи такое не сделали, когда само напрашивается и в строчках кода цена копеечная. У меня, например, вложенные блоки пока не поддерживаются: заметно усложнят раскрутку стека переменных в интерпретаторе, а его декомпозицию раньше времени делать не хочется.

> пс: мне чет не понравился этот Рефал, ерланг намного понятней. Рефал ближе
> к истокам понятия Кодирование Чёрча, чем к функциональному яп современного мира.

Эрланг это для профессоров, а Рефал ближе к народу, это нормальные алгорифмы Маркова. Функциональным его называют, вероятно, что бы не шокировать знатоков тезиса Чёрча-Тьюринга.

Ответить | Правка | Наверх | Cообщить модератору

201. "В июне в Переславле-Залесском состоится конференция СПО в вы..."  +/
Сообщение от Sw00p aka Jerom (?), 31-Май-24, 15:39 
> Это сахар над

А вот тут я думаю "ошибка", как может (должен ли) НАМ содержать в себе "сахар"? В нем нет необходимости, это же лишнее "переписывание" (подстановки).

> Сопоставление происходит в той функции, где имя данной встречается в образце.

это же "неявно", и как можно использовать что-либо "неявное" для формального определения. Помимо "сахара" к ним можно отнести и "built-in"-ы.

> Турчин сделал Рефал, что бы вот такое не писать, а описывать на
> Рефале. Не знаю, какой смайлик тут ставить. %)

Ну и какой тип грамматики тогда? Разве не второй (контекстно-свободная), как и БНФ?

https://ru.wikipedia.org/wiki/%D0%A4%D0%...

Вот тут https://habr.com/ru/articles/682972/ обсуждение, и задались вопросом, "а не тоже самое ли это, что и ТМ или лямда Черча". Ну вот чем "перепись" (правила подстановки) отличаются от таблиц состояний (переходов) той же ТМ?

> Диалект.
> Скорее, опытный образец.

Ясно.

> Весь язык в книге Турчина на страницах 3 и 4. Паттерн идёт
> до знака равенства и может быть пуст. может содержать цифры, буквы,
> идентификаторы (имена функций) и структурные скобки (для группировки данных, должны быть
> парными) - если образец совпадает с аргументами, тогда вычисляется идущее после
> =, иначе смотрится следующее предложение. Ещё могут встречаться переменные, куда попадают
> оставшиеся данные.

Я к тому, что привели неполное БНФ определение в книге.

> Я хочу понять, почему Турчин и последователи такое не сделали, когда само
> напрашивается и в строчках кода цена копеечная. У меня, например, вложенные
> блоки пока не поддерживаются: заметно усложнят раскрутку стека переменных в интерпретаторе,
> а его декомпозицию раньше времени делать не хочется.

Я думаю в виду неявности.

ноль "0";
один "1";
_2-e { ноль; один }

тип {
  _2-e = _2-e;
}

неявно развернется в

type {
  "0" = _2-e;
  "1" = _2-e;
}


> а Рефал ближе к народу, это нормальные алгорифмы Маркова.

НАМ - это правила подстановок (не вычислений), а Рефал это именно функциональный ЯП, там же есть определение функции.

Ответить | Правка | Наверх | Cообщить модератору

204. "В июне в Переславле-Залесском состоится конференция СПО в вы..."  +/
Сообщение от n00by (ok), 31-Май-24, 17:56 
>> Это сахар над
> А вот тут я думаю "ошибка", как может (должен ли) НАМ содержать
> в себе "сахар"? В нем нет необходимости, это же лишнее "переписывание"
> (подстановки).

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

В случае вычислимых функций мне так проще писать и больше похоже на курс математики.

x = 1; // эта функция "вычисляется" и вернёт 1, если ей не передавать аргументы.

>> Сопоставление происходит в той функции, где имя данной встречается в образце.
> это же "неявно", и как можно использовать что-либо "неявное" для формального определения.
> Помимо "сахара" к ним можно отнести и "built-in"-ы.
>> Турчин сделал Рефал, что бы вот такое не писать, а описывать на
>> Рефале. Не знаю, какой смайлик тут ставить. %)
> Ну и какой тип грамматики тогда? Разве не второй (контекстно-свободная), как и
> БНФ?
> https://ru.wikipedia.org/wiki/%D0%A4%D0%...
> Вот тут https://habr.com/ru/articles/682972/

rule Q [ * C m dT ]
rule C 4200
rule m 5
rule dT 20

print Q

У него * каким-то хитрым образом оказалось определено. В Рефале это часть библиотеки. Можно сделать, что бы перемножало больше 2-х множителей, но пока только 2, потому приходится определять ещё одно умножение:

mul {
   ?1 ?2     = <?1 * ?2>;
   ?1 ?2 ... = <<?1 * ?2> mul ...>;
}

Q = (<mul <C>  <m> <dT>>); // скобки () не нужны, добавлены, поскольку это аналог []
C = 4200;
m = 5;
dT = 20;

go = <Q>;

По-моему, = понятнее. <> только мозолят глаз, это вызов функций (или применение правил). Без них можно примерно так:

Q2 = (mul C m dT);
subst {
  ?     = <Mu ?>;            
  ? ... = <Mu ?> <subst ...>; // Mu вызывает 1-ю функцию из списка
}
apply (?a ...) = <Mu ?a <subst ...>>;

go = <apply <Q2>>;

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

Вернее было бы передать в программу на Рефале задачу прямо в текстовом виде, что бы по образцам ("кг", "Дж/кг×°C") найти рядом значения и посчитать:


теплообмен
  .1 "масс"        .2 " " .масса        " кг"
  .3 "теплоёмкост" .4 " " .теплоёмкость " Дж/кг×°C"
  .5 "на "                .нагрев       "°C" ...
    = <* <* <Numb .масса> <Numb .теплоёмкость>> <Numb .нагрев>>;

начало = <теплообмен "Воде, массой 5 кг и теплоёмкостью 4200 Дж/кг×°C, сообщили теплоту. В результате её температура изменилась на 20°C.">;

Ветвлений в Рефале "нет", поскольку они происходят при выборе подходящего образца.

И там дальше принимаются вводить массу ключевых слов, а в Рефале их по сути нет, только знаки препинания.

> обсуждение, и задались вопросом, "а не тоже
> самое ли это, что и ТМ или лямда Черча". Ну вот
> чем "перепись" (правила подстановки) отличаются от таблиц состояний (переходов) той же
> ТМ?

Так это должно быть очевидно из тезиса Чёрча-Тьюринга. Почему-то к ним приписали третьим физика Дойча, хотя следовало бы Маркова - всё таки по НАМ есть ЯП, а по "Теории Всего" Дойча пока только Elden Ring.

>> Диалект.
>> Скорее, опытный образец.
> Ясно.
>> Весь язык в книге Турчина на страницах 3 и 4. Паттерн идёт
>> до знака равенства и может быть пуст. может содержать цифры, буквы,
>> идентификаторы (имена функций) и структурные скобки (для группировки данных, должны быть
>> парными) - если образец совпадает с аргументами, тогда вычисляется идущее после
>> =, иначе смотрится следующее предложение. Ещё могут встречаться переменные, куда попадают
>> оставшиеся данные.
> Я к тому, что привели неполное БНФ определение в книге.

Как было http://refal.ru/rf5_frm.htm так и скопировал в pdf.

>[оверквотинг удален]
> один "1";
> _2-e { ноль; один }
> тип {
>   _2-e = _2-e;
> }
> неявно развернется в
> type {
>   "0" = _2-e;
>   "1" = _2-e;
> }

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

тип {
  {"0"; "1"} = _2-e;
}

поддержать несложно, и теперь уже, наверное, нужно.

>> а Рефал ближе к народу, это нормальные алгорифмы Маркова.
> НАМ - это правила подстановок (не вычислений), а Рефал это именно функциональный
> ЯП, там же есть определение функции.

Так и в Си есть определения функций. Рефал подставляет так: в примере "теплообмен" переменные .масса  .теплоёмкость и .нагрев принимают подходящие значения и подставляются в результат, после чего для них вызываются функции Numb и подставляют вместо текстового представления целые числа, остальное откидывается.

Ответить | Правка | Наверх | Cообщить модератору

211. "В июне в Переславле-Залесском состоится конференция СПО в вы..."  +/
Сообщение от Sw00p aka Jerom (?), 01-Июн-24, 01:13 
> Так это должно быть очевидно из тезиса Чёрча-Тьюринга. Почему-то к ним приписали
> третьим физика Дойча, хотя следовало бы Маркова - всё таки по
> НАМ есть ЯП, а по "Теории Всего" Дойча пока только Elden
> Ring.

покопался по вики и наткнулся на

https://en.wikipedia.org/wiki/Semi-Thue_system

странно, что нет русской версии этой страницы, далее

https://en.wikipedia.org/wiki/Abstract_rewriting_system

и в конце вот эта

https://en.wikipedia.org/wiki/Word_problem_(mathematics)

у которой тоже нет русской версии, и расставлет все "точки над И" в вопросе - "хотя следовало бы Маркова".

1914: Axel Thue poses the word problem for finitely presented semigroups.

1947: Emil Post and Andrey Markov Jr. independently construct finitely presented semigroups with unsolvable word problem.[14][15] Post's construction is built on Turing machines while Markov's uses Post's normal systems.[3]

SRS (string rewriting system) как я понял ввел Thue для попытки разрешения Word problem. НАМ и есть та самая SRS.

> Как было http://refal.ru/rf5_frm.htm так и скопировал в pdf.

Так предъява не вам, а к оригиналу :) Там местами ошибки есть, и картинка 1.1 неправильная где

(A + B) * (C + D)


> Вот такую запись:
> тип {
>   {"0"; "1"} = _2-e;
> }
> поддержать несложно, и теперь уже, наверное, нужно.

СТОП:

Почему должно разворачиваться в

type {
   "0" = _2-e;
   "1" = _2-e;
}

Это ведь не сматчится ни с первым ни со вторым правилом.

> и подставляют вместо текстового представления целые числа

ну а как представлены эти числа? Тут:

https://ru.wikipedia.org/wiki/%D0%9A%D0%...

они представлены как функция. А в случае с НАМ это часть алфавита. И приходится его расширять, а расширяя мы получаем современный функциональный ЯП. Вон добавили юникод в Рефал, а как - расширив алфавит.

Ответить | Правка | Наверх | Cообщить модератору

215. "В июне в Переславле-Залесском состоится конференция СПО в вы..."  +/
Сообщение от n00by (ok), 01-Июн-24, 11:58 
>> Так это должно быть очевидно из тезиса Чёрча-Тьюринга. Почему-то к ним приписали
>> третьим физика Дойча, хотя следовало бы Маркова - всё таки по
>> НАМ есть ЯП, а по "Теории Всего" Дойча пока только Elden
>> Ring.
> покопался по вики и наткнулся на
> https://en.wikipedia.org/wiki/Semi-Thue_system
> странно, что нет русской версии этой страницы, далее

Потому что не надо никому. Турчин жил в эпоху, когда здесь началось кукурузозамещение. Той политики партии поныне в большинстве своём и придерживаются. Все должны знать английский™, а уж способные понять вон то - тем более. Иначе в обмен на кого будут дарить исходники?

>[оверквотинг удален]
> и в конце вот эта
> https://en.wikipedia.org/wiki/Word_problem_(mathematics)
> у которой тоже нет русской версии, и расставлет все "точки над И"
> в вопросе - "хотя следовало бы Маркова".
> 1914: Axel Thue poses the word problem for finitely presented semigroups.
> 1947: Emil Post and Andrey Markov Jr. independently construct finitely presented semigroups
> with unsolvable word problem.[14][15] Post's construction is built on Turing machines
> while Markov's uses Post's normal systems.[3]
> SRS (string rewriting system) как я понял ввел Thue для попытки разрешения
> Word problem. НАМ и есть та самая SRS.

Так это совсем неудобно получается? Thue надобно первым писать, а уж затем Чёрча с Тьюрингом. Очень неудобные вопросы возникают. Как так вышло, что в какой-то дремучей стране смогли ту идею хоть как-то развить, в отличие от лидеров.

>> Как было http://refal.ru/rf5_frm.htm так и скопировал в pdf.
> Так предъява не вам, а к оригиналу :) Там местами ошибки есть,
> и картинка 1.1 неправильная где
> (A + B) * (C + D)

Спасибо.

>[оверквотинг удален]
>> тип {
>>   {"0"; "1"} = _2-e;
>> }
>> поддержать несложно, и теперь уже, наверное, нужно.
> СТОП:
> Почему должно разворачиваться в
> type {
>    "0" = _2-e;
>    "1" = _2-e;
> }

Оно не развернётся в два предложения, но результат будет одинаков. По правилам Рефал смотрит образец в первом предложении, если не походит, тогда следующее и т.д. В новой записи получается, что у одного предложения два образца. Проверяются по тем же правилам: первый, второй, ...

> Это ведь не сматчится ни с первым ни со вторым правилом.

ноль "0";
один "1";
_2-e { ноль; один }

тип {
  _2-e = _2-e;
}

вместо _2-e слева от = выполнена подстановка { ноль; один } и при этом вместо ноль и один подставлены "0" и "1". Справа от = _2-e ничем не заменяется (для этого требовались бы <> и наличие = в определении _2-e).

>> и подставляют вместо текстового представления целые числа
> ну а как представлены эти числа? Тут:
> https://ru.wikipedia.org/wiki/%D0%9A%D0%...
> они представлены как функция.

Числа это обычный uint64_t (в оригинале у Турчина последовательность uint32_t, то есть длинная арифметика; мне пока не понятно, надо ли такое). Если на самом Рефале реализовать арифметику, то получится громоздко и считать будет долго. Потому арифметика пишется функциями на Си.

> А в случае с НАМ это часть алфавита.

При этом 0 и "0" не одно и тоже. Вот https://github.com/STrusov/refal-machine/blob/master/Примеры/арифметика.реф
пример вычислений где

всецифры = "Z" "I" "2" "3" "4" "5" "6" "7" "8" "9";

> И приходится его расширять, а расширяя мы получаем современный функциональный ЯП.
> Вон добавили юникод в Рефал, а как - расширив алфавит.

Там академичный подход, вот они и расширяли алфавит год. Я показал Рефал одному программисту на баш (в хорошем смысле этого слова, и знает Perl), так он, привыкший к консоли, сходу выдал "это же можно сделать так, что бы мышкой составлять все эти функции?" Кому-то Рефал понятнее, если воспринимать его императивно, а значит для большинства проще функциональных ЯП.

Ответить | Правка | Наверх | Cообщить модератору

220. "В июне в Переславле-Залесском состоится конференция СПО в вы..."  +/
Сообщение от Sw00p aka Jerom (?), 01-Июн-24, 13:18 
> Потому что не надо никому.

А ничего и не изменилось с тех пор, ну хоть не убили!

> Так это совсем неудобно получается? Thue надобно первым писать, а уж затем
> Чёрча с Тьюрингом. Очень неудобные вопросы возникают.

Вот, честно, я вообще не понимаю этой ереси с "именными" теоремами (гипотезами) и т.д. Из-за этого возникакают вот такие неудобные вопросы. Но математика не для самодуров. Имена, даты - важны в контексте истории, их надо помнить не отрицаю, но математика и без имен и дат этих существует. В случае кого "надобно первым писать" зависит от контекста, кто какую перед собой задачу ставил и какую проблему решал. Таким макаром надо первым туда пихнуть Гильберта, ибо эт он во всем виноват, своим формализмом всея вокруг (обмазать). Я противник этой ереси, для меня важно исторически знать вклад каждого в данный вопрос даже и не очень важно хронологически (вопрос кто первый - это же во вред всегда, история Лейбница и Ньютона, печальная история с Перельманом).

> Как так вышло, что
> в какой-то дремучей стране смогли ту идею хоть как-то развить, в
> отличие от лидеров.

Таким макаром можно и говорить, почему математики прошедших вермен начинались на Аль-... и теперь вообще ни одного, и страны, не дремучие тогда, щас пни (пень).

> Оно не развернётся в два предложения, но результат будет одинаков.

Да, все правильно, меня замкнуло.


> ноль "0";
> один "1";
> _2-e { ноль; один }
> тип {
>   _2-e = _2-e;
> }
> вместо _2-e слева от = выполнена подстановка { ноль; один } и
> при этом вместо ноль и один подставлены "0" и "1". Справа
> от = _2-e ничем не заменяется (для этого требовались бы <>
> и наличие = в определении _2-e).

Вот кстати пропустил момент, справа от = там нет <> (вызова функции), но почему тогда _2-e не в кавычках? Это же просто получается строка.

тип {
   _2-e = "_2-e";
}

> Если на самом Рефале реализовать арифметику, то получится громоздко и считать будет долго.
> Потому арифметика пишется функциями на Си.

Тоже самое и про кодирование Черча:

"""
Кодировка Черча, как правило, не используется для практической реализации примитивных типов данных.
"""

>> А в случае с НАМ это часть алфавита.
> При этом 0 и "0" не одно и тоже.

Потомучто два разных слова 0 (1 символ) и "0" - три символа, " - кавычка ведь тоже часть алфавита. И все зависит от выбранных правил (грамматики). Кстати, к вопросу грамматики, НАМ все же к какому типу (по ерархии Хомского) грамматик относится?

> "это же можно сделать так, что бы мышкой составлять все эти функции?"

в отличии от всяких ЯП с goto :)

> Кому-то Рефал
> понятнее, если воспринимать его императивно, а значит для большинства проще функциональных
> ЯП.

Зависит от восприятия, детям ведь унарная арифметика понятнее чем десятичная. Эт как всю жизнь читал текста слева направо, а теперь изучаешь какой-нибудь язык из семитской группы.

Ответить | Правка | Наверх | Cообщить модератору

226. "В июне в Переславле-Залесском состоится конференция СПО в вы..."  +/
Сообщение от n00by (ok), 01-Июн-24, 17:05 
>> Потому что не надо никому.
> А ничего и не изменилось с тех пор, ну хоть не убили!

Изменилось не так давно. Торговцы имеют смысл, когда надо привезти вагон муки, складировать и так далее - они честно зарабатывают свою долю. Для доставки ПО всё это не требуется, даже компакт-диски отмерли. Весь этот симулякр с упаковкой отомрёт, как только RedHat, а за ним и Debian обеспечат воспроизводимые сборки. Исходники ведь безопасны, так нас учат дистрибуторы? :) И народ созревает, покупает СтимДек и спрашивает, как поставить игрушки с торрентов.

>> Так это совсем неудобно получается? Thue надобно первым писать, а уж затем
>> Чёрча с Тьюрингом. Очень неудобные вопросы возникают.
> Вот, честно, я вообще не понимаю этой ереси с "именными" теоремами (гипотезами)

Нет понимания, потому что у математиков и коммерсантов все ценности диаметрально противоположны. Жители США исходно умели строить фигвам, всё остальное там создали понаехавшие. В том числе и схемки для привлечения новых талантов. В общем случае должны быть: 1) отличная от нуля вероятность перемещения; 2) разность потенциалов.

> и т.д. Из-за этого возникакают вот такие неудобные вопросы. Но математика
> не для самодуров. Имена, даты - важны в контексте истории, их
> надо помнить не отрицаю, но математика и без имен и дат
> этих существует. В случае кого "надобно первым писать" зависит от контекста,
> кто какую перед собой задачу ставил и какую проблему решал. Таким
> макаром надо первым туда пихнуть Гильберта, ибо эт он во всем
> виноват, своим формализмом всея вокруг (обмазать). Я противник этой ереси, для
> меня важно исторически знать вклад каждого в данный вопрос даже и
> не очень важно хронологически (вопрос кто первый - это же во
> вред всегда, история Лейбница и Ньютона, печальная история с Перельманом).

Мне в этом плане интересно, что лямбда Чёрча - это хорошо и правильно, когда функции чистые, но в лучшем случае 1% всего населения имеет способность её понять. И из тех добрая половина читает проповеди о чистоте души, а вторая вычисляет превращение гелия в тритий. В большинстве своём люди мыслят предметно и потому имеем, что почти всё написано на императивных языках, со всеми вытекающими. Если Турчин хотел от Рефала суперкомпиляцию, то мне кажется, что это некий компромисс. ну и опять же - может оказаться понятнее соотечественникам Маркова.

>> Как так вышло, что
>> в какой-то дремучей стране смогли ту идею хоть как-то развить, в
>> отличие от лидеров.
> Таким макаром можно и говорить, почему математики прошедших вермен начинались на Аль-...
> и теперь вообще ни одного, и страны, не дремучие тогда, щас
> пни (пень).

Потому что ойкумена была другая, и помимо день-ночь и лето-зима есть другие циклы. Для центра притяжения важно, что сейчас есть, и как это можно выгодно продать.

>[оверквотинг удален]
>> вместо _2-e слева от = выполнена подстановка { ноль; один } и
>> при этом вместо ноль и один подставлены "0" и "1". Справа
>> от = _2-e ничем не заменяется (для этого требовались бы <>
>> и наличие = в определении _2-e).
> Вот кстати пропустил момент, справа от = там нет <> (вызова функции),
> но почему тогда _2-e не в кавычках? Это же просто получается
> строка.
> тип {
>    _2-e = "_2-e";
> }

"_2-e" это строка из 4-х символов, а _2-е это идентификатор (технически, ссылка на байткод функции). Когда оно выводится для человека, нет особой разницы, что возвращать, можно и в кавычках (у меня в консоли различаются цветом, но это наверное надо сделать отключаемым). Если же результат передавать в другую функцию, то матчиться будет по-разному. Строку можно разобрать на символы, склеить и т.п, а идентификатор в виде текста оказывается только при выводе.

>> Если на самом Рефале реализовать арифметику, то получится громоздко и считать будет долго.
>> Потому арифметика пишется функциями на Си.
> Тоже самое и про кодирование Черча:
> """
> Кодировка Черча, как правило, не используется для практической реализации примитивных
> типов данных.
> """

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

Как раз с этим у меня самый затык. Вернуть как результат байт-код сгенерированной функции несложно. Но если эта функция делает что-то полезное, вроде чтения файла, то в какой-то момент потребуется описатель файла закрыть. Обычно это делает сборщик мусора, но в Рефале все данные хранятся в двусвязном списке и "сами" освобождаются, когда больше не требуются. Когда мегабайт освобождается за О(1) очень не хочется весь этот список просматривать на наличие описателя.

Вот такое способ работы с файлами:

<Open 'r' 3 "файл">
<
<Close 3>

наверняка и есть одна из причин, почему язык не пошёл. Лямбды как раз пригодились бы, а там пусть функциональным называется. :)

>>> А в случае с НАМ это часть алфавита.
>> При этом 0 и "0" не одно и тоже.
> Потомучто два разных слова 0 (1 символ) и "0" - три символа,
> " - кавычка ведь тоже часть алфавита. И все зависит от
> выбранных правил (грамматики).

Кавычка есть только в исходнике и на уровне лексера. В обрабатываемых данных и то и то 1 элемент (ячейка памяти). Такая ячейка помещается в т.н. s-переменную.

Когда s-переменная стоит в начале образца, в неё попадёт первый элемент данных (кроме скобок).

f {
  s.1 e.1 = <Print s.1>; // подставит в результат первый символ строки, зхатем его выведет Print.
}

> Кстати, к вопросу грамматики, НАМ все же к
> какому типу (по ерархии Хомского) грамматик относится?

Здесь https://cmcmsu.info/download/formal.grammars.and.languages.2... на стр 10 пишут, что тип 0.

>> "это же можно сделать так, что бы мышкой составлять все эти функции?"
> в отличии от всяких ЯП с goto :)

У меня как раз в этом Рефале транслятор был изначально в 1000 строк из которых треть goto. :) Т.е. это достаточно простой язык, что бы вот так написать почти без ошибок.

>> Кому-то Рефал понятнее, если воспринимать его императивно,
>> а значит для большинства проще функциональных ЯП.
> Зависит от восприятия, детям ведь унарная арифметика понятнее чем десятичная. Эт как
> всю жизнь читал текста слева направо, а теперь изучаешь какой-нибудь язык
> из семитской группы.

Это скорее когнитивная ригидность. А восприятие Мичиганского рыбного теста у разных народов разное https://garbuzenko.livejournal.com
На западе как раз всё свелось к однострочным функциям без комментариев в Clean Code.

Ответить | Правка | К родителю #220 | Наверх | Cообщить модератору

231. "В июне в Переславле-Залесском состоится конференция СПО в вы..."  +/
Сообщение от Sw00p aka Jerom (?), 01-Июн-24, 23:22 
> а _2-е это идентификатор (технически, ссылка
> на байткод функции).

Базисном Рефале просто этого нет:

right-side ::= expression

expression ::= empty
               term expression

term ::= symbol
         variable  
         (expression)
         <f-name expression>

f-name ::= identifier

empty ::=

> (у меня в консоли различаются цветом, но это наверное надо сделать отключаемым). Если же результат передавать
> в другую функцию, то матчиться будет по-разному.

left-side = <f-name _2-е> - так ведь нельзя передавать, надо так ведь <f-name <_2-е>>

или в вашем диалекте разрешено передавать идентификатор в качестве аргумента?


> Как раз с этим у меня самый затык. Вернуть как результат байт-код
> сгенерированной функции несложно.

анонимную функцию? функцию без явного идентификатора?

> Но если эта функция делает что-то полезное, вроде
> чтения файла, то в какой-то момент потребуется описатель файла закрыть. Обычно
> это делает сборщик мусора, но в Рефале все данные хранятся в
> двусвязном списке и "сами" освобождаются, когда больше не требуются. Когда мегабайт
> освобождается за О(1) очень не хочется весь этот список просматривать на
> наличие описателя.

ну надо какой нить "сахар" добавить в определение функции, чтобы запрещать вызов конкретных функций в анонимных (безидентификаторных) функциях, корочь ересь :)

> Вот такое способ работы с файлами:
> <Open 'r' 3 "файл">
> <
> <Close 3>
> наверняка и есть одна из причин, почему язык не пошёл. Лямбды как
> раз пригодились бы, а там пусть функциональным называется. :)

Вот мне непонятно откуда блин взялось это понятие, всегда что-либо надо открыть, сделать дело, закрыть. Почему сразу нельзя сделать дело? Что значит открыть файл? Почему не сразу прочти или запиши по адресу. Мы же не открываем ячейки на ленте Тьюринга, а после записи символа закрываем.

> Здесь https://cmcmsu.info/download/formal.grammars.and.languages.2... на стр
> 10 пишут, что тип 0.

ясно

> Это скорее когнитивная ригидность. А восприятие Мичиганского рыбного теста у разных народов
> разное https://garbuzenko.livejournal.com
> На западе как раз всё свелось к однострочным функциям без комментариев в
> Clean Code.

Тема хорошая, вот появился термин "когнитивной слепоты", а вот что с "когнитивной глухотой"? ведь музыка русских композиторов (всех я даже сказал) высоко ценится на условном западе.

Есть такое наивное рассуждение, что глазное зрение эт орган истины (очевидное - очам видно, то есть от Бога), а вот на ухо шепчет (информация воспринимаемая органами слуха) лукавый (черт) в основном ложь. Отсюда если существует "когнитивная слепота", и не существует "когнитивной глухоты", то наивное утверждение совсем не истинно. :)

Ответить | Правка | К родителю #226 | Наверх | Cообщить модератору

232. "В июне в Переславле-Залесском состоится конференция СПО в вы..."  +/
Сообщение от n00by (ok), 02-Июн-24, 15:16 
>[оверквотинг удален]
> right-side ::= expression
> expression ::= empty
>            
>    term expression
> term ::= symbol
>          variable
>          (expression)
>          <f-name expression>
> f-name ::= identifier
> empty ::=

Да, в Базисном Рефале этого нет. Я и писал, что мне непонятно, почему нет. Добавить проще, чем условия и вложенные блоки после =

>> (у меня в консоли различаются цветом, но это наверное надо сделать отключаемым). Если же результат передавать
>> в другую функцию, то матчиться будет по-разному.
> left-side = <f-name _2-е> - так ведь нельзя передавать, надо так ведь
> <f-name <_2-е>>

Сам по себе идентификатор это часть алфавита. Определили - расширили алфавит. К предопределённым "0" и 0 добавили ещё и Ноль. Если при определении задано тело функции и в её предложениях есть =, то вычислительный скобочки <> такую функцию вызывают. Вызов <_2-е> приведёт к ошибке "отождествление невозможно", поскольку предложения в _2-е содержат лишь образцы. У меня это определяется на стадии трансляции (выводится "активное выражение должно содержать имя вычислимой функции"), но интерпретатор всё равно запускается.

> или в вашем диалекте разрешено передавать идентификатор в качестве аргумента?

Так же и в Базисном Рефале. Пока нет <>, функции не вызываются. Можно идентификатор передать аргументом в функцию Mu, она вызовет функцию по имени (идентификатору, или определённому текстовой строкой в кавычках).

>> Как раз с этим у меня самый затык. Вернуть как результат байт-код
>> сгенерированной функции несложно.
> анонимную функцию? функцию без явного идентификатора?

Идентификатор представляет собой номер ячейки с байт-кодом функции. Если байткод сгенерировать во время исполнения, то идентификатор для неё появится - это не проблема. Если вернуть сам идентификатор (то есть ссылку), то потребуется отслеживать эту ссылку для сборки мусора, иначе можно нагенерировать 100500 функций в рекурсивном вызове и завершится память. Если вернуть функцию "по значению", то есть бай-код её тела, то мусор соберётся сам собой, как только такая функция выйдет из поля зрения. Генерация происходит за O(n) в обоих случаях. Удаление - за O(1) во втором.

>> Но если эта функция делает что-то полезное, вроде
>> чтения файла, то в какой-то момент потребуется описатель файла закрыть. Обычно
>> это делает сборщик мусора, но в Рефале все данные хранятся в
>> двусвязном списке и "сами" освобождаются, когда больше не требуются. Когда мегабайт
>> освобождается за О(1) очень не хочется весь этот список просматривать на
>> наличие описателя.
> ну надо какой нить "сахар" добавить в определение функции, чтобы запрещать вызов
> конкретных функций в анонимных (безидентификаторных) функциях, корочь ересь :)

Так вот как раз лямбды обретают практический смысл, если при их создании вызвать эти конкретные функции, и захватить результат вызова. Так то можно и именованную функцию передать в Map или Apply. Можно и нагородить замыкание из круглых скобочек, будет похоже на LISP.

>> Вот такое способ работы с файлами:
>> <Open 'r' 3 "файл">
>> <
>> <Close 3>
>> наверняка и есть одна из причин, почему язык не пошёл. Лямбды как
>> раз пригодились бы, а там пусть функциональным называется. :)
> Вот мне непонятно откуда блин взялось это понятие, всегда что-либо надо открыть,
> сделать дело, закрыть. Почему сразу нельзя сделать дело? Что значит открыть
> файл? Почему не сразу прочти или запиши по адресу. Мы же
> не открываем ячейки на ленте Тьюринга, а после записи символа закрываем.

Ядро ОС так устроено, со времён Керниганна и Риччи. При открытии создаётся объект ядра со ссылками на блоки в ФС. В пространство пользователя возвращается описатель (хендл), идентификатор того объекта. В принципе, разумно, коду пользователя было бы проще просто писать в файл, а эти объекты в ядре на первый взгляд можно кешировать, что бы не создавать каждый раз. Но возникает проблема с консистентностью, когда разные приложения пишут в один файл и какое-то из них хочет монопольный доступ. Как определить, что оно больше не будет записывать? Здесь нужны новые подходы, как в Фантом ОС, например.

>> Здесь https://cmcmsu.info/download/formal.grammars.and.languages.2... на стр
>> 10 пишут, что тип 0.
> ясно
>> Это скорее когнитивная ригидность. А восприятие Мичиганского рыбного теста у разных народов
>> разное https://garbuzenko.livejournal.com
>> На западе как раз всё свелось к однострочным функциям без комментариев в
>> Clean Code.
> Тема хорошая, вот появился термин "когнитивной слепоты", а вот что с "когнитивной
> глухотой"? ведь музыка русских композиторов (всех я даже сказал) высоко ценится
> на условном западе.

Другой канал ввода. Другие части мозга обрабатывают. Не такое значение имеет, как картина перед глазами. Кошки умеют выделять звуки, просыпаются от шороха или чириканья, когда рядом грохочет трактор и они спят.

> Есть такое наивное рассуждение, что глазное зрение эт орган истины (очевидное -
> очам видно, то есть от Бога), а вот на ухо шепчет
> (информация воспринимаемая органами слуха) лукавый (черт) в основном ложь. Отсюда если
> существует "когнитивная слепота", и не существует "когнитивной глухоты", то наивное утверждение
> совсем не истинно. :)

Когнитивной слепоты множество видов. За писателем текст вычитывает редактор и корректор. Когда "глаз замылился" и очевидное не видно, а на следующий день думаешь "как же так?" - это когнитивная слепота.

Ответить | Правка | К родителю #231 | Наверх | Cообщить модератору

236. "В июне в Переславле-Залесском состоится конференция СПО в вы..."  +/
Сообщение от Sw00p aka Jerom (?), 02-Июн-24, 18:57 
> Я и писал, что мне непонятно,
> почему нет. Добавить проще, чем условия и вложенные блоки после =

Может сохранение "чистоты"? Сайд эффекты появятся ведь.

> Вызов <_2-е> приведёт к ошибке "отождествление
> невозможно", поскольку предложения в _2-е содержат лишь образцы.

Так ведь нет понятия "безаргументной" функции, <_2-е> - это не равносильно вызову с пустым аргументом?

> Если вернуть функцию "по значению", то

А там лишнего копирования не будет? А сайд эффекты? В итоге не получится что-то вроде монады?


> Здесь нужны новые подходы,
> как в Фантом ОС, например.

Идеи Завалишина еще дадут о себе знать.

> Когнитивной слепоты множество видов. За писателем текст вычитывает редактор и корректор.
> Когда "глаз замылился" и очевидное не видно, а на следующий день
> думаешь "как же так?" - это когнитивная слепота.

Эта ошибка, которую он "проглядел" по сути "не произнесенное про себя слово", мы не понимаем написанный текст просто водя по нему глазами, мы обязательно про себя произносим звуки распознавая символы текста. И выходит, что не глаза являются органом осмысления, а внутренний слух. Глаза просто "выделятор", мозг потом матчит со "звуком", "звук" мозгом произносится, и внутреннее ухо слышит его, и уже слуховая подсистема мозга маппит смысл. :)

Ответить | Правка | К родителю #232 | Наверх | Cообщить модератору

237. "В июне в Переславле-Залесском состоится конференция СПО в вы..."  +/
Сообщение от n00by (ok), 03-Июн-24, 12:07 
>> Я и писал, что мне непонятно,
>> почему нет. Добавить проще, чем условия и вложенные блоки после =
> Может сохранение "чистоты"? Сайд эффекты появятся ведь.

Нет там побочных эффектов, в образце появляется ссылка на другие образцы. И реализуется так же просто: если есть ссылка, то смотрится образец, на который она ссылается. М.б. Турчин не хотел, что бы кому-то пришла идея развить это дальше, до вычисления (разрешить скобки <>) в образце, полагая такое ересью. Как раз об этом я теперь и думаю - вроде бы опять проще вложенных блоков и условий. :)

>> Вызов <_2-е> приведёт к ошибке "отождествление
>> невозможно", поскольку предложения в _2-е содержат лишь образцы.
> Так ведь нет понятия "безаргументной" функции, <_2-е> - это не равносильно вызову
> с пустым аргументом?

Равносильно. Аргументов в обычном понимании в Рефале нет. Есть поле зрения (ПЗ) - какой-то "список" данных, м.б. пустой. Если вызвать _2-е с пустым ПЗ, то у неё нет предложения с соответствующим образцом, что бы сматчить пустое ПЗ. В том числе поэтому она и не вызывается, а используется как символ алфавита, который раскрывается в другие символы.

>> Если вернуть функцию "по значению", то
> А там лишнего копирования не будет? А сайд эффекты? В итоге не
> получится что-то вроде монады?

Если генерировать функцию, то так или иначе надо где-то разместить её байт-код. Можно вернуть на него ссылку. Можно генерировать сразу там, где создаётся результат вызывающей функции. То есть лишнего копирования нет. В списочной реализации Рефала минимум лишних копирований: части списка перелинковываются из аргумента в результат. В простейших случаях, когда результат равен аргументу:

e. = e.; // . = .; в моём диалекте

вообще никаких изменений не происходит.

>> Здесь нужны новые подходы,
>> как в Фантом ОС, например.
> Идеи Завалишина еще дадут о себе знать.

Все эти докеры-шмокеры примерно в том направлении и движутся, если об этом призадуматься. Процесс (приложение) изолируется от остальных, включая часть файловой системы.

>> Когнитивной слепоты множество видов. За писателем текст вычитывает редактор и корректор.
>> Когда "глаз замылился" и очевидное не видно, а на следующий день
>> думаешь "как же так?" - это когнитивная слепота.
> Эта ошибка, которую он "проглядел" по сути "не произнесенное про себя слово",

Да, я так одну книжку прочёл, и лишь позже узнал, что главного героя зовут иначе.)

> мы не понимаем написанный текст просто водя по нему глазами, мы
> обязательно про себя произносим звуки распознавая символы текста. И выходит, что
> не глаза являются органом осмысления, а внутренний слух. Глаза просто "выделятор",
> мозг потом матчит со "звуком", "звук" мозгом произносится, и внутреннее ухо
> слышит его, и уже слуховая подсистема мозга маппит смысл. :)

На уходе от такой схемы основаны техники скорочтения. Форматирование исходного текста так же призвано ломать привычку, сдвигая детали в сторону. Блок-схемы, UML и ДРОКОН -всё это ставит целью ускорить понимание в целом, не углубляясь в детали.

Ответить | Правка | К родителю #236 | Наверх | Cообщить модератору

239. "В июне в Переславле-Залесском состоится конференция СПО в вы..."  +/
Сообщение от Sw00p aka Jerom (?), 03-Июн-24, 14:09 
> до вычисления (разрешить скобки <>) в образце,
> полагая такое ересью.

динамический образец?

"""
Имеются следующие важные ограничения на правую часть предложения: правая часть может включать только такие свободные переменные, которые входят также и в левую часть
"""

С такими правилами правая сторона должна быть без свободных переменных?

> Если вызвать _2-е с пустым
> ПЗ, то у неё нет предложения с соответствующим образцом, что бы
> сматчить пустое ПЗ. В том числе поэтому она и не вызывается,
> а используется как символ алфавита, который раскрывается в другие символы.

А не логично было бы, из-за того, что у функции нет формального определения аргумента(ов), неявным (если явно не задано правило) образом определять правило метчинга пустого образца, которое будет возвращать пустой результат в место ошибки "не метчинга ни с одним образцом". То есть поведение по умолчанию, если не задано иное правило метчинга пустого "аргумента".

fun {
   =  ; // по умолчанию
}

> В списочной реализации
> Рефала минимум лишних копирований: части списка перелинковываются из аргумента в результат.
> В простейших случаях, когда результат равен аргументу:
> e. = e.; // . = .; в моём диалекте
> вообще никаких изменений не происходит.

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

> Все эти докеры-шмокеры примерно в том направлении и движутся, если об этом
> призадуматься. Процесс (приложение) изолируется от остальных, включая часть файловой
> системы.

Ну вот приложение калькулятор есть необходимость значить что есть в системе там сетевая подсистема? Нет, но "взломав" калькулятор, мы же может взаимодествовать с сетью. В этом случае ОС как монолит - ересь. Единая физ память ОС и прилолжения - ересь и т.д. (все конечно с точки зрения современных реалий, безопасности)


> Да, я так одну книжку прочёл, и лишь позже узнал, что главного
> героя зовут иначе.)

:))

> На уходе от такой схемы основаны техники скорочтения.

Первоклашки не просто так читают в слух, и по слогам, в самом начале обучения.

Ответить | Правка | К родителю #237 | Наверх | Cообщить модератору

241. "В июне в Переславле-Залесском состоится конференция СПО в вы..."  +/
Сообщение от n00by (ok), 03-Июн-24, 19:11 
>> до вычисления (разрешить скобки <>) в образце,
>> полагая такое ересью.
> динамический образец?

Да, наверное так это следует называть. То есть результат вызова использовать в качестве (части) образца.

> """
> Имеются следующие важные ограничения на правую часть предложения: правая часть может включать
> только такие свободные переменные, которые входят также и в левую часть
> """

Не вполне точно называть ограничением. Смысл в том, что при обработке образца (левой части) в переменные "попадают" данные из аргумента функции (поля зрения). Когда переменная встречается в правой части, вместо неё подставляется значение. Если её нет слева, то что подставлять?

> С такими правилами правая сторона должна быть без свободных переменных?

Не понятно, почему возник такой вопрос. Образец будет обрабатываться как обычно, переменным присваиваться подходящие значения. Как только дело дойдёт до закрывающей скобки > - так будет вызвана функция, идентификатор которой находится между скобок <>. Если внутри скобок были переменные, то к этому моменту им уже присвоены значения. Соответственно, есть что подставлять в правую часть.

С таким вызовом возникает сложность из-за правил обработки e-переменных (произвольный размер) - в каких-то случаях может случиться откат влево по образцу, размер переменной увеличится на 1, и произойдёт очередная попытка сматчить. Может оказаться, что функция в образце вызывается многократно. Но в таких случаях и без того вычислительная сложность высока, их следует избегать, структурировать данные скобками ().

>[оверквотинг удален]
>> сматчить пустое ПЗ. В том числе поэтому она и не вызывается,
>> а используется как символ алфавита, который раскрывается в другие символы.
> А не логично было бы, из-за того, что у функции нет формального
> определения аргумента(ов), неявным (если явно не задано правило) образом определять правило
> метчинга пустого образца, которое будет возвращать пустой результат в место ошибки
> "не метчинга ни с одним образцом". То есть поведение по умолчанию,
> если не задано иное правило метчинга пустого "аргумента".
> fun {
>    =  ; // по умолчанию
> }

Сейчас можно последним предложением ловить все неподходящие данные, ставить e-переменную в образце:

fun {
1 = <Prout "да">;
0 = <Prout "нет">;
. = <Prout "не знаю: " . >;
}

Если в функции что-то не определено в образцах, может быть программист ошибся, забыл? Как эту ситуацию определить?

Существуют диалекты Рефала, где вместо останова исполнителя с ошибкой возвращается что-то условленное, что можно обработать. У меня технически возвращается идентификатор функции и образец, который она не смогла распознать, но на этом исполнитель останавливается. Можно изменить поведение, и возвращать например в структурных скобках: (fun бесполезные "аргументы"). Наверное, такое было бы полезно, если бы Рефал использовался как интерпретатор командной строки и можно было бы исправить что-то и вызвать повторно. Когда исполняется программа из файла, пока не совсем понятно, что с этим делать: оно и дальше будет вызывать ошибку распознавания. При этом восстановить аргументы вызывающих функций проблематично, они уже переработаны.

По поводу отсутствия сигнатур функций - это вообще отдельная интересная тема. Автор Рефал-5-Лямбда формализует их в комментариях, наверное с расчётом их анализировать. Турчин же работал над "суперкомпиляцией". Хотел определять все возможные варианты входных данных, строить граф вызовов и как-то это просчитывать. В принципе ведь, возможные аргументы формализованы образцами в предложениях функции. Другое дело, что во время исполнения может прийти неведомо что.

>> В списочной реализации
>> Рефала минимум лишних копирований: части списка перелинковываются из аргумента в результат.
>> В простейших случаях, когда результат равен аргументу:
>> e. = e.; // . = .; в моём диалекте
>> вообще никаких изменений не происходит.
> В принципе надо пробывать, представьте, что каждый допустим символ аргумента определяет
> динамически образец для сопоставления следующего :)

Примерно так и есть с условиями и блоками в расширенном Рефале. Но там появляются дополнительно спецсимволы , (запятая) и : (двоеточие). Я такую запись как-то не очень воспринимаю. Функции в базовом Рефале похожи на систему уравнений из школьного курса (если не считать <>) и по виду и по смыслу.

>> Все эти докеры-шмокеры примерно в том направлении и движутся, если об этом
>> призадуматься. Процесс (приложение) изолируется от остальных, включая часть файловой
>> системы.
> Ну вот приложение калькулятор есть необходимость значить что есть в системе там
> сетевая подсистема? Нет, но "взломав" калькулятор, мы же может взаимодествовать с
> сетью. В этом случае ОС как монолит - ересь. Единая физ
> память ОС и прилолжения - ересь и т.д. (все конечно с
> точки зрения современных реалий, безопасности)

Именно это достаточно просто ограничить в современных ОС, отфильтровав системные вызовы. С файловой системой всё сложнее, нужно хотя бы что-то типа подтомов ZFS/BtrFS для каждого приложения, которому требуется что-то писать в файлы. И ФС это не просто структуры данных на блочном устройстве, на всё это завязаны менеджер памяти, таблица страниц. Оракловскую ZFS не смогли интегрировать в ядро Linux, прикрутили сбоку изолентой.

>> Да, я так одну книжку прочёл, и лишь позже узнал, что главного
>> героя зовут иначе.)
> :))
>> На уходе от такой схемы основаны техники скорочтения.
> Первоклашки не просто так читают в слух, и по слогам, в самом
> начале обучения.

Потому что так учат. В классе имеет смысл, поскольку кто-то читает лучше и остальные за ними тянутся. Я таблицу умножения не учил почти в школе, до этого игрался с калькулятором, тыкал кнопочки без понимания, оно как-то запомнилось. Вот тот скринсейвер из х/ф "Матрица", когда разные цифры мелькают на экране - он в СССР имел практический смысл. Были такие тесты на профпригодность, считали там нули, например.

Ответить | Правка | К родителю #239 | Наверх | Cообщить модератору

243. "В июне в Переславле-Залесском состоится конференция СПО в вы..."  +/
Сообщение от Sw00p aka Jerom (?), 03-Июн-24, 20:17 
> Если её нет слева, то что подставлять?

Ну выходит, результат вызова функции-образца - это своего рода константа будет, а переменные в правой части можно использовать только когда они явно есть в левой части (в образце). Я к тому, что не будет ситуации, чтобы функция возвращала образец как результат, содержащий свободные переменные. Хотя говорите байт-код, думаю и это возможно, но это будет жутко нелогично и не явно.

Пример псевдокодом:

funA {
<funB> = s.A  
}

funB возвратила неявно образец с переменной А, но данные в эту переменную попадают в области функции funA, хотя логично как указал выше, что они попали бы в funB, и тогда бы возвращалсябы константный образец, и в funA необходимости в переменной A отпадает. Короч, надо думать.

> Не понятно, почему возник такой вопрос. Образец будет обрабатываться как обычно, переменным
> присваиваться подходящие значения.

Пример выше разве допустим будет?

> Если внутри скобок были переменные, то к этому моменту им уже
> присвоены значения. Соответственно, есть что подставлять в правую часть.

funA {
<funB s.A> = s.A  
}

s.A в конексте funA заполнятся (присваивается) так ведь?

> Если в функции что-то не определено в образцах, может быть программист ошибся,
> забыл? Как эту ситуацию определить?

Поведение по-умолчанию я предусматривал к безаргументному вызову (с пустым аргументом). Если просто вызывать функцию (без аргумента), то она возвращает пустоту. А если вызвал с аргументом и там уже что-то не сматчилось, то это в любом случае ошибка сопоставления. То есть правило матчинга пустого только аргумента, может матчится по дефолту.

> Существуют диалекты Рефала, где вместо останова исполнителя с ошибкой возвращается что-то
> условленное, что можно обработать. У меня технически возвращается идентификатор функции
> и образец, который она не смогла распознать, но на этом исполнитель
> останавливается. Можно изменить поведение, и возвращать например в структурных скобках:
> (fun бесполезные "аргументы"). Наверное, такое было бы полезно, если бы Рефал
> использовался как интерпретатор командной строки и можно было бы исправить что-то
> и вызвать повторно. Когда исполняется программа из файла, пока не совсем
> понятно, что с этим делать: оно и дальше будет вызывать ошибку
> распознавания. При этом восстановить аргументы вызывающих функций проблематично, они
> уже переработаны.

Все зависит уже от назначения этого ЯП, если для формальной верификации, то останов считаю лучше. Если для общего назначения, принцип "лет-ит-креш" (эрлангеновский) - ересь как по мне.

> По поводу отсутствия сигнатур функций - это вообще отдельная интересная тема. Автор
> Рефал-5-Лямбда формализует их в комментариях, наверное с расчётом их анализировать. Турчин
> же работал над "суперкомпиляцией". Хотел определять все возможные варианты входных данных,
> строить граф вызовов и как-то это просчитывать. В принципе ведь, возможные
> аргументы формализованы образцами в предложениях функции. Другое дело, что во время
> исполнения может прийти неведомо что.

Это же подобие одной и той же функции с разной арностью, как в эрленге, но и с ограничениями на сами аргументы (возможно guard-ы).

"""
Например, пусть исходный алгоритм — вычисление квадрата числа: square(x) => x * x. Для x = 0 можно получить более короткий и более быстрый вариант алгоритма, который просто возвращает ноль: square(0) => 0.
"""

В случае с эрлангом было бы что-то вроде этого:

square(x) when x==0 ->
return 0

Или просто без аргумента:

square() ->
return 0

> С файловой системой всё сложнее

Как говорится, пока петух не клюнет, ждем когда Линусу какой-нить ваннакрай зашифрует диск, после этого придем к осознанию, что нужна новая модель взаимодействия прикладного ПО с системой и ее ресурсами, принципа максимального изолирования.


> Были такие тесты на профпригодность, считали там нули, например.

Жесть, только глаза портить, эт как овец считать, чтобы заснуть? :)

Ответить | Правка | К родителю #241 | Наверх | Cообщить модератору

248. "В июне в Переславле-Залесском состоится конференция СПО в вы..."  +/
Сообщение от n00by (ok), 04-Июн-24, 11:59 
>> Если её нет слева, то что подставлять?
> Ну выходит, результат вызова функции-образца - это своего рода константа будет,

Да.

> переменные в правой части можно использовать только когда они явно есть
> в левой части (в образце).

Технически, переменная - это ссылка на какой-то элемент аргумента функции.

> Я к тому, что не будет
> ситуации, чтобы функция возвращала образец как результат, содержащий свободные переменные.
> Хотя говорите байт-код, думаю и это возможно, но это будет жутко
> нелогично и не явно.
> Пример псевдокодом:
> funA {
> <funB> = s.A
> }
> funB возвратила неявно образец с переменной А, но данные в эту переменную
> попадают в области функции funA

В принципе, такое можно реализовать. То есть вызов <funB> вернёт байт-код, который исполнитель поймёт как  

funA {
s.A = s.A
}

Проблема в том, что почему бы funB не вернуть s.B? Что с этим делать? При трансляции придётся проверять, что может возвращать funB. А если она вызывается ещё где-то? Гипотетически, возможно, но транслятор превратится из однопроходного в 600 строк в суперкомпилятор (по Турчину). Потому вместо этого в Расширенном Рефале используются вложенные блоки. Можно ещё подумать о таком синтаксисе:

funA {
<{ = s.A }> = s.A
}

Но здесь опять же нарушается логика Рефала, где в результатном выражении переменная принимает значение, полученное при просмотре образца.

Тогда надо как-то выделять случай, когда возвращается опкод переменной, а не присвоенное значение например:

funA {
<{ = [s.A] }> = s.A
}

> хотя логично как указал выше, что
> они попали бы в funB, и тогда бы возвращалсябы константный образец,
> и в funA необходимости в переменной A отпадает. Короч, надо думать.

То есть первая часть (попали бы в funB) вот так

funA {
s.A = <funB s.A>;
}

А вторая часть - дальше результат вызова передать следующей функции - примерно так:

funA {
s.A = <funC <funB s.A>>;
}

"""
Вообще, блок считается синтаксическим сахаром, и запись

Result : { …A… } : { …B… } : { …C… }

является эквивалентом для

<{ …C… } <{ …B… } <{ …A… } Result>>>

т.е. обычной композицией безымянных вложенных функций.

"""

https://github.com/bmstu-iu9/refal-5-lambda/tree/master?tab=...

>> Не понятно, почему возник такой вопрос. Образец будет обрабатываться как обычно, переменным
>> присваиваться подходящие значения.
> Пример выше разве допустим будет?

Нет. Теперь я понял.

>> Если внутри скобок были переменные, то к этому моменту им уже
>> присвоены значения. Соответственно, есть что подставлять в правую часть.
> funA {
> <funB s.A> = s.A
> }
> s.A в конексте funA заполнятся (присваивается) так ведь?

Да. И транслируется в том же контексте. То есть проще разрешить вложенные анонимные функции, если нужнно подобное.

>> Если в функции что-то не определено в образцах, может быть программист ошибся,
>> забыл? Как эту ситуацию определить?
> Поведение по-умолчанию я предусматривал к безаргументному вызову (с пустым аргументом).
> Если просто вызывать функцию (без аргумента), то она возвращает пустоту. А
> если вызвал с аргументом и там уже что-то не сматчилось, то
> это в любом случае ошибка сопоставления. То есть правило матчинга пустого
> только аргумента, может матчится по дефолту.

В том то и дело, что "аргумент" с т.з. Рефала всегда есть - это Поле Зрение. Может быть пустым. Когда функция состоит из нескольких предложений, цена вопроса - написать одно предложение
= ;

Зато это приобретает смысл в случае однострочных функций! При этом не ломает обратную совместимость, если разрешить только для них. Обычно по =; происходит выход из рекурсии, что обязывает даже в простейших случаях писать { } и два предложения. Плюсом, если делать такое умолчание, не обязательно генерировать опкоды для такого предложения. Достаточно в исполнителе добавить проверку. И флажок в командную строку, что бы можно было изменить поведение, если мешает.

Сейчас флажки можно указывать в хешбанге, загрузчик Линукса передаёт командную строку интерпретатору, если запускать программу выставив бит исполнения, а не передавая аргументом в refal.

Можно, наверное, разрешить "глобальное" предложение:

=; // задаём всем функциям последнее предложение.

Но в этом случае придётся думать, как быть с модулями.

>[оверквотинг удален]
>> останавливается. Можно изменить поведение, и возвращать например в структурных скобках:
>> (fun бесполезные "аргументы"). Наверное, такое было бы полезно, если бы Рефал
>> использовался как интерпретатор командной строки и можно было бы исправить что-то
>> и вызвать повторно. Когда исполняется программа из файла, пока не совсем
>> понятно, что с этим делать: оно и дальше будет вызывать ошибку
>> распознавания. При этом восстановить аргументы вызывающих функций проблематично, они
>> уже переработаны.
> Все зависит уже от назначения этого ЯП, если для формальной верификации, то
> останов считаю лучше. Если для общего назначения, принцип "лет-ит-креш" (эрлангеновский)
> - ересь как по мне.

Верификацией пусть участники конференций занимаются.) Из очевидных для меня применений: встроить интерпретатор в программу на др. ЯП и разбирать конфиги или предметно-ориентированный язык, функция на Си возвращает ошибку и перекладывает заботы на вызывающую сторону. Из не совсем пока очевидных: описывать графический интерфейс. Что такое "общее применение", я не знаю.:)

>> По поводу отсутствия сигнатур функций - это вообще отдельная интересная тема. Автор
>> Рефал-5-Лямбда формализует их в комментариях, наверное с расчётом их анализировать. Турчин
>> же работал над "суперкомпиляцией". Хотел определять все возможные варианты входных данных,
>> строить граф вызовов и как-то это просчитывать. В принципе ведь, возможные
>> аргументы формализованы образцами в предложениях функции. Другое дело, что во время
>> исполнения может прийти неведомо что.
> Это же подобие одной и той же функции с разной арностью, как
> в эрленге, но и с ограничениями на сами аргументы (возможно guard-ы).

Что бы пронять арность, надобно быть математиком, либо выдавать определённый результат на Мичиганском рыбном тесте. Если в России люди селились по берегам рек, то поколениями по ним и сплавляли что-то: сверху по течению сгружали в реку, а ниже вылавливали, кто бревно, а кто мешок с мукой. Вот это и есть Поле Зрения и переменные Рефала, понятные и в деревне.

>[оверквотинг удален]
> Например, пусть исходный алгоритм — вычисление квадрата числа: square(x) => x *
> x. Для x = 0 можно получить более короткий и более
> быстрый вариант алгоритма, который просто возвращает ноль: square(0) => 0.
> """
> В случае с эрлангом было бы что-то вроде этого:
> square(x) when x==0 ->
>  return 0
> Или просто без аргумента:
> square() ->
>  return 0

Эрланг ломает мой шаблон словом return вместо square() -> 0.

>> С файловой системой всё сложнее
> Как говорится, пока петух не клюнет, ждем когда Линусу какой-нить ваннакрай зашифрует
> диск, после этого придем к осознанию, что нужна новая модель взаимодействия
> прикладного ПО с системой и ее ресурсами, принципа максимального изолирования.

Это вероятностный сценарий, когда RH доделает цифровые подписи и интеграцию с UEFI. Надо будет как-то заставить сообщество одобрить переход под покровительство Microsoft. :)

>> Были такие тесты на профпригодность, считали там нули, например.
> Жесть, только глаза портить, эт как овец считать, чтобы заснуть? :)

Нет, успеть за минуту подсчитать количество. :) Такое никто не способен в принципе, но 10% из рискнувших выдают заметно отличающийся в лучшую сторону от остальных результат. То есть сейчас в индустрии примерно 90% посторонние люди, в отладчике ничего толком не увидят, а по коду наивно ищут при помощи grep или Ctrl+F. :) Подозреваю, что оставшиеся 10% смогут выполнить 146% всей работы, если не будут отвлекаться остальными.

Ответить | Правка | К родителю #243 | Наверх | Cообщить модератору

250. "В июне в Переславле-Залесском состоится конференция СПО в вы..."  +/
Сообщение от Sw00p aka Jerom (?), 05-Июн-24, 14:05 
> Достаточно в исполнителе добавить проверку.
> И флажок в командную строку, что бы можно было изменить поведение,
> если мешает.

Синтаксис ЯП должен быть явным и ясным при чтении ЧЕЛОВЕКОМ, и всякая магия с флагами компилятора и тем же поведением по умолчанию (синтаксическим сахаром и т.д.), я считаю ересью. Компилятор этот со своим флагом сегодня есть, а завтра нет, нельзя специфицировать язык и говорить, чтобы компилятор имел флаг какой-то.

У человека говорящего на "великом-могучем", должны быть здоровые зубы.

> Можно, наверное, разрешить "глобальное" предложение:
> =; // задаём всем функциям последнее предложение.
> Но в этом случае придётся думать, как быть с модулями.

Вот поэтому, лучше не делать ничего неявного и по умолчанию.


> Верификацией пусть участники конференций занимаются.)

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

> Что такое "общее применение", я не знаю.:)

ЯП с большой стд либой, мульти-парадигменный, и используемый в повседневных задачах. Таким ЯП может быть любой тьюринг-полный ЯП.

> Эрланг ломает мой шаблон словом return вместо square() -> 0.

Эт псевдокод если че. Акцент там на функцию и ограничении ее аргумента. Там можно описать функцию со всеми ее допустимыми аргументами.

funA (X) when X=0 ->
funA (X) when X=1 ->
funA (X) when X=2 ->
funA (X) when X=3 ->
.....

тоже самое и в Рефал:

funA {
"0" = <>
"1" = <>
"2" = <>
.....
}

разницы никакой.

> Подозреваю, что оставшиеся 10%
> смогут выполнить 146% всей работы, если не будут отвлекаться остальными.

А это в любой области так, нет же понятия "коллективного гения". Об этом даже не надо думать, "паразиты" будут существовать всегда.

Ответить | Правка | К родителю #248 | Наверх | Cообщить модератору

253. "В июне в Переславле-Залесском состоится конференция СПО в вы..."  +/
Сообщение от n00by (ok), 05-Июн-24, 16:33 
>> Достаточно в исполнителе добавить проверку.
>> И флажок в командную строку, что бы можно было изменить поведение,
>> если мешает.
> Синтаксис ЯП должен быть явным и ясным при чтении ЧЕЛОВЕКОМ, и всякая
> магия с флагами компилятора и тем же поведением по умолчанию (синтаксическим
> сахаром и т.д.), я считаю ересью. Компилятор этот со своим флагом
> сегодня есть, а завтра нет, нельзя специфицировать язык и говорить, чтобы
> компилятор имел флаг какой-то.
> У человека говорящего на "великом-могучем", должны быть здоровые зубы.

Тут стоит вспомнить Мичиганский рыбный тест: люди разные, и дихотомий на самом деле больше. Что ясно одному, не очень ясно другому. Ключ - это не синтаксис. Он служит запасным вариантом, если вдруг потребуется переопределить синтаксис с пустым предложением =; которое как раз и добавляется _неявно_. :)

>> Можно, наверное, разрешить "глобальное" предложение:
>> =; // задаём всем функциям последнее предложение.
>> Но в этом случае придётся думать, как быть с модулями.
> Вот поэтому, лучше не делать ничего неявного и по умолчанию.

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

>> Верификацией пусть участники конференций занимаются.)
> Там где нужна спецификация ПО там и появляется ее верификация, а далее
> по верифицированной спецификации можно уверенно генерировать целевой исполняемый код.

Верификация ПО может и появляется, но ПО почему-то в действительности не видно.

>> Что такое "общее применение", я не знаю.:)
> ЯП с большой стд либой, мульти-парадигменный, и используемый в повседневных задачах. Таким
> ЯП может быть любой тьюринг-полный ЯП.

Определения я знаю (и мультипарадигменный раньше в него не входило). Повседневные задачи у всех разные. Потому и появляются 100500 вариантов 10-го правила Гринспена.

>[оверквотинг удален]
> funA (X) when X=3 ->
> .....
> тоже самое и в Рефал:
> funA {
>  "0" = <>
>  "1" = <>
>  "2" = <>
>  .....
> }
> разницы никакой.

Единственно, что в Рефале без кавычек, если числа.

>> Подозреваю, что оставшиеся 10%
>> смогут выполнить 146% всей работы, если не будут отвлекаться остальными.
> А это в любой области так, нет же понятия "коллективного гения". Об
> этом даже не надо думать, "паразиты" будут существовать всегда.

Не факт. Есть такая штука - порог вхождения. Его старательно пытаются понизить. Заодно внушаются разные весёлые шаблоны мышления вроде "деревянный велосипед" и "изобрести колесо". Раньше были анекдоты про русских программистов, которым лишь бы всё попереписывать. Давно их не слышал. :)

Ответить | Правка | К родителю #250 | Наверх | Cообщить модератору

255. "В июне в Переславле-Залесском состоится конференция СПО в вы..."  +/
Сообщение от Sw00p aka Jerom (?), 05-Июн-24, 18:49 
> Тут стоит вспомнить Мичиганский рыбный тест: люди разные, и дихотомий на самом
> деле больше. Что ясно одному, не очень ясно другому. Ключ -
> это не синтаксис. Он служит запасным вариантом, если вдруг потребуется переопределить
> синтаксис с пустым предложением =; которое как раз и добавляется _неявно_.
> :)

И как это записать в стандарте языка?

Либо строго - "компилятор ДОЛЖЕН реализовать флаг явного и неявного определения синтаксиса пустого сопоставлением с образцом.",

либо - "компилятор МОЖЕТ реализовать флаг неявного ...".

И во-втором случае, поступай как хочешь. Код для одного компилятора будет валидным, для другого - нет, либо "забыл врубить флаг".

Явность, ясность, однозначность должна быть :)

> Вроде бы, не я предложил добавлять неявное предложение при определении функции.

Эт не "предъява", я называю это "рассуждение в диалогах", контр-аргументирование собственных аргументов.

> Я лишь прикидываю, когда оно может оказаться уместно, и что делать, если
> вдруг не окажется.

Все правильно, и на каждый аргумент "уместного" надо искать контр-аргумент "не уместного". И этот процес можно делать в паре с собеседником (диалог), при этом меняясь местами.

> Верификация ПО может и появляется, но ПО почему-то в действительности не видно.

Потому-что, это долго и дорого, а "пиззнессу" это не нужно, осознание нужности придет со следующим циклом развития  этой области, а пока только развитие нынешнего цикла должно достичь дна (деградировать).


> Повседневные задачи у всех разные.

А по большей части это банальная симуляция деятельности (скамономика).

> Не факт. Есть такая штука - порог вхождения. Его старательно пытаются понизить.
> Заодно внушаются разные весёлые шаблоны мышления вроде "деревянный велосипед" и "изобрести
> колесо". Раньше были анекдоты про русских программистов, которым лишь бы всё
> попереписывать. Давно их не слышал. :)

Отчуждение первобытного опыта.

Ответить | Правка | К родителю #253 | Наверх | Cообщить модератору

256. "В июне в Переславле-Залесском состоится конференция СПО в вы..."  +/
Сообщение от n00by (ok), 06-Июн-24, 11:29 
>> Тут стоит вспомнить Мичиганский рыбный тест: люди разные, и дихотомий на самом
>> деле больше. Что ясно одному, не очень ясно другому. Ключ -
>> это не синтаксис. Он служит запасным вариантом, если вдруг потребуется переопределить
>> синтаксис с пустым предложением =; которое как раз и добавляется _неявно_.
>> :)
> И как это записать в стандарте языка?

Никак, поскольку стандарта языка нет. В Рефал-5 нет и функций с одним предложением.

> Либо строго - "компилятор ДОЛЖЕН реализовать флаг явного и неявного определения синтаксиса
> пустого сопоставлением с образцом.",
> либо - "компилятор МОЖЕТ реализовать флаг неявного ...".
> И во-втором случае, поступай как хочешь. Код для одного компилятора будет валидным,
> для другого - нет, либо "забыл врубить флаг".
> Явность, ясность, однозначность должна быть :)

Вот мне ясно: я могу это сделать вот так, это легко, потому можно добавить и неявное предложения с пустым образцом к функциям. Просто так взять и добавить - рискованно, поскольку может сломать обратную совместимость с Рефал-5.

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

>> Вроде бы, не я предложил добавлять неявное предложение при определении функции.
> Эт не "предъява", я называю это "рассуждение в диалогах", контр-аргументирование собственных
> аргументов.

А заодно исключение возможных вариантов решения. Ключ транслятору это не синтаксис языка. В Си задают ключ -std=с99, а какой стандарт в исходниках - это и так знатоку Си ясно из их содержимого.

>> Я лишь прикидываю, когда оно может оказаться уместно, и что делать, если
>> вдруг не окажется.
> Все правильно, и на каждый аргумент "уместного" надо искать контр-аргумент "не уместного".
> И этот процес можно делать в паре с собеседником (диалог), при
> этом меняясь местами.

Есть такая штука - формула полной вероятности. Вот в неё слагаемыми надо списывать помимо синтаксиса много чего ещё: транслятор, пользователей, ...

>> Верификация ПО может и появляется, но ПО почему-то в действительности не видно.
> Потому-что, это долго и дорого, а "пиззнессу" это не нужно, осознание нужности
> придет со следующим циклом развития  этой области, а пока только
> развитие нынешнего цикла должно достичь дна (деградировать).

Во многих случаях она никому не нужна, особенно в "приложениях".

>> Повседневные задачи у всех разные.
> А по большей части это банальная симуляция деятельности (скамономика).
>> Не факт. Есть такая штука - порог вхождения. Его старательно пытаются понизить.
>> Заодно внушаются разные весёлые шаблоны мышления вроде "деревянный велосипед" и "изобрести
>> колесо". Раньше были анекдоты про русских программистов, которым лишь бы всё
>> попереписывать. Давно их не слышал. :)
> Отчуждение первобытного опыта.

Сдаётся мне, что люди как раз и вышли из пещер, когда кого попало перестали допускать ко всему подряд.

Ответить | Правка | К родителю #255 | Наверх | Cообщить модератору

259. "В июне в Переславле-Залесском состоится конференция СПО в вы..."  +/
Сообщение от Sw00p aka Jerom (?), 07-Июн-24, 14:51 
> Никак, поскольку стандарта языка нет. В Рефал-5 нет и функций с одним
> предложением.

в смысле нет?

funA {
"hi" = "hello";
}


> Если функция с одним предложением вызывает сама себя - однозначно, там требуется
> =; вторым предложением, иначе выход из рекурсии невозможен.

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

> А заодно исключение возможных вариантов решения. Ключ транслятору это не синтаксис языка.
> В Си задают ключ -std=с99, а какой стандарт в исходниках -
> это и так знатоку Си ясно из их содержимого.

То есть если я просто беру код (без всякой инструкции по сборке), и перед тем как скормить компилятору, должен разобраться какому он стандарту соответствует, выставить флаги компилятора и собрать бинарник. Почему компилятор такой "тупой" сам не может определить какой стандарт? Новый стандарт, почему компилятор не новый, зачем городить флаги (ключи) и всякую ересь?

> Есть такая штука - формула полной вероятности. Вот в неё слагаемыми надо
> списывать помимо синтаксиса много чего ещё: транслятор, пользователей, ...

Эт как неравенства Белла и "скрытые параметры"? :)

> Сдаётся мне, что люди как раз и вышли из пещер, когда кого
> попало перестали допускать ко всему подряд.

По-конкретней, не понял. Что мешает обезьянам стать "людьми", то есть сменить образ своего существования?

Ответить | Правка | К родителю #256 | Наверх | Cообщить модератору

260. "В июне в Переславле-Залесском состоится конференция СПО в вы..."  +/
Сообщение от n00by (ok), 07-Июн-24, 15:41 
>> Никак, поскольку стандарта языка нет. В Рефал-5 нет и функций с одним
>> предложением.
> в смысле нет?
> funA {
>  "hi" = "hello";
> }

Здесь блок {} а в нём одно предложение.
Имел ввиду, что такого нет:

funA "hi" = "hello";

Вот для них м.б. вполне допустимо создавать неявно второе. Если кто-то потрудился написать скобочки, значит ему ничего не стоит дописать ещё и =;

>> Если функция с одним предложением вызывает сама себя - однозначно, там требуется
>> =; вторым предложением, иначе выход из рекурсии невозможен.
> потому-что там где есть вход - должен (может) быть и выход. И
> =; не обязан быть условием выхода из рекурсии. =; своего рода
> граничное условие обычного цикла, когда известна длина данных. И использования бесконечных
> циклов никто не запрещал (ивент лупы всякие), просто рекурсия должна быть
> грамотно оформлена. А так в любом случае есть интерпретаторские ограничения на
> глубину рекурсии (а как реализовать ивент луп тогда?).

На хвостовую рекурсию в моём интерпретаторе нет ограничений, стеки не растут. Цикл выборки сообщений содержит множество условий. Если это окно, то и выход там есть, при закрытии окна приложения.

Вообще, функции с блоками в Рефал обычно большие, особенно когда есть сложенные блоки. Там может быть и 10 и 20 предложений запросто. В образцах проверяются аргументы на валидность. Если среди них не написано =;, скорее всего, так и должно быть, либо программист забыл. Считаю, в них неявно добавлять не следует.

Функции из одного предложения обычно какие-то вспомогательные, для простых действий. При их вызове аргументы скорее всего уже проверены раньше. Удалить первый символ - легко написать. Удалить все "а" - надо рекурсию с выходом по пустому ПЗ. Если она вызывается однократно, то проще написать вложенные блок, а это не улучшит читаемость. Вот для таких случаев неявное =; имеет смысл - именованная функция сделает код и понятнее, и компактнее.

>> А заодно исключение возможных вариантов решения. Ключ транслятору это не синтаксис языка.
>> В Си задают ключ -std=с99, а какой стандарт в исходниках -
>> это и так знатоку Си ясно из их содержимого.
> То есть если я просто беру код (без всякой инструкции по сборке),
> и перед тем как скормить компилятору, должен разобраться какому он стандарту
> соответствует, выставить флаги компилятора и собрать бинарник. Почему компилятор такой
> "тупой" сам не может определить какой стандарт? Новый стандарт, почему компилятор
> не новый, зачем городить флаги (ключи) и всякую ересь?

Он и определит при попытке трансляции. Навалит ошибок и в них укажет, что нужен новый стандарт.

>> Есть такая штука - формула полной вероятности. Вот в неё слагаемыми надо
>> списывать помимо синтаксиса много чего ещё: транслятор, пользователей, ...
> Эт как неравенства Белла и "скрытые параметры"? :)

Это когда у имеющихся слагаемых условия оказываются противоречивы. Значит, не хватает слагаемых. Если на уровне синтаксиса не решается, или может вызвать удивление пользователей, когда старые программы перестанут работать, значит решение следует искать в другом месте. Например, ключ транслятору.

>> Сдаётся мне, что люди как раз и вышли из пещер, когда кого
>> попало перестали допускать ко всему подряд.
> По-конкретней, не понял. Что мешает обезьянам стать "людьми", то есть сменить образ
> своего существования?

Их и так всё устраивает. Учит их самый крикливый выскочка ходить с голым задом, вот и ходят. А самок, стариков и детей они, кстати, спасают точно так же, как и волки -- это никак не достижение "гуманизма", как любят преподносить некоторые.

Ответить | Правка | К родителю #259 | Наверх | Cообщить модератору

262. "В июне в Переславле-Залесском состоится конференция СПО в вы..."  +/
Сообщение от n00by (ok), 07-Июн-24, 18:00 
Как раз в исходном примере в #147

очередь {
      = ;
  ? . = (? " - " <тип ?>) "\t" <очередь .>;
}

Здесь как раз уместно неявно добавить предложение с пустым образцом:

очередь ? . = (? " - " <тип ?>) "\t" <очередь .>;

Очевидно, что без пустого образца произойдёт ошибка сопоставления. Если же по факту функция работает, значит такой случай как-то обрабатывается.

Ответить | Правка | К родителю #259 | Наверх | Cообщить модератору

263. "В июне в Переславле-Залесском состоится конференция СПО в вы..."  +/
Сообщение от n00by (ok), 10-Июн-24, 10:56 
В общем, показал Даниилу, он оценил как "выглядит красиво".

Благодарю за идею. В коммите будет "Благодаря идее Sw00p aka Jerom c Opennet.ru." Пока не отправлял в основную ветку, если вдруг надо изменить.

Мне нравится, что доработка - по сути две строки, и как раз в том месте висел лишний if (из-за боле компактного кодирования таких функций), которому нашлось полезное применение.


--- a/src/interpreter.c
+++ b/src/interpreter.c
@@ -176,9 +176,15 @@ next_sentence:
       cur = vm->u[prev].next;
       assert(ep == -1);
       local = 0;
-      // Оставлено для однострочных, поскольку не содержат rf_sentence
-      if (!next_sentence)
+      // Однострочные без блока не содержат опкод rf_sentence,
+      // потому требуют отдельного обработчика завершения (по !next_sentence).
+      // Используем это и считаем, что имеется неявное второе предложение
+      //  = ;
+      if (!next_sentence) {
+         if (rf_is_evar_empty(vm, prev, next))
+            goto return_with_empty;
          goto recognition_impossible;
+      }
       ip = next_sentence;
       next_sentence = 0;
       bp = fn_bp;
@@ -604,6 +610,7 @@ execute_byte_code:
          assert(result);
          rf_splice_evar_prev(vm, result, vm->free, next);
          rf_free_last(vm);
+return_with_empty:
          if (!sp--)
             break;
          ip     = stack[sp].ip;

Ответить | Правка | К родителю #259 | Наверх | Cообщить модератору

264. "В июне в Переславле-Залесском состоится конференция СПО в вы..."  +/
Сообщение от Sw00p aka Jerom (?), 11-Июн-24, 19:45 
> В общем, показал Даниилу, он оценил как "выглядит красиво".

Отлично. :)

Ответить | Правка | К родителю #263 | Наверх | Cообщить модератору

265. "В июне в Переславле-Залесском состоится конференция СПО в вы..."  +/
Сообщение от n00by (ok), 14-Июн-24, 10:22 
Вот теперь может быть понятно, зачем я хотел "трубу" как синтаксический сахар для вызова функции.

очередь {
      = ;
  ? . = (? " - " <тип ?>) "\t" <очередь .>;
}

очередь ? . = (? " - " <тип ?>) "\t" <очередь .>;

очередь ? . = (? " - " <тип ?>) "\t" <_ .>; // _ (например) псевдоним для текущей функции.

очередь ? . = (? " - " <тип ?>) "\t" . | _; // пока не ясно, как отделить передаваемый аргумент

очередь ? . = (? " - " <тип ?>) "\t" . |; // когда нет имени, рекурсивно вызывается исполняемая функция.


Если реализовать "блоки", разделяемые двоеточием (при этом позволить и однострочные) - можно вызывать из блока самого себя (исполняемый в данный момент блок, как анонимную функцию). По сути получается как цикл императивном в языке: можно ведь рассматривать {} в for как анонимную функцию, что вызывает себя рекурсивно. :)

Ответить | Правка | К родителю #264 | Наверх | Cообщить модератору

266. "В июне в Переславле-Залесском состоится конференция СПО в вы..."  +/
Сообщение от Sw00p aka Jerom (?), 16-Июн-24, 12:59 
> Вот теперь может быть понятно, зачем я хотел "трубу" как синтаксический сахар
> для вызова функции.

Сколько не встречал примера трубных вызовов в том же шелле, всегда среди них должен присутствовать вызов awk :) И задаюсь вопросом, зачем? Очевидно, предварительная обработка результата предыдущего вызова, для последующего, в качестве аргумета. Ну напиши обработчик сразу на awk, в чем проблема, зачем городить "трубу".

Надо понимать, что "трубная" функция или "функция-труба" накладывает некоторые ограничения на их применимость, должна быть согласованность "входов-выходов" и их типов. В идеале, "трубная" функция должна быть по сути "чистой" функцией, то есть без сайд-эффектов, чтобы гарантировать всю цепочку вызовов.

> очередь ? . = (? " - " <тип ?>) "\t" <очередь
> .>;

Стандартно, ясно, явно и все понятно.

> очередь ? . = (? " - " <тип ?>) "\t" <_
> .>; // _ (например) псевдоним для текущей функции.

Можно, как "сахар", но я всегда явно вызывал бы функцию по имени. (Эт как близкого друга можно междусобойчиком звать по прозвищу, а вот при посторонних уважаемых людях надо бы - как мать родная назвала - по имени :)


> очередь ? . = (? " - " <тип ?>) "\t" .
> | _; // пока не ясно, как отделить передаваемый аргумент

Эт я не понял.

> очередь ? . = (? " - " <тип ?>) "\t" .
> |; // когда нет имени, рекурсивно вызывается исполняемая функция.

Вариант с псевдонимом <_ .> яснее. И делать акциент именно на <>.

> Если реализовать "блоки", разделяемые двоеточием (при этом позволить и однострочные) -
> можно вызывать из блока самого себя (исполняемый в данный момент блок,
> как анонимную функцию).

Как тут ?

https://github.com/bmstu-iu9/refal-5-lambda/tree/master?tab=...


Foo {
  некоторый образец
    , условие
    : { …блок 1… }
    : { …блок 2… }
    : образец условия
    = результатное выражение;
}

А смысл в левой части (в образце) вызывать анонимныую функцию? Там как раз таки имеет смысл вызвать именованную определенню в другом месте функцию.

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

<{ …C… } <{ …B… } <{ …A… } Result>>>

Это смысла не имеет я так думаю, ибо можно записать так:

<{ …C… …B… …A… } Result>


> По сути получается как цикл императивном в языке:
> можно ведь рассматривать {} в for как анонимную функцию, что вызывает
> себя рекурсивно. :)

Ну тогда получается просто разделитель области видимости, и вовсе не анонимная функция.

Пример:

FunA {

} - определение именованной функции


{

} - определения чего? блока разделителя области видимости, или анонимная (безымянная) функция?


Можно ввести ограничение на определение безымянных только в именных функциях?

Ответить | Правка | К родителю #265 | Наверх | Cообщить модератору

267. "В июне в Переславле-Залесском состоится конференция СПО в вы..."  +/
Сообщение от n00by (ok), 16-Июн-24, 14:54 
>> Вот теперь может быть понятно, зачем я хотел "трубу" как синтаксический сахар
>> для вызова функции.
> Сколько не встречал примера трубных вызовов в том же шелле, всегда среди
> них должен присутствовать вызов awk :) И задаюсь вопросом, зачем? Очевидно,
> предварительная обработка результата предыдущего вызова, для последующего, в качестве
> аргумета. Ну напиши обработчик сразу на awk, в чем проблема, зачем
> городить "трубу".

Рефал просматривает Поле Зрения последовательно. Не всегда возможно одновременно поменять заглавные буквы на строчные и заменить арабские цифры римскими.

> Надо понимать, что "трубная" функция или "функция-труба" накладывает некоторые ограничения
> на их применимость, должна быть согласованность "входов-выходов" и их типов. В
> идеале, "трубная" функция должна быть по сути "чистой" функцией, то есть
> без сайд-эффектов, чтобы гарантировать всю цепочку вызовов.

Все функции в Рефал чистые. Они даже Поле Зрения не меняют, а принимают его и выдают результат как ПЗ для другой функции. Состояние могут менять только некоторые библиотечные функции для работы с "ящиками". Потому в исходном #147 я и написал "теперь думаю, что это такое вообще".

_2-e { ноль; один } // вот это "ящик", и его содержимое можно изменить.

>> очередь ? . = (? " - " <тип ?>) "\t" <очередь
>> .>;
> Стандартно, ясно, явно и все понятно.
>> очередь ? . = (? " - " <тип ?>) "\t" <_
>> .>; // _ (например) псевдоним для текущей функции.
> Можно, как "сахар", но я всегда явно вызывал бы функцию по имени.
> (Эт как близкого друга можно междусобойчиком звать по прозвищу, а вот
> при посторонних уважаемых людях надо бы - как мать родная назвала
> - по имени :)

Копи-пасту не запретишь, и в результате по имени может быть вызвано что-то не то. this в С++ ввели не просто так. Но основное предназначение не для именованных функций, а для вложенных блоков, где нет имени.

>> очередь ? . = (? " - " <тип ?>) "\t" .
>> | _; // пока не ясно, как отделить передаваемый аргумент
> Эт я не понял.

Это как вариант предыдущей записи с <>, с трубой вместо скобочек. Скобочки отделяют аргументы вызываемой функции от остального, а у трубы такого нет, она же одна.

>> очередь ? . = (? " - " <тип ?>) "\t" .
>> |; // когда нет имени, рекурсивно вызывается исполняемая функция.
> Вариант с псевдонимом <_ .> яснее. И делать акциент именно на <>.

Ну, пока других вариантов и нет. Всякие гипотетические прикидываю, потому что это по сути реверс-инженерия: не очень ясно, что получится и итоге. :)

>[оверквотинг удален]
> Как тут ?
> https://github.com/bmstu-iu9/refal-5-lambda/tree/master?tab=...
> Foo {
>   некоторый образец
>     , условие
>     : { …блок 1… }
>     : { …блок 2… }
>     : образец условия
>     = результатное выражение;
> }

Да. Блоки могут так же идти и после =. Каждый блок по сути анонимная функция. При этом имеет доступ к переменным основной функции, поэтому, если выносить блок в отдельную функцию, то она выйдет сложнее. Для Рефала обычны функции с множеством блоков и даже на несколько страниц.

Сейчас блок не может просто так вызвать сам себя. Есть варианты Рефал, где блоки именуются; возможно имя блока располагать между : и { -- там сейчас ничего писать нельзя. В Рефал-Лямбда блок можно передать аргументом в функции Map, Apply и т.п., но в простейших случаях хотелось бы обеспечить рекурсивный вызов блоком самого себя.

Если блок состоит из одного предложения, то его можно записать без скобочек {}. В таком случае второе предложение =; теперь создаётся неявно. Рекурсивный вызов позволит просто записывать простейшие циклы, большее от него вряд ли требуется.

> А смысл в левой части (в образце) вызывать анонимныую функцию? Там как
> раз таки имеет смысл вызвать именованную определенню в другом месте функцию.

Если такая возможность появится в правой части, то смысл будет в том, что нет смысла запрещать. :)

Например, для поддержки : в правой части требуется новый опкод. Что с ним делать интерпретатору, если вдруг встретится в левой? По-идее, следует не полагаться на транслятор (выдаст ошибку синтаксиса и не сгенерирует), а обрабатывать как ошибку.

Вместо этого я определил для него подобное правой части действие: взять имеющееся Поле Зрение (в правой части это предыдущий результат) и обработать. В левой части нет результата, потому повторно просматривается ПЗ. Получилось, что можно обеспечить произвольный порядок аргументов:

ширина; высота;

прямоугольник {
.1 (ширина ?ш) .2 : .3 (высота ?в) .4 = (высота ": " ?в ", " ширина ": " ?ш);
}

начало =
   <прямоугольник (ширина 2) (высота 3)> "\n"
   <прямоугольник (высота 2) (ширина 3)> "\n"
   ;

./refal tests/И.ref
Поле зрения:
(высота: 3, ширина: 2)
(высота: 2, ширина: 3)

М.б. оно и не надо, но это экономнее (в реализации), чем обрабатывать ошибку.

> Вообще смысл анонимных функций в том, что их можно передавать в качестве
> аргументов, и получать в качестве результата именованных функций (так и безымянных).

Это называется "first class citizens". При этом "гражданин" ничего сам с собой поделать не может. Дискриминация. :)

> <{ …C… } <{ …B… } <{ …A… } Result>>>
> Это смысла не имеет я так думаю, ибо можно записать так:
> <{ …C… …B… …A… } Result>

В данном случае каждое из …C…, …B… и …A… - это набор разделённых ; предложений, исполняемых по по логике "ИЛИ" (если первое не подошло, тогда следующее). Если …C… обрабатывает все возможные наборы данных, то остальные (…B… и …A…) исполняться не будут.

Потому по ссылке первый вариант аналогичен

Result : { …A… } : { …B… } : { …C… }

Result - это ПЗ для { …A… }. Результат { …A… } - ПЗ для { …B… } и т.д.

>> По сути получается как цикл императивном в языке:
>> можно ведь рассматривать {} в for как анонимную функцию, что вызывает
>> себя рекурсивно. :)
> Ну тогда получается просто разделитель области видимости, и вовсе не анонимная функция.

Закрывающая скобка } в цикле for вызывает повторно тело цикла (с проверкой условий, естественно). Так же и continue вызывает повторно. Си более функциональный, чем думают некоторые. Императивен там оператор запятая, про который мало кто из пишущих на Си знает. :)

> Пример:
> FunA {
> } - определение именованной функции
> {
> } - определения чего? блока разделителя области видимости, или анонимная (безымянная) функция?

В Рефал-5 это называется блок. Именованная функция состоит из имени и последующего блока. Т.о. это безымянная функция. Но на верхнем уровне исходника такую объявить нельзя, только внутри другой функции.

> Можно ввести ограничение на определение безымянных только в именных функциях?

Так оно и есть. Технически можно было бы определять их, но непонятно как их адресовать и что с ними делать. :)

Ответить | Правка | К родителю #266 | Наверх | Cообщить модератору

268. "В июне в Переславле-Залесском состоится конференция СПО в вы..."  +/
Сообщение от Sw00p aka Jerom (?), 18-Июн-24, 20:32 
> Сейчас блок не может просто так вызвать сам себя. Есть варианты Рефал,
> где блоки именуются; возможно имя блока располагать между : и {
> -- там сейчас ничего писать нельзя. В Рефал-Лямбда блок можно передать
> аргументом в функции Map, Apply и т.п., но в простейших случаях
> хотелось бы обеспечить рекурсивный вызов блоком самого себя.

Если для блока добавить имена, и возможность вызывать самого себя - то чем это будет отличаться от обычных функций? Между блоком и функцией нет разницы.

> Если блок состоит из одного предложения, то его можно записать без скобочек
> {}. В таком случае второе предложение =; теперь создаётся неявно. Рекурсивный
> вызов позволит просто записывать простейшие циклы, большее от него вряд ли
> требуется.

funA
{

{
   {arg}
}

}

ну вот пример простого цикла на базе анонимной функции {} которая может вызывать себя рекурсивно (по имени Я).

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


funA
{

{
   {arg}
}

<funA arg>
}


Хотя вызов рекурсии анонимной можно записать {} такими скобками, а явный именной вызов - <>.

funA
{

{
   {arg} // рекурсивный вызов анонимки
}

<arg> // рекурсивный вызов funA
}

Стоп: вернем все как было, и пусть вызов всегда однозначно будет <>

funA
{

{
   <arg> // рекурсивный вызов анонимки
}

<arg> // рекурсивный вызов funA
}

Читабельность сломалась, нужно искать {}, чтобы понять к вызову какой функции имеет отношение.


> М.б. оно и не надо, но это экономнее (в реализации), чем обрабатывать
> ошибку.

УУУУ произвольный порядок аргументов у функции - это бомба замедленного действия. И поле холивара для программистов.


> Это называется "first class citizens". При этом "гражданин" ничего сам с собой
> поделать не может. Дискриминация. :)

Имя у "гражданина" нужно когда к нему обращается другой "гражданин", а сам к себе "гражданин" обращается по "имени" - Я.

И по логике, рекурсивная функция должна определяться не так:

funA()
{
   funA();
}

а вот так:

funA()
{
  self(); // this(), Iam(), можно вообще просто ();
}


>[оверквотинг удален]
>> <{ …C… …B… …A… } Result>
> В данном случае каждое из …C…, …B… и …A… - это набор
> разделённых ; предложений, исполняемых по по логике "ИЛИ" (если первое не
> подошло, тогда следующее). Если …C… обрабатывает все возможные наборы данных,
> то остальные (…B… и …A…) исполняться не будут.
> Потому по ссылке первый вариант аналогичен
> Result : { …A… } : { …B… } : { …C…
> }
> Result - это ПЗ для { …A… }. Результат { …A… }
> - ПЗ для { …B… } и т.д.

Тут поправочка, должно было быть так <{ …A… …B… …C… } Result>.

Это

<{ …C… } <{ …B… } <{ …A… } Result>>>

вложенные вызовы, то есть последовательны, и "ИЛИ" и есть последовательность.

funA
{
  A = <funA B>;
  B = <funA C>;
  C = <funA "">;
  =; // неявно
}

Не равносильно?

> Закрывающая скобка } в цикле for вызывает повторно тело цикла (с проверкой
> условий, естественно). Так же и continue вызывает повторно. Си более функциональный,
> чем думают некоторые. Императивен там оператор запятая, про который мало кто
> из пишущих на Си знает. :)

for ()
{

}

и есть в сущности функция с именем for, мы же собственные функции в С for-ом назвать ведь не можем :)

{
{arg}
}

вот такой анонимный рекурсивный вызов и есть по сути for цикл. А continue это тупо псевдоним. Break -  по сути может быть вызов с пустым аргументом (терминатор рекурсии неявный) {пусто}


> В Рефал-5 это называется блок. Именованная функция состоит из имени и последующего
> блока. Т.о. это безымянная функция. Но на верхнем уровне исходника такую
> объявить нельзя, только внутри другой функции.

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


>> Можно ввести ограничение на определение безымянных только в именных функциях?
> Так оно и есть. Технически можно было бы определять их, но непонятно
> как их адресовать и что с ними делать. :)

Можно и не вводить :)

{
{}
}

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

Ответить | Правка | К родителю #267 | Наверх | Cообщить модератору

269. "В июне в Переславле-Залесском состоится конференция СПО в вы..."  +/
Сообщение от n00by (ok), 19-Июн-24, 14:03 
>> Сейчас блок не может просто так вызвать сам себя. Есть варианты Рефал,
>> где блоки именуются; возможно имя блока располагать между : и {
>> -- там сейчас ничего писать нельзя. В Рефал-Лямбда блок можно передать
>> аргументом в функции Map, Apply и т.п., но в простейших случаях
>> хотелось бы обеспечить рекурсивный вызов блоком самого себя.
> Если для блока добавить имена, и возможность вызывать самого себя - то
> чем это будет отличаться от обычных функций? Между блоком и функцией
> нет разницы.

Блок и есть функция. В книге Турчина даже детали реализации указаны, для блока генерируется отдельная функция. Но есть и разница: блок видит переменные охватывающей функции. С одной стороны, это упрощает функцию-блок (в сравнении, если бы она определялась отдельно), даёт ей больше возможностей. С другой - реализация усложняется, приходится захватывать "внешние" переменные. У меня пока получается достаточно просто (если это слово применимо в вермишели из goto).

>[оверквотинг удален]
>> вызов позволит просто записывать простейшие циклы, большее от него вряд ли
>> требуется.
> funA
> {
>  {
>    {arg}
>  }
> }
> ну вот пример простого цикла на базе анонимной функции {} которая может
> вызывать себя рекурсивно (по имени Я).

Запись {arg} не может быть вызовом в Рефал, поскольку это определение блока. Не хочется делать из него LISP, у меня от однотипных скобочек в глазах рябит.

> Но тут нужно понимать, что тогда синтаксис для рекурсии именной функции должен
> быть явным.
> funA
> {
>  {
>    {arg}
>  }
>  <funA arg>
> }

Сейчас вызов именованной ф. такой и есть.

>[оверквотинг удален]
> Стоп: вернем все как было, и пусть вызов всегда однозначно будет <>
> funA
> {
>  {
>    <arg> // рекурсивный вызов анонимки
>  }
>  <arg> // рекурсивный вызов funA
> }
> Читабельность сломалась, нужно искать {}, чтобы понять к вызову какой функции имеет
> отношение.

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

>> М.б. оно и не надо, но это экономнее (в реализации), чем обрабатывать
>> ошибку.
> УУУУ произвольный порядок аргументов у функции - это бомба замедленного действия. И
> поле холивара для программистов.

В Рефале он произвольный весьма условно: обязательно придётся "именовать" аргументы (ставить рядом идентификатор), без этого не распознаются. Опять же, можно ограничить правилами кодирования. Если же под "аргументом" ф. понимать файл с конфигом - вот тогда это может быть полезно и упростить программу: вместо рекурсивного разбора можно считать всё набором образцов.

>> Это называется "first class citizens". При этом "гражданин" ничего сам с собой
>> поделать не может. Дискриминация. :)
> Имя у "гражданина" нужно когда к нему обращается другой "гражданин", а сам
> к себе "гражданин" обращается по "имени" - Я.

Есть даже такой анекдот:

- Тук-тук!
- Кто там?
- Я!
- Как, я?

> И по логике, рекурсивная функция должна определяться не так:
> funA()
> {
>    funA();
> }
> а вот так:
> funA()
> {
>   self(); // this(), Iam(), можно вообще просто ();
> }

В первом приближении у меня и было имя _ (м.б. не очень подходит, поскольку в других языках на этом символе всякое другие). Если без имени, то |

Если вызывать так:

<arg1 arg2 arg3> // (1)

то есть нюансы. Сейчас в Рефал-М имя функции не обязательно идёт первым, можно

<х1 прибавить х2>

и x2 (но не x1) в свою очередь может быть именем вычислимой функции и как-то вызываться в ф. прибавить. Тогда придётся запретить в (1) аргументами вычислимые функции - а это не дело, лучше использовать псевдоним _ или другой.

>[оверквотинг удален]
>> Потому по ссылке первый вариант аналогичен
>> Result : { …A… } : { …B… } : { …C…
>> }
>> Result - это ПЗ для { …A… }. Результат { …A… }
>> - ПЗ для { …B… } и т.д.
> Тут поправочка, должно было быть так <{ …A… …B… …C…
> } Result>.
> Это
> <{ …C… } <{ …B… } <{ …A… } Result>>>
> вложенные вызовы, то есть последовательны, и "ИЛИ" и есть последовательность.

Выше "естественно" вызываются И A, И B, И С. Через "ИЛИ", как ниже, приходится менять ПЗ, что бы выбиралось следующее предложение:

> funA
> {
>   A = <funA B>;
>   B = <funA C>;
>   C = <funA "">;
>   =; // неявно
> }
> Не равносильно?

Да, можно как-то так записывать. Я так делал, что ф. первым предложением проверяет аргументы, а далее вызывает себя же и делает что-то полезное. Почему-то не нашёл в чужом коде такого. Наверное, потому что тот код использует условия и блоки, а у меня их поддержки не было. Блоки ведь не пишут в одну строку, а оформляют столбиком левее основных образцов, потому за счёт форматирования получается понятнее.

>> Закрывающая скобка } в цикле for вызывает повторно тело цикла (с проверкой
>> условий, естественно). Так же и continue вызывает повторно. Си более функциональный,
>> чем думают некоторые. Императивен там оператор запятая, про который мало кто
>> из пишущих на Си знает. :)
> for ()
> {
> }
> и есть в сущности функция с именем for, мы же собственные функции
> в С for-ом назвать ведь не можем :)

Разве что, формально, ; среди аргументов не может быть.

> {
>  {arg}
> }
> вот такой анонимный рекурсивный вызов и есть по сути for цикл. А
> continue это тупо псевдоним. Break -  по сути может быть
> вызов с пустым аргументом (терминатор рекурсии неявный) {пусто}

Ну вот это обычно рвёт сишникам шаблон примерно как синтаксис Rust.

>> В Рефал-5 это называется блок. Именованная функция состоит из имени и последующего
>> блока. Т.о. это безымянная функция. Но на верхнем уровне исходника такую
>> объявить нельзя, только внутри другой функции.
> Ну как выше и говорил, если мы захотим добавить имена к блокам,
> и самообращение (рекурсивный вызов), то ничем от обычной функции отличаться не
> будет.

Добавлять надо, название обязывает: Ре[курсиыных] Ф[ункций] Ал [горитмический]. С именами пока не уверен. Объявлять их в синтаксисе можно, между : и { всё равно ничего не пишется. Но переусердствовать не хочется: если начинается вложенность блоков больше 2-х, есть подозрение, что пора начинать декомпозицию, выносить в отдельные функции.

>>> Можно ввести ограничение на определение безымянных только в именных функциях?
>> Так оно и есть. Технически можно было бы определять их, но непонятно
>> как их адресовать и что с ними делать. :)
> Можно и не вводить :)
> {
>  {}
> }
> это тупо цикл, а технически ссылка есть у всякой функции, эт только
> у программиста нет возможности использовать неявную ссылку на функцию.

Вот и не вижу возможность вызвать такое. Впрочем, раз есть модули, может как-то для них пригодится. У модуля есть имя-идентификатор и пока транслятор на такое выдаёт "имя модуля без функции не имеет смысла". Был бы смысл писать туда тесты для функций модуля, например. Запустил модуль отдельно - он сам себя протестировал. А при импорте модуля это { } пропускается.

Ответить | Правка | К родителю #268 | Наверх | Cообщить модератору

270. "В июне в Переславле-Залесском состоится конференция СПО в вы..."  +/
Сообщение от Sw00p aka Jerom (?), 20-Июн-24, 13:20 
> Блок и есть функция.

Функция определяется так:

Имя-функции
{

}

А вызывается эта функция так:

<Имя-функции аргументы>


Блок же определяется так:

Нет-имени
{

}

А как вызывается? Вызывается в момент определения? Тогда лучше писать так:


<Нет-имени{

} аргументы>


И рекурсивный вызов будет таким:

<{ <{} аргументы> } аргументы>

Можно и как аргумент передать:

<{} <{ <{ }>} аргументы>>

> Запись {arg} не может быть вызовом в Рефал, поскольку это определение блока.
> Не хочется делать из него LISP, у меня от однотипных скобочек
> в глазах рябит.

А в чем тогда смысл блока? Если мы говорим, что это по сути функция, но не функция с явным вызовом.


> Сейчас вызов именованной ф. такой и есть.

<{}> - вот вызов анонимной (блока). Семантика за <> сохраняется - вызвать.


> Сломалась, потому такое прописывается в правилах кодирования. В Си обязывают форматировать
> фигурные скобки отступами.) С другой стороны, не обязательно же все вызывать
> без имени. Когда ф. небольшая и нет имени, тогда можно, иначе
> объявить дурным тоном.

<{} <{ <{ }>} аргументы>> - ломает читабельность, но можно и так:

<{}
    <{
        <{ }>
     } аргументы>
>
> Разве что, формально, ; среди аргументов не может быть.

; они ввели в виду того, что for (инит; луп-кондишене; инкремент) отделить явно условие выхода из цикла и икнремент, так как в такой записи:

for (arg1, arg2, arg3, ..., )

невозможно определить какой из аргументов за что отвечает. Либо ограничить for (arg1, arg2, arg3)

и запись for (i = 0, j = 0;;) будет невалидной.


> Ну вот это обычно рвёт сишникам шаблон примерно как синтаксис Rust.

Рвет, все потому-что, ни в одном ЯП нет описания почему ввели именно такой, а не другой синтаксис. То есть никто (из создателей языков) не хочет пояснить людям, что ими двигало при выборе. Многие скажут - потому-что в С так, другие скажут не хотел как в Лиспе и т.д. Хотел сделать "С с классами", о чем это говорит? Правильно, жди синтаксис С.


> Добавлять надо, название обязывает: Ре[курсиыных] Ф[ункций] Ал [горитмический]. С именами
> пока не уверен. Объявлять их в синтаксисе можно, между : и
> { всё равно ничего не пишется. Но переусердствовать не хочется: если
> начинается вложенность блоков больше 2-х, есть подозрение, что пора начинать декомпозицию,
> выносить в отдельные функции.

И думаю надо делать это через псевдоним:

{
A = <{} аргумент>;
}


> Вот и не вижу возможность вызвать такое. Впрочем, раз есть модули, может
> как-то для них пригодится. У модуля есть имя-идентификатор и пока транслятор
> на такое выдаёт "имя модуля без функции не имеет смысла". Был
> бы смысл писать туда тесты для функций модуля, например. Запустил модуль
> отдельно - он сам себя протестировал. А при импорте модуля это
> { } пропускается.

Ну вот такое самоопределение-и-вызов

<{

} аргументы>

Ответить | Правка | К родителю #269 | Наверх | Cообщить модератору

272. "В июне в Переславле-Залесском состоится конференция СПО в вы..."  +/
Сообщение от n00by (ok), 20-Июн-24, 21:09 
>> Блок и есть функция.
> Функция определяется так:
> Имя-функции
> {
> }

Т.е. именованный блок.

> А вызывается эта функция так:
> <Имя-функции аргументы>

Да, скобки <> вызывают блок функции по имени функции. Когда до них (скобок) доходит дело при исполнении.

> Блок же определяется так:
> Нет-имени
> {
> }
> А как вызывается? Вызывается в момент определения?

Скорее, в "точке определения". Под "моментом" можно понимать время написания исходника.

> Тогда лучше писать так:
> <Нет-имени{  } аргументы>

Так и сделано в Рефал-5-Лямбда.

> И рекурсивный вызов будет таким:
> <{ <{} аргументы> } аргументы>

Здесь сначала вызовется (пустой?) блок во внутренних скобках, результат разместится вместо них, следом произойдёт вызов блока во внешних скобках. Пустой блок не является вычислимой функцией, т.е. первый вызов остановит программу. Если бы пустой, то получается, что результат вызова формирует тело внешнего блока, т.е. генерирует ф. во время исполнения -- это кажется довольно мощной штукой, но пока не ясно, как к этому подойти. Мысль использовать {} как псевдоним для текущей функции м.б. стоящая, но не в такой записи.

Потому на деле всё немного иначе:

аргументы : { образец = результат } // "сахар" для <{ образец = результат } аргументы >

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

Запись со скобками <> в Рефал-5-Лямбда используют, передавая блок аргументом в Map и подобные функции -- они и обеспечивают вызов блока в цикле.

$ENTRY PrintLines-2 {
  e.Lines = <Map { (e.Line) = <Prout e.Line>; } e.Lines>;
}

Если же блоки идут один за другим:

f {
  образец = результат : { образец = результат } : { образец = результат } ;
}

тогда получается, что вместо блока должно быть можно писать идентификатор функции! Это не я сейчас придумал, это Турчин почему-то не сделал.

f {
  образец = результат : f1 : f ;
}

Занятно, что это по сути то самое, что я и хотел (но вместо двоеточия писать "трубу").

> Можно и как аргумент передать:
> <{} <{ <{ }>} аргументы> >

<> может иметь смысл внутри {} только в правой части после =

<{ = }
  <{ = <{ = }> }
    аргументы
  >
>

и я это плохо читаю, вот так разносить угловые скобки - это к лисперам. Двоеточие как раз позволяет записывать без них и форматировать фигурными скобками.

>> Запись {arg} не может быть вызовом в Рефал, поскольку это определение блока.
>> Не хочется делать из него LISP, у меня от однотипных скобочек
>> в глазах рябит.
> А в чем тогда смысл блока? Если мы говорим, что это по
> сути функция, но не функция с явным вызовом.

Блок состоит из предложении и принимает аргумент, когда вызывается. Запись {аргумент} для меня не ясна.

>> Сейчас вызов именованной ф. такой и есть.
> <{}> - вот вызов анонимной (блока). Семантика за <> сохраняется - вызвать.

Да, вот так вызывается в Рефал-5-Лямбда:

<{} arg> // arg м.б. пустым

>> Сломалась, потому такое прописывается в правилах кодирования. В Си обязывают форматировать
>> фигурные скобки отступами.) С другой стороны, не обязательно же все вызывать
>> без имени. Когда ф. небольшая и нет имени, тогда можно, иначе
>> объявить дурным тоном.
> <{} <{ <{ }>} аргументы>> - ломает читабельность, но можно и так:
> <{}
>     <{
>         <{ }>
>      } аргументы>

Я не могу это прочитать. Сначала надо лезть в середину. У нас текст для людей принято читать слева направо, сверху вниз. Двоеточие как раз и решает этот вопрос:

Go {
=
: { обр = рез }
: { обр = рез аргументы }
: { обр = рез }
}

<> нужны, когда требуется вызвать подряд несколько функций, и их результаты последовательно поместить в выражении-результате. Я лучше буду ковырять машинный код, чем разбирать нагромождение вложенностей <> больше 2-х.

>>
>> Разве что, формально, ; среди аргументов не может быть.
> ; они ввели в виду того, что for (инит; луп-кондишене; инкремент) отделить
> явно условие выхода из цикла и икнремент, так как в такой
> записи:
> for (arg1, arg2, arg3, ..., )
> невозможно определить какой из аргументов за что отвечает. Либо ограничить for (arg1,
> arg2, arg3)
> и запись for (i = 0, j = 0;;) будет невалидной.

Дак при вызове обычной функции запятую использовать нельзя (только в дополнительных скобках). Надо было там аргументы разделять ;.)

>> Ну вот это обычно рвёт сишникам шаблон примерно как синтаксис Rust.
> Рвет, все потому-что, ни в одном ЯП нет описания почему ввели именно
> такой, а не другой синтаксис. То есть никто (из создателей языков)
> не хочет пояснить людям, что ими двигало при выборе. Многие скажут
> - потому-что в С так, другие скажут не хотел как в
> Лиспе и т.д. Хотел сделать "С с классами", о чем это
> говорит? Правильно, жди синтаксис С.

Потому что берётся первый попавшийся спецсимвол, в лучшем случае по аналогии с чем-то, вот и всё.)

С блоками в Рефал-5 мне более-менее понятно - похожи на систему уравнений из школьной математики. С вызовом <> не очень понятно, но что есть, то есть.

>> Добавлять надо, название обязывает: Ре[курсиыных] Ф[ункций] Ал [горитмический]. С именами
>> пока не уверен. Объявлять их в синтаксисе можно, между : и
>> { всё равно ничего не пишется. Но переусердствовать не хочется: если
>> начинается вложенность блоков больше 2-х, есть подозрение, что пора начинать декомпозицию,
>> выносить в отдельные функции.
> И думаю надо делать это через псевдоним:
> {
>  A = <{} аргумент>;
> }

В общем-то, вот такое:

идентификатор { } // в Рефал-М можно сократить до идентификатор;

имеет особый смысл - определяет идентификатор, который можно сопоставить с самим собой (типа enum в Си)

То есть {} может служить как синоним для имени текущего блока (даже несмотря на то, что у Турчина скобочки определены на уровне лексера).

Есть ещё такая функция Mu, которая не очень вписывается в программу, если её писать русскими словами. Она вызывает функцию по имени (используется в Map и т.п.):

<функция аргументы>

<Mu функция аргументы>

<Mu "функция" аргументы>

Ей хочется дать псевдоним из спецсимвола, м.б. заодно

<{функция} аргументы>

<{"функция"} аргументы>

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

>> Вот и не вижу возможность вызвать такое. Впрочем, раз есть модули, может
>> как-то для них пригодится. У модуля есть имя-идентификатор и пока транслятор
>> на такое выдаёт "имя модуля без функции не имеет смысла". Был
>> бы смысл писать туда тесты для функций модуля, например. Запустил модуль
>> отдельно - он сам себя протестировал. А при импорте модуля это
>> { } пропускается.
> Ну вот такое самоопределение-и-вызов
> <{
> } аргументы>

Имел ввиду, когда {} определено вне <> и именованных функций.

Ответить | Правка | К родителю #270 | Наверх | Cообщить модератору

275. "В июне в Переславле-Залесском состоится конференция СПО в вы..."  +/
Сообщение от Sw00p aka Jerom (?), 21-Июн-24, 16:15 
>> И рекурсивный вызов будет таким:
>> <{ <{} аргументы> } аргументы>
> Здесь сначала вызовется (пустой?) блок во внутренних скобках, результат разместится вместо
> них, следом произойдёт вызов блока во внешних скобках. Пустой блок не
> является вычислимой функцией, т.е. первый вызов остановит программу. Если бы пустой,
> то получается, что результат вызова формирует тело внешнего блока, т.е. генерирует
> ф. во время исполнения -- это кажется довольно мощной штукой, но
> пока не ясно, как к этому подойти. Мысль использовать {} как
> псевдоним для текущей функции м.б. стоящая, но не в такой записи.

<{} аргументы> - это не пустой блок (анонимная функция) имелся ввиду, это псевдоним на родительский блок (анонимную функцию).

Запишем иначе рекурсивный пример анонимного блока:

<{ ...Некоторые предложения...И рекурсия...=<_ аргументы2> } аргументы1>

На этапе трансляции определяется по <{ - что это анонимный блок, парсится и внутри по <_ определяется рекурсия на родителя.

<{

<_

<Имя-функции

Вот эти три конструкции вызова функции определяются на этапе трансляции, ибо константны и однозначны.

А вот если меня функции это выражение или переменная

<arg1

то в рантайме.


> Потому на деле всё немного иначе:
> аргументы : { образец = результат } // "сахар" для <{ образец
> = результат } аргументы >
> но вторая запись позволена в любом месте выражения-результата, а первая только после
> него.
> Запись со скобками <> в Рефал-5-Лямбда используют, передавая блок аргументом в Map
> и подобные функции -- они и обеспечивают вызов блока в цикле.

А рекурсия у блоков в Рефал-5-Лямбда есть?


>> Можно и как аргумент передать:
>> <{} <{ <{ }>} аргументы> >
> <> может иметь смысл внутри {} только в правой части после =

Это {} не пустой блок имелся ввиду.

> Блок состоит из предложении и принимает аргумент, когда вызывается. Запись {аргумент} для
> меня не ясна.

{arg} - тут arg имелось ввиду содержимое блока (тело), сорри, условно написано, как и в случае с {}.


>> <{}> - вот вызов анонимной (блока). Семантика за <> сохраняется - вызвать.
> Да, вот так вызывается в Рефал-5-Лямбда:
> <{} arg> // arg м.б. пустым

Да, <{...Тело Блока...}> плюс неявный =; если явно не переопределен, и по факту в безаргументном он должен быть и переопределен.

<{ = какой-то результат; }> - вот так должен выглядеть безаргументный вызов анонимной функции (блока).


>> <{} <{ <{ }>} аргументы>> - ломает читабельность, но можно и так:
>> <{}
>>     <{
>>         <{ }>
>>      } аргументы>
> Я не могу это прочитать. Сначала надо лезть в середину. У нас
> текст для людей принято читать слева направо, сверху вниз. Двоеточие как
> раз и решает этот вопрос:

это же вложенные вызовы, их всегда сложно читать в математическом стиле a(b(), c(d(), e))
Поэтому это лучше записывать через промежуточный результат:

d = d()
c = c(d, e)
b = b()
a = a(b, c)


> Я лучше буду ковырять машинный код, чем разбирать
> нагромождение вложенностей <> больше 2-х.

От такой a(b(), c(d(), e)) записи избавиться не возможно, она ведь допустима.

>[оверквотинг удален]
>>> Разве что, формально, ; среди аргументов не может быть.
>> ; они ввели в виду того, что for (инит; луп-кондишене; инкремент) отделить
>> явно условие выхода из цикла и икнремент, так как в такой
>> записи:
>> for (arg1, arg2, arg3, ..., )
>> невозможно определить какой из аргументов за что отвечает. Либо ограничить for (arg1,
>> arg2, arg3)
>> и запись for (i = 0, j = 0;;) будет невалидной.
> Дак при вызове обычной функции запятую использовать нельзя (только в дополнительных скобках).
> Надо было там аргументы разделять ;.)

ну да, вот бычное определение функции цикла

for (...)

то есть for (arg1, arg2, arg3, ..., ) принимает сколь-угодно много аргументов, и как тут понять какие из аргументов должны быть использованы на этапы инициализации, какие на этапе проверки условия и какие во время каждой итерации? Как определить этот порядок? у нас по факту три группы аргументов (переменных, выражений) и нам необходимо их четко разделять, какое правило применить?

Ну вот в С додумались, давайте сделаем не стандартно и введем новый разделитель в виде ;

Хотя этот for (arg1, arg2, arg3, ..., ) можно было по модулю 3 определить (три группы).

for (arg1, arg2, arg3, arg4, arg5, arg6, ..., )

arg1, arg4, argN mod 3 = 1 -> аргументы инициализации, всякие i = 0, j = 0, k = 0 .....
arg2, arg5, argN mod 3 = 2 -> условие выхода из цикла, проверка через AND истинности аргументов
arg3, arg6, argN mod 3 = 0 -> аргументы инкремента, i++, j++, k++

Короче, ересь :)


> Потому что берётся первый попавшийся спецсимвол, в лучшем случае по аналогии с
> чем-то, вот и всё.)

Ну вот дело вкуса. Но логика выбора должна быть описана в книгах, как минимум, написанных самими авторами ЯП.


> Есть ещё такая функция Mu, которая не очень вписывается в программу, если
> её писать русскими словами. Она вызывает функцию по имени (используется в
> Map и т.п.):
> <функция аргументы>
> <Mu функция аргументы>
> <Mu "функция" аргументы>
> Ей хочется дать псевдоним из спецсимвола, м.б. заодно
> <{функция} аргументы>
> <{"функция"} аргументы>
> но на первый взгляд кажется как-то притянуто, и слишком много кнопок нажимать.

В ней я думаю вообще нет необходимости, если реальзовать нормальный оператор "вызова функции".

> Имел ввиду, когда {} определено вне <> и именованных функций.

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

Ответить | Правка | К родителю #272 | Наверх | Cообщить модератору

279. "В июне в Переславле-Залесском состоится конференция СПО в вы..."  +/
Сообщение от n00by (ok), 22-Июн-24, 17:24 
>[оверквотинг удален]
>>> <{ <{} аргументы> } аргументы>
>> Здесь сначала вызовется (пустой?) блок во внутренних скобках, результат разместится вместо
>> них, следом произойдёт вызов блока во внешних скобках. Пустой блок не
>> является вычислимой функцией, т.е. первый вызов остановит программу. Если бы пустой,
>> то получается, что результат вызова формирует тело внешнего блока, т.е. генерирует
>> ф. во время исполнения -- это кажется довольно мощной штукой, но
>> пока не ясно, как к этому подойти. Мысль использовать {} как
>> псевдоним для текущей функции м.б. стоящая, но не в такой записи.
> <{} аргументы> - это не пустой блок (анонимная функция) имелся ввиду, это
> псевдоним на родительский блок (анонимную функцию).

Это я понял, дочитав сообщение. Воспринимается {} именно как пустой блок. Для меня такая запись оказалась неинтуитивна.

> Запишем иначе рекурсивный пример анонимного блока:
> <{ ...Некоторые предложения...И рекурсия...=<_ аргументы2> } аргументы1>
> На этапе трансляции определяется по <{ - что это анонимный блок, парсится
> и внутри по <_ определяется рекурсия на родителя.

По <_ определять не надо, это делается проще: как только начинается определение функции (в т.ч. анонимной) идентификатору _ присваивается ссылка на эту функцию. Так псевдоним можно будет использовать не только рядом с <, но и как угодно: сохранить в ящик, передать в <Prout _> (распечатает настоящее имя, если есть). Пока нет отладчика, гораздо проще вставлять одинаковый код для трассировки, а позже его удалять поиском.

> <{
> <_
> <Имя-функции
> Вот эти три конструкции вызова функции определяются на этапе трансляции, ибо константны
> и однозначны.

Ну с вызовом анонимной ф. (блока) нет вопросов. Некоторая сложность есть с генерацией кода, в Рефал-5-Лямбда строится замыкание, захватываются переменные - всё это не хочется. Это позволительно, если возвращать такую функцию в качестве результата.

> А вот если меня функции это выражение или переменная
> <arg1
> то в рантайме.

Если программист хочет перенести в рантайм, значит пусть явно пишет Mu.

>> Потому на деле всё немного иначе:
>> аргументы : { образец = результат } // "сахар" для <{ образец
>> = результат } аргументы >
>> но вторая запись позволена в любом месте выражения-результата, а первая только после
>> него.
>> Запись со скобками <> в Рефал-5-Лямбда используют, передавая блок аргументом в Map
>> и подобные функции -- они и обеспечивают вызов блока в цикле.
> А рекурсия у блоков в Рефал-5-Лямбда есть?

Нет. Зачем бы я тогда выдумывал, как это записывать. :)

>[оверквотинг удален]
> Это {} не пустой блок имелся ввиду.
>> Блок состоит из предложении и принимает аргумент, когда вызывается. Запись {аргумент} для
>> меня не ясна.
> {arg} - тут arg имелось ввиду содержимое блока (тело), сорри, условно написано,
> как и в случае с {}.
>>> <{}> - вот вызов анонимной (блока). Семантика за <> сохраняется - вызвать.
>> Да, вот так вызывается в Рефал-5-Лямбда:
>> <{} arg> // arg м.б. пустым
> Да, <{...Тело Блока...}> плюс неявный =; если явно не переопределен, и по
> факту в безаргументном он должен быть и переопределен.

Неявно =; определяется только в "блоках" из одного предложения и без скобочек (когда написал {}, то недолго и =; написать). Такие в <> не передать. А рекурсия на них нужна, как раз потому что неявное =; без неё потеряет смысл. :)

> <{ = какой-то результат; }> - вот так должен выглядеть безаргументный вызов
> анонимной функции (блока).

Да, так и выглядит в Рефал-5-Лямбда.

>[оверквотинг удален]
>> Я не могу это прочитать. Сначала надо лезть в середину. У нас
>> текст для людей принято читать слева направо, сверху вниз. Двоеточие как
>> раз и решает этот вопрос:
> это же вложенные вызовы, их всегда сложно читать в математическом стиле a(b(),
> c(d(), e))
> Поэтому это лучше записывать через промежуточный результат:
> d = d()
> c = c(d, e)
> b = b()
> a = a(b, c)

В Рефал нет промежуточного результата, он же "функциональный". Так что через :

>> Я лучше буду ковырять машинный код, чем разбирать
>> нагромождение вложенностей <> больше 2-х.
> От такой a(b(), c(d(), e)) записи избавиться не возможно, она ведь допустима.

Здесь всего 2 уровня, потому вполне читается.

>[оверквотинг удален]
>> Map и т.п.):
>> <функция аргументы>
>> <Mu функция аргументы>
>> <Mu "функция" аргументы>
>> Ей хочется дать псевдоним из спецсимвола, м.б. заодно
>> <{функция} аргументы>
>> <{"функция"} аргументы>
>> но на первый взгляд кажется как-то притянуто, и слишком много кнопок нажимать.
> В ней я думаю вообще нет необходимости, если реальзовать нормальный оператор "вызова
> функции".

Он как раз сейчас нормальный, времени трансляции, а Mu это динамическая "рефлексия".

>> Имел ввиду, когда {} определено вне <> и именованных функций.
> Ну можно подобие неймспейсов сделать, чтобы быстрее искать имена функций и т.д.
> изоляция.

Сейчас модули и выполняют роль "пространств имён", но иерархии нет, т.е. все имена модулей доступны из "глобального" неймспейса.

Ответить | Правка | К родителю #275 | Наверх | Cообщить модератору

282. "В июне в Переславле-Залесском состоится конференция СПО в вы..."  +/
Сообщение от Sw00p aka Jerom (?), 23-Июн-24, 16:33 
> Ну с вызовом анонимной ф. (блока) нет вопросов. Некоторая сложность есть с
> генерацией кода, в Рефал-5-Лямбда строится замыкание, захватываются переменные - всё это
> не хочется. Это позволительно, если возвращать такую функцию в качестве результата.

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

> Если программист хочет перенести в рантайм, значит пусть явно пишет Mu.

Если Mu это отдельный опкод callMu (условно), то думаю надо определить другой оператор вызова (отказаться от записи <Mu >)


> Нет. Зачем бы я тогда выдумывал, как это записывать. :)

Всё ясно, эт называется прочел базисный и забил на расширенный :) Кстати, странно блок чейнинга нет (труба), напрашивается.

Вот пример из книги: поиск подстроки a....z

Sub-a-z {
  e.1'a'e.2, e.2 :
           { e.3'z'e.4 = (e.1)'a'e.3'z'(e.4);
              e.3 = <Prout 'No substring a-z'>;
           };
  e.1 = <Prout "No 'a' found">;  
}


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

{
  e.3'z'e.4 = (e.1)'a'e.3'z'(e.4);
  e.3 = <Prout 'No substring a-z'>;
};


А теперь представим, что надо найти a...j...z получается цепочка (труба) - найди а | найди j | найди z.

И если мы скажем, что "найди а И найди j" потом "найди j И найди z", то это уже две функции:

Sub-a-j и Sub-j-z

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

Ответить | Правка | К родителю #279 | Наверх | Cообщить модератору

283. "В июне в Переславле-Залесском состоится конференция СПО в вы..."  +/
Сообщение от n00by (ok), 24-Июн-24, 18:54 
>> Ну с вызовом анонимной ф. (блока) нет вопросов. Некоторая сложность есть с
>> генерацией кода, в Рефал-5-Лямбда строится замыкание, захватываются переменные - всё это
>> не хочется. Это позволительно, если возвращать такую функцию в качестве результата.
> надо тогда думать как сделать иначе, и возможно ли это не "стандартным"
> методом.

Вернуть опкоды (или ссылку на них) сгенерированой функции не проблема. Проблема в том, что такие функции предполагаются для работы (в частности) с файлами. Захватываться в замыкание будет описатель файла (хендл), и его надо закрывать. Либо как-то запретить копирование хендла (на этапе трансляции), либо счётчик ссылок/сборщик мусора.

>> Если программист хочет перенести в рантайм, значит пусть явно пишет Mu.
> Если Mu это отдельный опкод callMu (условно), то думаю надо определить другой
> оператор вызова (отказаться от записи <Mu >)

Опкод один на вызов любых функций. "Адрес" вызова разный, у Mu он 0. Для вызова функций пока нет другой нотации, кроме <>. Заменить (точнее, ввести псевдоним для Mu) давно хочется, м.б. <# >. Этот же идентификатор заодно пригодится и для ящика, куда данные будут "сохраняться" как в /dev/null

>> Нет. Зачем бы я тогда выдумывал, как это записывать. :)
> Всё ясно, эт называется прочел базисный и забил на расширенный :) Кстати,
> странно блок чейнинга нет (труба), напрашивается.
> Вот пример из книги: поиск подстроки a....z

Исходный пример там какой-то странный:

<Sub-a-z e1 'a'eX'z' e2> = (e1) 'a'eX'z' (e2)

Переписал его так:

sub-a-z e.1 "a" e.x "z" e.2 = "a"e.x"Z";

go = <sub-a-z 'abababababababababababababababababababaababab'>;

Турчин пишет, что на таких данных квадратичная сложность:

«Тогда машина выделяет первое 'a', терпит неудачу в поиске 'z', удлиняет e1, вновь терпит неудачу в
поиске 'z', вновь удлиняет e1, и т.д.: наблюдается квадратичная зависимость количества операций от
длины выражения вместо линейной.»

В моей реализации опкоды образца и ПЗ читаются параллельно, в одном цикле. Опкод "буква 'z'" при отсутствии равного в ПЗ приводит к ситуации "увеличить границы e.1" вместо "выбрать следующий опкод образца" и будет повторно исполняться (сравниваться) со следующей буквой из ПЗ. Т.е. сложность так и остаётся линейной. :)

Наверное, они там что-то перемудрили с опкодами (их вроде бы сотня, а у меня всего 15).

> Sub-a-z {
>   e.1'a'e.2, e.2 :
>            {
> e.3'z'e.4 = (e.1)'a'e.3'z'(e.4);
>            
>   e.3 = <Prout 'No substring a-z'>;
>            };
>   e.1 = <Prout "No 'a' found">;
> }
> Это вот под-функция, которая должна была быть определена отдельно, как вспомогательная.

Это убивает саму идею Рефала, как по мне. Есть простая запись образца, если она на каких-то данных начнёт работать медленно, значит надо ускорять алгоритм сопоставления (рассматривать ПЗ с конца, например), а не усложнять программу. Либо структурировать входные данные, добавить побольше скобочек.

> {
>   e.3'z'e.4 = (e.1)'a'e.3'z'(e.4);
>   e.3 = <Prout 'No substring a-z'>;
> };
> А теперь представим, что надо найти a...j...z получается цепочка (труба) - найди
> а | найди j | найди z.

Вот тут могут возникнуть лишние откаты на каких-то данных, где много "a...j" без "z". Даже с трубой.

> И если мы скажем, что "найди а И найди j" потом "найди
> j И найди z", то это уже две функции:
> Sub-a-j и Sub-j-z
> то есть мы ввели дополнительную функцию, а это противоречие, мы ведь ввели
> блоки для того, чтобы избавиться от отдельного определения вспомогательной функции.

Так в Рефал-5-Лямбда "труба" получатся реализуется через : { } : { } : { }. Но, по-моему, надо просто написать в образце:

e.1 "a" e.x1 "j" e.x2 "z" e.2 =

и ускорять исполнитель, если потребуется.

Ответить | Правка | К родителю #282 | Наверх | Cообщить модератору

285. "В июне в Переславле-Залесском состоится конференция СПО в вы..."  +/
Сообщение от Sw00p aka Jerom (?), 26-Июн-24, 16:45 
>[оверквотинг удален]
> <Sub-a-z e1 'a'eX'z' e2> = (e1) 'a'eX'z' (e2)
> Переписал его так:
> sub-a-z e.1 "a" e.x "z" e.2 = "a"e.x"Z";
> go = <sub-a-z 'abababababababababababababababababababaababab'>;
> Турчин пишет, что на таких данных квадратичная сложность:
> «Тогда машина выделяет первое 'a', терпит неудачу в поиске 'z', удлиняет e1,
> вновь терпит неудачу в
> поиске 'z', вновь удлиняет e1, и т.д.: наблюдается квадратичная зависимость количества
> операций от
> длины выражения вместо линейной.»

'abababababababababababababababababababaababab' почему на этом квадратичная сложность? Там же после N сравнений - z не найдено.

> Это убивает саму идею Рефала, как по мне. Есть простая запись образца,
> если она на каких-то данных начнёт работать медленно, значит надо ускорять
> алгоритм сопоставления (рассматривать ПЗ с конца, например), а не усложнять программу.
> Либо структурировать входные данные, добавить побольше скобочек.

Ну это природа алгоритмов такая, лучший, средний, худший случай. И поиск подстроки в строке не обделен этим, как не обделены всякие алгоритмы сортировки, которые зависят от входных данных.


> Вот тут могут возникнуть лишние откаты на каких-то данных, где много "a...j"
> без "z". Даже с трубой.

тут пример не строгий если говорить "найди а(все что угодно)j(все что угодно)z" и если после первого найденного "а" не найдется вообще "j", то и блок поиска "z" исполнять незачем.
ции.

> Так в Рефал-5-Лямбда "труба" получатся реализуется через : { } : {
> } : { }. Но, по-моему, надо просто написать в образце:
> e.1 "a" e.x1 "j" e.x2 "z" e.2 =
> и ускорять исполнитель, если потребуется.

ну вот труба в данном конкретном примере плохо применима.

Ответить | Правка | К родителю #283 | Наверх | Cообщить модератору

286. "В июне в Переславле-Залесском состоится конференция СПО в вы..."  +/
Сообщение от n00by (ok), 27-Июн-24, 12:24 
>[оверквотинг удален]
>> sub-a-z e.1 "a" e.x "z" e.2 = "a"e.x"Z";
>> go = <sub-a-z 'abababababababababababababababababababaababab'>;
>> Турчин пишет, что на таких данных квадратичная сложность:
>> «Тогда машина выделяет первое 'a', терпит неудачу в поиске 'z', удлиняет e1,
>> вновь терпит неудачу в
>> поиске 'z', вновь удлиняет e1, и т.д.: наблюдается квадратичная зависимость количества
>> операций от
>> длины выражения вместо линейной.»
> 'abababababababababababababababababababaababab' почему на этом квадратичная сложность?
> Там же после N сравнений - z не найдено.

Выше всё объяснение Турчина. Наверное, связано с форматом RASL, где 66 опкодов. Если в случае e-переменной из них генерируется какой-то цикл, получится квадратичная сложность. Разбираться с этим и проверять гипотезу не очень хочется, пока у меня занимает меньше строк и даёт линейную сложность.

>> Это убивает саму идею Рефала, как по мне. Есть простая запись образца,
>> если она на каких-то данных начнёт работать медленно, значит надо ускорять
>> алгоритм сопоставления (рассматривать ПЗ с конца, например), а не усложнять программу.
>> Либо структурировать входные данные, добавить побольше скобочек.
> Ну это природа алгоритмов такая, лучший, средний, худший случай. И поиск подстроки
> в строке не обделен этим, как не обделены всякие алгоритмы сортировки,
> которые зависят от входных данных.

Именно такой алгоритм приведён в книге, что бы проще понять, как всё это работает. Не обязательно его повторять 1 в 1. Вероятно, автор просто нашёл повод показать простейший пример, для чего нужны условия. Акцент на квадратичной сложности оказался не очень удачен: всё больше убеждает меня, что в моей реализации условия не нужны.

Ответить | Правка | К родителю #285 | Наверх | Cообщить модератору

287. "В июне в Переславле-Залесском состоится конференция СПО в вы..."  +/
Сообщение от Sw00p aka Jerom (?), 27-Июн-24, 16:07 
> Выше всё объяснение Турчина. Наверное, связано с форматом RASL, где 66 опкодов.
> Если в случае e-переменной из них генерируется какой-то цикл, получится квадратичная
> сложность. Разбираться с этим и проверять гипотезу не очень хочется, пока
> у меня занимает меньше строк и даёт линейную сложность.

Непонимание возможно из-за того, что я мыслю "регульными выражениями", а тут на самом деле получается так:

e.1 "a" e.x "z" e.2 - читает так,

Удлиняй e.1 пока не натолконешся на "a", натолкнувшись на "a" - удлиняй e.x пока не натолкнешся на "z", ненатолкнувшись на "z", вернись и удлиняй e.1. И так получается квадратичная сложность (цикл в цикле), но зачем не натолкнувшись на "z" при первом столкновении с "a", происходит не остановка метчинга всего, а идет возврат в начальный цикл удлинения e.1? Где логика?.

> Именно такой алгоритм приведён в книге, что бы проще понять, как всё
> это работает. Не обязательно его повторять 1 в 1. Вероятно, автор
> просто нашёл повод показать простейший пример, для чего нужны условия. Акцент
> на квадратичной сложности оказался не очень удачен: всё больше убеждает меня,
> что в моей реализации условия не нужны.

Это как в случае с регулярками, чем "строже" регулярка тем быстрее она сматчит. А тут получается поля для неоптимальных конструкций, когда переписав иначе образец можно добиться существеннного выигрыша.

Ответить | Правка | К родителю #286 | Наверх | Cообщить модератору

288. "В июне в Переславле-Залесском состоится конференция СПО в вы..."  +/
Сообщение от n00by (ok), 27-Июн-24, 16:53 
>[оверквотинг удален]
>> у меня занимает меньше строк и даёт линейную сложность.
> Непонимание возможно из-за того, что я мыслю "регульными выражениями", а тут на
> самом деле получается так:
> e.1 "a" e.x "z" e.2 - читает так,
> Удлиняй e.1 пока не натолконешся на "a", натолкнувшись на "a" - удлиняй
> e.x пока не натолкнешся на "z", ненатолкнувшись на "z", вернись и
> удлиняй e.1. И так получается квадратичная сложность (цикл в цикле), но
> зачем не натолкнувшись на "z" при первом столкновении с "a", происходит
> не остановка метчинга всего, а идет возврат в начальный цикл удлинения
> e.1? Где логика?.

Вопрос в том, как релизовано "удлиняй". В моей реализации это +1 к границе, грубо говоря. Если же под этим понимать "присвой e. символы от n до m", тогда получается цикл на каждом шаге. :)

Ответить | Правка | К родителю #287 | Наверх | Cообщить модератору

289. "В июне в Переславле-Залесском состоится конференция СПО в вы..."  +/
Сообщение от Sw00p aka Jerom (?), 27-Июн-24, 17:34 
>[оверквотинг удален]
>> e.1 "a" e.x "z" e.2 - читает так,
>> Удлиняй e.1 пока не натолконешся на "a", натолкнувшись на "a" - удлиняй
>> e.x пока не натолкнешся на "z", ненатолкнувшись на "z", вернись и
>> удлиняй e.1. И так получается квадратичная сложность (цикл в цикле), но
>> зачем не натолкнувшись на "z" при первом столкновении с "a", происходит
>> не остановка метчинга всего, а идет возврат в начальный цикл удлинения
>> e.1? Где логика?.
> Вопрос в том, как релизовано "удлиняй". В моей реализации это +1 к
> границе, грубо говоря. Если же под этим понимать "присвой e. символы
> от n до m", тогда получается цикл на каждом шаге. :)

таким макаром ...a...j...z... - три вложенных цикла и с ростом е-переменных растет и сложность? Когда там сложность в худшем случае должна быть O(H*n), где H (haystack)- длина строки (где ищем) в символах, n (needle) - длина подстроки (что ищем) в символах.

И такую конструкцию ...a...j...z... (поиск нечеткой подстроки), можно разбить на четкие подстроки и пареллельно искать с помощью КМП за О(2*H) в худшем случае.

Ответить | Правка | К родителю #288 | Наверх | Cообщить модератору

290. "В июне в Переславле-Залесском состоится конференция СПО в вы..."  +/
Сообщение от Sw00p aka Jerom (?), 15-Июл-24, 00:45 
https://github.com/mazeppa-dev/mazeppa

вот наткнулся, думаю будет интересно


Ответить | Правка | К родителю #288 | Наверх | Cообщить модератору

291. "В июне в Переславле-Залесском состоится конференция СПО в вы..."  +/
Сообщение от n00by (ok), 16-Июл-24, 06:58 
> https://github.com/mazeppa-dev/mazeppa
> вот наткнулся, думаю будет интересно

Спасибо. Суперкомпиляция отчасти есть в Рефал-5-Лямбда, там из-за неё "Вопиющий случай распухания кода" https://github.com/bmstu-iu9/refal-5-lambda/issues/362

Ответить | Правка | К родителю #290 | Наверх | Cообщить модератору

271. "В июне в Переславле-Залесском состоится конференция СПО в вы..."  +/
Сообщение от Sw00p aka Jerom (?), 20-Июн-24, 15:41 
> Если вызывать так:
>  <arg1 arg2 arg3> // (1)
> то есть нюансы. Сейчас в Рефал-М имя функции не обязательно идёт первым,
> можно
>  <х1 прибавить х2>
> и x2 (но не x1) в свою очередь может быть именем вычислимой
> функции и как-то вызываться в ф. прибавить. Тогда придётся запретить в
> (1) аргументами вычислимые функции - а это не дело, лучше использовать
> псевдоним _ или другой.

а в чем проблема?

<Имя-функции1 Имя-функции2 Имя-функции3>

нету разницы с

<arg1 arg2 arg3>

Эт как в шелле $0 имя скрипта первым аргументом при запуске, а тут имя функции первым аргументом.
И какая может быть проблема в том, что Имя-функции2 будет принимать в качестве аргумента Имя-функции3.

Имя-функции1
{
   A = <Имя-функции1 <Имя-функции2 Имя-функции3>> // вот тут можно подставить псевдоним для Имя-функции1, как "сахар"
}

<Имя-функции1 x> - оператор вызова функции по имени, как () в математике f(x).


Тут <arg1 arg2 arg3> если arg1 не равен "родительской функции", тогда - внешний вызов, иначе - рекурсивный. И arg2 и arg3 всегда будут считаться именами функций только в контексте вызова, то есть в <arg2 arg3> - тут вызывается именно arg2 как функция, так как идет первым в списке аргументов оператора "вызов функции по имени" - <>.

Как быть с анонимными функциями (безымянными)?

Определение:

Нет-имени
{

}

Как вызвать если нет имени? Как такое передать в оператор "вызов функции по имени" - <>.
А передадим на прямую.

<{...A...} Имя-функции2 Имя-функции3>

Тогда как такую рекурсивно вызвать? А вот тут уже НЕОБХОДИМ псевдоним, потому-что получается вот так:


<{
    A = <{ВОТ ТУТ Я ДОЛЖЕН ПРОДУБЛИРОВАТЬ КОД, КОТОРЫЙ ТАКЖЕ РЕКУРСИВНО ДОЛЖЕН ПРОДУБЛИРОВАТь.............} arg1 arg2>  // получается абсурдно


} Имя-функции2 Имя-функции3>

А по идее должно быть так:

<{
    A = <{@} arg1 arg2>


} Имя-функции2 Имя-функции3>

Тут {@} это псевдоним родителя для оператора "вызов функции по имени" - <>.


пс: выбранный псевдоним - условный, может быть на любой вкус :)

Ответить | Правка | К родителю #269 | Наверх | Cообщить модератору

273. "В июне в Переславле-Залесском состоится конференция СПО в вы..."  +/
Сообщение от n00by (ok), 20-Июн-24, 21:23 
>[оверквотинг удален]
>> можно
>>  <х1 прибавить х2>
>> и x2 (но не x1) в свою очередь может быть именем вычислимой
>> функции и как-то вызываться в ф. прибавить. Тогда придётся запретить в
>> (1) аргументами вычислимые функции - а это не дело, лучше использовать
>> псевдоним _ или другой.
> а в чем проблема?
> <Имя-функции1 Имя-функции2 Имя-функции3>
> нету разницы с
> <arg1 arg2 arg3>

Разница в том, что arg1 - это хоть что, а Имя-функции1 - только то, что может быть исполнено. Скобочка < в Рефал-5 вообще была обязана писаться слитно с именем функции. В Рефал-М не обязана, но вызывается первое, что может быть исполнено. Если arg1 может быть исполн, то и будет.

> Эт как в шелле $0 имя скрипта первым аргументом при запуске, а
> тут имя функции первым аргументом.
> И какая может быть проблема в том, что Имя-функции2 будет принимать в
> качестве аргумента Имя-функции3.

В <х1 прибавить х2> имя функции (прибавить) 2-м "аргументом".

> Имя-функции1
> {
>    A = <Имя-функции1 <Имя-функции2 Имя-функции3>> // вот тут можно
> подставить псевдоним для Имя-функции1, как "сахар"
> }

Так вычисления не ленивые.

> <Имя-функции1 x> - оператор вызова функции по имени, как () в математике
> f(x).

В Рефал функция Mu вызывает по имени. И поэтому она может отказать при исполнении, а <> связываются с вызываемым и проверяются на момент трансляции.

>[оверквотинг удален]
> КОТОРЫЙ ТАКЖЕ РЕКУРСИВНО ДОЛЖЕН ПРОДУБЛИРОВАТь.............} arg1 arg2>  // получается
> абсурдно
> } Имя-функции2 Имя-функции3>
> А по идее должно быть так:
> <{
>     A = <{@} arg1 arg2>
> } Имя-функции2 Имя-функции3>
> Тут {@} это псевдоним родителя для оператора "вызов функции по имени" -
> <>.
> пс: выбранный псевдоним - условный, может быть на любой вкус :)

Тут уже @ предлагается, а я из прошлого сообщения понял, что {} может служить псевдонимом. :)

Ответить | Правка | К родителю #271 | Наверх | Cообщить модератору

274. "В июне в Переславле-Залесском состоится конференция СПО в вы..."  +/
Сообщение от Sw00p aka Jerom (?), 21-Июн-24, 15:04 
> Разница в том, что arg1 - это хоть что, а Имя-функции1 -
> только то, что может быть исполнено.

Ну да, иначе "undefined function" на уровне разбора исходного текста (если константное имя, не выражение), либо в рантайме.

Функция Mu ровно тоже самое и делает, и первый аргумент у нее это имя функции, которое может динамически вычислиться.

"""

<Mu s.F-name e.Expr> , или <Mu (e.String) e.Expr>

отыскивает функцию, имеющую имя s.F-name или <Implode e.String>

(когда оно задано в форме символьной строки) и применяет ее к выражению e.Expr , то есть замещается на <s.F-name e.Expr> . Если ни одна такая функция  не является  видимой   из вызова функции Mu , возникает ошибка.

"""

<arg1 arg2 arg3> - все три arg могут быть имена функций, но оператор <> берет первый аргумент как имя функции, которую надо вызвать.


> В <х1 прибавить х2> имя функции (прибавить) 2-м "аргументом".

А, ясно, типа <a + b>, за место польской нотации <+ a b>.
Думаю первый вариант "неудобный" в случае с большим количеством аргументов.

>> Имя-функции1
>> {
>>    A = <Имя-функции1 <Имя-функции2 Имя-функции3>> // вот тут можно
>> подставить псевдоним для Имя-функции1, как "сахар"
>> }
> Так вычисления не ленивые.

А где здесь "ленивость"?

> В Рефал функция Mu вызывает по имени. И поэтому она может отказать
> при исполнении, а <> связываются с вызываемым и проверяются на момент
> трансляции.

Ну да, а в чем проблема для оператора <> делать тоже самое, что и Mu? Зачем нужна вообще Mu?
Всегда на этапе трансляции можно определить какие функции с константными именами, а какие будут с вычисленными именами в рантайме. Мы же индентификаторы от выражений и переменных ведь отличаем, во время парсинга.


>> пс: выбранный псевдоним - условный, может быть на любой вкус :)
> Тут уже @ предлагается, а я из прошлого сообщения понял, что {}
> может служить псевдонимом. :)

Я же в "пс" написал - условный, можно и в один символ <_ arg2 arg3> - где _ - имя родительской функции, в контексте которой совершается данный вызов (рекурсивный). :)
И этот псевдоним родительской функции используется как для именных, так и для безымянных функций.

_ - это Я.

Ответить | Правка | К родителю #273 | Наверх | Cообщить модератору

277. "В июне в Переславле-Залесском состоится конференция СПО в вы..."  +/
Сообщение от n00by (ok), 22-Июн-24, 16:31 
>> Разница в том, что arg1 - это хоть что, а Имя-функции1 -
>> только то, что может быть исполнено.
> Ну да, иначе "undefined function" на уровне разбора исходного текста (если константное
> имя, не выражение), либо в рантайме.
> Функция Mu ровно тоже самое и делает, и первый аргумент у нее
> это имя функции, которое может динамически вычислиться.

В Рефал-5 Турчина скобочка < связывается с вызываемой функцией во время трансляции, а Mu определяет, что надо вызвать, во время исполнения.

> """
> <Mu s.F-name e.Expr> , или <Mu (e.String) e.Expr>
> отыскивает функцию, имеющую имя s.F-name или <Implode e.String>
> (когда оно задано в форме символьной строки) и применяет ее к выражению
> e.Expr , то есть замещается на <s.F-name e.Expr> . Если ни
> одна такая функция  не является  видимой   из
> вызова функции Mu , возникает ошибка.
> """

В Рефал-5-Лямбда < работает как Mu, т.е. во время исполнения ищет.

> <arg1 arg2 arg3> - все три arg могут быть имена функций, но
> оператор <> берет первый аргумент как имя функции, которую надо вызвать.

Да, и в Рефал-5 arg1 обязательно должен быть именем функции, иначе это ошибка.

>> В <х1 прибавить х2> имя функции (прибавить) 2-м "аргументом".
> А, ясно, типа <a + b>, за место польской нотации <+ a
> b>.
> Думаю первый вариант "неудобный" в случае с большим количеством аргументов.

<a + b> позволено в Рефал-М для удобства, например с функциями ⊕ и т.п. И если в Рефал-5 Mu это библиотечная функция, которая вызывается и что-то делает (что она вызывает другую функцию - это детали), то в Рефал-М это часть исполнителя опкодов: Mu никак не определена, интерпретатор видит её как "0-ю" функцию и вместо останова по ошибке ищет, что можно вызвать.

>>> Имя-функции1
>>> {
>>>    A = <Имя-функции1 <Имя-функции2 Имя-функции3>> // вот тут можно
>>> подставить псевдоним для Имя-функции1, как "сахар"
>>> }
>> Так вычисления не ленивые.
> А где здесь "ленивость"?

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

>> В Рефал функция Mu вызывает по имени. И поэтому она может отказать
>> при исполнении, а <> связываются с вызываемым и проверяются на момент
>> трансляции.
> Ну да, а в чем проблема для оператора <> делать тоже самое,
> что и Mu? Зачем нужна вообще Mu?
> Всегда на этапе трансляции можно определить какие функции с константными именами, а
> какие будут с вычисленными именами в рантайме. Мы же индентификаторы от
> выражений и переменных ведь отличаем, во время парсинга.

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

>>> пс: выбранный псевдоним - условный, может быть на любой вкус :)
>> Тут уже @ предлагается, а я из прошлого сообщения понял, что {}
>> может служить псевдонимом. :)
> Я же в "пс" написал - условный, можно и в один символ
> <_ arg2 arg3> - где _ - имя родительской функции, в
> контексте которой совершается данный вызов (рекурсивный). :)
> И этот псевдоним родительской функции используется как для именных, так и для
> безымянных функций.
> _ - это Я.

_ выглядит интересно, поскольку запись |_ похожа на сокращение от "Lаmbda". :) А вот среди скобочек <> не факт, что хорошо смотрится.

Ответить | Правка | К родителю #274 | Наверх | Cообщить модератору

280. "В июне в Переславле-Залесском состоится конференция СПО в вы..."  +/
Сообщение от Sw00p aka Jerom (?), 23-Июн-24, 14:22 
> В Рефал-5 Турчина скобочка < связывается с вызываемой функцией во время трансляции,
> а Mu определяет, что надо вызвать, во время исполнения.
> В Рефал-5-Лямбда < работает как Mu, т.е. во время исполнения ищет.

Для меня всякие builtin-ы вроде Mu, всегда считались контр-интуитивными. Функция Mu ведь не на Рефале написана. И формальное представление в ввиде обычной вызываемой функции <Mu > не верно. Надо было отдельным оператором оформить.

>> <arg1 arg2 arg3> - все три arg могут быть имена функций, но
>> оператор <> берет первый аргумент как имя функции, которую надо вызвать.
> Да, и в Рефал-5 arg1 обязательно должен быть именем функции, иначе это
> ошибка.

На этапе трансляции - константное имя.

> <a + b> позволено в Рефал-М для удобства, например с функциями ⊕
> и т.п.

А как это однозначно парсится с <Имя-функции арг1 арг2> ? Аргументом функции может быть и имя другой функции.

<+ a b> или <b a +> что в таких случаях? Какое правило определения аргумента как имени вызываемой функции?


> И если в Рефал-5 Mu это библиотечная функция, которая
> вызывается и что-то делает (что она вызывает другую функцию - это
> детали), то в Рефал-М это часть исполнителя опкодов: Mu никак не
> определена, интерпретатор видит её как "0-ю" функцию и вместо останова по
> ошибке ищет, что можно вызвать.

Не библиотечная функция, а часть языка (builtin функция), и вызов Mu происходит через стандартный опкод call (условно), вызывая напрямую по указателю Mu. Если в Рефал-М на уровне отдельного опкода реализована Mu, то это равносильно новому оператору языка, про который я указал выше.


> Mu может принять аргументом прочитанный из внешнего файла текст. Плюс, структура опкодов
> такова, что гипотетически можно передать их по сокету и исполнять Mu.

ну, своего рода RPC?

> _ выглядит интересно, поскольку запись |_ похожа на сокращение от "Lаmbda". :)
> А вот среди скобочек <> не факт, что хорошо смотрится.

Тут просто надо произвести "эргономический анализ" и выбрать символ :)
Учитывая рекурсивность языка, частота использования данного символа будет высока, поэтому должно быть максимально эргономический выбор с точки зрения клавиатуры (с учетом раскладок).

Ответить | Правка | К родителю #277 | Наверх | Cообщить модератору

284. "В июне в Переславле-Залесском состоится конференция СПО в вы..."  +/
Сообщение от n00by (ok), 24-Июн-24, 19:46 
>> В Рефал-5 Турчина скобочка < связывается с вызываемой функцией во время трансляции,
>> а Mu определяет, что надо вызвать, во время исполнения.
>> В Рефал-5-Лямбда < работает как Mu, т.е. во время исполнения ищет.
> Для меня всякие builtin-ы вроде Mu, всегда считались контр-интуитивными. Функция Mu ведь
> не на Рефале написана. И формальное представление в ввиде обычной вызываемой
> функции <Mu > не верно. Надо было отдельным оператором оформить.

Так было устроено при Турчине, Add и Sub так же не на Рефал написаны. "Операторы" сейчас получаются  = : и <>. Плюс , которую не очень хочу делать: придётся обязательно копировать данные для возможности отката и усложнять исполнитель, после чего начинаются странные идеи, а не разрешить ли заодно <> в образце.

В Рефал-М можно определить идентификатор , или ^, который внешне будет похож на оператор, можно думать о синониме.

>>> <arg1 arg2 arg3> - все три arg могут быть имена функций, но
>>> оператор <> берет первый аргумент как имя функции, которую надо вызвать.
>> Да, и в Рефал-5 arg1 обязательно должен быть именем функции, иначе это
>> ошибка.
> На этапе трансляции - константное имя.

enum;   // константное имя, может быть аргументом функции в <>
ящик 1; // константное имя, может быть аргументом функции в <>
функция =; // вычислимая, подходит как имя функции в <>

>> <a + b> позволено в Рефал-М для удобства, например с функциями ⊕
>> и т.п.
> А как это однозначно парсится с <Имя-функции арг1 арг2> ? Аргументом функции
> может быть и имя другой функции.

Первая вычислимая функция однозначно связывается со скобками (опкоду закрывающей > присваивается ссылка на опкоды вызываемой ф.). Транслятор в этом месте вообще "деревянный", размещает опкоды  условно вот так:

< арг1 арг2 >+Имя-функции

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

> <+ a b> или <b a +> что в таких случаях? Какое
> правило определения аргумента как имени вызываемой функции?

Во втором случае зависит от a и b. Если a функция, значит остальное - аргументы. Если нет, то правило применяется дальше.

>> И если в Рефал-5 Mu это библиотечная функция, которая
>> вызывается и что-то делает (что она вызывает другую функцию - это
>> детали), то в Рефал-М это часть исполнителя опкодов: Mu никак не
>> определена, интерпретатор видит её как "0-ю" функцию и вместо останова по
>> ошибке ищет, что можно вызвать.
> Не библиотечная функция, а часть языка (builtin функция), и вызов Mu происходит
> через стандартный опкод call (условно), вызывая напрямую по указателю Mu. Если
> в Рефал-М на уровне отдельного опкода реализована Mu, то это равносильно
> новому оператору языка, про который я указал выше.

Библиотечные функции реализованы так, что библиотека требует подключения, если используется. Можно другую библиотеку подключить (точнее, нужно будет сделать новую, а имеющуюся оставить как вариант для совместимости). Возможность вызвать исполнитель из библиотечной функции принципиально отсутствует, то есть Mu в библиотеке реализовать нельзя, можно только дать имя.

Опкод для неё точно такой как и для вызова других функций, что написанных на Рефал, что библиотечных. В этом вся хитрость. Это как с инструкцией IA32 call 0 - она вроде есть, но процессор словит исключение, поскольку по тому адресу нет памяти. Исполнитель такое же исключение и обрабатывает.

>> Mu может принять аргументом прочитанный из внешнего файла текст. Плюс, структура опкодов
>> такова, что гипотетически можно передать их по сокету и исполнять Mu.
> ну, своего рода RPC?

Если передавать не имена методов, а опкоды - может получиться и X12 или X13, например. :)

>> _ выглядит интересно, поскольку запись |_ похожа на сокращение от "Lаmbda". :)
>> А вот среди скобочек <> не факт, что хорошо смотрится.
> Тут просто надо произвести "эргономический анализ" и выбрать символ :)
> Учитывая рекурсивность языка, частота использования данного символа будет высока, поэтому
> должно быть максимально эргономический выбор с точки зрения клавиатуры (с учетом
> раскладок).

Пока получается, что самый эргономичный - это пустой блок :: или :; для хвостового вызова.

Ответить | Правка | К родителю #280 | Наверх | Cообщить модератору

276. "В июне в Переславле-Залесском состоится конференция СПО в вы..."  +/
Сообщение от Sw00p aka Jerom (?), 22-Июн-24, 00:23 
>Зачем нужна вообще Mu?

Mu функция ведь не подобие eval функции. Динамически ведь нельзя сконструировать функцию, чтобы потом ее исполнить. Полезность Mu была бы именно в случае eval, куда передается исходный текст функции сгенерированный в рантайме.

Ответить | Правка | К родителю #273 | Наверх | Cообщить модератору

278. "В июне в Переславле-Залесском состоится конференция СПО в вы..."  +/
Сообщение от n00by (ok), 22-Июн-24, 16:42 
>>Зачем нужна вообще Mu?
> Mu функция ведь не подобие eval функции. Динамически ведь нельзя сконструировать функцию,
> чтобы потом ее исполнить. Полезность Mu была бы именно в случае
> eval, куда передается исходный текст функции сгенерированный в рантайме.

Mu это "рефлексия". Сейчас eval можно обеспечить вызовом <System "refal" ...>. Если же делать функцию Evil, создавать инстанс транслятора и передавать в него исходный текст, то первый вопрос - зачем это вообще нужно. В реализации Турчина есть функции для работы с "метакодом" Dn и Up. Мне технически проще сгенерировать в поле зрения опкоды и их исполнить: все обрабатываемые данные и так являются опкодами; часть проверок (скобочки) будет выполняться на этапе трансляции. Не очень понятно пока, как это записывать. М.б. задействовать [].

Ответить | Правка | К родителю #276 | Наверх | Cообщить модератору

281. "В июне в Переславле-Залесском состоится конференция СПО в вы..."  +/
Сообщение от Sw00p aka Jerom (?), 23-Июн-24, 15:20 
> Mu это "рефлексия". Сейчас eval можно обеспечить вызовом <System "refal" ...>. Если
> же делать функцию Evil, создавать инстанс транслятора и передавать в него
> исходный текст, то первый вопрос - зачем это вообще нужно. В
> реализации Турчина есть функции для работы с "метакодом" Dn и Up.

"""
http://www.refal.net/chap6_r5.html#6.2.%20МЕТАКОД

Для того, чтобы записывать РЕФАЛ-программы, которые оперируют с РЕФАЛ-программами

"""

Можно на одном диалекте интерпретировать другой диалект :)

Ответить | Правка | К родителю #278 | Наверх | Cообщить модератору

244. "В июне в Переславле-Залесском состоится конференция СПО в вы..."  +/
Сообщение от Sw00p aka Jerom (?), 03-Июн-24, 20:18 
> Существуют диалекты Рефала

http://www.refal.net/~arklimov/refal6/

Вот такой еще есть :)

Ответить | Правка | К родителю #241 | Наверх | Cообщить модератору

246. "В июне в Переславле-Залесском состоится конференция СПО в вы..."  +/
Сообщение от n00by (ok), 04-Июн-24, 10:33 
>> Существуют диалекты Рефала
> http://www.refal.net/~arklimov/refal6/
> Вот такой еще есть :)

"появился в Переславле-Залесском (ИПС РАН)"

https://github.com/Mazdaywik/direct-link/blob/master/refal-c...

Для меня такая запись не вполне очевидна, без изучения особенностей синтаксиса:

e.2 = <WriteLn 'Hello'> = <WriteLn 'World'>;

Посередине - это правое выражение или левое?

e.2 = <WriteLn 'Hello'>, <WriteLn 'World'>;

Вот так бы делал я, по аналогии с запятой из Си (это один из немногих действительно императивных операторов в Си, который мало кто знает). В Рефал-5 достаточно завернуть 1-ю WriteLn в вызов функции, отбрасывающей результат.

e.2 = <Ignore <WriteLn 'Hello'>> <WriteLn 'World'>;

Ответить | Правка | К родителю #244 | Наверх | Cообщить модератору

247. "В июне в Переславле-Залесском состоится конференция СПО в вы..."  +/
Сообщение от Sw00p aka Jerom (?), 04-Июн-24, 10:56 
> Для меня такая запись не вполне очевидна, без изучения особенностей синтаксиса:

Ну вот и я не могу понять, такой синтаксис создают, чтобы людям легче было читать или машинам?

Ответить | Правка | К родителю #246 | Наверх | Cообщить модератору

249. "В июне в Переславле-Залесском состоится конференция СПО в вы..."  +/
Сообщение от n00by (ok), 04-Июн-24, 12:20 
>> Для меня такая запись не вполне очевидна, без изучения особенностей синтаксиса:
> Ну вот и я не могу понять, такой синтаксис создают, чтобы людям
> легче было читать или машинам?

А что ждать от одного из первых ЯП? В LISP вообще сплошные однотипные скобочки, и "всех устраивает", но из курса CS MIT убрали.

Для сравнения Рефал-2:


$ cat Fibonacci.ref
    entry go
    extrn first, last, lengw
    extrn add, sub, mul, div, dr
    extrn repeat(multe)
    extrn inc(p1), dec(m1), textToNumber(cvb), numberToText(cvd)

go = '\n'<MakeResult<Fibonacci /555/>>

Fibonacci
    /0/   (v(N)a) v(N)b =
    s(N)k (v(N)a) v(N)b = (va)<Fibonacci<dec sk>(vb)<add(va)vb>>
    s(N)k               = <Fibonacci sk(/0/)/1/>

JustLength
    w1e2 = <inc<JustLength e2>>
         = /0/

PadTextLeft s(O)ps(N)le(O)t = <repeat<sub(sl)<JustLength et>>sp>et

MakeResult
    s(N)ws(N)k =
    s(N)ws(N)k(v(N)x)e1 =+
        <PadTextLeft ' 'sw<numberToText sk>>'| '<numberToText vx>'\n'+
        <MakeResult sw<inc sk>e1>
    v(B)1 = <MakeResult<inc<JustLength<numberToText<JustLength v1>>>>/1/v1>

И развивал язык кто и с какими целями? Математик сидит два часа и думает над теоремой, потом хлопает себя по лбу и пишет "очевидно, что..." :)

Мне не нравятся угловые скобки, хочется какой-то сахар, например:

= arg1 "arg2" | fun1 0 | fun2; // = <fun2 <fun1 arg1 "arg2"> 0>;

М.б. удастся задействовать двоеточие, поскольку и так используется в Расширенном Рефале. Раньше времени не хочется занимать лишние спец.символы, сейчас можно свободные определять как функции.

Ответить | Правка | К родителю #247 | Наверх | Cообщить модератору

251. "В июне в Переславле-Залесском состоится конференция СПО в вы..."  +/
Сообщение от Sw00p aka Jerom (?), 05-Июн-24, 14:34 
> М.б. удастся задействовать двоеточие, поскольку и так используется в Расширенном Рефале. Раньше времени не хочется занимать лишние спец.символы, сейчас можно свободные определять как функции.

Думаю, во всем виноват Гильберт со своим формализмом. И естественный язык должен описывать всея и все, и формализм излишен (он для машин). Мне легче страницу текста Канта прочитать, где одно предложение на целый лист, и ясно уловить заложенную мысль, чем Расселовский один параграф из Принципии Математики. Я что машина (вычислитель, распознаватель), чтобы интерпретировать формальные символы? Тут порочный круг, для формализма нужен вычислитель (распознаватель), а для вычислителя - формализм (определитель). Естественный язык - такой же формализм (но не полный по тьюрингу). И вычислитель его - человек, который легко с этой задачей справляется. А вот символьный формализм - для машин. Открываешь на архив.орг любую статью по математике - читать невозможно, один формализм (формулы и символы). А потом удивляются, там ошибка, тут ошибка, короче ересь.

пс: = arg1 "arg2" | fun1 0 | fun2; // = <fun2 <fun1 arg1 "arg2"> 0>;

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

Ответить | Правка | К родителю #249 | Наверх | Cообщить модератору

252. "В июне в Переславле-Залесском состоится конференция СПО в вы..."  +/
Сообщение от n00by (ok), 05-Июн-24, 16:10 
>[оверквотинг удален]
> легче страницу текста Канта прочитать, где одно предложение на целый лист,
> и ясно уловить заложенную мысль, чем Расселовский один параграф из Принципии
> Математики. Я что машина (вычислитель, распознаватель), чтобы интерпретировать формальные
> символы? Тут порочный круг, для формализма нужен вычислитель (распознаватель), а для
> вычислителя - формализм (определитель). Естественный язык - такой же формализм (но
> не полный по тьюрингу). И вычислитель его - человек, который легко
> с этой задачей справляется. А вот символьный формализм - для машин.
> Открываешь на архив.орг любую статью по математике - читать невозможно, один
> формализм (формулы и символы). А потом удивляются, там ошибка, тут ошибка,
> короче ересь.

Есть такие ЯП, где описывается всё словами. Они читаются хуже даже "птичьих" ЯП (где всё из комбинаций спецсимволов). Первоочередная задача ЯП не сделать программу понятной для каждого человека (её всё равно никто не понимает досконально, поскольку все детали в голове не удержать одновременно), а позволить как можно быстрее сориентироваться в коде, найти нужное место. Потому придуманы все эти комментарии с разметкой, форматирование, стили написания кода.

Я пишу вот так в некоторых случаях:

if (!(n < size))

специально, что бы глаз цеплялся за такую "неоптимальную" запись.

> пс: = arg1 "arg2" | fun1 0 | fun2; // = <fun2
> <fun1 arg1 "arg2"> 0>;
> чтобы понять это, я должен прочитать документацию на естественном языке,

Это обычная "труба" из командной строки. Если ЯП применяется в Linux, то такой синтаксис "всем известен".

> зачем это жонглирование из одной формальной системы в другую?

Что бы читать слева-направо. В некоторых случаях это удобнее, поскольку соответствует порядку исполнения. М.б. стрелочка там была бы нагляднее, или |>, но скобочки <> уже заняты.

Ответить | Правка | К родителю #251 | Наверх | Cообщить модератору

254. "В июне в Переславле-Залесском состоится конференция СПО в вы..."  +/
Сообщение от Sw00p aka Jerom (?), 05-Июн-24, 17:46 
> (её всё равно никто не понимает
> досконально, поскольку все детали в голове не удержать одновременно)

Но и "Войну и мир" никто досконально не знает.

"""
В романе выведено более 550 персонажей, как вымышленных, так и исторических.
"""

Он разве заранее все это в голове держал (весь сценарий), а потом взялся и написал?


"""
В наброске предисловия к «Войне и миру» Толстой писал, что в 1856 году начал писать повесть, «герой которой должен был быть декабрист, возвращающийся с семейством в Россию. Невольно от настоящего я перешёл к 1825 году… Но и в 1825 году герой мой был уже возмужалым, семейным человеком. Чтобы понять его, мне нужно было перенестись к его молодости, и молодость его совпала с … эпохой 1812 года… Ежели причина нашего торжества была не случайна, но лежала в сущности характера русского народа и войска, то характер этот должен был выразиться ещё ярче в эпоху неудач и поражений…». Так Лев Николаевич постепенно пришёл к необходимости начать повествование с 1805 года.
"""

> Я пишу вот так в некоторых случаях:
> if (!(n < size))
> специально, что бы глаз цеплялся за такую "неоптимальную" запись.

А оптимальность во все этом формализме - это вообще отдельная тема. Порядок тех же образцов в Рефале влияет на оптимальность? Кстате, что там с параллельным сопоставлением образцов? Возможно ли такое?

> Что бы читать слева-направо. В некоторых случаях это удобнее, поскольку соответствует порядку
> исполнения. М.б. стрелочка там была бы нагляднее, или |>, но скобочки
> <> уже заняты.

Если человеку надо понять, что делает код, ему просто надо прочитать описание (документацию), зачем читать символьный код, если описать его до любого уровня мелочей можно на естественном языке. Человек не код должен читать. Код должен быть исполнен вычислителем, а результат сравнен с ожидаемым от него значением.

А когда дело доходит до документации, сразу приходит ясность двойной работы. И поэтому болт на документацию, я уже напрограммировал код. Промолчу про челеджи на самый нечитаемый код, театр абсурда. Давайте мериться в собственной дурости. Самодурство!!!

Ответить | Правка | К родителю #252 | Наверх | Cообщить модератору

257. "В июне в Переславле-Залесском состоится конференция СПО в вы..."  +/
Сообщение от n00by (ok), 06-Июн-24, 12:50 
>[оверквотинг удален]
> году начал писать повесть, «герой которой должен был быть декабрист, возвращающийся
> с семейством в Россию. Невольно от настоящего я перешёл к 1825
> году… Но и в 1825 году герой мой был уже возмужалым,
> семейным человеком. Чтобы понять его, мне нужно было перенестись к его
> молодости, и молодость его совпала с … эпохой 1812 года… Ежели
> причина нашего торжества была не случайна, но лежала в сущности характера
> русского народа и войска, то характер этот должен был выразиться ещё
> ярче в эпоху неудач и поражений…». Так Лев Николаевич постепенно пришёл
> к необходимости начать повествование с 1805 года.
> """

Я не читал эту книгу, при этом на вопросы по ней на уроках отвечал. Позже узнал, что и правильно делал.

>> Я пишу вот так в некоторых случаях:
>> if (!(n < size))
>> специально, что бы глаз цеплялся за такую "неоптимальную" запись.
> А оптимальность во все этом формализме - это вообще отдельная тема. Порядок
> тех же образцов в Рефале влияет на оптимальность? Кстате, что там
> с параллельным сопоставлением образцов? Возможно ли такое?

В смысле, сравнивать сразу несколько предложений и откидывать неподходящие? Возможно даже, что если компилировать Рефал в Си, такое проделает транслятор под Эльбрус, но под рукой нет, что бы проверить. Если исполнять в несколько потоков, то не факт, что оно того стоит, учитывая накладные расходы на синхронизацию.

Очевидно, если начала у образцов совпадают, можно оптимизировать, даже преобразовать в изоморфную Рефал-программу (скорее всего, Рефал-5-Лямбда так делает). Наверняка можно развить идеи КМП-алгоритма, или компилировать в какой-то КА, но пока не время.

>> Что бы читать слева-направо. В некоторых случаях это удобнее, поскольку соответствует порядку
>> исполнения. М.б. стрелочка там была бы нагляднее, или |>, но скобочки
>> <> уже заняты.
> Если человеку надо понять, что делает код, ему просто надо прочитать описание
> (документацию), зачем читать символьный код, если описать его до любого уровня
> мелочей можно на естественном языке. Человек не код должен читать. Код
> должен быть исполнен вычислителем, а результат сравнен с ожидаемым от него
> значением.

Я не знаю, что надо человеку, но почти весь код, какой мне приходилось видеть, документация не сопровождает. И далеко не весь код легко и просто описать естественным языком, когда дело доходит до деталей. В Рефале возможно добавлять в код незначащие (для машины) слова, что бы человеку проще его читать. При этом все эти скобочки Рефала отходят на второй план, это как пунктуация в обычном тексте - читаем же, когда с запятыми проблемы. :) Вот пример Рефала, когда документация к функции не имеет смысла https://vk.com/video-667081_456239155?t=2h39m40s

> А когда дело доходит до документации, сразу приходит ясность двойной работы. И
> поэтому болт на документацию, я уже напрограммировал код. Промолчу про челеджи
> на самый нечитаемый код, театр абсурда. Давайте мериться в собственной дурости.
> Самодурство!!!

Документация обычно описывает, что делает код, зачем и почему, а не как он это делает.

Ответить | Правка | К родителю #254 | Наверх | Cообщить модератору

258. "В июне в Переславле-Залесском состоится конференция СПО в вы..."  +/
Сообщение от Sw00p aka Jerom (?), 07-Июн-24, 14:15 
> Документация обычно описывает, что делает код, зачем и почему, а не как
> он это делает.

если чтение исходного кода программы превращается в своего рода реверсинг (обратная инженерия), то это не нормальный ЯП.

Ответить | Правка | К родителю #257 | Наверх | Cообщить модератору

261. "В июне в Переславле-Залесском состоится конференция СПО в вы..."  +/
Сообщение от n00by (ok), 07-Июн-24, 15:56 
>> Документация обычно описывает, что делает код, зачем и почему, а не как
>> он это делает.
> если чтение исходного кода программы превращается в своего рода реверсинг (обратная инженерия),
> то это не нормальный ЯП.

Я пока других ЯП не видел. Программист пишет, пишет, доходит до предела Чейтина, потом начинает часто болеть, у него умирают три бабушки, случается пожар, после чего зовут реверсера разобраться. При избыточном финансировании этот момент оттягивается вливанием свежих сил, скруглением углов и прочими активностями. Кто поумнее, те заранее начинают проектировать следующую версию.

Ответить | Правка | К родителю #258 | Наверх | Cообщить модератору

156. "В июне в Переславле-Залесском состоится конференция СПО в вы..."  +/
Сообщение от Sw00p aka Jerom (?), 29-Май-24, 19:17 
придумал новый термин для ЯП - синтаксический диабет :)

пс: 33331

Ответить | Правка | К родителю #147 | Наверх | Cообщить модератору

162. "В июне в Переславле-Залесском состоится конференция СПО в вы..."  +/
Сообщение от n00by (ok), 30-Май-24, 07:02 
Вот тут https://youtu.be/YkltHXngryg?t=395 как раз в Переславле-Залесском выступает Андрей Петрович Немытых, а рядом надпись "Refal-5 Version ПЗ". И его спрашивают: а что за странное версионирование, а что вообще означает "ПЗ"... По-моему, "ПЗ" применительно к вопросу означает "слово из 6-ти букв, вторая "И" (фиаско семантики конференций).
Ответить | Правка | Наверх | Cообщить модератору

181. "В июне в Переславле-Залесском состоится конференция СПО в вы..."  +/
Сообщение от Sw00p aka Jerom (?), 30-Май-24, 17:28 
> Вот тут https://youtu.be/YkltHXngryg?t=395 как раз в Переславле-Залесском выступает
> Андрей Петрович Немытых, а рядом надпись "Refal-5 Version ПЗ". И его
> спрашивают: а что за странное версионирование, а что вообще означает "ПЗ"...
> По-моему, "ПЗ" применительно к вопросу означает "слово из 6-ти букв, вторая
> "И" (фиаско семантики конференций).

:))))))) я так громко давно не смеялся, эт что за самодурство такое?

"""
- Если я завтра скомпилирую исходники это уже новая версия?
- Да - новая версия. Ну как так она традиция такая возникла в 90-ых давно.
"""

Убило :)) Нестандартно, еще бы, открываем сайт http://refal.botik.ru/ , а там:

«Не стоит прогибаться под изменчивый мир,
Пусть лучше он прогнется под нас ... »
                        Андрей Макаревич

ч. т. д.

Ответить | Правка | Наверх | Cообщить модератору

193. "В июне в Переславле-Залесском состоится конференция СПО в вы..."  +/
Сообщение от n00by (ok), 31-Май-24, 10:32 
>[оверквотинг удален]
>> Андрей Петрович Немытых, а рядом надпись "Refal-5 Version ПЗ". И его
>> спрашивают: а что за странное версионирование, а что вообще означает "ПЗ"...
>> По-моему, "ПЗ" применительно к вопросу означает "слово из 6-ти букв, вторая
>> "И" (фиаско семантики конференций).
> :))))))) я так громко давно не смеялся, эт что за самодурство такое?
> """
> - Если я завтра скомпилирую исходники это уже новая версия?
> - Да - новая версия. Ну как так она традиция такая возникла
> в 90-ых давно.
> """

Небось влепили макрос __DATE__ в исходники, в 90-х наверное нормой было такое, пока не придумали именовать rar архив датой. :) Так то номер билда и сейчас некоторые икрементируют безусловно - мало ли какие зависимости или опции сборки поменялись.

Другое дело, что с тех 90-х исходники никто и не трогал. Вот, нашёлся один смелый (я не рискнул) и добавил поддержку Юникода. Тоже традиция. Зато пакетная база - собственная. Есть чем гордиться и заодно дедов поучить.

> Убило :)) Нестандартно, еще бы, открываем сайт http://refal.botik.ru/ , а там:
> «Не стоит прогибаться под изменчивый мир,
> Пусть лучше он прогнется под нас ... »
>            
>            
>  Андрей Макаревич
> ч. т. д.

Если программирование - раздел математики, то это обычный Даннинг и Крюгер. Мир ни под кого не прогибается, а вычисляется по формуле полной вероятности. Если хватит мощностей учесть каждый атом.

Ответить | Правка | Наверх | Cообщить модератору

188. "В июне в Переславле-Залесском состоится конференция СПО в вы..."  +/
Сообщение от Аноним (190), 30-Май-24, 20:39 
О! Рефал :)) Нам его один дедок в инсте очень немного преподавал (и вроде бы даже он был автором!). Но когда я послушал суть языка, махнул рукой на это "чудо" и никогда не касался.
Ответить | Правка | К родителю #147 | Наверх | Cообщить модератору

194. "В июне в Переславле-Залесском состоится конференция СПО в вы..."  +/
Сообщение от n00by (ok), 31-Май-24, 10:35 
Вряд ли автором - тот преподавал в инстах США со времён СССР. Соавтор, наверное. Ну в общем-то верный выбор, я бы студентом тоже так сделал. Теперь Переславль-Залесский славится не Рефалом, а Свободой ПО, не всем ясно, от чего или кого.
Ответить | Правка | Наверх | Cообщить модератору

73. "В июне в Переславле-Залесском состоится конференция СПО в вы..."  +1 +/
Сообщение от Аноним (73), 28-Май-24, 13:08 
А ты хочешь ее продавать? Ну продавай, может и купит кто. Не покупают?

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

Ответить | Правка | К родителю #34 | Наверх | Cообщить модератору

94. "В июне в Переславле-Залесском состоится конференция СПО в вы..."  +/
Сообщение от n00by (ok), 28-Май-24, 14:43 
Понимаешь неправильно.
Ответить | Правка | Наверх | Cообщить модератору

165. "В июне в Переславле-Залесском состоится конференция СПО в вы..."  +/
Сообщение от BeLord (ok), 30-Май-24, 10:02 
Лицензию на что? Вот есть программа Х, ты получаешь саму программу, исходный код и поддержку на год, от тебя хотят, чтобы ты купил лицензию на техподдержку, это свободная программа или нет?-))
Ответить | Правка | К родителю #29 | Наверх | Cообщить модератору

174. "В июне в Переславле-Залесском состоится конференция СПО в вы..."  +1 +/
Сообщение от n00by (ok), 30-Май-24, 11:57 
> Лицензию на что? Вот есть программа Х, ты получаешь саму программу, исходный
> код и поддержку на год, от тебя хотят, чтобы ты купил
> лицензию на техподдержку, это свободная программа или нет?-))

Хватит уже парить мозг обывателю подобной риторикой. Вот факты:

"Коммерческие и государственные организации могут скачивать и тестировать дистрибутив, но для постоянной работы в корпоративной инфраструктуре юридическим лицам необходимо приобретать лицензии или заключать лицензионные договоры в письменной форме." https://opennet.ru/61161-altlinux

Никакой "техподдержки" рядом с "лицензия" нет.

Зато в ответ на мой вопрос, что такое свободное ПО, есть требование представителя: "достаточно, чтоб ПО соответствовало ГОСТ Р 54593-2011". (№49)

Есть его интерпретация ГОСТ-а "но вы не можете ограничивать Ваших пользователей в таких же имущественных правах на скопированный или модифицированный продукт. Это основа СПО."

На самом деле, он переврал текст. ГОСТ требует, что бы была возможность продать ПО. Возможности взять продукт Альт и продать - нет. Это, как здесь принято говорить, "проприетарь" со схемой т.н. двойного лицензирования.

Ответить | Правка | Наверх | Cообщить модератору

37. "В июне в Переславле-Залесском состоится конференция СПО в вы..."  +/
Сообщение от n00by (ok), 28-Май-24, 10:47 
> Если тема доклада связана с разработкой ПО,
> заявка должна содержать ссылку на сам код,
> опубликованный в любом общедоступном репозитории
> под любой свободной лицензией.

Таким образом, автор ПО ставится перед выбором:

1. Применить лицензию (имеется ввиду, вероятно, «договор публичной оферты», согласно ГК РФ), одобренных то ли Ричардом Столлманом, то ли Брюсом Перенсом:

    AROS Public License
    Лицензия BSD
    CDDL
    Common Public License
    Creative Commons Zero
    Creative Commons Attribution
    Creative Commons Attribution ShareAlike
    GNU Free Documentation License (по некоторым определениям — с исключениями)
    GNU General Public License
    GNU Affero General Public License
    GNU Lesser General Public License
    Лицензия MIT
    Mozilla Public License
    Open Directory License
    Open Software License

В общем - не понятно. Следует прочитать много умных слов на английском, не имея юридического образования и соответствующего опыта в США, либо пройти внушения местных экспертов (но есть нюанс: сами эксперты не пишут код, в лучшем случае им торгуют, в худшем - повторяют за Гугл-переводчиком).

2. Отправиться куда подальше.

Ответить | Правка | Наверх | Cообщить модератору

47. "В июне в Переславле-Залесском состоится конференция СПО в вы..."  +/
Сообщение от Аноним (73), 28-Май-24, 11:33 
Любую - значит любую, а не одну из существующих. Ты можешь сам написать свободную лицензию. Критерии свободности известны.

>одобренных то ли Ричардом Столлманом, то ли Брюсом Перенсом

Будто что-то плохое. Эти люди создавали понятия опенсорса и СПО. Я бы им доверял.

>либо пройти внушения местных экспертов
>Отправиться куда подальше

...

Ответить | Правка | Наверх | Cообщить модератору

91. "В июне в Переславле-Залесском состоится конференция СПО в вы..."  +/
Сообщение от n00by (ok), 28-Май-24, 14:36 
> Любую - значит любую, а не одну из существующих. Ты можешь сам
> написать свободную лицензию. Критерии свободности известны.

Мне известны лишь степени свободы. Но не уверен, что бакалавры от программирования изучают краткий курс сопромата.

Ответить | Правка | Наверх | Cообщить модератору

49. "В июне в Переславле-Залесском состоится конференция СПО в вы..."  +1 +/
Сообщение от bircoph (ok), 28-Май-24, 11:35 
Достаточно, чтоб ПО соответствовало ГОСТ Р 54593-2011: https://docs.cntd.ru/document/1200088439

Никаких иностранных документов и гугл-переводчиков при этом не нужно.

Ответить | Правка | К родителю #37 | Наверх | Cообщить модератору

66. "В июне в Переславле-Залесском состоится конференция СПО в вы..."  +2 +/
Сообщение от Аноним (28), 28-Май-24, 12:07 
> Достаточно, чтоб ПО соответствовало ГОСТ Р 54593-2011: https://docs.cntd.ru/document/1200088439

Если это не реклама коммерческой услуги, то ссылку лучше дать на полный документ https://files.stroyinf.ru/Data2/1/4293798/4293798256.pdf

Ответить | Правка | Наверх | Cообщить модератору

92. "В июне в Переславле-Залесском состоится конференция СПО в вы..."  +/
Сообщение от n00by (ok), 28-Май-24, 14:38 
Да, эпичненький "критерий свободы". :)

Доступ к полной версии документа ограничен
Полный текст этого документа доступен на портале с 20 до 24 часов по московскому времени 7 дней в неделю.

Ответить | Правка | Наверх | Cообщить модератору

112. "В июне в Переславле-Залесском состоится конференция СПО в вы..."  +/
Сообщение от bircoph (ok), 28-Май-24, 17:59 
Я дал первую ссылку из поиска, у меня открылось без ограничений. В любом случае, по номеру ГОСТ всегда можно найти полный текст.
Ответить | Правка | Наверх | Cообщить модератору

120. "В июне в Переславле-Залесском состоится конференция СПО в вы..."  +/
Сообщение от n00by (ok), 28-Май-24, 18:42 
Действительно, можно было найти полный текст и ответить на мою цитату ГОСТ-а цитатой, а не тем, что приятно почитать "пользователям".
Ответить | Правка | Наверх | Cообщить модератору

89. "В июне в Переславле-Залесском состоится конференция СПО в вы..."  +/
Сообщение от n00by (ok), 28-Май-24, 14:33 
> Достаточно, чтоб ПО соответствовало ГОСТ Р 54593-2011: https://docs.cntd.ru/document/1200088439

Я правильно понимаю, что имущественные права на своё ПО я должен передать организованной группе лиц?

4.1.1 СПО создается и применяется в целях формирования такого рынка, любая услуга на котором, такая как, например, копирование, тиражирование, модификация, исправление ошибки, добавление функциональности и т.п., может продаваться и покупаться на конкурентном рынке свободной контрактацией двух сторон - поставщика и приобретателя услуги, без апелляции к третьей стороне.


Ответить | Правка | К родителю #49 | Наверх | Cообщить модератору

114. "В июне в Переславле-Залесском состоится конференция СПО в вы..."  +/
Сообщение от bircoph (ok), 28-Май-24, 18:01 
Ваши имущественные права у Вас никто не отнимает, но вы не можете ограничивать Ваших пользователей в таких же имущественных правах на скопированный или модифицированный продукт. Это основа СПО.
Ответить | Правка | Наверх | Cообщить модератору

119. "В июне в Переславле-Залесском состоится конференция СПО в вы..."  +/
Сообщение от n00by (ok), 28-Май-24, 18:39 
> Ваши имущественные права у Вас никто не отнимает

Читаем внимательно ещё раз:

СПО создается ... в целях формирования такого рынка, любая услуга на котором ... (например ... тиражирование) ... может продаваться и покупаться на конкурентном рынке свободной контрактацией двух сторон - поставщика и приобретателя услуги, без апелляции к третьей стороне.

Я, автор, названный в этом крочкотворчестве "третьей стороной", создаю ПО. По требованию организаторов конференции, ПО должно соответствовать данному пункту ГОСТ. Как результат, организатор приобретает право делать что угодно с моим ПО, меня даже о том не спрашивают! Таким образом я лишаюсь имущественного права, за мной остаётся лишь неимущественное право называться автором.

> но вы не можете
> ограничивать Ваших пользователей в таких же имущественных правах на скопированный или
> модифицированный продукт. Это основа СПО.

Не надо отсебятины, в ГОСТе нет "пользователей", есть рынок, есть приобретали, и приобретают они не у автора.

Ответить | Правка | Наверх | Cообщить модератору

163. "В июне в Переславле-Залесском состоится конференция СПО в вы..."  +/
Сообщение от n00by (ok), 30-Май-24, 07:19 
Как следует расценивать отсутствие ответа?

> но вы не можете ограничивать Ваших пользователей в таких же
> имущественных правах на скопированный или
> модифицированный продукт. Это основа СПО.

По существу произошла подмена ГОСТ-овского "поставщик услуги" на "пользователь".

"Достаточно, чтоб ПО соответствовало ГОСТ Р 54593-2011". Достаточное условие является необходимым. Если я выполняю таковое требование, неустановленный "поставщик" приобретает имущественное право на моё ПО. Путём обмана или злоупотребления доверием. Это уже цитата не ГОСТ, а УК РФ Статья 159. Мошенничество.

При этом сама компания обожглась на истории с "Альтлинукс Школьный" и перешла от СПО к схеме с двойным лицензированием. То есть осознаёт последствия публикации под "свободной лицензией", но призывает других.

> Это основа СПО.

Ни о каком "конкурентном" рынке, с которого поставщики и потребители отфутболивают авторов ПО, у Столлмана и речи нет. Он заявлял целью обеспечить возможность внесения изменений в ПО потребителем.  И делал он это во времена, когда типичный "потребитель" ПО сам мог исправить ПО, а не только лишь взять и растиражировать, а на вырученные средства устраивать конференции, приобретая имущественные права у доверчивых программистов, по недоразумению ставших докладчиками.

Ответить | Правка | К родителю #114 | Наверх | Cообщить модератору

140. "В июне в Переславле-Залесском состоится конференция СПО в вы..."  +/
Сообщение от Аноним (-), 29-Май-24, 10:01 
Как можно принять ГОСТ на то, чего в природе не существует?
Ответить | Правка | К родителю #49 | Наверх | Cообщить модератору

108. "В июне в Переславле-Залесском состоится конференция СПО в вы..."  –2 +/
Сообщение от Аноним (-), 28-Май-24, 16:57 
А в РФ вообще есть движение за свободное ПО, а не его имитация?
Ответить | Правка | К родителю #37 | Наверх | Cообщить модератору

121. "В июне в Переславле-Залесском состоится конференция СПО в вы..."  +/
Сообщение от n00by (ok), 28-Май-24, 18:49 
Движение? Очевидно, есть. Само ПО почему-то практически никто из движущихся не создаёт, вот что примечательно.
Ответить | Правка | Наверх | Cообщить модератору

212. "В июне в Переславле-Залесском состоится конференция СПО в вы..."  +/
Сообщение от Sw00p aka Jerom (?), 01-Июн-24, 01:28 
> Движение? Очевидно, есть. Само ПО почему-то практически никто из движущихся не создаёт,
> вот что примечательно.

Либо дураков нет, либо одни дураки (ц) :)

Ответить | Правка | Наверх | Cообщить модератору

218. "В июне в Переславле-Залесском состоится конференция СПО в вы..."  +/
Сообщение от n00by (ok), 01-Июн-24, 12:45 
Я не представляю, что здесь будет делать условный вчерашний студент. Как напишет что-то и опубликует - это представляю. Следом появляется 10 учителей: один требует поменять MIT на GPL, другой - запилить _всем_ нужную фичу, третий аргументированно советует сменить ЯП. В лучшем случае автор махнёт рукой и поедет в RedHat дальше расти, а про худшие и думать боюсь.
Ответить | Правка | Наверх | Cообщить модератору

221. "В июне в Переславле-Залесском состоится конференция СПО в вы..."  +/
Сообщение от Sw00p aka Jerom (?), 01-Июн-24, 13:27 
> Я не представляю, что здесь будет делать условный вчерашний студент. Как напишет
> что-то и опубликует - это представляю. Следом появляется 10 учителей: один
> требует поменять MIT на GPL, другой - запилить _всем_ нужную фичу,
> третий аргументированно советует сменить ЯП. В лучшем случае автор махнёт рукой
> и поедет в RedHat дальше расти, а про худшие и думать
> боюсь.

Вы описали студента Линуса :)

Хотя в этой истории, должны быть два студента, один тот который "пошел в науку", назовем его абстрактный студент, и студент "войтишник". :)

пс: желудки то у них реальные!

Ответить | Правка | Наверх | Cообщить модератору

223. "В июне в Переславле-Залесском состоится конференция СПО в вы..."  +/
Сообщение от n00by (ok), 01-Июн-24, 14:57 
Так Линус оказался в подходящем окружении. Вот и воплотили американскую мечту, пример для остальных и центр притяжения. Здесь подобный механизм практикуют в основном со всякими певичками. Остальные пытаются попугайничать без понимания, что все эти указания ничего не стоят, пока не подкреплены хотя бы перспективой роста (вверх, а не пакеты собирать), про материальную часть тут и думать стесняются.

Когда я сначала вижу, что Hans de Goede допиливает за Intel кучу кода, что бы тот запускался в актуальном ядре, то потом очень внимательно читаю его советы по оформлению патчей (и думаю: зачем он тратит своё время? мог бы ограничиться ссылкой на доки, что я и так уже прочитал). А когда кто-то выкатывает требования, как выше с ГОСТ-ом, я думаю: а зачем он это делает, когда сам не читал? Но я повидал и программистов, у кого в ответственный момент вдруг три бабушки умерло, а студент как отличит зёрна от плевел? И как потом за таких отвечать, когда через пару лет они под напором активистов выгорят?

Ответить | Правка | Наверх | Cообщить модератору

224. "В июне в Переславле-Залесском состоится конференция СПО в вы..."  +/
Сообщение от Sw00p aka Jerom (?), 01-Июн-24, 15:54 
> а зачем он это делает

Хозяин так велел!

> И как потом за таких отвечать, когда через пару лет
> они под напором активистов выгорят?

А зачем? Не надо мешать глупцам совершать глупости.

Ответить | Правка | Наверх | Cообщить модератору

227. "В июне в Переславле-Залесском состоится конференция СПО в вы..."  +/
Сообщение от n00by (ok), 01-Июн-24, 18:46 
>> а зачем он это делает
> Хозяин так велел!

Он код от Intel допиливал не в рабочее время. У них это называется "социальный капитал". Вот я сейчас обрисовал его в выгодном свете, отработал должок. :) И я знаю, что по каким-то вопросам можно написать ему, а не местному Уксус Помидорычу.

>> И как потом за таких отвечать, когда через пару лет
>> они под напором активистов выгорят?
> А зачем? Не надо мешать глупцам совершать глупости.

Затем, что меня спрашивают, сколько нужно людей в проект. Я беру отсюда несколько показательных примеров (да вон наверху страницы AleksK всё никак не угомонится, объявляя Рефал исчадием запрещённой страны) и объясняю, что им придётся столкнуться и с вот такими, и с организованной травлей в том числе, и это к тому же заразное. Неподготовленные люди выгорят и все планы коту под хвост.

Ответить | Правка | Наверх | Cообщить модератору

228. "В июне в Переславле-Залесском состоится конференция СПО в вы..."  +/
Сообщение от Sw00p aka Jerom (?), 01-Июн-24, 20:03 
> Он код от Intel допиливал не в рабочее время. У них это
> называется "социальный капитал". Вот я сейчас обрисовал его в выгодном свете,
> отработал должок. :) И я знаю, что по каким-то вопросам можно
> написать ему, а не местному Уксус Помидорычу.

Эт уже культурный код так должен быть запрограммирован, ведь банальной культуры общения (диалога) нет.

> Затем, что меня спрашивают, сколько нужно людей в проект.

А сколько платить - спрашивают? И какие оценки (расценки :))?

> что им придётся столкнуться и с вот такими, и с организованной травлей в том
> числе, и это к тому же заразное. Неподготовленные люди выгорят и
> все планы коту под хвост.

Тут

https://ru.wikipedia.org/wiki/%D0%94%D0%...

после Этимологии правильно обозначили. Я не спроста задавал вопрос про слово в словаре Даля. И эта деградация генетически зашивается в будущее поколение.

Ответить | Правка | Наверх | Cообщить модератору

229. "В июне в Переславле-Залесском состоится конференция СПО в вы..."  +/
Сообщение от n00by (ok), 01-Июн-24, 21:26 
>> Он код от Intel допиливал не в рабочее время. У них это
>> называется "социальный капитал". Вот я сейчас обрисовал его в выгодном свете,
>> отработал должок. :) И я знаю, что по каким-то вопросам можно
>> написать ему, а не местному Уксус Помидорычу.
> Эт уже культурный код так должен быть запрограммирован, ведь банальной культуры общения
> (диалога) нет.

Это характерная особенность тех, кого диванно-прикладная психология называет "3-я квадра", а марксисты "буржуазный элемент". Выстраивать дистрибуторскую сеть, пирамиду (в вырожденном случае - это схема Понци, но существуют и взаимовыгодные варианты, как то же GNU/Linux). Таких людей в некоторых странах запада 80%, а в России 5% и половина из них сидит. Потому там это работает, а здесь вовлечённые в пирамиду в большинстве своём не понимают, что всё в ней имеет свою цену и иерархию.

>> Затем, что меня спрашивают, сколько нужно людей в проект.
> А сколько платить - спрашивают? И какие оценки (расценки :))?

До этого не дошло, моя довольно странная аргументация оказалась убедительна. Да хоть за сколько бы нашли, когда им все дружно примутся объяснять "это ненужно", деньги не спасут, мало кто хочет писать в стол.

>> что им придётся столкнуться и с вот такими, и с организованной травлей в том
>> числе, и это к тому же заразное. Неподготовленные люди выгорят и
>> все планы коту под хвост.
> Тут
> https://ru.wikipedia.org/wiki/%D0%94%D0%...
> после Этимологии правильно обозначили. Я не спроста задавал вопрос про слово в
> словаре Даля. И эта деградация генетически зашивается в будущее поколение.

Президент говорит "подсели на западные технологии". Это нехарактерное для такого уровня слово повторятся. Халява точно так же ломает дофаминовый цикл, как всякие суррогаты. Не надо думать три дня, как сделать что-то лучше, а потом радоваться мелочи. Достаточно скачать и собрать, и вот уже созрел архитектор ПО, у которого «нельзя возбудить ни гордость, ни самолюбие, ни чувство достоинства». Ладно бы что-то возвращали в апстрим существенное. На западе есть куча DE, а тут приблизительно 0 (если не считать FlyDE), когда в своё время один Кладов написал альтернативу Борланду - это позор.

А то, что много всяких напоявлялось - так это от доступности Сети. Плюс идеология собирает в одном месте идеологов. Пили и раньше столько, что пришлось для них отправить пророка Мухаммеда. Не все же пили.

Ответить | Правка | Наверх | Cообщить модератору

230. "В июне в Переславле-Залесском состоится конференция СПО в вы..."  +/
Сообщение от Sw00p aka Jerom (?), 01-Июн-24, 22:18 
> Президент говорит "подсели на западные технологии". Это нехарактерное для такого уровня
> слово повторятся.

Кек, а что ему нужен умный здравомыслящий народ? Такому народу он не нужен будет :) Тоталитарное одурачивание, деградация, и "элексир счастья" играет большую роль еще со времен "дедушки всех дураков". Они же министерство сЩастья хотят создать, ну вот по литру "элексира сЩастья" каждой семье бесплатно.

> у которого «нельзя возбудить ни гордость, ни самолюбие, ни
> чувство достоинства».

одно только чувство - самодурства.

> Пили и раньше столько

Разница лишь в том, что раньше - пили (всю жизнь на западе пьют), а щас - пропили (в совке жизнь - пропивают, и это факт, и пропивает не только условно "русский", Кавказ больше всех пьет если че).

пс: Лехаим - будем!.

Ответить | Правка | Наверх | Cообщить модератору

233. "В июне в Переславле-Залесском состоится конференция СПО в вы..."  +/
Сообщение от n00by (ok), 02-Июн-24, 15:42 
>> Президент говорит "подсели на западные технологии". Это нехарактерное для такого уровня
>> слово повторятся.
> Кек, а что ему нужен умный здравомыслящий народ? Такому народу он не
> нужен будет :) Тоталитарное одурачивание, деградация, и "элексир счастья" играет большую
> роль еще со времен "дедушки всех дураков". Они же министерство сЩастья
> хотят создать, ну вот по литру "элексира сЩастья" каждой семье бесплатно.

Именно, что нужен. Это не понятно, поскольку система ценностей у математика и воина различается. Теорема Пифагора и в Африке какая же, а земля вот эта наша, а вон та - ихняя. И действует принцип "лучше умный враг, чем друг дурак" - с первым воевать интересно и не страшно, а друг продаст за бусы и нож в спину воткнёт. И если вспомнить историю, то крестьяне призвали Рюрика, и тот язык учил, в отличие от остальных своих братьев.

>> у которого «нельзя возбудить ни гордость, ни самолюбие, ни
>> чувство достоинства».
> одно только чувство - самодурства.

Если психология так похожа и на верху действительно озадачились этим "подсели", значит пациентов и спрашивать о лечении не будут. Попросят своими методами партнёров, что бы очередной Докер забанил.

>> Пили и раньше столько
> Разница лишь в том, что раньше - пили (всю жизнь на западе
> пьют), а щас - пропили (в совке жизнь - пропивают, и
> это факт, и пропивает не только условно "русский", Кавказ больше всех
> пьет если че).

В моём самом любимом дистрибутиве один плотно сидел на стакане (если что, на публику это вынес его "коллега" заявлением "обновится, когда из запоя выйдет"). Он немножко больше остальных понимал, чем они на самом деле заняты.

Ответить | Правка | Наверх | Cообщить модератору

234. "В июне в Переславле-Залесском состоится конференция СПО в вы..."  +/
Сообщение от Sw00p aka Jerom (?), 02-Июн-24, 16:28 
> Именно, что нужен.

https://youtu.be/xxtCsa0j6eM?t=2927

- Хихихихи
- Это потому что Я умный.
- Это потому что ОН умный!!!
- Аааа, это да ...

Эт когда надо держать народ в дураках, надо говорить, что он очень умный, и что такой умный народ нужен!

Что завещал "дед всех дураков"? "Учиться, учиться и еще раз учиться" - а кому, как не "дураку" такое завещают?

> значит пациентов и спрашивать о лечении не будут.

Делегированный синдром Мюнхгаузена?

> В моём самом любимом дистрибутиве один плотно сидел на стакане (если что,
> на публику это вынес его "коллега" заявлением "обновится, когда из запоя
> выйдет"). Он немножко больше остальных понимал, чем они на самом деле
> заняты.

То есть в место того, чтобы болт забить на эту шарашку, он "искал решения на дне"?

- Кто ты воин?
- Алкоголик

Ответить | Правка | К родителю #233 | Наверх | Cообщить модератору

238. "В июне в Переславле-Залесском состоится конференция СПО в вы..."  +/
Сообщение от n00by (ok), 03-Июн-24, 12:42 
>> Именно, что нужен.
> https://youtu.be/xxtCsa0j6eM?t=2927
> - Хихихихи
> - Это потому что Я умный.
> - Это потому что ОН умный!!!
> - Аааа, это да ...
> Эт когда надо держать народ в дураках, надо говорить, что он очень
> умный, и что такой умный народ нужен!
> Что завещал "дед всех дураков"? "Учиться, учиться и еще раз учиться" -
> а кому, как не "дураку" такое завещают?

Дед это был левый, а куда такие стремятся и тянут всех "нормальных", видно рядом с палаткой Гаусса. В общем, нет повода для обобщения по индукции.

>> значит пациентов и спрашивать о лечении не будут.
> Делегированный синдром Мюнхгаузена?

Если управленец генетически привык мыслить критерием "земля наша - не наша", то из него и происходят решения "отделить одну часть общества от другой в каком-нибудь лагере". И когда вокруг какого-то дистрибутива сами собой собираются всякие учителя, кто лучше всех знает, но сам в лучшем случае собрал иконки в пакетик - это как раз очень похоже на подобную изоляцию. И я ничуть не удивился, когда завод Ангстрем, спонсирующий эту деятельность, вдруг по решению суда передали под внешнее управление. Если при этом ОС Никель оставили хозяину и кто-то этому рад, то мне думается, что она и даром не нужна. Клон RHEL собирают и без них. У Ред Софт, кстати, любопытная схема. Они начинались как подрядчик ФССП, а эта служба не берёт деньги из бюджета, а наоборот наполняет бюджет, оставляя себе процентик.

Если в другом дистрибутиве мне заявляют "мы продаём что есть, а новое ПО для нас _должны_ создать университеты", то мне очень любопытно посмотреть на добродушного ректора, кто на столь выгодное предложение сотрудничества купится и отдаст подопечных по сути в рабство. И как к этому отнесётся ФНС и прочие?

Наверное, какое-то время отпущено как испытательный срок, а далее может случиться всякое. Например, Трамп объявит Linux Foundation агентом Huawei. Из Болонской системы Россия вышла, кто хотел уехать, уехали, патчей в апстримы практически нет - зачем им дарить нам исходники? Потому что Столлман так хочет? Кстати, где он?

>> В моём самом любимом дистрибутиве один плотно сидел на стакане (если что,
>> на публику это вынес его "коллега" заявлением "обновится, когда из запоя
>> выйдет"). Он немножко больше остальных понимал, чем они на самом деле
>> заняты.
> То есть в место того, чтобы болт забить на эту шарашку, он
> "искал решения на дне"?
> - Кто ты воин?
> - Алкоголик

А куда он пойдёт? Собирать по два дня Хромиум в Альт? У них требования к квалификации повыше.

Ответить | Правка | К родителю #234 | Наверх | Cообщить модератору

240. "В июне в Переславле-Залесском состоится конференция СПО в вы..."  +/
Сообщение от Sw00p aka Jerom (?), 03-Июн-24, 14:36 
> Наверное, какое-то время отпущено как испытательный срок, а далее может случиться всякое.

Не всякое, а по кругу. Занавес и следующий акт.

> А куда он пойдёт? Собирать по два дня Хромиум в Альт? У
> них требования к квалификации повыше.

Зачем ходить? Сами придут.

Ответить | Правка | К родителю #238 | Наверх | Cообщить модератору

242. "В июне в Переславле-Залесском состоится конференция СПО в вы..."  +/
Сообщение от n00by (ok), 03-Июн-24, 19:19 
>> Наверное, какое-то время отпущено как испытательный срок, а далее может случиться всякое.
> Не всякое, а по кругу. Занавес и следующий акт.

Предыдущий акт был, когда кушать было нечего - торговали куриными ножками. США их изначально бесплатно отдавали, кстати. Потом оказалось, что это мешает местному производителю. Вышел закон о запрете ГМО. Сейчас тех продавцов называют плохим словом, непристойно склоняя латинское слово "свобода". Если брать данный форум, то склоняют как раз в основном вот эти сторонники английского слова "свобода". :) По существу меж ними что изменилось? Поляну от беспредельщиков защищают сами беспредельщики.

Ответить | Правка | К родителю #240 | Наверх | Cообщить модератору

235. "В июне в Переславле-Залесском состоится конференция СПО в вы..."  +/
Сообщение от Sw00p aka Jerom (?), 02-Июн-24, 16:32 
Там в диалоге есть:

- Сильный клиент, да?
- Да, сильный
- Совсем сильный, а?
- Угу

Тут в место клиента уместно - пациент :)

Ответить | Правка | К родителю #233 | Наверх | Cообщить модератору

75. "В июне в Переславле-Залесском состоится конференция СПО в вы..."  +5 +/
Сообщение от Аноним (-), 28-Май-24, 13:17 
>СПО в высшей школе

Как причастившийся к этому самому СПО в высшей школе, ответственно заявляю: в высшей школе разберутся сами. Кто-то поставит Ubuntu, кто-то LTSP, кто-то OpenWRT, а кто-то в Maxima коммитит и продвигает. И прикиньте, сами преподаватели, студенты и админы всё это внедряют. Безо всяких конференций и почему-то без дистрибутивов из того самого реестра.

Ответить | Правка | Наверх | Cообщить модератору

81. "В июне в Переславле-Залесском состоится конференция СПО в вы..."  +1 +/
Сообщение от Аноним (25), 28-Май-24, 14:09 
Бюрократы обязаны научить тебя плохому, иначе ты будешь дюже умный и начнёшь задавать неудобные вопросы. А так ты всю жизнь будешь занят ваянием каких-то костылей и свободного времени у тебя не будет. Бинго!
Ответить | Правка | Наверх | Cообщить модератору

126. "В июне в Переславле-Залесском состоится конференция СПО в вы..."  +/
Сообщение от Аноним (80), 28-Май-24, 20:36 
>>СПО в высшей школе
>Как причастившийся к этому самому СПО в высшей школе, ответственно заявляю: в высшей школе разберутся сами. Кто-то поставит Ubuntu, кто-то LTSP, кто-то OpenWRT, а кто-то в Maxima коммитит и продвигает. И прикиньте, сами преподаватели, студенты и админы всё это внедряют. Безо всяких конференций и почему-то без дистрибутивов из того самого реестра.

В науке открыто обмениваются информацией и наработками, для чего и существуют конференции.

Иначе наука не работает и затормаживается, отстаёт. Чем больше общения, тем сильнее развитие.

Ответить | Правка | К родителю #75 | Наверх | Cообщить модератору

136. "В июне в Переславле-Залесском состоится конференция СПО в вы..."  +/
Сообщение от тоже Анонимemail (ok), 29-Май-24, 09:40 
> Чем больше общения, тем сильнее развитие.

А в замкнутой среде начинается деградация и бурно плодятся холуи-демагоги типа Лысенко или Мединского.
Причем именно они и оказываются у руля, устраняя настоящих ученых.

Ответить | Правка | Наверх | Cообщить модератору

138. "В июне в Переславле-Залесском состоится конференция СПО в вы..."  +1 +/
Сообщение от Аноним (-), 29-Май-24, 09:43 
>в науке
>открыто

Ну да, в науке - открыто. Берут сами и обмениваются. Коммитят, ставят, помогают.
А где-то - обязательно вывезут в тридцатитысячный городок (пусть скажут спасибо, что не военный), посадят на цепь госконтракта и навяжут на сессии ВАСХНИЛ арбузы, растущие с берёз.

Ответить | Правка | К родителю #126 | Наверх | Cообщить модератору

213. "В июне в Переславле-Залесском состоится конференция СПО в вы..."  +/
Сообщение от Sw00p aka Jerom (?), 01-Июн-24, 11:38 
> Иначе наука не работает и затормаживается, отстаёт.

Наука и государство, Судебная система и государство, Религия и государство, когда они находятся в одной лодке это равносильно посадить козла и капусту в одну лодку. Кто является козлом в лодке, думаю, догодаться не трудно.

пс: общество != государство

Ответить | Правка | К родителю #126 | Наверх | Cообщить модератору

122. "В июне в Переславле-Залесском состоится конференция СПО в вы..."  –1 +/
Сообщение от Аноним (-), 28-Май-24, 19:14 
Что-то они от трендов отстали. Повесточка откуда-то из нулевых. Кому сейчас нужно свободное ПО, когда все на облаках да веб-приложениях сидят?
Ответить | Правка | Наверх | Cообщить модератору

132. "В июне в Переславле-Залесском состоится конференция СПО в вы..."  +/
Сообщение от тоже Анонимemail (ok), 28-Май-24, 23:37 
О том, как "сидит" на отечественных веб-приложениях средняя школа - из первых уст:
https://zebra-tv.ru/novosti/spetsproekty/kak-prinuditelnaya-.../
Новость, конечно, про высшую школу - но МинОбраз-то у них общий...
Ответить | Правка | Наверх | Cообщить модератору

142. "В июне в Переславле-Залесском состоится конференция СПО в вы..."  +/
Сообщение от Аноним (142), 29-Май-24, 11:32 
Вся проблема постсоветской науки понятна — учёба отдельно, наука отдельно, работа отдельно, поэтому и не связано. А какой бы переполох получился бы если для перехода на следующий курс нужно было бы программисту практически доказать свои навыки на свободном программном обеспечении, которое сможет оценить каждый! А ещё больше переполох сделали бы деньги. Пока учёба бесплатна, она бесценна, а когда за платно так совсем другое дело. Тогда государство могло бы заключать персональные контракты спонсорства с талантами под обязательства, да и ценность, важность образования повысилась. А то как-то порой тут не очень уважительно к знаниям пишут. Ну такое - вредные советы порой в голову лезут.
Ответить | Правка | Наверх | Cообщить модератору

143. "В июне в Переславле-Залесском состоится конференция СПО в вы..."  +/
Сообщение от Аноним (142), 29-Май-24, 11:38 
Ах да и учёба ограничена во времени и после окончания ВУЗа у большинства нигде не регистрируется. Соответственно объективной информации о состоянии всей науки и всего потенциала просто не может быть.
Ответить | Правка | Наверх | Cообщить модератору

152. "В июне в Переславле-Залесском состоится конференция СПО в вы..."  +/
Сообщение от n00by (ok), 29-Май-24, 17:44 
> А какой бы переполох получился бы
> если для перехода на следующий курс нужно было бы программисту практически
> доказать свои навыки на свободном программном обеспечении, которое сможет оценить каждый!

Переполох начался бы на вопросе: почему именно свободном, а не открытом?

Ответить | Правка | К родителю #142 | Наверх | Cообщить модератору

177. "В июне в Переславле-Залесском состоится конференция СПО в вы..."  +/
Сообщение от Аноним (177), 30-Май-24, 14:04 
Перевёл в своей голове так — свободно доступное. Ну не люблю я совсем уж дословный перевод. Открытое - кем открытое? Зачем открытое? Кто открыл? Ну и если уж уточнять, то идея Inner Source порой мне больше нравится Open Source. Вопрос только в каких границах inner source будет доступен. Порой не нужно все делать напоказ.
Ответить | Правка | Наверх | Cообщить модератору

192. "В июне в Переславле-Залесском состоится конференция СПО в вы..."  +/
Сообщение от n00by (ok), 31-Май-24, 07:56 
> Перевёл в своей голове так — свободно доступное.

"Свободное" перевёл в "свободно доступное". Выходит, "свобода" без "доступно" не имеет смысла. Свободно доступны и исполняемые файлы. "Свободно доступен" исходный текст, если он открыт.

> Ну не люблю я совсем уж дословный перевод.
> Открытое - кем открытое? Зачем открытое? Кто
> открыл?

Для программиста программа - это прежде всего исходный текст. Императив "ну открой уже" программист понимает как "хватит теоретизировать, открой файл в редакторе и посмотри". Предложение "давайте откроем" для программистов означает "откроем [наши] файлы с ихсодным текстом для всех".

Вопросов "кем" и "кто открыл" у программиста не возникает. Априори открыть способен лишь автор.

Собственно, когда кто-то не понимает очевидное для программиста, он сам себя тем самым маркирует. Потому вокруг Свободного ПО собрались сплошные идеологи и торговцы, а 29% участников опроса FreeBSD пишет код.

Ответить | Правка | Наверх | Cообщить модератору

168. "В июне в Переславле-Залесском состоится конференция СПО в вы..."  +/
Сообщение от BeLord (ok), 30-Май-24, 10:07 
В свое время, когда я учился, то курсовики делали в железе, заработало, тесты прошло, молодец курс схемотехники освоил на базовом уровне, вполне себе проверка. С софтом тоже самое, твоя програ работает, тесты проходит, ну значит курс освоил, а инет не сильно помог бы, потому что управление уникальным железом придется писать ручками.
Ответить | Правка | К родителю #142 | Наверх | Cообщить модератору

178. "В июне в Переславле-Залесском состоится конференция СПО в вы..."  +/
Сообщение от Аноним (177), 30-Май-24, 14:22 
Ну и у меня также было. Но кроме этого была и работа от кафедры, благодаря которой можно было рассчитывать на некоторые поблажки по разным предметам. Мне с такой работой не повезло и более того этот процесс не прозрачный.
Не, я не об этом. Просто наука, в частности институт вроде должен что-то создавать. Ну почему бы институту и не иметь определённые программы? Вроде как и для учёбы, и для использования может быть полезно. Ролевые распределения как на работе, может и сотрудничество с потенциальными работодателями.
Ну от условно на Си пишет офис. Открытый он или проприетарный это под вопросом, хотя имея доступ к коду студента, работодатель может даст работу. И вот офисом этим могут пользоваться люди на той же работе. И какие-либо задачи, фиксы вполне могут тянуть на доказательства определённых знаний.
Ответить | Правка | Наверх | Cообщить модератору

Архив | Удалить

Рекомендовать для помещения в FAQ | Индекс форумов | Темы | Пред. тема | След. тема




Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2024 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру