Эх, были такие надежды на новые технологии, по-видимому надо ждать сингулярности...
red75prime, [11.07.20 00:16]
Недавно Ян Лекун сказал, что нейросети не biased, надо контролировать исходные данные. Тут же набежали, и начали объяснять, что надо делать нейросети, которые грокают текущую политическую обстановку, а не отмазываться.
===
via https://www.tg-me.com/rust_offtopic/313425
red75prime, [11.07.20 00:16]
Недавно Ян Лекун сказал, что нейросети не biased, надо контролировать исходные данные. Тут же набежали, и начали объяснять, что надо делать нейросети, которые грокают текущую политическую обстановку, а не отмазываться.
===
via https://www.tg-me.com/rust_offtopic/313425
Telegram
red75prime in rust_offtopic
Недавно Ян Лекун сказал, что нейросети не biased, надо контролировать исходные данные. Тут же набежали, и начали объяснять, что надо делать нейросети, которые грокают текущую политическую обстановку, а не отмазываться.
Forwarded from мне не нравится реальность (вафель 🧇🦾)
Twitter
Vlad Beskrovnyy
LOL
Курс по языку Rust в приложении к осям. С нуля до какого-то приличного уровня
https://habr.com/ru/users/lain8dono/posts/
https://habr.com/ru/users/lain8dono/posts/
Хабр
Публикации / Профиль lain8dono
Hirrolot:
что тебя смущает в лиспе?
Vetro:
))))))))))))))
Hirrolot:
да что вы. скажите нормально
Vetro:
говорю же
)))))))))))))))
Крывашек:
😂
===
via https://www.tg-me.com/rust_offtopic/315950
что тебя смущает в лиспе?
Vetro:
))))))))))))))
Hirrolot:
да что вы. скажите нормально
Vetro:
говорю же
)))))))))))))))
Крывашек:
😂
===
via https://www.tg-me.com/rust_offtopic/315950
Telegram
Hirrolot in rust_offtopic
что тебя смущает в лиспе?
Многие GOF паттерны для ржавчины неактуальны, но там есть много своих
https://github.com/rust-unofficial/patterns
https://github.com/rust-unofficial/patterns
GitHub
GitHub - rust-unofficial/patterns: A catalogue of Rust design patterns, anti-patterns and idioms
A catalogue of Rust design patterns, anti-patterns and idioms - rust-unofficial/patterns
Forwarded from Kai Ren
Вот из сегодняшнего, буквально.
Без RefCell на &mut ссылке, сколько не плясал, ни в какую не хотело уезжать во второе замыкание.
Без RefCell на &mut ссылке, сколько не плясал, ни в какую не хотело уезжать во второе замыкание.
Forwarded from мне не нравится реальность (вафель 🧇🦾)
# crates.io update notifier bot
(по названию всё и так понятно, можно дальше не продолжать)
На днях в расточатике спросили есть ли возможность как-то подписаться на обновления крейтов. Внятного ответа никто не дал, так что я решил написать бота для тележки.
FF: вот бот: @crates_upd_bot, можете с ним поиграться.
Работает он просто — с помощью git2 fetch'ит crates.io-index, гуляет по коммитам между
(по названию всё и так понятно, можно дальше не продолжать)
На днях в расточатике спросили есть ли возможность как-то подписаться на обновления крейтов. Внятного ответа никто не дал, так что я решил написать бота для тележки.
FF: вот бот: @crates_upd_bot, можете с ним поиграться.
Работает он просто — с помощью git2 fetch'ит crates.io-index, гуляет по коммитам между
HEAD
и FETCH_FEAD
, смотрит диффы и потом шлёт сообщения в @crates_updates и тем, кто подписался на обновления (на конкретный крейт).Forwarded from 𝙽𝚒𝚌𝚔 𝙻𝚒𝚗𝚔𝚎𝚛
Человек из старой РСДНской гвардии написал ряд постов на LJ:
https://thedeemon.livejournal.com/40867.html
https://thedeemon.livejournal.com/41035.html
https://thedeemon.livejournal.com/41388.html
https://thedeemon.livejournal.com/41545.html
https://thedeemon.livejournal.com/43344.html
https://thedeemon.livejournal.com/43656.html
https://thedeemon.livejournal.com/40867.html
https://thedeemon.livejournal.com/41035.html
https://thedeemon.livejournal.com/41388.html
https://thedeemon.livejournal.com/41545.html
https://thedeemon.livejournal.com/43344.html
https://thedeemon.livejournal.com/43656.html
Livejournal
ATS: первые впечатления
Занялся я тут изучением ATS и в качестве учебного примера взял задачку nponeccop'a про фильтрацию IP адресов. Дабы не изобретать колеса, взял простое и красивое решение antilamer'a и попытался его почти дословно перевести. Получилось 108 строк на ATS . Собранное…
Forwarded from Deleted Account
Я только что потратил слишком много времени на написание программы, которая восстанавливается из сегфолта
https://gist.github.com/GoldsteinE/41f00d9dcebc6389f3198ff5f860d5a1?ts=2
https://gist.github.com/GoldsteinE/41f00d9dcebc6389f3198ff5f860d5a1?ts=2
Gist
handle_segfault.c
GitHub Gist: instantly share code, notes, and snippets.
Я всё репу чесал, как бы донести до того плюсовика, что он решает несуществующую проблему, но нашёлся красавчик, который сделал это за меня.
===
Alexander Tchitchigin:
@webreh для начала, я, безусловно, глубоко симпатизирую Вашей идее писать более декларативно и один раз — а дальше пусть компилятор работает. Но у обсуждаемой телеги есть несколько зияющих прорех, которые перекрывают весь рациональный посыл.
Во-первых, C++ — нелепо плохой пример для подражания. Ровно потому, что слишком плохо типизирован, слишком много сделано ad-hoc, а потому противоречит одно другому, обрастает костылями и в конечном счёте приводит к знаменитым километровым сообщениям об ошибках. Поэтому очень многие люди решают для себя "да ну его такое нахуй — лучше я немного кода покопипасчу, зато диагностика будет вменяемая".
Во-вторых, разбираемый пример с равенством — настолько мелкая, частная и редкая (одноразовая) задача, что ломать об неё копья просто смешно. Экономия на спичках.
В-третьих, как уже указали, идея "я умнее компилятора, я понимаю, что тут можно использовать memcmp" разбивается об ещё более хитрожопые оптимизации со стороны компилятора, начиная с банального паддинга и выравнивания в структурах. Кроме того, проблему "компилятор недостаточно умный, чтобы вставить memcmp" хотелось бы решать посредством повышения "интеллектности" компилятора, чтобы это работало для любого кода, и руками прописывать memcmp вообще не приходилось. Что находится полностью в русле изначальной концепции "хочу писать максимально декларативно".
В-четвёртых, переходим к концептуальным проблемам. 😊
Концептуальная проблема в том, что наше любимое "хочу писать декларативно, а там пусть компилятор думает" неизбежно разбивается о то, что компилятор думать не умеет. В Вашем примере оно разбивается на уровне "тегов типов", потому что оказывается, язык и компилятор всё равно не могут выразить и понять концепцию "непрерывной колеекции" и Вам придётся руками копипастить аннотации.
Т.е. всё равно в какой-то момент придётся что-то копипастить и аннотировать вручную. В Rust выбрали тот момент, который позволяет лучше проверять типы и генерировать более информативные сообщения об ошибках.
Кроме того — и это снова второй пункт — типовые инстансы замечательно генерируются дерайвами, так что уровень копипасты совпадает с "тегами типов". 🤷♀️
===
via https://www.tg-me.com/categories_plusplus/894
===
Alexander Tchitchigin:
@webreh для начала, я, безусловно, глубоко симпатизирую Вашей идее писать более декларативно и один раз — а дальше пусть компилятор работает. Но у обсуждаемой телеги есть несколько зияющих прорех, которые перекрывают весь рациональный посыл.
Во-первых, C++ — нелепо плохой пример для подражания. Ровно потому, что слишком плохо типизирован, слишком много сделано ad-hoc, а потому противоречит одно другому, обрастает костылями и в конечном счёте приводит к знаменитым километровым сообщениям об ошибках. Поэтому очень многие люди решают для себя "да ну его такое нахуй — лучше я немного кода покопипасчу, зато диагностика будет вменяемая".
Во-вторых, разбираемый пример с равенством — настолько мелкая, частная и редкая (одноразовая) задача, что ломать об неё копья просто смешно. Экономия на спичках.
В-третьих, как уже указали, идея "я умнее компилятора, я понимаю, что тут можно использовать memcmp" разбивается об ещё более хитрожопые оптимизации со стороны компилятора, начиная с банального паддинга и выравнивания в структурах. Кроме того, проблему "компилятор недостаточно умный, чтобы вставить memcmp" хотелось бы решать посредством повышения "интеллектности" компилятора, чтобы это работало для любого кода, и руками прописывать memcmp вообще не приходилось. Что находится полностью в русле изначальной концепции "хочу писать максимально декларативно".
В-четвёртых, переходим к концептуальным проблемам. 😊
Концептуальная проблема в том, что наше любимое "хочу писать декларативно, а там пусть компилятор думает" неизбежно разбивается о то, что компилятор думать не умеет. В Вашем примере оно разбивается на уровне "тегов типов", потому что оказывается, язык и компилятор всё равно не могут выразить и понять концепцию "непрерывной колеекции" и Вам придётся руками копипастить аннотации.
Т.е. всё равно в какой-то момент придётся что-то копипастить и аннотировать вручную. В Rust выбрали тот момент, который позволяет лучше проверять типы и генерировать более информативные сообщения об ошибках.
Кроме того — и это снова второй пункт — типовые инстансы замечательно генерируются дерайвами, так что уровень копипасты совпадает с "тегами типов". 🤷♀️
===
via https://www.tg-me.com/categories_plusplus/894
Telegram
Alexander Tchitchigin in Categories++
@webreh для начала, я, безусловно, глубоко симпатизирую Вашей идее писать более декларативно и один раз — а дальше пусть компилятор работает. Но у обсуждаемой телеги есть несколько зияющих прорех, которые перекрывают весь рациональный посыл.
Во-первых, C++…
Во-первых, C++…
Статья о том, как прекрасен Rust (а вы что ждали? :-))
https://matklad.github.io//2020/07/15/two-beautiful-programs.html
https://matklad.github.io//2020/07/15/two-beautiful-programs.html
matklad.github.io
Two Beautiful Rust Programs
This is a short ad of a Rust programming language targeting experienced C++ developers.
Being an ad, it will only whet your appetite, consult other resources for fine print.
Being an ad, it will only whet your appetite, consult other resources for fine print.
"Asynchronous effects"
https://arxiv.org/abs/2003.02110
We explore asynchronous programming with algebraic effects. We complement their conventional synchronous treatment by showing how to naturally also accommodate asynchrony within them, namely, by decoupling the execution of operation calls into signalling that an operation’s implementation needs to be executed,
and interrupting a running computation with the operation’s result, to which the computation can react by installing interrupt handlers
https://arxiv.org/abs/2003.02110
We explore asynchronous programming with algebraic effects. We complement their conventional synchronous treatment by showing how to naturally also accommodate asynchrony within them, namely, by decoupling the execution of operation calls into signalling that an operation’s implementation needs to be executed,
and interrupting a running computation with the operation’s result, to which the computation can react by installing interrupt handlers
Когда ты приходишь, задаёшь вопрос, но твой стакан не то что полон, а ещё и с горкой.
===
Roman na, [20.07.20 01:25]
У меня есть вопрос к знающим людям. Всё никак понять не могу. Вот есть язык C++ и там нет завтипов, насколько я понял. И вот меня интересует следующие - почему. Т.е. чего системе типов С++ не хватает и что нужно добавить, чтобы каким-то образом реализовать/добавить завтипы?
Либо чем тот же идрис на уровне системы типов отличается от С++. Объясните - на доступном уровне, если это возможно.
Обычно все отвечают "ну там они есть, а там нет". Но понятнее не становится
Constantine Drozdov, [20.07.20 01:29]
[In reply to Roman na]
Надо примерно добавить всё, что есть в Idris, и убрать примерно всё, что есть в C++
===
via https://www.tg-me.com/c/1062361327/31313
(не уверен, что эта ссылка работает не только для меня)
===
Roman na, [20.07.20 01:25]
У меня есть вопрос к знающим людям. Всё никак понять не могу. Вот есть язык C++ и там нет завтипов, насколько я понял. И вот меня интересует следующие - почему. Т.е. чего системе типов С++ не хватает и что нужно добавить, чтобы каким-то образом реализовать/добавить завтипы?
Либо чем тот же идрис на уровне системы типов отличается от С++. Объясните - на доступном уровне, если это возможно.
Обычно все отвечают "ну там они есть, а там нет". Но понятнее не становится
Constantine Drozdov, [20.07.20 01:29]
[In reply to Roman na]
Надо примерно добавить всё, что есть в Idris, и убрать примерно всё, что есть в C++
===
via https://www.tg-me.com/c/1062361327/31313
(не уверен, что эта ссылка работает не только для меня)
Велика сила утиной типизации
===
Oleg ℕizhnik, [23.07.20 15:29]
[In reply to Александр Меньшиков]
утиная типизация - это принцип моделирования, он в голове моделирующего работает.
Работает примерно так "эти две вещи круглые, их диаметр меньше 10 см, значит вполне логично положить каждую из них в стеклянную литровую банку", даже если это фонарик и полулитровая стеклянная банка
"А если диаметр чего-то из них больше 10 см, или вещь не круглая, ничего страшного у меня есть динамическая типизация, благодаря которой банка треснет, когда я буду класть в неё неподходящую вещь. Очень удобно, какой я продуктивный"
Дальше ты рассуждаешь "я взял из этой банки вещь, она наверняка круглая и диаметром меньше 10 см, очень хороший инструмент для раскатки теста ,иначе тесты бы упали"
В результате ты вытаскиваешь из банки книгу фуко, опасную бритву, катаешь тесто, приготовленное из машинного масла и комков пыли, отрезаешь себе пальцы, окровавленными обрубками ставишь получившееся "тесто" со страницами зарождения биополитики в стиральную машину и ждёшь.
Спустя час получаешь таймаут, и начинаешь отлаживать
===
https://www.tg-me.com/ebanatics_learn/29351
===
Oleg ℕizhnik, [23.07.20 15:29]
[In reply to Александр Меньшиков]
утиная типизация - это принцип моделирования, он в голове моделирующего работает.
Работает примерно так "эти две вещи круглые, их диаметр меньше 10 см, значит вполне логично положить каждую из них в стеклянную литровую банку", даже если это фонарик и полулитровая стеклянная банка
"А если диаметр чего-то из них больше 10 см, или вещь не круглая, ничего страшного у меня есть динамическая типизация, благодаря которой банка треснет, когда я буду класть в неё неподходящую вещь. Очень удобно, какой я продуктивный"
Дальше ты рассуждаешь "я взял из этой банки вещь, она наверняка круглая и диаметром меньше 10 см, очень хороший инструмент для раскатки теста ,иначе тесты бы упали"
В результате ты вытаскиваешь из банки книгу фуко, опасную бритву, катаешь тесто, приготовленное из машинного масла и комков пыли, отрезаешь себе пальцы, окровавленными обрубками ставишь получившееся "тесто" со страницами зарождения биополитики в стиральную машину и ждёшь.
Спустя час получаешь таймаут, и начинаешь отлаживать
===
https://www.tg-me.com/ebanatics_learn/29351
Telegram
Oleg ℕizhnik in Задачник по ебанатике или "Что такое ФП"
утиная типизация - это принцип моделирования, он в голове моделирующего работает.
Работает примерно так "эти две вещи круглые, их диаметр меньше 10 см, значит вполне логично положить каждую из них в стеклянную литровую банку", даже если это фонарик и полулитровая…
Работает примерно так "эти две вещи круглые, их диаметр меньше 10 см, значит вполне логично положить каждую из них в стеклянную литровую банку", даже если это фонарик и полулитровая…
Дважды рекомендую статью Parse, Don't Validate, ну и конечно мой перевод другой статьи от того же автора: Нет, динамические системы типов по своей сути не более открыты
Хабр
Нет, динамические системы типов по своей сути не более открыты
Священные войны в интернете о системах типов по-прежнему страдают от распространенного мифа о том, что динамические системы типов по своей природе лучше подходят...