- PVSM.RU - https://www.pvsm.ru -
Через пару дней в Москве пройдет конференция RubyRussia [1]. Наш гость Чарльз Наттер [2] (работает над JRuby и JVM поддержкой в Red Hat) ответил на пару вопросов.
Как вы попали в мир программирования и Ruby?
В 2004 году я работал по контракту в правительственной фирме в качестве Java Enterprise архитектора. Я работал над проектом для Министерства сельского хозяйства США, и проводил пару недель в месяц в Вашингтоне. Одна из таких поездок совпала с RubyConf 2004, и поскольку один из моих друзей давно рекомендовал мне обратить внимание на Ruby, я решил сходить на конференцию. Так я оказался на мероприятии, посвященном Ruby, не имея никакого представления об этом языке… но я понял каждый кусочек кода, каждый приведенный пример. Я был поражен и пообещал себе найти способ принести Ruby в мой Java-мир.
Над какими проектами вы работаете сейчас?
Я один из двух руководителей проекта JRuby. В эту работу входят и разные связанные проекты, например, поддержка нативных библиотек (мы поддерживаем Ruby FFI на JRuby), или перекодировка строк (портирование аналогичной логики из CRuby). Кроме того, я работаю с сообществом, чтобы быть уверенным, что наши пользователи всегда могут получить от нас помощь. В общем, работы всегда полно!
У какого из этих проектов самое яркое будущее?
Думаю, что это JRuby, хотя это и не самый популярный язык на платформе JVM.
По крайней мере, мы поспособствовали позитивным изменениям в самой JVM. Во многом благодаря нашему сотрудничеству с Sun Microsystems и Oracle, сейчас JVM стал удобной платформой для многих динамических языков, не только Java. Я надеюсь, что мы сыграли не последнюю роль в этом изменении.
На каких языках вы пишете чаще всего? Какой из них вам нравится больше всего и почему?
Я в основном пишу на Ruby и Java, так как JRuby написан с использованием обоих. Каждый из этих языков хорошо подходит для своих задач. Ruby — для создания приложений, которым необходимо быстро развиваться и адаптироваться. Java — для написания высокоскоростных, надежных библиотек и сервисов. А JRuby сочетает в себе лучшее из обоих миров!
Вам нравится программировать на Java?
Да, особенно, если учесть все недавно добавленные улучшения языка, такие как лямбды (замыкания или блоки в Ruby), и новый синтаксис для объявления локальных переменных (var), когда статический тип однозначен.
А что Вы думаете о Rust?
Rust — отличный язык! В колледже я много использовал C ++, но я могу однозначно сказать, что, если бы в то время я знал Rust, я предпочел бы писать на нем. Мне особенно нравится статически-типизированная модель владения, которая позволяет писать стабильные параллельные программы, и гарантирует безопасный доступ к памяти. Думаю, другим языкам стоит перенять это в будущем.
Какие у вас мысли по поводу перспектив Ruby? Многие годы многие считают, что язык и его сообщество «умирают»...
После многих лет работы над JRuby, я полюбил синтаксис Ruby, и то, как вообще все в нем устроено. Но, боюсь, что проблема производительности реально существует и является важной. JRuby борется за то, чтобы сделать параллельные потоки реальностью для Ruby разработчиков, но, до сих пор, подавляющее большинство Ruby сервисов используют несколько изолированных процессов, тратя огромное количество и ресурсов процессора и памяти. Думаю, это связано со слишком масштабным и инвазивным C API для написания расширений Ruby, которое не позволяет внедрить такие улучшения, как параллельные потоки.
Но я не теряю надежды, что однажды мы все же увидим изменения.
Как вы думаете, какие из не самых популярных фич Ruby должны завоевать внимание в будущем?
Я с нетерпением жду, когда строки станут иммутабельными по умолчанию, как это происходит в большинстве других языков. Параллельное программирование было бы намного проще, если бы больше объектов Ruby можно было бы сделать полностью неизменяемыми (deeply frozen). Это может напоминать модель, используемую в Rust… если вы делитесь объектом в потоках, следует выбирать ту версию объекта, которая точно не будет модифицирована. Это распространяется на массивы, хэши и практически на любой другой изменяемый объект в Ruby: нам необходимо упростить блокировку изменения данных.
У меня есть большой старый монолитный проект на Ruby. Я подумал — а не перевести ли его на JRuby. Как это можно было бы сделать, и имеет ли это вообще смысл?
Первый вопрос, на самом деле, заключается в том, поможет ли вам такой шаг.
Вескими аргументами за переход на JRuby могли бы быть:
Я бы сказал, что если приложение масштабируется хорошо и не слишком дорого вам обходится, то возможно, вам не стоит ничего предпринимать. Но если вы решите получить от Ruby больше, то вот процесс миграции:
Ну а дальше начинается самое сложное — что делать с освободившимися ресурсами. На сколько потоков распараллелить приложение, как потратить сэкономленные деньги… :)
Что сейчас необходимо знать студентам, чтобы стать хорошими программистами?
Когда я учился в университете, на моих курсах по информатике преподавался язык Scheme, функциональный язык, подобный Lisp, который отлично подходил для обучения основам программирования. Я по-прежнему рекомендую начинающим программистам изучить хотя бы часть книги Structure and Interpretation of Computer Programs, изданной Массачусетским технологическим институтом (MIT). Ну и в целом, чем больше разных языков вы знаете, тем лучше. Это дает новые идеи, и позволяет взглянуть на решение ваших задач под разными углами.
Где вы черпаете мотивацию для работы? Сталкивались ли вы с проблемой профессионального выгорания?
Выгорание — это настоящая проблема в нашей отрасли. Особенно работа в open source
приносит с собой огромное количество стресса. Думаю, это случалось со всеми… когда слишком много работы, не успеваешь все сделать, жертвуешь временем с семьей и друзьями, забываешь о здоровье, ради того, чтобы исправить еще один очередной баг. Чтобы бороться с этим, я стараюсь уделять внимание на хобби: играть в компьютерные и настольные игры, учиться играть на гитаре,
изучать иностранные языки и путешествовать по миру, встречать новых людей. Во мне всегда будет жить ворчащий трудоголик, уговаривающий меня вернуться к работе, но я все же стараюсь поддерживать правильный баланс.
Каково ваше мнение о России, и что вы ожидаете от предстоящего мероприятия RubyRussia?
Я люблю Россию, и все мои поездки на конференции сюда за последние несколько лет были очень полезными. Это будет мой четвертый визит, ранее я был в Санкт-Петербурге, Москве и даже в Новосибирске (!!!). Я с нетерпением жду возвращения в Москву и встречи с российским Ruby-сообществом, о котором я весьма наслышан.
Вопросы подготовил Дмитрий Матвеев [3], PM в компании Evrone [4]. А задать свой вопрос можно будет уже 6 октября. Так что увидимся на конференции! Все подробности на сайте [5].
Прочитать оригинал на английском можно на hype.codes [6].
И огромное спасибо компаниям, которые подерживают главное Ruby-событие в России:
Генеральный партнер — Toptal [7]
Золотые партнеры — Gett [8] и Cookpad [9]
Серебярные партнеры — Instamart [10], UCHi.ru [11], JetBrains [12] и Qlean [13]
Партнер афтепати — Teachbase [14]
Бронзовые партнеры — Bookmate [15] и InSales [16]
Автор: vorona_karabuta
Источник [17]
Сайт-источник PVSM.RU: https://www.pvsm.ru
Путь до страницы источника: https://www.pvsm.ru/java/294808
Ссылки в тексте:
[1] RubyRussia: https://rubyrussia.club/
[2] Чарльз Наттер: https://twitter.com/headius/
[3] Дмитрий Матвеев: https://www.facebook.com/matveyev.d
[4] Evrone: https://evrone.com/
[5] сайте: https://rubyrussia.club/ru/programm
[6] hype.codes: https://hype.codes/charles-nutter-how-move-you-ruby-project-jruby-and-why
[7] Toptal: https://www.toptal.com/
[8] Gett: https://gett.com/ru/about/
[9] Cookpad: https://cookpad.com/ru
[10] Instamart: https://instamart.ru/
[11] UCHi.ru: https://uchi.ru/
[12] JetBrains: https://www.jetbrains.com/
[13] Qlean: https://qlean.ru/
[14] Teachbase: https://teachbase.ru/
[15] Bookmate: https://ru.bookmate.com/
[16] InSales: https://www.insales.ru/
[17] Источник: https://habr.com/post/425379/?utm_campaign=425379
Нажмите здесь для печати.