brain_dump_etc
637 subscribers
99 photos
4 videos
3 files
383 links
Дампы мыслей, свалка ссылок, программизмы, вот это всё (ВНИМАНИЕ: много вкусовщины!)

Автор надампленых мыслей: @astynax

Чат к каналу: https://t.me/brain_dump_chat
Плейлист трансляций: https://youtube.com/playlist?list=PLUFoWyWge7mrg4GqHLMZV62gGC912PCGq
Download Telegram
Интерпретатор Brainfuck на Piet ;^)
Если вгруг решите поиграться с Piet, вот вам online IDE для оного: http://www.rapapaing.com/blog/?page_id=6
Подкинули на днях интересный образчик "языка", если можно так сказать: https://github.com/aaronduino/asciidots
Описание гласит: "AsciiDots - The result of combining ascii art, electrical engineering, and programming". Программы-схемы выглядят так (это вычислитель факториала):
 /---------*--~-$#-&
| /--;---\| [!]-\
| *------++--*#1/
| | /1#\ ||
[*]*{-}-*~<+*?#-.
*-------+-</
\-#0----/

Примечательно, что в отличие от большинства других языков с "2D-синтаксисом" (BeFunge, False, того же Piet) этот - не стековый. И вообще, программы на языке действительно похожи на электрические схемы с путешествующими по ним электронами. Занятная штука! Написана на #python
Процесс отладки программы (Телеграм пожал гифку, так что лучше смотреть ту, что в README репозитория):
https://raw.githubusercontent.com/aaronduino/asciidots/master/dots_debug.gif
Мне этот AsciiDots, почему-то, напомнил клеточный автомат WireWorld (https://en.wikipedia.org/wiki/Wireworld). Последний тоже поделирует электрические схемы, правда только логические, но зато полон по Тьюрингу!

Выглядят Wireworld-схемы так: https://upload.wikimedia.org/wikipedia/commons/1/13/Wireworld_XOR-gate.gif

#cellular_automata
Если вы вдруг пишете на #haskell, то, возможно, накопили своих пунктиков по поводу стендартной Prelude (для тех, кто не в курсе, это такой неймспейс, который импортируется неявно в любые исходники и содержит (или экспортирует) предметы первой необходимости типа print, map и +).

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

Поэтому так ценны подобные странички: https://guide.aelve.com/haskell/alternative-preludes-zr69k1hc - здесь упомянуты многие популярные прелюдии, и для каждого образчика указано краткое описание "почему?"/"для кого?", плюсы и минусы и проч. Организована информация удобно и охват имеет широкий. Буду пользоваться :)
Интересная штука - Urn, #lisp (Lisp-1) для #lua:
https://squiddev.github.io/urn

Умеет compile time макросы, выдаёт самодостаточные Lua-файлы, REPL тоже в наличии, разумеется. Есть pattern matching, что приятно. Есть threading macroses, как в #clojure. Вобщем, неплохой вариант в ситуации, когда нужно что-то написать для Lua VM, но именно на Lua писать не хочется или же просто хочется S-выражений :)
Вот прямо сейчас проходит голосование за участников LOWREZJAM 2017 - это такой конкурс игроделов, где оные соревнуются в написании игр, работающих в разрешении 64x64 пикселей. Ограничение, прямо скажем, довольно суровое! Но тем интереснее участникам раскрывать свой творческий потенциал!

Ссылка: https://itch.io/jam/lowrezjam2017

#gamedev #pixelart
Победитель прошлого года:
http://i.imgur.com/IjwJZkZ.gif
(поиграть можно тут: https://cronus.itch.io/umbri)
Ещё одна утилитка на #rust: https://the.exa.website/
Быстрая (по словам авторов) и более современная замена ls. Умеет выводить различные дополнительные данные, сразу выводит размер в человекочитаемом виде, может отображать git-статус - приятная штука.

Ах да, ещё может заменить собой tree - тоже умеет выводить иерархию файлов и папок, но уже с дополнительной информацией.
Пример вывода
Внезапно прорекламирую канал: https://t.me/kanaflow
Внимание, внутри теоркат, типота, вот это всё! Но материал подаётся автором по мере изучения оного оным, поэтому сложность, очевидно, будет нарастать плавно, а пока всё достаточно просто и понятно :)
Вот пример публикации. ИМХО, хорошая работа!
Forwarded from это кана
ADT - произведение и копроизведение типов

Тип можно трактовать как множество значений (На самом деле это не всегда так). Мощность типа - количество элементов в этом множестве.

Произведение типов - декартово произведение множеств, то есть множество всех возможных пар, где первый элемент - элемент первого множества, а второй - второго.
A = {a, b, c}
B = {x, y}
A×B = {(a, x), (a, y), (b, x),
(b, y), (c, x), (c, y)}

Мощность произведения двух множеств равна произведению мощностей множителей.
|A × B| = |A| × |B|

Пример в хаскеле:
-- тут мы говорим, что `x`
-- имеет тип `(Int, String)`
x :: (Int, String)
-- а тут мы говорим, какое у
-- x значение
x = (1, "hello")

-- делаем тип IntStringPair
-- значение которого является пара
-- из числа и строки.
-- Для создания значения этого типа
-- используется конструктор MkIntStringPair
-- который принимает число и строку
-- и создает элемент типа IntStringPair
data IntStringPair = MkIntStringPair Int String
y :: IntStringPair
y = MkIntStringPair 1 "hello"

-- Конструктор и тип могут иметь
-- одно название, они не будут
-- пересекаться, ведь типы можно
-- использовать только в сигнатуре,
-- а конструкторы только в выражениях
data Triple a b c = Triple a b c
z :: Triple Int String Int
z = Triple 1 "hello" 2

Меченное объединение, сумма или же копроизведение типов - объединение двух множеств так, что каждый элемент нового множества помечается исходным множеством, благодаря чему новый тип будет содержать все копии значений из исходных множеств.
A = {1, 2, 3}
B = {3, 4}
A + B = {A 1, A 2, A 3, B 3, B 4}

Как видно, каждый элемент нового множества помечен исходным множеством, поэтому число 3 встречается дважды, ведь A 3 ≠ B 3.

Очевидно, мощность такого типа равна сумме мощностей слогаемых.
|A + B| = |A| + |B|

В хаскеле суммы типов создаются с помощью символа | в определении типа (или же с помощью определений конструкторов с GADTs).
data Either a b = Left a | Right b
x, y :: Either Int String
x = Left 10
y = Right "hello"

data Bool = False | True
-- изоморфно Either () ()
-- где () - единичное множество,
-- то есть множество из одного элемента
-- () = {()}
-- (Важно не путать ()-тип и ()-значение)
z, u :: Bool
z = False -- Left ()
u = True -- Right ()
Просто оставлю это здесь:
https://github.com/LightningJimmyJoeJohnson/Anime-Girls-Holding-Programming-Books
Вдруг вам понадобится картинка с анимешной девицей и книгой по вашему любимому ЯП :)

Что примечательно, по кол-ву присутствий на картинках с большим отрывом лидирует SICP, что с одной стороны радует, с другой - вовсе не удивительно :D

#anime #meme #picture
Пример
Довольно интересная статейка на #haskell WiKi: https://wiki.haskell.org/Haskell_logos/New_logo_ideas - тут собраны работы, участвовавшие в The great 2009 Haskell logo contest (кстати, именно в рамках этого конкурса был выбран текущий логотип!).

Некоторые образчики очень занятны и даже довольно круты, советую пролистать и приобщиться, даже если вы не интересуетесь #haskell (зря!)

P.S. Тут ещё немного текста и картинок по истории лого: http://www.willamette.edu/~fruehr/logos/intro.html
Тема криптовалют и #blockshain в целом нынче очень популярна. Вот и в #haskell мире движуха пристутсвует - пишут "на коленке" игрушечные криптовалютки, вот это всё. Пример такого проекта: https://github.com/tdietert/nanocoin

Проект достаотчно интересный с точки зрения знакомства с тем "как там всё работает". Тут вам и P2P сеть и Proof-of-work. А ещё автор ставит себе целью подробно всё документировать - отличная возможность приобщиться к среднему по сложности проекту на Haskell, реализующему хайповую штуку и поучиться на живом примере!

P.S. Буквально вчера выложили доклад автора нанокоина: https://www.youtube.com/watch?v=wjyiOXRuUdo - тут и о проекте говорится и в целом о криптовалютах
Меня порой спрашивают, какую книгу стоит читать желающему начать учить #haskell. Обычно я советовал "Learn You a Haskell for Great Good" - я сам на ней вырос, вот и другим рекомендую. И я всё ещё считаю эту книгу хорошей для новичков в ФП. Однако теперь я буду давать ссылку на этот пост: https://medium.com/@_bravit/%D0%BA%D0%BD%D0%B8%D0%B3%D0%B8-%D0%BF%D0%BE-%D0%BF%D1%80%D0%BE%D0%B3%D1%80%D0%B0%D0%BC%D0%BC%D0%B8%D1%80%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D1%8E-%D0%BD%D0%B0-haskell-%D0%B2%D1%8B%D0%B2%D0%BE%D0%B4%D1%8B-712c1f5b7749

Ссылка ведет на статью с выводами, которые сделал Виталий Брагилевский, взяв на себя труд рассмотреть все более-менее популярные книги для начинающих изучать Haskell. Ссылки на отзывы об отдельных книгах ищите по ссылкам в вышеуказанной статье. ИМХО, стоит обратить внимание на книгу Курта - я и сам на неё натыкался, и с виду она мне понравилась, но одно дело - мое мнёние, совсем другое - мнение человека, который Haskell преподаёт (кстати, Виталий учит не только хаскелю, но и, например, Idris!).
Reddit-обсуждение статьи про сравнение GHCJS и PureScript (вместе с различными библиотеками для оных) в плане быстродействия. Причем связки из языка и фреймворка/библиотеки сравниваются и между собой и с популярными конкурентами из мира JavaScript. И даже Elm присутствует "до кучи". Сравниевается производительность в разного вида задачах, связанных с изменением DOM - как точечным, так и массовым. В конце статьи автор приводит своё мнение о каждом из попробованных им решений, в т.ч. и касательно удобства использования, что тоже интересно.

https://www.reddit.com/r/haskell/comments/6z8e3m/benchmarks_ghcjs_reflex_miso_purescript_thermite/
В последнее время площадки, начинавшие с продажи indie-игр, предлагают купить по минимальной цене целые подборки неигрового контента.

HumbleBundle, например, частенько продаёт наборы первых томов комиксов от конкретного издательства, или, скажем, пачку книг по вселенной Doctor Who.

Вот прямо сейчас можно купить кучку книг по Data Science от O'Reilly: https://www.humblebundle.com/books/data-science-books Причем пять книг отдают вообще за доллар!

P.S. Часть денег - определяемая вами (!) - идет в различные благотворительные фонды. Кого-то может порадовать только этот факт :)