Прямые авиарельсы

Создатель Ruby Юкихиро Мацумото — о том, как японский язык влияет на Ruby и почему играть с кошкой важнее работы на корпорацию.

Мы в компании Evrone уже более 10 лет проводим конференцию RubyRussia — одно из главных событий для рубистов в России и мире. В 2016 году мы решились и позвали на конференцию Юкихиро Мацумото, создателя языка Ruby. Для нас тогда казалось невероятным, что он вообще нам ответит. Представьте, что российский клуб владельцев «Теслы» вдруг зовет на конференцию Илона Маска. А он не только приезжает, но и тратит на это свой крохотный официальный отпуск. А после приезжает снова.

На конференции RubyRussia 2019 наш DevRel Григорий Петров обсудил с Мацумото ключевые вопросы языка, попросил рассказать о том, как он поживает, над чем работает. И конечно о том, почему ему нравится приезжать в Россию.

Вот главное из интервью Юкихиро:

Юкихиро Мацумото на RubyRussia 2019
Юкихиро Мацумото на RubyRussia 2019

Я фултайм-разработчик Ruby. Половину своего рабочего времени я работаю над дизайном следующей версии Ruby. Остальное время — тружусь над альтернативной реализацией MRuby. К счастью, все рабочее время я провожу с опенсорсом.

У меня нет давления со стороны клиентов, у меня нет боссов, я сам ставлю себе задачи. Все это позволяет мне работать без стресса.

У меня нет дедлайнов, кроме даты следующего релиза Ruby. Эта свобода позволяет мне чувствовать себя расслабленным. Также я стараюсь проводить время не за компьютером, уделять внимание своим близким, семье. Я помогаю местной церкви, гуляю с собакой и играю со своей кошкой.

Меня очень часто спрашивают: «Я использую язык X. Почему бы вам не добавить функцию из языка X в Ruby?». В большинстве случаев я отвечаю, что это невозможно. У нас разный языковой дизайн и разная языковая политика. Мы не можем просто взять некоторые функции из языка X и добавить в Ruby. Но иногда мы все же заимствуем хорошие идеи из других языков, таких как Python, JS или Elixir.

На самом деле, я не управляю языком или сообществом. Я просто предоставляю технологии, а сообщество само решает, в какую сторону идти. У нас достаточно технологий почти для всех областей, чтобы сделать Ruby гибким и продуктивным. Например, Ruby в основном используется для создания веб-приложений. Но я хочу, чтобы Ruby применялся в других областях: исследованиях и вычислениях, искусственном интеллекте или машинном обучении, в сфере инноваций. Мы стараемся сделать технологию пригодной для более широкого применения.

Я бы назвал Ruby продуктивным языком программирования. Продуктивность — одна из главных целей, основных задач Ruby. Он разрабатывался для людей, а не машин.

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

Если бы меня попросили назвать свой самый большой вклад в разработку языка, я бы сказал, что это блоки. Блоки в Ruby уникальны, это полезная абстракция функции высшего порядка. Они намного проще, чем в других языках. Это дает как ограничения, так и удобства использования. В то же время, есть и ошибки. Начнем с глобальных переменных. Они были полезны для скриптового языка, но теперь выглядят, как рудимент. Я также сожалею, что добавил потоки в явном виде — нам нужна более удобная абстракция для concurrency. Еще одна моя ошибка в дизайне — отсутствие иммутабельности у некоторых объектов. Например, сейчас можно поменять time zone для объекта времени. Вместо того, чтобы просто создать новый иммутабельный объект. Это то, о чем я сожалею.

Многим кажется, что «японскость» создателя языка влияет на Ruby. Например, в японском языке предложения склеиваются друг с другом. Точно так же, как работает method chaining в Ruby. Может быть, это и есть влияние японского языка.

Япония — богатая страна и у нас нет необходимости в постоянной тяжелой работе. Это тоже влияние Японии и возможностей, которые она дает.

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

Создание языка программирования — это не очень сложная техническая задача. Многие студенты, посещающие курсы разработки языков программирования в университете, могут сделать свой язык, и в этом нет ничего запредельно сложного. Сложность заключается в том, что язык — это способ выражения мыслей. Это относится как к языкам программирования, так и к естественным языкам: русскому, английскому, японскому.

Языки программирования, такие как Ruby, Python или JavaScript — они помогают нашему разуму формулировать мысли. Это главная задача языков программирования.

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

Ну а вообще, удивительно видеть, как разработчиков все чаще представляют настоящими рок-звездами. В России это особенно заметно. Я много путешествую и выступаю по миру, но только в России меня так часто фотографировали и так часто брали у меня автограф.

Читайте также полное интервью с Юкихиро Мацумото на английском, с ответами на технические вопросы (или смотрите видео-версию интервью).

3131
6 комментариев

А вообще интересно с кем бы вы хотели почитать интервью? Есть доступ к телу практически всех кто является первоисточником! На какие вопросы бы хотелось получить ответы :)

6
Ответить

анатолий орлов - опыт использования Go: есть ли жизнь без шаблонов и исключений?

2
Ответить

Дэн Абрамов.

2
Ответить

илон муск

1
Ответить

у Суркова например

1
Ответить