
Давным-давно, в королевстве * OP, совсем недалеко, жила принцесса по имени ООП.

Все знали ООП, и многим она нравилась. Однажды у нее появилась младшая сестра по имени ПОП.

Людям не нравился POP. Некоторые находили ее слишком молодой, другие не понимали, когда она говорила. Но правда в том, что люди боялись. Они боялись старого Красти, а старый Красти не любил принцессу Поп.

Из-за этого бедная принцесса ПОП регулярно оказывалась одна в своем крошечном замке на границе королевства.

Однажды отважный рыцарь королевства решил навестить принцессу ПОП. Жители деревни рекомендовали этого не делать, потому что старый Красти жил в дороге. «Я не боюсь Красти», - сказал рыцарь и отправился в путь к замку ПОПа. По пути он прошел мимо дома Красти, но двери и ставни были закрыты. На самом деле старый Красти давно умер.

«Так лучше», - подумал рыцарь и пошел своей дорогой. Он прибыл в замок и впервые встретил принцессу ПОП.
Она была немного похожа на свою старшую сестру, но моложе, свежее и веселее.

В честь рыцаря была устроена вечеринка. Он был обрадован, но и удивлен. Он привык к вечеринкам в замке ООП, но они всегда были очень официальными, очень семейными. Например, если был приглашен UIButton, вы могли быть уверены, что его мать, UIView, будет там, и старая бабушка NSObject тоже будет там. С POP все было иначе. UIButton мог праздновать с помощью String и Int. Рыцарь нашел атмосферу более дружелюбной и решил остаться на несколько дней, чтобы лучше узнать принцессу.

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

Затем он попросил ее создать массив протоколов со связанными типами. Она замерла и категорически отказалась. Рыцарь вскоре понял, что у принцессы есть злой близнец.

Этого злого близнеца звали ПАТ, и на все, на что соглашалась принцесса, он отказывался. Через несколько дней рыцарь неоднократно сталкивался с PAT. Он был разочарован. Может, поэтому людям не нравился POP, может, они тоже встречали PAT? Рыцарь не решался уйти, пока в другой раз не встретил PAT. В тот день рыцарь боролся со своим резюме.

«Я могу использовать только одно оружие, но я не знаю, какое выбрать!» - сказал рыцарь. Затем пришел PAT и сказал ему: «Попробуй!».

Это было прекрасно. После этого рыцарь и ПАТ стали лучшими друзьями. Рыцарь решил навсегда поселиться в замке Попа, но продолжал регулярно посещать ООП.

И в заключение, но это между нами секрет, он тоже был на вечеринке у принцессы ФОП!
Это молниеносный доклад, который я произнес на @ dotSwift ’16 https://youtu.be/BpBqutfpSPQ. Идея заключалась в том, чтобы поднять интерес к программированию, ориентированному на протокол, которое было для меня самым большим заявлением о WWDC ’15 (наряду с открытым исходным кодом), но не привлекло должного внимания.
Этот разговор был также возможностью отдать дань уважения великим переговорам:
- Королевство * OP: Грэм Ли - * ориентированное программирование @iwasleeg
- Crusty: Протоколно-ориентированное программирование в Swift - WWDC 2015… @DaveAbrahams
- MacDonalds & Starbucks: dotSwift 2015 - Дэниел Стейнберг - Гадкий американец учится Swift @ dimsumthinking
- PAT: Алексис Галлахер - Протоколы со связанными типами @ alexisgallagher
Изменить: я изменил пример резюме рыцаря, благодаря Джордану Роузу https://twitter.com/UINT_MIN/status/695476669436399617