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
https://leanpub.com/outsidefp вот ещё кто-то пишет книгу "типизированное ФП для людей со стороны".

Почитал я "About the Book" и как-то "взгрустнулось". Мне, как человеку, достаточно испорченному знакомством с #haskell/#elm/#purescript, немного обидно читать такое такое (тут мейнстрим противопоставляется типизированным ФП-языкам):

> By "mainstream", I mean:
> - Applications that require only "ordinary" reliability.

не говоря уж о

> - Applications that work in messy domains.
> - Applications that are continuously growing new features.

Вот только это правда. Обидная, но правда.

И мне с моим любимым Haskell уже даже морально тяжело делать "просто достаточно надёжные" приложения, а ведь надо ещё и компилятор убедить в том, что "пока и так сойдёт". Заметьте, я не утверждаю, что так делать в Haskell нельзя - сделать нарочито хуже, конечно же, можно. Но не хочется! А значит я буду стараться делать сразу настолько хорошо, насколько смогу.

Я вообще склонен считать, что в (или через) Haskell идут перфекционисты - тут же столько простора "сделать наконец нормально или даже лучше"! И overengineering в хаскельном коде встречается не реже, чем в коде на мейнстримовых языках (тут многие вспомнят пресловутые "абстрактные фабрики синглтонов"), только тут принято себя оправдывать, что, мол, "зато более корректно и категорно!".

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

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

Может быть сий неготивизм по отношению к простым решениям и вообще к упрощению, это всего лишь боязнь того, что в язык придут люди, которые смогут с помощью гонзалесовой Turtle писать простые скрипты, не парясь по поводу зависимых типов, рекурсивных схем, профункторов, и прочего "именно того, ради чего вообще в Хаскель стоило идти"? "Илитизм" какой-то, право слово.

Другой пример. Новичок приходит в Reddit и спрашивает "А какую либу мне выбрать, чтобы сделать простой web-сервис - Scotty или Spock?" (очень частая ситуация). Реалистичный вариант цепочки комментариев будет выглядеть так:

- Бери Servant - только Servant есть TRUE!
- (кто-то робко) Но у сёрванта порог вхождения выше и сообщения об ошибках непонятнее...
- У меня всё работает! И там ваще всё просто (если ты достаточно хорош)!

После этого новичок идет пробовать Servant, видит список требуемых расширений, или просто первое сообщение об ошибке и уходит в ужасе/печали - и хорошо, если не из ФП вообще, а только из Haskell. Одним потенциальным хаскелистом меньше. И какова будет реакция аудитории - особенно русскоязычной - "одним слабаком и неосилятором меньше!".

Смотришь на это и понимаешь, почему кто-то убегает из Haskell с "труёвым Servant" в "скучную и нетайпсейфную" Clojure, или из PureScript с его профункторными линзами и FRP на Halogen в "скучный" Elm. А ведь, на Haskell можно писать и просто (типа вебчика на Scotty)! Но простые решения будут порицаться, или как минимум будут приняты со снисхождением - это демотивирует. И смешные статьи или картинки про Haskell не на пустом месте появляются - есть благодатная почва.

Меня лично радует лишь то, что я даже на своём невысоком уровне умения "в настоящий Haskell" могу делать на оном то, что мне интересно - пусть даже это никого не впечатлит. И я люблю этот язык, пусть и "не благодаря, а вопреки". И быть может мне повезло, что я учил язык, варясь в собственном соку и читая "слишком простую" «Learn You a Haskell For Great Good» - некому было отбить у меня желание к изучению.
Вот как то так.
https://www.youtube.com/watch?v=NB_VBl7ut9Y интересный "отчёт о проделанной работе" на ниве современного ретро-игростроя.

Автор не только накодил игру по старый-добрый C64 (причем "ванильный", т.е. без всяхих добавочных ОЗУ и звуковых чипов!), но и потрудился написать к ней музыку (он это умеет), сделать отличное оформление коробки, наклеек на дискеты, мануала и даже аудио-кассеты с саундтреком!

И надо сказать, что образчик софта получился довольно интересный технически: ограничение по ОЗУ заставило использовать текстовый режим с перегружаемым знакогенератором (помнится, я такое в DOS делал на TurboPascal). Огранничение же текстового режима в плане выбора цветов вылилось в "спрайты" 2x2 символа с раздельной раскраской четвертей - на мой взгляд, получилось очень интересно. И автор даже "оснастку" себе сделал: написал редактор спрайтов и редактор карты - "графический режим" получился довольно своеобразный и готового ПО для "рисования" в нём, очевидно, не было. Любопытно даже просто слушать, как автор рассказывает, какие страницы памяти он освободил от "системного ПО", чтобы влезли данные, что пришлось выкинуть (работа с джойстиком) и т.п. - роматника ретро-геймдева!

Увы, C64 у меня лично нет, никогда не было (и вообще - Коммодоры у нас в стране не имели такого широкого хождения), так что покупать эту игру я не буду :( Впрочем, автор планирует как минимум подумать над DOS-версией - в эту я бы поиграл с удовольствием! А пока подожду - вдруг образы дискеток где-то промелькнут и удастся пощупать C64-версию хотя бы на эмуляторе.

#gamedev
Вот и настал декабрь. А это значит, что прямо сейчас делается куча Advent calendars (это такие серии статей по одной на каждый день с первого декабря и до католического рождества). Вот и на Qiita уже заполнена и заполняется целая "стопка" календарей, например, по языкам программирования: https://qiita.com/advent-calendar/2017/categories/programming_languages Увы, почти весь контент на этой площадке написан на японском языке. Но как минимум код подглядеть обычно можно :)
Ну и конечно же в этом году тоже проходит Advent of Code (http://adventofcode.com/) - марафон про решению задачек с помощью программирования.

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

А задачки, надо сказать, довольно хороши - некоторые даже прекрасны! Так что AoC, я считаю, это отличный способ расчехлить свой любимый ЯП (лучше - не тот, на котором работаешь работу) и показать другим, да и себе тоже, что порох в пороховницах ещё есть! :)
От @haskellru отпочковался чатик @haskell_learn - для начинающих изучать #haskell. Может вдруг кто из читающих мой канал тоже "из этих" - милости прошу, початимся! :)
Забавная серия статей о #fsharp в рамках FSharp Advent Calendar:
https://medium.com/@mukund.sharma92/the-lord-of-the-rings-an-f-approach-an-introduction-of-the-blogposts-5d6ad7624fee

Первая статья, например, с мобощью анализа различных источников пытается дать ответ на вопрос "Какой из фильмов по вселенной ВК - лучший?". На мой взгляд, отличная мотивация для читателей!

#fsharp #datascience
Я как-то умудрился пропустить https://isomorf.io, а ведь я люблю всякое эдакое - структурное редактирование, новые подходы к самому процессу "написания" кода, вот это всё.

И, скажу я вам, выглядит этот Изоморф очень интересно! Тут и переключаемый синтаксис: написали на лиспоподобном "языке", решили посмотреть с другой точки зрения и переключили на haskell-подобный синтаксис - и вуаля, весь код перестроился.

Резюмирую: пройдите Tour (по ссылке выше) - не пожалеете! Ещё порекомендую почитать блог, например, эти статьи:
- https://blog.isomorf.io/what-is-isomor%C6%92-bdc50ce597ee - кратко об идее проекта
- https://blog.isomorf.io/an-experiment-in-structured-code-editing-68b917a9157c - более конкретно про структурное редактирование

#future of #development
Отличная вводная статья по Template Haskell: https://markkarpov.com/tutorial/th.html
Тут вам и мотивация и несинтетические примеры разного уровня сложности. Рекомендую

#haskell
Проект Luna наконец дорос до публичной беты! Скачать можно тут http://www.luna-lang.org/

Luna, это ещё одна попытка сделать среду для гибридной разработки, где "можно и код пописать, а можно и стрелочками кружочки посоединять". Назначение у языка/среды/системы на этот раз не "общее", а вполне конкретное: анализ данных и визуализация результатов - как раз та ниша, где нарисованные мышкой data flows вполне применимы. Замашки, правда, у создателей наполеоновские: Luna targets domains where data processing is the primary focus, such as data science, IoT, bioinformatics, graphic design and architecture., но тут, как говорится, "сам себя не похвалишь - другие не будут хвалить" ;)

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

P.S. Написан язык Luna на Haskell, и вообще Luna uses the state of the art Haskell’s GHC runtime system, enabling it to run thousands of threads in a fraction of a second. Это приятно слышать :)

#haskell #visualprogramming
https://www.youtube.com/watch?v=P3Bd3HUMkyU

Вот честно скажу - впечатлило сразу и сильно! Наконец-то появляются проекты, предполагающие широкое использование всех тех сенсоров, которые напихали в контроллеры Nintendo Switch!

Да, тут всё из картона и канцелярских резинок, но тем интереснее собирать (и разбирать!) такое вместе с детьми и без. А уж какая манера подачи - ролик вообще шикарный, сразу заставляет хотеть и консоль и эти наборы! Отдельно меня порадовал виброход - отличное нецелевое использование виброотдачи контроллеров :)

Надеюсь лишь, что в последствии появится какая-то среда программирования прямо на консоли, пусть даже и в виде чего-то Scratch-подобного. Можно и текстовый язык прикрутить (Lua?), благо USB-клавиатуры к свичу подключаются. Главное - чтобы Nintendo захотела.

Ссылка на проект: https://labo.nintendo.com/ Там пока представлены два набора, но вполне могут появиться и другие. Буду следить.

P.S. Для меня это ещё одна песчинка на чашу весов, подписанную "купи уже Switch" :)

#nintendo #switch #diy
Arpeggigon - интересный проектик про синтез музыки с применением FRP (Function Reactive Programming).

Суть ясна из видео https://www.youtube.com/watch?v=yJteVN8OQYk
Исходники доступны тут: https://gitlab.com/chupin/arpeggigon (внутре у ней Haskell+Yampa)

P.S. Автор впечатлялся проектом reacTogon: https://www.youtube.com/watch?v=AklKy2NDpqs - реальным интерактивным столом-синтезатором.

#haskell #frp #music
Вот даже у Бобука про Labo написано!
Forwarded from addmeto
Буквально в один момент вышли две новости для детей:
- Нинтендо объявили что с апреля будут продавать комплекты Nintendo Labo. Это такие конструкторы из толстого картона и скотча, собирающиеся в разные интересные игры и гаджеты для консоли Nintendo Switch. Обязательно посмотрите видео, этих наборов очень много, нинтендо открывает современным детям путь мир картона и синей изоленты, который в нашем детстве был известен каждому! И это они еще не показывают детям эпоксидку 🙂 https://labo.nintendo.com/
- А майкрософт без особого шума обновляет проект MakeCode - это готовые идеи, шаблоны и визуальный редактор кода для подростков, позволяющий учиться программировать на живых реальных примерах. На разных электронных штучках или на майнкрафт - не важно, главное что это большой и реально интересный образовательный проект. Визуальное программирование очень похоже на Scratch (или даже им и является), а это очень неплохой “язык программирования” для детей и взрослых. https://makecode.com/
А вот и среда разработки для/на Nintendo Switch нарисовалась: https://www.fuze.co.uk/nintendo-switch.html

Обещают Access Joycon sensors and controls directly in your programs - то, чего именно я жду! USB-клавиатуры будут поддерживаться, что ожидаемо и приятно.

Смущает только бейсикоподобный язык, но это не так уж и плохо, если уж на то пошло. Вон #pico8 тоже на подобном языке программируется и многих сий факт не останавливает от создания абсолютно крутейших штук!

#nintendo #switch #gamedev #development
На днях в первый раз поучаствовал в подкасте - сходил гостем в scalalaz.ru. Пообщались со скалистами на темы, общие для наших языков (#haskell и #scala, очевидно), я попиарил любимый ЯП, слегка поразвеивал мифы вокруг него, вот это всё.

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

Выпуск уже доступен тут: http://scalalaz.ru/series-38.html

Кстати, общались мы через Mumble (https://wiki.mumble.info/wiki/Main_Page) (я - тоже в первый раз) и моё впечатление от софта сугубо положительное!
https://kmmbvnr.livejournal.com/62197.html
Старенький перевод статьи Филиппа Вадлера, критикующей Абельсона и Сассмана (авторов книги "Структура и интерпретация компьютерных программ") за использование Scheme в качестве языка для преподавания. Статью эту Вадлер написал очень давно, но с поправкой на упоминаемые языки, она всё ещё актуальна. Да и просто почитать интересно.

Отдельно порадовала строка "Хэл Абельсон и Джерри Сассаман сделали множество подробных и тонких комментариев к черновику этой статьи" - именно так должно выглядеть здоровое взаимодействие критика и критикуемых :)

И это тоже хорошо:
> Then the student is prepared to program in Fortran or Cobol, if need be, and to agitate for the introduction of Pascal, Lisp, or Miranda where they are appropriate.
Отличная статья от Alexis King: https://lexi-lambda.github.io/blog/2018/02/10/an-opinionated-guide-to-haskell-in-2018 Считаю, что материал будет полезен многим хаскелистам.

Особо отмечу ту часть, где рассказывается про stack - можно использовать как отличное дополнение к официальной документации. Сам же я внял совету "не ставить через stack install инструменты, завязанные на конкретную версию компилятора".

#haskell #stack
Интересный видеоролик от Disney Research о генерации механических систем, которые призваны приводить в движение по заданному паттерну различные объекты, как то персонажи мультфильмов, зооморфные роботы, и т.п.
https://www.youtube.com/watch?v=DfznnKUwywQ

Люблю такое.
Неплохой быстрый старт по этому нашему #haskell в виде десятка видео от Коли Кудасова: https://www.youtube.com/watch?v=jNQVa5INdDk&list=PLov3NSwpY86cfkfXyVroSZkHemxoAdnrd Роликов немного и каждый - всего по десять минут. Охват: от ADT и привычных map/filter/fold до Apllicative.
https://portacle.github.io Портативное окружение для разработки на CL, готовое к использованию "прямо с флешки", в т.ч. и по Windows.

Интересный проект - не из-за своего состава, но идейно. SBCL с пакетным менеджером, Emacs в роли IDE, git (с magit со стороны само собой!) - это всё знакомо и понятно, но авторы не поленились компоненты красиво упаковать, предварительно настроив до "всё сразу работает"-состояния. Признаю, круто!