DHH · 2025-07-12 · source ↗ · whole document (15)
Ruby и красивый код
`def __init__(self, …)` — самый важный метод любого класса записан одним из самых уродливых способов, какие он видел. Ruby: `def initialize` — без подчёркиваний, без `self`, без скобок, если аргументов нет. И без сокращений: `initialize` длиннее `init`, но пишешь его редко, а смотришь часто.
Второй контраст — интерактивная оболочка. В Ruby выходят и `exit`, и `quit`: люди наберут то или другое. Python на `exit` читает лекцию: «use exit() or Ctrl-D».
> «One is very human and another is very engineer.» — [2:00:40](https://youtu.be/vagyIcmIGOQ?t=7240)
## Динамическая типизация — «буду защищать до смерти»
Аргументы против статической типизации в его мире:
- Повторы. `User user = new User()` — слово три раза. «I don't have time for this».
- Метапрограммирование становится мучением; из-за этого TypeScript выкинули из Turbo.
- Инструменты порождают шаблонный код. Языки с хорошим автодополнением терпят гораздо больше boilerplate — «ты же его не печатаешь». Он печатает: «I chisel them out of the screen with my bare hands».
- Баги ловятся тестами, не компилятором.
И главная оговорка: система на 10 миллионов строк и сто тысяч программистов — другой мир, там нужны другие методы. Ошибка — считать, что то же самое нужно одному человеку в спальне.
> «You don't use your Pagani to go pick up groceries at Costco.» — [1:11:47](https://youtu.be/vagyIcmIGOQ?t=4307)
Про своё раннее евангелие Rails признаётся: вёл его как крестовый поход. Понял позже, что мозги у людей настроены по-разному, и кому-то нужна страховка IDE.
## Ruby — язык-люкс
> «Ruby is a luxury language… It is the Coco Chanel of programming languages. Something that not everyone can afford. And I mean this in the best possible way.» — [1:23:01](https://youtu.be/vagyIcmIGOQ?t=4981)