Ruby
https://t.me/hcdevПопробовал ruby. Писал на нём давно до этого, но достаточно активно
0. Сам язык относительно прост в установке и настройке
1. Обычно все пользуются rvm или rbenv для работы с несколькими версиями одновременно, но это не сильно усложняет процесс
2. Но и через пакетный менеджер дистрибутива всегда тоже можно поставить без особых проблем
3. Набор библиотек вполне ничего. Практически под любую задачу можно найти уже готовый вариант. Всё упаковано в гемы, поставить их легко
4. Но, у рантайма есть проблемы: GIL и общая низкая производительность
5. Надо заметить, что JRuby хотя бы с многопоточностью проблемы не имеет
6. При этом активно развивается свой JIT и идет поиск различных решений к проблеме GIL'а (Guild'ы и т.д. и т.п.)
7. Сам язык при этом очень приятный
8. Хорошо сделана ОО часть
9. Элементарно использовать метапрограммирование
10. Соответственно запросто можно сделать красивую и приятную DSL/eDSL
11. Сам синтаксис поощряет это
12. Но и странные вещи с помощью этого творить можно запросто
13. Но, чувство красоты в языке развито хорошо. (Как и во всем японском) Апи для некоторых библиотек просто физически прекрасны
14. Видимо, за счёт этого на руби появилась широкая и богатая на идеи экосистема
15. Тот же sinatra повлиял почти на все вышедние после микрофреймворки
16. Но всё испортили рельсы.
17. Одновременно самая важная и самая деструктивная часть экосистемы
18. Рельсы сильно подстягнули популярность языка и задачи новый стандарт для скорости прототипирования веб приложений
19. Но при этом качество кода и используемых паттернов и идиом в них никакое
20. SOLID - не, не слышали
21. Сшить сущность, сохранения в бд и валидацию в один класс - да, конечно!
22. Логику равномерном слоем размазать по всем контроллерам разом - запросто!
23. ORM - active record буквально со всеми минусами данного паттерна
24. N+1 проблема - не, мы не паримся, мы пишем стартап, попивая смузи в коворкинге, нам не до этого
25. Хмм.. надо бы все действия в рамках запроса делать в одной транзакции, чтобы ничего не поломать - не, у нас по умолчанию по транзакции на save (!!!)
26. DI, настоящие unit тесты, иммутабельность, ФП подход - а что это?
27. Я знаю, тут же придет народ и скажет, что всё это можно исправить. Да, можно, но проблема в том, что рельсы изначально поощрают плохие практики. Как своим примером, так и общей архитектурой
28. И да, для быстрого прототипирования рельсы ничего. Но для написания приложений, которые должны жить десятки лет - это далеко не лучший вариант
29. Средний проект на рельсах - это написанный подзабоными хипстерами неподдерживаемый макаронный монстр с вкраплением 5к обращений к бд на один запрос
30. Спасает лишь то, что все хипстеры убежали в ноду, го, даже в питон
31. Туда им и дорога. Руби слишком красивый и интеллекутальный для них
32. И сообщество постепенно просыпается и пытается писать код правильно (см. тот же dry-rb)
TLDR. Неплохая (хоть и со стандартными для динамики проблемами) платформа, отличный язык и куча архитектурного мусора в лице рельс