Почему рубин важен

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

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

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

Языки программирования возникли на стыке творчества и практического применения, будучи новым нововведением, существовало ограниченное руководство по вопросам архитектуры и дизайна, аппаратные и инфраструктурные ограничения ограничивали объем и размер проектов, и многое из того, что происходило, было экспериментальный. Взрыв, который произошел в течение следующих нескольких десятилетий (и все еще в самом разгаре), сбил нас всех с толку, компьютеры стали более мощными, и с их помощью можно делать больше, чем когда-либо прежде, сети стали повсеместно с появлением Интернета, и вещи становятся все более компактными и портативными. Постоянно возникают новые проблемы, открываются новые закономерности и пересматриваются другие, и все это заставляет все больше и больше людей пребывать в настроении экспериментировать.

Экспериментировать с программированием — это здорово, например, играть музыку, рисовать или решать головоломки, мы уходим от этого опыта с удовлетворением и гордостью. Его часто называют искусством программирования, а нас называют мастерами-программистами — и это так, и мы это, но использование компьютеров в выполнении жизненно важных задач становится все больше, и все большее число процессов автоматизируется. Когда это то, с чем мы работаем, к задаче программирования следует подходить как к инженерной дисциплине, а не как к ремеслу или искусству.

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

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

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

Понимание того, что важно

Каковы основные качества, которые делают определенное выражение кода хорошим? В контексте снижения рисков, указанных выше, это должно быть:

  • Код, который легко усваивается и обдумывается — намерение должно быть ясным, чтобы у любого разработчика, которому будет поручено работать над ним в будущем, не было двусмысленности. Вы бы чувствовали себя в безопасности, летая на самолете, который обслуживает механик, который лишь отчасти был уверен, что все сделал правильно?
  • Код, предназначенный для расширения в будущем. Все может запутаться довольно быстро, так как специальные функции добавляются креативным образом. В идеале лучше потратить время на реструктуризацию кода. включая изменения, но это редко возможно в нашем обществе, управляемом капиталом, где вырисовываются крайние сроки. Код, составленный с учетом гибкости, — это лучший из имеющихся у нас способов минимизировать время, необходимое для адаптации к изменениям.
  • Код, который легко тестировать и легко проверять. Я еще не встречал человека, который не делал ошибок, код, который легко тестировать и легко проверять, повышает вероятность выявления проблем, которые могли бы иначе проскочил.

Что такое современный программист? Это кто-то со степенью магистра в этой области или эксперт в какой-то другой области, который научился программировать? Это бросивший школу из-за склонности к программированию или дизайнер, который покопался в чем-то и влюбился? Любитель, решивший сделать на этом карьеру, или предприниматель, решивший засучить рукава и взяться за дело? Физик, которому есть что выразить, или математик, который сменил поле? — Современный программист — все это среди множества других историй происхождения, у всех разные точки входа, мотивации и амбиции.

Как современные программисты (как новички, так и постоянные), стремящиеся улучшить качество нашего кода, что нам на самом деле нужно в экосистеме?

  • Язык программирования, который не мешает — это все концепции, на которых мы хотели бы сосредоточиться.
  • Надежная вспомогательная база знаний по предмету — как можно ознакомиться с концепциями без подходящего предмета.
  • Адаптируемая экосистема, идущая в ногу со временем — нас не интересует устаревшее и устаревшее.

Я думаю, что экосистема Ruby отвечает всем требованиям, и мне трудно найти лучшее соответствие, давайте подробнее рассмотрим, почему.

Рубин в грубой форме

Это пост не об истории Ruby, поэтому я не собираюсь углубляться в его прошлое (поищите, хотя это интересно), а вместо этого сосредоточусь на его настоящей и будущей ценности. Некоторые из вас, возможно, уже знакомы с этим языком, а другие могут только слышать о нем сейчас. Он был фаворитом стартапов более десяти лет, но в последние годы потерял часть своего блеска из-за ажиотажа и новых тенденций.

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

Однако мантры не раскрывают суть основного пережитого недовольства, которое было достаточно серьезным, чтобы оправдать переход в совершенно другую экосистему. Наблюдая за этой тенденцией какое-то время, я подозреваю, что большая часть реальных рассуждений коренится в эмоциях, которые никоим образом не отражаются в упомянутых мантрах. Общие причины (если они могут быть изложены честно) могут включать, но не ограничиваться этим;

  • Наша врожденная тяга к новым впечатлениям — гораздо проще убедить компанию принять что-то лучшее, чем принять что-то, потому что мы находим это привлекательным.
  • Наши трудности с принятием своих недостатков — наше эго отлично умеет защищать нас от эмоционального дискомфорта, оно позволяет легко обвинять наши инструменты, когда мы берем на себя вину за беспорядок в коде после того, как мы так усердно работали над сделать это правильно было бы гораздо более болезненным.
  • Нам трудно выявлять свои недостатки — мы преодолеваем наше эго, признаем, что напортачили с реализацией, и полны решимости изучить лучшие практики. Немногие компании будут достаточно понимающими, чтобы дать нам еще один шанс, тогда есть наша репутация и семья, которая зависит от нас. На этот раз мы позволяем инструментам взять на себя жару и молча клянемся, что в следующем раунде будем работать лучше.
  • У нас есть большой интерес к новой вещи — мы можем чувствовать себя особенно праведными из-за того, что мы проделали какую-то работу над инструментом в другой экосистеме, который, как мы знаем, в той или иной степени превосходит этот. инструмент, но нас расстраивает то, что никто другой не знает об этом, и мы знаем, сколько шума нам придется поднять, чтобы привлечь внимание людей, довольно сложная задача, но это для общего блага, и кто-то должен это сделать, верно? ?
  • Окупаемость - это &^%$#. Был случай, когда мы предоставили этому сообществу что-то очень ценное, и они сказали, что это не соответствует тому, что они пытались сделать, это покажет их.
  • Нам нравится наша экосистема, давайте станем лучше — кого мы собираемся раскритиковать сегодня?

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

Языков программирования предостаточно, и все они имеют свои идеологии, на фундаментальном уровне большинство из которых приписывают в первую очередь одну из трех парадигм; Процедурный, Функциональный или Объектно-ориентированный, и эти парадигмы закладывают основу философии языка. Кроме того, разработчики языков могут смешивать аспекты других парадигм и свои собственные принципы, воплощая в жизнь свое уникальное выражение. Затем вокруг языка формируется сообщество, и его эволюция с этого момента зависит от очень многих факторов.

Выбирая язык, я предпочитаю оценивать его достоинства и философию, а не то, что генерирует машина ажиотажа. Я смотрю на такие вещи, как проблемы, которые он пытается решить, и как он их решает, как его сообщество реагирует на новичков и как участники реагируют друг на друга, насколько активно он развивается, чем он известен и, наконец, как язык заставляет меня чувство — довольно важный фактор, учитывая огромное количество часов, которое человек тратит на работу с кодом, если этот опыт не будет приятным, то зачем вообще этим заниматься?

Создатель Ruby рассказывает о том, что повлияло на его дизайн.

Часто люди, особенно инженеры-компьютерщики, сосредотачиваются на машинах. Они думают: «Сделав это, машина будет работать быстрее. При этом машина будет работать более эффективно. Сделав это, машина сделает что-то, что-то, что-то». Они сосредоточены на машинах. Но на самом деле нам нужно сосредоточиться на людях, на том, как люди заботятся о программировании или управлении приложениями машин.

― Юкихиро Мацумото —создатель Ruby

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

Язык программирования, который не мешает — проверьте.

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

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

Эти усилия выходят за рамки обмена и поддержки сообщества, в Интернете доступно большое количество статей, книг, курсов, подкастов и видеоконференций, и хотя мы не будем вдаваться в подробности написания более качественного кода в этом посте ( мы сделаем это в другой раз), вы можете легко найти качественные материалы на эту тему от ветеранов отрасли и профессионалов, таких как Авди Гримм, Дэйв Томас, Кент Бек, Мартин Фаулер, Роберт Мартин, Расс Олсен и Сэнди Мец назвать несколько. Текущий, активно развивающийся и в Ruby.

Самой большой изюминкой экосистемы Ruby является Ruby On Rails, и впредь — Rails. Rails, веб-фреймворку, можно приписать большей части первоначального принятия Ruby и известности в сфере веб-разработки. Rails был воротами в индустрию для многих, привлеченных удобством Rails, в котором предпочтение отдается соглашениям, а не конфигурации. Однако Ruby — это не только Rails, и хотя многие ссылаются на такие индексы, как индексы TIOBE и RedMonk, как на свидетельство уменьшающейся доли рынка Ruby и индикатор обреченности, я могу рассматривать это только как нагнетающий страх аспект современной шумихи, что это .

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

..Наклон просветления — и текущая стадия цикла Руби. Ruby, Rails и остальная часть экосистемы живы и процветают, уверяю вас. Но еще раз, не верьте мне на слово, поищите работу над Ruby 3 (метко помечен как 3x3, потому что она должна быть в три раза быстрее) и гильдии, поищите очень мало - высоко оценена работа, проделанная над альтернативными реализациями; JRuby, mRuby, Rubinius и TruffleRuby, а затем следите за активностью вокруг нескольких выдающихся жемчужин Ruby.

Некоторые из определяющих характеристик фазы Наклон просветления определены как;

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

Это выражается в увеличении количества контента, исследующего различные способы передачи намерений с помощью Ruby, а также в прекрасной работе над новыми драгоценными камнями, такими как те, которые составляют коллекцию dry-rb, Rom-rb, Trailblazer и Hanami. Происходит совсем немного, не так ли?

Адаптируемая экосистема, идущая в ногу со временем — проверьте.

В Кодеру-новичку; Планирование курса мы коснулись трудностей развития мышления новичка, а здесь мы рассмотрели важность изучения концепций, улучшающих качество кода.

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

Первоначально опубликовано на www.matterofquaint.blog 8 октября 2017 г.