LINUX.ORG.RU

RubyC-2015 представляет интервью с Эриком Михаельс-Обером

 , , , ,


2

2

В преддверии третьей киевской конференции RubyC-2015 (30-31 мая 2015 года), организаторы представляют интервью с Эриком Михаельс-Обером (Erik Michaels-Ober), рубистом из Германии, который стал RubyHero-2014. Эрик является популярным ментором среди разных Ruby-сообществ: Ruby Summer of Code, Google Summer of Code и Rails Girls Summer of Code. В рамках RubyC-2015 Эрик представит тему Crystal programming language, подробности о которой можно узнать на сайте http://rubyc.eu/#speakers, а больше узнать о самом Эрике — из его ответов.

Я начал полноценно работать на Руби в 2006 году, когда моя команда решила перевести наше веб-приложение с PHP на Rails. Rails на тот момент был на уровне версии 1,0. Кажется, мы использовали Ruby версии 1.8.4 и веб-сервер Mongrel. Это было еще до Rack, Bundler, RubyGems.org или GitHub. Оглядываясь назад, трудно себе представить работу на Руби без этих инструментов, которые я сейчас использую каждый день.

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

Ruby, как язык, очень классный, но намного больше мне нравится Ruby-сообщество. Будучи его частью, я общаюсь с замечательными людьми по всему миру. Мне нравится встречать новых Ruby-программистов на Meetup’ах и конференциях. Я очень много узнал от тех, кто открыто делится своими знаниями в своих блогах, подкастах, видеороликах и т.д. Я люблю Rails Girls, RailsBridge и другие ИТ-сообщества, которые делают программирование более разнообразным и содержательным. Мне по душе творческий дух Ruby-сообщества, который вдохновляет на создание таких проектов как Artoo, Kids Ruby, Shoes, Gosu, Sonic Pi и т.д.

Я думаю, что Ruby будет лучше, если его синтаксис будет более последовательным. Например, в Ruby есть 2 различных способа сделать хэш и 7 различных способов сделать функцию (def, proc, Proc.new, lambda, ->, {}, do…end) по сравнению с JavaScript, который имеет единый синтаксис хэша/объекта и один способ определить функции, независимо от того, именованная ли это функция или анонимная. Ruby также имеет слишком много псевдонимов по сравнению с философией Python, которая говорит, что должен быть только один очевидный способ сделать что-то. Дизайн – это искусство принятия решений. При наличии нескольких имен для одного метода (например, map/collect, reduce/inject, find/detect, find_all/select и т.д.), создатели Ruby избегали жесткого решения, передав этот выбор пользователю. Ruby также имеет много похожих имен для методов, которые несколько отличаются (например ==, ===, eql?, equal?). Я использую Ruby ежедневно в течении почти 10 лет, и я до сих пор не могу вспомнить разницу между eql? и equal?, не посмотрев подсказку. Мне бы хотелось, чтобы эти методы имели более описательные имена. Другим примером являются тонкие различия между alias и alias_method, или private и protected. Думаю, Symbol можно заменить на frozen String и удалить из пользовательской части языка. Есть несколько других языковых «особенностей», которые я хотел бы исключить из Ruby, если бы мог, например глобальные переменные, пришедшие из Perl. На мой взгляд, это не связано с остальной частью языка. Есть также много плохо поддерживающегося и устаревшего кода в стандартной библиотеке Ruby. Хотелось бы чтобы стандартные библиотеки обновлялись, для использования новых возможностей языка, например keyword arguments. Если подобные функции не используются для основных/стандартных библиотек, их нужно исключить, так как они создают ненужные сложности. Было бы замечательно, если бы в Ruby была возможность находить некоторые виды ошибок на начальной стадии (во время запуска). И еще не помешал бы динамический компилятор, способный генерировать бинарные файлы. И лучшую производительность выполнения. Я начал использовать вместо Ruby Crystal, которому и будет посвящен мой доклад, так как в нем есть большинство функций, которые мне нравятся в Ruby и отсутствуют те, которые мне не нравятся.

Если говорить о самой ужасном архитектурном решении/коде, который я когда-либо встречал, первое, что приходит на ум, это то, как Rails выполняет проверку уникальности. Для тех, кто не знает, он просто делает SELECT, чтобы увидеть, существует ли поле, прежде чем делать INSERT. Первая проблема заключается в том, что эти две операции не делаются в транзакции, так что возникают условия для появления гонок сигналов, которые позволяют вставлять неуникальные записи. Тем не менее, транзакции, в принципе, не очень хорошее решение, так как они вызывают слишком много блокировок таблиц. Лучшим решением является просто создание уникального индекса на этом поле в базе данных, что гарантирует правильность и оптимальную производительность. Подход Rails к валидации уникальности – это слабая защита, которая дает пользователю ложное ощущение безопасности.

Самой впечатляющей новостью о Ruby в 2014 году, была новость о создании RubyBench.org Аланом Го Сян Таном (Alan Guo Xiang Tan). Это невероятно ценный (и давно ожидаемый) вклад в сообщество Ruby. Этот проект будет гарантировать рост производительности Ruby, и с каждым релизом он будет становится все быстрее. Если бы RubyBench существовал раньше, он мог бы предотвратить потерю производительности в Ruby 1.9.

Жизнь после Ruby – это Crystal! Чтобы узнать больше – приходите на мой доклад в Киеве.

В данным момент я работаю над переписыванием Twitter CLI под Crystal а также обучаю студентов на Rails Girls Summer of Code.

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

Мои любимые Ruby блоги/сообщества/сайты:Ruby-Talk , Ruby Weekly и This week in Rails рассылки. Блоги: Aaron Patterson, Aman Gupta, Sam Saffron, James Edward Gray II, Thomas Reynolds, Sandi Metz, Tom Stuart, Avdi Grimm, Jessica Kerr, Pat Shaughnessy. Также я читаю много блогов, не имеющих отношения к Ruby.

Я рекомендую книгу “Ruby Under a Microscope”, Pat Shaughnessy, поскольку это захватывающий взгляд на то, как работает Ruby изнутри. Я также рекомендовал бы Practical Object-Oriented Design in Ruby, Sandi Metz каждому Ruby-программисту, который еще ее не читал. Для лучшего понимания IT, как области знаний, я рекомендую Understanding Computation, Tom Stuart. А для совсем начинающих, я рекомендую Learn to Program by Chris Pine. Ну и наконец, книга Why's (Poignant) Guide to Ruby, занимает особое место в моем сердце.

Мой личный лайфхак: добавь такую строку в свой crontab: */30 9-17 * * 1-5 say «Stand up and walk around».

>>> Оригинал статьи



Проверено: Shaman007 ()

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

Эпичненько.

ymn ★★★★★ ()

Фигня это все. Прогал на нем 1.5 года, потом перешел на пайтон, и жизнь наладилась.

anonymous ()

Ruby помог мне осознать, что люди ценнее компьютеров.

Ruby приводит к серьёзным заблуждениям.

te111011010 ()
Ответ на: комментарий от Mystra_x64

Теперь ты считаешь пробелы? :}

Пробелы в жизни сишников и рубистов.

anonymous ()
Ответ на: комментарий от Mystra_x64

Своей то нет

Написал анимешник Мюстра_х64, девиз которого «ни дня без комментария на лоре».

anonymous ()
Ответ на: комментарий от ymn

Это все очевидно еще со времен общелиспа. Вот теперь и остальные начинают понимать.

loz ★★★★★ ()

подтверждать когда будем? ёпта!

anonymous ()
Ответ на: комментарий от ymn

Тоже написано в книге «чистый код». Это самая убогая и жалкая книга, которую я читал в своей жизни. Даже в туалет с ней не сходить и печь не растопить, потому что электронная.

unt1tled ★★★★ ()
Ответ на: комментарий от te111011010

тот, кто думает, что руби приводит к серъёзным заблуждениям - серъёзно заблуждается.

anonymous ()

Спасибо за конференцию и за статью, очень интересно!

anonymous ()

А он чего-нить нужное писал?

ya-betmen ★★★★ ()

Но ведь этот игрушечный язык умер. Даже в рассылочке ruby weekly нытье про разложение пошло.

entefeed ()

Кто это вообще такой и что делает в моих новостях? Кому интересно интервью какого-то рабибыдлокодера?

alright ()

книга Why's (Poignant) Guide to Ruby, занимает особое место в моем сердце

Кто-нибудь ее пробовал читать? Автор - гиперактивный шизофреник и даже на теме книги не может сосредоточиться (если она конечно все же по Ruby).

dearboy ()
Ответ на: комментарий от dearboy

Я пробовал читать. Авторские отступления действительно прекрасно затуманивают суть.

anonymous ()
Ответ на: комментарий от dearboy

Нормальная книга. А ты просто зануда.

anonymous ()

Опять куев?

anonymous ()
Ответ на: комментарий от unt1tled

Тоже написано в книге «чистый код». Это самая убогая и жалкая книга, которую я читал в своей жизни. Даже в туалет с ней не сходить и печь не растопить, потому что электронная.

Вот и еще один долбоеб отметился. Давай, мальчик, раскройся.

LongLiveUbuntu ★★★★★ ()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.