Джонас Никлас: «Мне грустно видеть, как выходит что-то типа Dart...»
Сегодня мы представляем вашему вниманию интервью с Джонасом Никласом (Jonas Niklas), известным разработчиком, приверженцем Ruby, одним из победителей Ruby Hero Award этого года. Напомним, эта награда присуждается победителями прошлого года тем участникам сообщества, которые в наибольшей степени проявили себя: создали значимый обучающий контент, разработали плагины и гемы, участвовали в проектах с открытым кодом.
Пообщаться с Джонасом лично можно будет на конференции RubyC
— В наши дни в сообществе программистов PHP-разработчики постоянно спорят с рубистами о подходящих ситуациях когда они могут/им стоило бы использовать Ruby. По вашему мнению, в каких случаях, если таковые имеются, такая дискуссия — PHP или Ruby — имеет смысл?
— Я полагаю, что вы должны использовать любой инструмент, который вам подходит. Я думаю, что мы пишем лучший код за более короткое время используя Ruby, нежели могли бы, используя PHP; просто язык не очень хорошо способствует сопровождению кода. В Ruby-сообществе очень сильно фокусируются на качестве и улучшении процессов; я не видел, чтобы это исходило из мира PHP. Если люди могут сделать отличный продукт на PHP, да пребудет с ними сила.
— В каком направлении, на ваш взгляд, следует развиваться Rails? Думаете ли вы, что есть какая-то отличная идея, которая должна быть воплощена на Rails, или сейчас все хорошо и ничего концептуального добавлять не стоит?
— Rails устареет на каком-то этапе. Мы видим сильный сдвиг в сторону тяжелых приложений на стороне клиента, и я думаю, Rails 3.1 весьма правильно двигается в этом направлении со средствами источника информации. У меня есть чувство, что в определенный момент кто-то придет и сделает лучше, чем могут Rails; возможно, скоро.
— Как вы думаете, с приходом таких технологий, как Ruby и Scala, можем ли мы сказать что развитие программирования становится более объектно-ориентированным? Как это может повлиять на программистов и программирование?
— Я думаю, большим изменением в эти последние несколько лет стало мнение о том, что язык программирования может собирать и отбирать разные фичи из разных парадигм. Ruby, на самом деле, и функциональный, и объектно-ориентированный язык, как и Scala. Мы здесь действительно возвращаемся к старым идеям, ведь тот же SmallTalk существовал задолго до Ruby.
Мне грустно видеть, как выходит что-то типа Dart, — кажется, его авторы ничему не научились за эти последние годы.
Я действительно верю, что для большинства людей концептуально легче смоделировать поведение сложной системы как хранящие состояния объекты, и я думаю, что популярность Rails по сравнению с более функциональными подходами является доказательством этого.
— Цитата из одной книги: «Популярность, как таковая, языка программирования ничего не говорит о его качестве. Это только свидетельство его эффективности и доступности.» Вы согласны с этим? Это так для Ruby?
— Понятие качества достаточно сложное. В Ruby есть много наростов и странных крайностей. Есть точно возможности улучшения языка и его применений. Для меня Ruby — триумф прагматизма, самовыражения и человечности над чисто теоретическим подходом. Но это не означает, что мы не можем выучить одну или две вещи из языков, которые «лучше разработаны» чем Ruby.
— Вы большой фанат Test Driven Development (TDD), и это будет главной темой вашего доклада на RubyC. Как будет развиваться эта методология в будущем?
— Я думаю, наше понимание о том, как тестировать софт, еще довольно незрелое. Наверное, мы откроем для себя новые потрясающие инструменты на нашем пути. В сообществе Ruby в последнее время я часто слышал, что многие люди говорят о скорости выполнения их тестов. Я думаю, что это важный аспект, который мы очень долго игнорировали.
— Можете ли вы назвать свои любимые стартап-проекты, написанные на Ruby? Возможно, вы сами участвовали в некоторых из них?
— Я не очень погружен в стартап-сообщества. Для меня все инструменты разработчика, которые предоставляет Ruby, — удивительные. Heroku, EngineYard, GitHub, Pivotal Tracker, все эти вещи. Я бы гораздо меньше сделал без них.
— Ваши самые популярные библиотеки — Capybara и Carrierwave. Расскажите, что сподвигло вас начать работу над ними? Какая у проектов история и предыстория?
— Я начал Сarrierwave как обучающий проект. Я хотел работать с Merb в те дни, и заметил, что нет хороших решений для загрузок файлов. И я решил взяться за это. Я начал делать Capybara, будучи расстроеным тем, что было чертовски сложно правильно тестировать JavaScript. Мой друг Kevin Fitzgerald работал с нами в то время и созвал митинг, чтобы исправить проблему. Вот тогда я решил переписать Webrat с нуля и заставить его работать так, как я того хочу.
— В среде разработчиков Capybara становится де-факто стандартом при интеграционном тестировании веб-приложений. Как планы по развитию этого проекта? Есть ли некое подобие roadmap’a?
— Последняя составляющая — это сообщения об ошибках. Сейчас сообщения об ошибках действительно плохие, они не говорят вам о том, что на самом деле сломалось, или как вы можете это починить. Я думаю, как только это будет сделано, у меня особо не будет дальнейших планов. Я полагаю, по большей части фичи проекта готовы.
— Capybara очень популярна: сейчас насчитывается около 80 человек, внесших свой вклад в развитие библиотеки. С какими проблемами вам довелось столкнуться, принимая патчи и пул-реквесты от сообщества? В данный момент на гитхабе у Capybara около 15 пул-реквестов. Почему они еще не приняты или не закрыты? Что тормозит процесс развития библиотеки?
— Я уделяю столько времени, сколько могу, и хочу продолжать делать Capybara, но у меня есть и другие интересы. Я часто делаю работу по кускам, так что на некотором этапе я сяду с открытыми пул-реквестами и вопросами и проработаю их, но я не против того, если они останутся нетронутыми некоторое время. Я думаю, это ведение такого популярного проета — уникальный опыт. Я не очень-то понимал, какой это объем работы пока не занялся им. Самое трудное в одобрении патчей — это поддержка качества. У меня очень высокие стандарты для тех патчей, которые я приму. Обычно я сразу отклоняю патчи, если у них нет тестов.
— Не так давно Aslak Hellsoy сообщил, что удаляет из своего проекта (cucumber) web_steps.rb. Это затруднит новичкам процесс вливания в ряды фанатов cucumber’a и заставит сильнее изучить Capybara DSL. Что вы думаете по поводу такого решения?
— Я думаю, это правильное решение. Веб-шаги были опорой на которую даже я сильно полагался. Я рад, что этого больше нет.
— Недавно вы опубликовали файл (gist.github.com/1233365) с прототипом нового DSL, напоминающего Cucumber DSL. Расскажите об этом подробнее. Когда мы увидим (и увидим ли) библиотеку, реализующую предложеный вами подход?
— Ха-ха, я вообще-то работал над супер продвинутым первым прототипом, используя Gherkin parser, просто для развлечения. Я сомневался что это увидит мир, это была просто веселая идея.
— Что вы думаете о DataMapper? Это остается актуальным, когда есть Rails v.3?
Я думаю, DataMapper имеет множество интересных идей, и по-прежнему делает много вещей, которые не делает ActiveRecord. Когда я использовал его, он имел несколько крайностей, которые, наверное, пришли из-за того, что использовали его менее активно, чем ActiveRecord.
Каждый должен попробовать использовать DataMapper. Я не так убежден, что один ORM, «чтобы всех отыскать, воедино созвать и единою черною волей сковать», является правильным решением; я думаю, было бы очень интересно иметь один ORM, который действительно использует все удивительные фичи PostgreSQL, например.
— Известно, что многие успешные разработчики пробовали программировать в детстве (некоторые — в возрасте до 10 лет). Какой язык программирования вы бы стали учить или посоветовали бы попробовать своим детям?
— Python или JavaScript. Стоит учить язык, который концептуально прост и при помощи которого можно делать крутые вещи. HTML Canvas и PyGame — самое то. Ruby —классный язык, но и весьма сложный.
Если вы захотите постетить нашу двухдневную конференцию RubyC, на которой вы сможете пообщаться с настоящими профессионалами языка Руби и сопутствующих технологий, посетить мастер-класс Джонаса Никласа, послушать доклады ведущих разработчиков, которым была присуждена награда Ruby Heroes, то у вас есть уникальная возможность зарегистрироваться по промокоду #dou20 , который дает 20% скидку первым 20 использовавшим ее участникам.
5 коментарів
Підписатись на коментаріВідписатись від коментарів Коментарі можуть залишати тільки користувачі з підтвердженими акаунтами.