Через 3 месяца будет год как я начал изучать racket и вообще погружаться в мир лиспов с целью разобраться и начать использовать всю их мощь для своих собственных проектов.
До этого я в основном программировал на Go, а на жизнь зарабатывал тем что программировал на js под nodejs и браузеры, а также делал всякую инфраструктуру для разработчиков в одной конторе, которая занимается поиском.
Кто и что привело меня в лиспы?
История не короткая, но я постараюсь. Прошлым летом я делал сервисы для сбора и анализа данных о криптовалюте с бирж. Всё это делалось на Go и мне нравилось всё кроме скорости с которой я двигался и уровня абстракции, который способна предоставить гошная система типов(иными словами: "писанины много"). Маленькая скорость разработки была вызвана желанием абстрагироваться от конкретики, собирая сервисы из компонентов как из конструктора, что довольно не просто делать в Go.
Эти сервисы делались для десктопного приложения-информера по крипте, который писал другой человек на ClojureScript и в какой-то момент я решил посмотреть "чё там в кложуре есть".
До этого у меня было несколько набегов на мирок JVM, но не вдаваясь в детали, очень мягко скажу про весь java мир - не зашло, но того что я увидел в процессе копания в кложуре хватило чтобы понять: в университете я уделял слижком мало времени лиспу. И я начал искать альтернативы, постепенно придя к racket и начав погружаться в SICP(которую я всё ещё разбираю кстати).
Тут наверное стоит заметить, что я не искал супер быстрый язык для реализации своих идей на практике, я вообще считаю что выбирать язык по критерию "быстрый, а остальное не так важно" далеко не всегда правильно. Так что я искал выразительный язык, программы на котором можно легко менять в процессе разработки.
Стал ли я счастливее после этого?
Определённо да, хоть я и понимаю что racket далеко не идеален, например:
- пакетный менеджер говно(а вы думаете, почему мне удобнее монорепа - пользуюсь пакетным менеджером по минимуму)
- документации много, но местами она не содержит примеров и написана сухим академическим языком(теория без практики)
- некоторые части довольно лохматы или вовсе не понятны
- некоторые библиотеки из стандартного набора ужасны(а вы думаете, зачем мне свой велосипед в виде HTTP клиента?)
- ошибки рантайма иногда ставят в ступор, например когда пишешь свои макросы, но в большинстве случаев довольно информативны
- прямо скажем, готовых модулей могло бы быть и побольше
Ещё хочу добавить что литературы не так много, а та что есть, например:
- https://beautifulracket.com/
- http://www.realmofracket.com/
Учит на странных примерах(первая), либо старовата и не содержит некоторых фич(вторая).
Но даже не смотря на все эти изъяны я давно не получал столько удовольствия от программирования, например:
За последние 2 дня полностью перелопатил написанный несколько месяцев назад клиент к NSQ, внеся:
- поддержку отложенной финализации и возврата сообщений
(это когда очередь может подождать пока я наберу батч для сохранения в базу, а если я вдруг упаду то пришлёт мне или другому сервису теже сообщения после указанного таймаута)
- конфигурируемые statsd метрики и логирование
- покрыл это всё тестами
На Go у меня похожая задача заняла бы недели. На js меньше, но моё психологическое здоровье под угрозой.
Или вот ещё:
https://t.me/documentsjournal/463
Обёртка была написана за вечер, а высокоуровневая часть тоже не заставила себя ждать(и это была моя первая FFI обертка на этом языке, так что я ещё документацию курил).
Окей, что дальше?
Продолжаю использовать racket в своих собственных проектах. Но я не буду ограничиваться лишь им одним, сейчас я дочитываю книгу Common Lisp: A Gentle Introduction to Symbolic Computation и перехожу к Practical Common Lisp.
Ещё я скорее всего попробую chicken scheme, поскольку каждый раз когда я нахожу недочет в racket то иду проверять его наличие в chicken и чаще не нахожу.
Возможно один из них(CL или chicken) заменит в моём арсенале racket, а может они будут сосуществовать в гармонии, посмотрим.
Другие посты по теме...
Порядочный Арестант @arestantblog
Привет всем, сегодня обновлял свою татуху у мастера ( не тюремная масть) и решил пока он меня мучает рассказать вам как же это делают по ту сторону забора. И так, сразу рушим мифы - никто сейчас практически, за редким...
|
|
Подвал @basement
Часик в радость, дорогие подписчики!
Как вы помните, у нашего заключённого были проблемы с телефоном, которые все ещё остаются нерешенными.
В итоге, мы придумали такую схему: он пишет статью на бумаге, фотографирует...
|
|
Отец Савелий - Трейдинг, чуток Баунти и Обзор ICO @minerpop
Еще вчера после продаж нескольких монет (о чем я уже ранее писал) прикупил на освободившиеся средства 2 монеты:
- докупил STRAT по 0.0007195
- прикупил NEO за эфир по 0.1620 У обоих монет до конца марта планируется...
|
|
Internet- Business. Бренд. Продвижение. Заработок @helenneverova
🔴 НЕ БОГИ ГОРШКИ ОБЖИГАЮТ 🔴
Ваша реакция на первый входящий? ✔️Все с этого начинают
✔️Все делают свои первые шаги
✔️Все пугаются первых входящих
🤣Собрала этот ролик и сама реально улыбнулась, вспомнив свой первый...
|
|
iWallpaper PC @iWallpaperPC
Всем привет, меня зовут Катя и я хотела бы поделиться с вами одной очень странной историей. У меня есть старший брат - Кирилл, ему 20 лет. Осенью этого года его исключили из института. История очень запутанная, но...
|