В последнее время я чувствую прилив уверенности, когда переключаюсь с изучения Javascript на пути Hack Reactor к изучению Ruby с помощью The Firehose Project (TFP), потому что довольно быстро освоить другой язык - это увлекательно. Несколько месяцев назад мне было трудно понять, что выбранный мной язык не так важен, как изучение фундаментальных принципов компьютерного программирования. Изучение Ruby было относительно простым (до сих пор), потому что большинство объектно-ориентированных языков, таких как Ruby и Javascript, имеют ОЧЕНЬ общих черт. Выучить новый язык не так страшно, как вы можете себе представить.

Подождите, а что я имею в виду, когда говорю, что Ruby и Javascript являются объектно-ориентированными языками? Раньше программы предоставляли компьютеру список инструкций, указывающих компьютеру, что делать, шаг за шагом, в которых использовалось процедурное / императивное программирование. Эти языки очень интуитивно понятны для людей, потому что они имитируют то, как мы используем логику в нашей повседневной жизни. Хотите рассчитать сумму чаевых официанту за отличную еду? У нас есть входные данные (стоимость еды, процент чаевых), расчет (стоимость еды + (стоимость еды * процент чаевых)) и наши выходные данные (общая стоимость еды, включая чаевые). Вычисление - это код, который мы напишем для выполнения действия с данными. Действия хранятся отдельно от данных на процедурных языках.

Что ж, если эти программы настолько просты, зачем вообще возиться с объектно-ориентированными языками? Давайте сначала разберемся, что такое объекты. Объекты содержат как данные (переменные), так и действия (методы), которые будут применены к данным в модульный блок. ключ - это ярлык, который мы используем для доступа к данным и действиям, которые мы хотим использовать, точно так же, как нам нужен ключ от дома. Все еще не понимаете? Совершенно нормально. Я собираюсь использовать пример из Programming Ruby: The Pragmatic Programmer’s Guide Дэйва Томаса, Энди Ханта и Чада Фаулера.

Представьте, что вы хотите сыграть песню на музыкальном автомате (и что вы носите Pink Lady или T-Bird Jacket). Музыкальный автомат - это ваша программа в целом. Было бы обломком иметь в музыкальном автомате только одну песню! Как программист, я мог бы пойти дальше и вручную написать код для описания каждой песни на музыкальном автомате ... но программисты ленивы, и есть гораздо лучший способ справиться с этой проблемой. Это подводит нас к основному принципу компьютерного программирования - не повторяйся (DRY). Это не только хорошая новость для ленивых программистов, но и лучший способ написать лучший код за меньшее время. Например, предположим, что вы вручную копировали и вставляли свой код для каждой песни, когда понимаете, что неправильно написали ключ для названия песни как «tittle». Что ж, теперь вам нужно возвращаться к каждой песне, чтобы исправить ошибку… и представьте, что у вас есть музыкальный автомат с сотнями песен… гррр! А потом вы пропустите одну-две песни? GRRR! Или что, если ваш босс решит сообщить вам, что после того, как вы написали все эти песни, вам нужно добавить ключ к жанру песни… Я думаю, вы начинаете понимать, почему это ужасный подход к программированию.

Прелесть объектно-ориентированного программирования заключается в том, что мы можем иметь блок кода, содержащий все ключи и связанные с ними данные и действия в одном автономном модуле. Как мы строим эти объекты? Вот тут-то и пригодятся занятия. Не пугайтесь всей этой терминологии. Он утонет и сделает вашу жизнь намного проще в долгосрочной перспективе. Вы больше не Pink Lady или T-Bird 1950-х годов, вы представляете себя другим персонажем десятилетия. Вы один из многих ветеранов Великой Отечественной войны, которые вернулись домой после войны и устали от переполненного и некачественного жилья. Застройщики должны строить дома быстро, поэтому вместо того, чтобы проектировать и строить каждый дом по отдельности, они снова и снова использовали один и тот же план для строительства этих жилых комплексов в стиле урочища. Мы можем рассматривать класс как план, а объекты - как отдельные дома. Мне было невероятно полезно узнать, что слово «объект» может использоваться взаимозаменяемо с экземпляром класса.

А теперь развлекайте меня, когда мы снова возвращаемся к примеру с музыкальным автоматом. Поэтому вместо того, чтобы копировать и вставлять наш код и создавать столько головной боли, мы можем определить класс для представления каждой песни в нашем музыкальном автомате, который представляет собой комбинацию состояния песен (например, название песни) и методов, которые используют это состояние (например, воспроизвести песню). Это значительно упрощает процесс создания новой песни. И пока наше определение класса не содержит ошибок, все объекты, построенные на основе этого чертежа класса, также не будут содержать ошибок. Да!

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