Объясни «нормальным языком» — сможет ли филолог понять программиста?
Почему монолитная архитектура — это борщ, а фреймворк — это сарай? Мы попросили технарей Evrone объяснить простыми словами популярные IT-термины, а филологов попросили эти метафоры оценить. Осторожно, внутри текст, который может выбить из рабочего настроения.
Мы в Evrone решили позабавиться и размять мозги, поэтому придумали пятничную рубрику «Объясни гуманитарию». Задача была простой — найти понятное и забавное объяснение какому-то профессиональному термину через сравнение с чем-то очевидным. Как если бы программист объяснял что-то филологу...
Почему забавное? Так задача становится интереснее, рождаются внутренние мемы. В Evrone работают и не-технические специалисты, они не всегда понимают IT-юмор. А тут могли быть задействованы вообще все. В общем, ещё один плюсик в копилку корпоративной культуры.
К концу года мы собрали лучшие варианты, чтобы поделиться с вами. Они могут быть не очень точными — помните, в каждой шутке есть доля шутки.
Объектно-ориентированное и функциональное программирование
В ООП вы сначала объявляете ингредиенты и их свойства: «Я беру картофель — 1 кг, масло — 50 г, молоко — 300 мл». Потом создаёте рецепт — взять картофель, почистить, отварить и т.д. Когда блюдо почти готово, вы объявляете: «Это картофельное пюре, и оно готово».
В функциональном программировании вы сначала предупреждаете, что готовите картофельное пюре. А уже потом говорите, что для этого нужно сварить килограмм картофеля и т.д.
Контейнеризация, Docker и Kubernetes
Docker — это такие комнатки, в которых можно творить всякую дребедень.
***
Docker — это грядка, на которой растут ваши цветы. Kubernetes — садовник, который за ними ухаживает.
***
Если смотреть на принцип «всё, что происходит в Вегасе, остается в Вегасе», то Docker-контейнер — это ваша комната в отеле, а Kubernetes — управляющий отелем.
Гипервизор
Это надзиратель в тюрьме.
***
Это администратор в отеле. А виртуальные машины — его постояльцы.
Блокчейн
Допустим, вы хотите надёжно сохранить какую-то информацию, чтобы никто не смог её подменить. Записываете на бумажке и кладёте в прозрачный сундук, закрываете на замок. Ключ есть только у вас. Любой может прочитать, что написано на бумажке, но без ключа никто не может туда что-то дописать.
Дальше вы кладёте свой сундук в сундук Васи (тоже прозрачный). Вася рядом с вашим сундуком кладёт свою бумажку, где он пишет свою информацию, какую хочет сохранить неизменной, плюс описывает, какой сундук лежит внутри его сундука (допустим, он у вас был овальный).
Теперь любой может прочитать, что написано на вашей бумажке, и что написано на Васиной бумажке. Плюс каждый может подтвердить, что ваш сундук соответствует описанию на бумажке Васи, значит подмены не было.
Свой сундук Вася кладёт в сундук Пети. Тот тоже записывает что-то на бумажке и добавляет описание Васиного сундука. Ключ от сундука Пети есть только у Пети. И так далее.
Чем глубже ваш сундук в чужих сундуках, тем сложнее подменить вашу бумажку, потому что придётся выкрасть ключи у множества людей.
Монолитная и микросервисная архитектура
Микросервисная архитектура — это как будто все части тела существуют независимо друг от друга и могут изменяться. Нужно дотянуться до пульта? Удлиняется только правая рука. В монолите бы равномерно удлинилось всё тело.
***
Монолит — самозанятый или ИПшник. Все функции выполняет сам. А микросервисы — это уже основной специалист + бухгалтер, продавец и другие службы в поддержку.
***
Монолит — это борщ на глазок, а микросервисы — это борщ по рецепту. Если придерживаться рецепта, с большей вероятностью получится правильное блюдо. Если нужно много качественного и одинакового борща, то можно умножать пропорции ингредиентов и готовить в промышленных объемах. А если делать на глазок, то зависит от опыта. Борщ, может, получится и вкусным, но каждый раз делать одинаковый на вкус борщ будет трудно.
Legacy и технический долг
Технический долг — это забить на оплату ипотеки. Легаси — купить квартиру «с историей». К-к-комбо: купить квартиру «с историей» в ипотеку и перестать платить.
***
Технический долг — это добавлять в бефстроганов муку и делать это, не переставая. С каждым разом становится всё труднее перемешивать, а есть и подавно. В итоге получается… пирог? Но заказывали-то бефстроганов.
А легаси — это когда прошлый повар отдал клиенту этот пирог и уволился. Клиент всё ещё хочет бефстроганов, и вас нанимают превратить пирог в бефстроганов.
***
Технический долг — это когда вы начали писать книгу, но особо не знаете русский язык. Грамматические ошибки оставляете на потом, часть сюжета написана в стиле sci-fi, часть в стилистике западных вестернов. А одна глава вообще на хинди. Сюжет с открытым финалом, за всю историю сменилось 8 главных персонажей, куча сюжетных линий обрываются словами «И они поженились» или «И вдруг он умер». Вам, с одной стороны, хочется закончить книгу, а с другой — делать это всё сложнее.
***
Легаси — это как жизненный опыт. Можно принять ошибки и жить дальше, стараясь изменить свою жизнь к лучшему. А можно сжечь все мосты и попробовать начать новую жизнь. К сожалению, нельзя прожить жизнь без ошибок. Как и избежать легаси в проекте.
***
Легаси — это ВАЗ 2106 90-го года выпуска. Вы на ней ездите, но часть ресурсов неизбежно уходит на обслуживание. Можно купить новую машину, но это обойдётся слишком дорого. И вы постоянно находитесь перед выбором: чинить очередную почти-фатальную поломку или купить уже зимнюю резину.
А технический долг — это не купленная зимняя резина. В январе.
Фреймворки
Фреймворк — это конструктор, в котором уже есть необходимые сложные детали. Например, колёса для машин или человечки, которым нужно разве что нужную каску нацепить. А вот что именно вы построите — это ваше творчество.
***
Я думаю, что фреймворк можно сравнить с сараем. В зависимости от хозяина он либо разваленный с почерневшими досками и дырявой крышей, либо нормальный, ухоженный.
Вот вы заходите в чей-то сарай с разрешения хозяина и видите, что вот тут полочка с молотками, вот тут — с ручными пилами. В углу верстачок стоит. И решили вы сделать лучшую табуретку в мире. Столько всяких инструментов вокруг, что аж глаза разбегаются и хочется всё попробовать.
Сходили в соседний магазин за досками. Принесли их, распаковали и решили обтесать рубанком. Но вдруг быстро поняли, что рубанком не очень удобно, а вот у соседа был отличный строгальный аппарат. Как раз то, что нужно, чтобы сделать заготовки быстро.
Но просто так к соседу не прийти. Берёте бутылочку. Пришли, познакомились. Сосед за столом рассказал, как пользоваться строгальным аппаратом. Хорошо посидели.
Аппарат в вашем сарае, строгаете дерево. Начинаете сколачивать доски и понимаете, что двух рук не хватает, идеально бы использовать струбцину. А где её взять? Вот у соседа была, но у другого. Пришли, познакомились, посидели...
И вот после нескольких дней работы и знакомств с соседями у вас есть отличная табуретка, на которую и гостей не стыдно посадить.
Fullstack-разработчик
Это человек-оркестр.
***
И швец, и жнец, и на дуде игрец
DevOps
DevOps — это перевозка огромной модели космического корабля из Лего, которую вы делали вместе с друзьями. Только вы звоните старшему брату, а не заказываете услуги транспортной компании.
***
DevOps-специалист — это военком, который выдал приписное и ждёт, чтобы ничего не сломалось и вы благополучно отправились в нужную часть, не сломавшись до начала путешествия (на медкомиссии, например).
***
DevOps-специалист — это кот Леопольд, который говорит: «Ребята, давайте жить дружно». Он стоически выдерживает нападки «мышей» (требования разработчиков, менеджеров и т.д.) и делает так, чтобы все действительно жили дружно (т.е. то, что сделали разработчики, попадало в рабочую среду, хорошо работало, бизнес был доволен).
Репозиторий
Это такой архив документов, в котором каждое изменение по документу лежит на своей полочке. В любой момент времени можно посмотреть версию документа за определённую дату и время.
Нативная и кроссплатформенная разработка
Нативная разработка — это Нива (она же ВАЗ-2121). Машина собрана таким образом, что перенести эти разработки (полностью или хотя бы частично) и сделать другую машину не получится. Как ни собирай — будет Нива.
И тут на рынок врывается, например, Рено. У них куча разных машин, но по большому счету конвейер собирает их на базе одной платформы. А на выходе — и Аркана, и Логан, и Сандеро.
Потом Рено вступает в большой концерн, эту же платформу начинают использовать и для машин других марок. Получаются Ларгусы и X-RAY.
И вот получается, что платформу Рено может собирать куча заводов с разными конвейерами и под разными марками по всему миру. А Ниву делает только АвтоВаз…
***
Нативная разработка — костюм\обувь, сшитая по индивидуальным меркам, а кроссплатформенная — фабричное производство. И то, и другое свои функции выполняет, может быть разного качества. Но фабричный пиджак никогда не сядет по фигуре, как сшитый лично для вас.
***
Я бы сравнил со сковородами. Можно купить универсальную. Но тогда никакого стейка с полосочками. А можно купить гриль-сковороду, но она и дороже, и яишенку на ней уже не пожаришь.
***
Банан — кроссплатформенное средство питания, их можно есть везде. А вот свинина или говядина — можно сказать нативные, уже не подходят для некоторых стран.
Библиотеки
Представьте, что кто-то написал отдельную главу в своей книге, вы можете её вставить в свою книжку, и ничего за это не будет. Эти главы и есть библиотеки. Есть отдельные индивиды, которые совершают прорыв в своем деле и придумывают какие-то принципиально новые главы для чужих книг! Кстати, вам надо ещё уметь использовать главу так, как задумал автор.
***
Библиотеки — это панели, из которых строится типовое жилье. Нужно окно — берёте панель с окном, нужна глухая стена — берёте стену. Главное — подобрать подходящую. Просто иногда их приходится подпиливать на месте...
P.S.: Отдельные перлы
Будьте осторожны, впереди вас ждут холиварные шутки и субъективные мнения.
Контейнеризация нужна, чтобы обеспечивать работой сисадминов и называть их более модным словом Девопс.
***
Контейнеризация нужна, чтобы зарабатывать 300К\сек.
***
Fullstack — это когда за две работы деньги платят один раз.
***
Микросервисы — это штука для детей богатых родителей.
***
Тайм-менеджмент — это когда на попытки организовать время тратится времени больше, чем на полезную работу.
***
Как объяснить Highload филологу? Ну, это как час пик на кассе в МакДональдс. Только постоянный.
***
Highload — это как пробки. Если количество машин в Москве увеличится в 10 раз, то 10 МКАДов не поможет быстрее двигаться форд-фокусам. Нужны сверхскоростные вакуумные гиперлуп-поезда и электрифицированные скутеры для локального транспорта.
Умение объяснять сложное простыми словами упрощает и ускоряет коммуникацию. И чем сложнее то, что вы делаете (и чем больше профессиональной терминологии в этом присутствует), тем более прокаченным должно быть это умение. Попробуйте найти классную метафору — и вот не нужно длинных закрученных описаний.
Мнение редакции может не совпадать с авторским (и, кстати, кое-где не совпадает, но что поделать, мир не идеален). Evrone предупреждает, что материал может нанести непоправимую пользу вашему организму.
Спасибо филологическому факультету Воронежского государственного университета за помощь в оценке творчества наших программистов.
Объектно-ориентированное и функциональное программирование. Тут пример про сравнение подходов композиции и декомпозиции. Или восходящие и нисходящее программирование. Но не ООП и ФП =/
Определение ООП, к тому же, подменено определением императивного подхода, а это и процедурное программирование.
А с чем тогда сравнить ООП и ФП? Как объяснить простым языком?
ООП ниже описали, а ФП — это когда описываем борщ как сваренные порезанные почищенные помытые овощи на мясном бульоне.
ООП это про объекты и их взаимоотношение! Это значит. Берем девушку 1 штука. И отправляем ей сообщение сварить борщ! Вот это ООП. В зависимости от диспетчеризации (тут надо понимать к какой девушке вы обращаетесь..) будет выполнен какой-то результат.
Не, берём человека, умеющего готовить (реализующего интерфейс Повар). Это может быть шеф-повар ресторана, мама, жена, батя (но он жарит борщ), даём ему сообщение «сварить борщ». Возможно ему придётся передать ингредиенты, а может быть он их возьмёт сам из объекта Холодильник.
Но реализовать интерфейс Повар может и функция на Go. Является ли Go языком с ООП?
Go — не полноценный объектно-ориентированный язык, поскольку в нём нет наследования. Но писать в ООП-стиле на нём вполне можно.
Ну ты же понимаешь, что я просто докопался до формулировки :)
И так, просто для развития темы. Го является ООП языком в терминах Алана Кея — папы ООП, собственно. Который, кстати, считает C++ плохим примером ООП: "I made up the term 'object-oriented', and I can tell you I didn't have C++ in mind". Но другое дело, что идеи Алана и современное представление могут не очень совпадать.
Сообщения это исходный, smalltalk-подобный ООП, который сейчас везде практически забыт.
Везде забыт это где интересно? Практически все ОС на этом и работают. Даже самые инновационные как Fuchsia
Микросервисы — это штука для детей богатых родителей
Не в бровь, а в глаз =)
Это не для филологов, кажется, а для дебилов.
Представьте, что кто-то написал отдельную главу в своей книге, вы можете её вставить в свою книжку, и ничего за это не будет.Хотя если смысл в том, чтобы подгорело и у тех и у других, то да, вполне уместно
филологам, тех кого знаю, это так же интересно, как программерам филология. Вики описание почитать с обеих сторон - уже вырубает.
компания рекламится - ок, но ца непонятно кто, если честно.
Возможно, повысить узнаваемость HR-бренда для соискателей.
Классная идея!
Лучшее объяснение для гуманитария - вам это все равно не понять. (Гуманитарии обычно на это отвечают - «понятно»)
Мы уточнили у гуманитариев — им немного обидно. Самую малость)
Так или иначе приходится часто останавливаться во время разговора, и спрашивать "А ты знаешь что это вообще?". Но как правило мои объяснения не настолько отстраненные как в статье, они каждый раз адаптируются к человеку, в зависимости от его уровня знаний, интересов.
Скорее даже так - я делю процесс на мелкие итерации - а уже эти "кусочки" рассказываю в виде примеров. Потому что объяснить принцип работы и устройство, допустим, ДВС нельзя через "это как лошадь, где бензин - это яблоки, педаль газа - кнут, а тормоз - "тпруу!".
Мы не ставили своей целью найти наиболее точную формулировку. Зато здорово повеселились.
Кстати, с лошадью у вас получилось весьма неплохо) Представляете очереди на яблочные заправки?)
"Вам какие? Антоновка или гренни смит?"
P.s. А потом едешь и думаешь - вроде влезает 10кг, а скормили 12.
А вот не согласен. Легаси вполне может работать и жрать не просить. Да, внутри что-то может быть не оптимально, что-то в устаревшем стиле, а вносить изменения в него может быть адской болью. Но если не трогать, то и проблем не ловишь.
Я имею в виду, что "легаси" само по себе не должно носить негативный оттенок. И что ещё важно, легаси часто лучше вообще не трогать, потому что убьёшь тонну времени, чтобы на выходе получить хорошо если то же, что было до погружения (по качеству и скорости работы). А обычно только хуже делаешь, потому что выясняется, что это легаси было написано в лохматые годы каким-то вашим хардкорным Васяном написано хорошо. Просто это вы не умеете в хардкор, вам надо что-то модное современное. Ну а то, что в той реализации есть баг, который стреляет в каких-то граничных значениях, ну так проще врапер накатать за пару минут, который отфильтрует опасные значения и всё.
Трогать легаси чаще не нужно, чем нужно.
Ну, с другой стороны, мы видели фантастические и вылизанные «шестёрки». С такими хромированными колпаками...
Тут согласны с вами — негативный оттенок лишний. Но он есть. Возможно это всё мемы и холивары. Или общая тенденция «бросать всё с парохода современности» как только появляется новая модная технология.
позабавило )) довольно точное описание масштабирования
В описании фреймворка стыдливо избегают того, что ОЧЕНЬ часто этот фреймворк тащат ради какой-то мелочи, что раздувает проект и добавляет уязвимостей. И со временем это всё превращается в легаси (в уже плохом смысле слова) и мы получаем монструозное тормозное говно, напичканное уязвимостями. И любая попытка его обновить ломает все зависимости и делает его вообще неработоспособным.
А слава КПСС^W^WDevOps — это вообще не человек
Название хорошее, а главное актуальное!