∏ρ؃uñçτØρ Øπτµç∑ 👁‍🗨››››

∏ρ؃uñçτØρ Øπτµç∑ 👁‍🗨››››

43
30 Ноя 2018

Через 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 Отец Савелий - Трейдинг, чуток Баунти и Обзор ICO @minerpop
Еще вчера после продаж нескольких монет (о чем я уже ранее писал) прикупил на освободившиеся средства 2 монеты: - докупил STRAT по 0.0007195 - прикупил NEO за эфир по 0.1620 У обоих монет до конца марта планируется...
Internet- Business. Бренд. Продвижение. Заработок Internet- Business. Бренд. Продвижение. Заработок @helenneverova
​​🔴 НЕ БОГИ ГОРШКИ ОБЖИГАЮТ 🔴 Ваша реакция на первый входящий? ✔️Все с этого начинают ✔️Все делают свои первые шаги ✔️Все пугаются первых входящих 🤣Собрала этот ролик и сама реально улыбнулась, вспомнив свой первый...
iWallpaper PC iWallpaper PC @iWallpaperPC
Всем привет, меня зовут Катя и я хотела бы поделиться с вами одной очень странной историей. У меня есть старший брат - Кирилл, ему 20 лет. Осенью этого года его исключили из института. История очень запутанная, но...