Недавно меня спросили, чем разработка на C# отличается от разработки на C++. В результате родилась идея объяснить значение тех или иных ИТ терминов на примере процесса выращивания картошки.
Представим, что вам необходимо посадить картошку. У вас есть много способов решения этой задачи.
Вы можете найти человека с трактором, который приедет и посадит вам картошку, а также человека, который будет следить за тем, чтобы человек с трактором правильно посадил картошку. Они приедут со своей картошкой.
Это аутсорсинг (outsourcing).
Вы можете найти человека, который на вашем тракторе посадит вам вашу картошку.
Это аутстафинг (outstaffing).
Вы можете найти человека, который приедет, чтобы сделать замеры огорода, предложит несколько моделей тракторов и оптимальный режим работы тракториста. В этом случае картошку никто сажать не будет, но вы будете точно знать, как это сделать.
Это R&D, или научно-исследовательская работа.
Вы можете позвать соседа Колю, чтобы он посадил вам картошку за бутылку водки и 2 пачки сигарет.
Это фриланс (freelance).
Вы можете позвать всех свох родственников, соседей, друзей и вместе посадить картошку.
Это краудсорсинг (crowd sourcing).
Вы можете пройтись по друзьям, соседям, родственникам и рассказать о том, что вы лучше всех знаете, как сажать картошку, но для этого вам необходимы финансы. Вы обещаете, что как только вы соберете картошку, вы обязательно накормите всех, кто помог, первыми.
Это краудфандинг (crowdfunding).
Вы можете взять плуг, несколько ведер, картошку, книгу "Посадка картошки за 21 день" и самому посадить картошку. Но, если вам нужно будет посадить другой сорт картошки, то вам нужно будет перекопать огород еще раз. Риск: ночью может наведаться сосед и выкопать вашу закопанную картошку.
Это разработка на Wordpress.
Вы можете взять лопату и посадить картошку на огороде, где уже есть удобрение, выкопаные ямки и стоят стрелки, в каком порядке сажать картошку.
Это разработка на .NET/C#.
Вы сначала с нуля делаете лопату, потом вёдра, изучаете состав почвы, после чего считаете вручную количество картошки. После чего вам необходимо выкопать столько ямок, сколько у вас картошки. Далее нужно последовательно заполнить все ямки картошкой. Пропускать ямки нельзя, так как вас ударит током.
Это разработка на C++.
Вы можете прийти к председателю колхоза, и сказать ему, что вы лучше всех знаете, как сажать картошку, однако в этом году вы её сажать не будете, но 100% вы займетесь этим в следующем году. И это будет реально круто, а урожай будет в 10 раз больше, чем урожай соседа. Поэтому вам нужны сейчас деньги, лопаты, трактор, тракторист (лучше два), пять копателей и секретарша.
Это питчинг стартапа перед инвестором.
Ваш прадед сажал картошку, ваш дед сажал картошку, ваш отец сажал картошку. И вы тоже продолжаете сажать картошку.
Это поддержка продукта (support).
Копая картошку, вы время от времени выкапываете ту, которую сажал еще ваш отец и дед.
Это legacy код.
В 8:00 утра вы со своим другом, отцом и соседом собираетесь на огороде, чтобы обсудить прогресс по посадке картошки. Вы рассказываете всем присутствующим о том, что вчера вы сажали картошку, сегодня тоже будете сажать картошку и у вас нет никаких проблем, которые мешают вам сажать картошку, кроме комаров, которые постоянно вас кусают. Но это не повлияет на качество и скорость посадки картошки и будущий урожай. После этого все берут лопаты и продолжают сажать картошку.
Это scrum-митинг.
Вы посадили картошку. Через некоторое время она начала прорастать. И в вашей картошке начали появляться колорадские жуки. Вы начинаете их травить, собирать вручную, давить и поджигать. Большинство из них вам удается уничтожить, но через некоторое время они кое-где появляются снова.
Это отладка (debugging) кода и исправление ошибок (bug fixing).
Вы посадили картошку. На огород пришел ваш отец и сказал, что картошка посажена криво и вы забыли оставить место для свеклы. Поэтому вам нужно пересадить часть картошки. Через два дня, когда вы заканчиваете работу, приходит ваш дед и говорит, что глубина, на которую вы закопали картошку, не достаточна, и поэтому вам нужно переместить всю картошку на 5 см ниже. А сам идет пить пиво с соседом Колей и вашим отцом.
Это руководитель команды (Team Lead), проджект менеджер (Project Manager) и рефакторинг (refactoring).
Вы хотите немного подзаработать. Вы идете к соседу Коле и говорите, что хотите помочь ему посадить картошку. Сосед просит вас показать самую большую картошку, которую вы вырастили в прошлом году, а также назвать имена других соседей, которым вы уже сажали картошку в прошлом. Сосед также спрашивает вас, почему вы пришли именно к нему сажать картофель, на что вы должны ответить, что всю жизнь мечтали сажать картофель только на его огороде. Затем вас попросят объяснить разницу между граблями и садовыми ножницами, рассказать о лучших граблях, с которыми вам приходилось работать, а также детально объяснить процесс заготовления сена и чистки колодца. И только после того, как мать соседа подтвердит, что "знает этого малого", вам выдадут самую тупую лопату и вы начнёте сажать картошку.
Это интервью в сервисную компанию.
Вы приходите к соседу Коле и набираете в его погребе картошку, чтобы посадить у себя на огороде. Обещаете, что когда ваша картошка вырастет, то часть вернёте назад или поможете в следующем году её посадить. Вы, конечно, ничего не делаете, и через год снова идете к соседу, чтобы взять у него немного картошки.
Это программное обеспечение с открытым исходным кодом (open source).
У вашего села есть большое поле, где люди из окрестностей выбрасывают свою картошку, а иногда и другие овощи. Кто-то выбрасывает гнилую картошку, а кто-то — хорошую. Поэтому вы принимаете решение не сажать свою картошку, а вместо этого периодически наведываетесь на поле, чтобы насобирать там картошку.
Это StackOverflow.com.
Вся ваша семья сажает в селе картошку. А вы в это время ходите по рынку и рассказываете всем о том, что у вас есть родственники, которые могут качественно и быстро посадить картошку, которую они смогут дорого продать на этом же рынке.
Это sales-менеджер, продающий свою offshore команду.
Вы просто хотите посадить картошку наедине. Но на огороде собралась сотня незнакомых вам людей. Они не помогают вам сажать картошку, но внимательно наблюдают за процессом. После того, как вы закапываете картошку в ямку, все быстро начинают записывать в блокнот количество ямок, рядов и сколько картофеля осталось в мире. Затем обмениваются своими блокнотами и бегут к вашему соседу, который тоже сажает картошку. Никто из наблюдателей не верит вам, что вы только что посадили картошку, пока не перепишут всю информацию с других блокнотов.
Это блокчейн (blockchain).
Вы печатаете на принтере 1000 фотографий с картошкой. Каждую фотографию продаете своему соседу за 1 долар, рассказывая, что сажать реальную картошку — это прошлый век и уже очень скоро эта реальная картошка никому не будет нужна, а все будут есть фотографии картошки. А поскольку напечатать новые фотографии в будущем будет невозможно, то эти фотографии будут расти в цене. Поскольку реальная картошка у всех, а фотографий нет ни у кого, то соседи с радостью покупают фотографии. Но на ужин всё еще варят реальную картошку. В это время в соседнем селе другие люди продают другие фотографии картошки и рассказывают, что только эти фотографии будут иметь ценность через 10 лет.
Это биткойн (bitcoin).
У вас есть 10 га с картошкой. Вы начинаете ее выкапывать. Но вас интересует не вся картошка, а только картошка квадратной формы, зеленого цвета и похожая на Микки Мауса. После того, как вы выкопали всю картошку, забираете найденных десять картошек, соответствующие вашим критериям, и идете домой.
Это Data Mining или поиск знаний в больших массивах данных.
Вы живете в селе, где уже 20 лет никто не сажал картошку. Но вы уверены, что где-то она есть. Поэтому вы берете лопату и начинаете перекапывать все подряд — огороды, тропы, поля, лесопосадки и даже озера. Через некоторое время упорного труда вам таки везет и вы действительно выкапываете картошку. Через некоторое время уже всё село начинает искать картошку, перекапывая всё подряд.
Это майнинг криптовалюты (cryptocoin mining).
Картошка много может рассказать о том, кто её вырастил. Например, добросовестный ли хозяин её вырастил, чем удобрял землю, какими инструментами пользовался, вырастил ли он её сам или, может быть, просто украл у соседа, а еще красивая ли у него жена.
За селом есть место, куда все жители должны отправлять образцы своей картошки, чтобы все желающие могли оценить их труд.
Но со временем это место превратилось в свалку. Кто-то картошку вообще отказался нести, кто-то принёс гнилую картошку, а кто-то начал рассказывать, что картошка у него есть, но показывать он её не будет. Некоторые люди установили охрану и начали брать деньги с каждого, кто хочет посмотреть на картошку.
Со временем, чтобы найти картошку конкретного человека, нужно перебрать горы мусора.
Это открытые данные (open data).
Вы накопали много картошки. К вам приехал председатель колхоза и выдал документ, где написано сколько картофеля вы накопали. Но чтобы прочитать этот документ, вам нужно ехать назад к председателю колхоза, потому что он единственный в селе умеет читать. Другие соседи могут видеть документ, но никто не понимает, что там написано.
Это хеширования (hashing, hash function).
У вас есть инструкция, как правильно сажать картошку. В ней описано как выкапывать ямки, какой глубины они должны быть, какой стороной нужно положить картошку в ямку.
Вы начинаете сажать картошку. После каждой закопанной картошки ваш отец проверяет, выполнены ли все инструкции правильно. И если хотя бы одна инструкция нарушена, вам нужно выкопать картошку, засыпать ямку и начать процесс заново.
Это test-driven development или TDD.
Ваши соседи копают картошку. Кто-то уже занёс выкопанную картошку в погреб, а кто-то выкопал, но еще не собрал, и она так и лежит на огороде. А кто-то еще даже не начинал процесс, и их картошка еще находится в земле.
Ваша задача — собрать точную копию всей картошки в своем погребе, даже той, которая еще не выкопана. Кроме того, вам важно подписать каждую картошку — кто её вырастил, на каком конкретно огороде её собрали, и какого она сорта.
К тому же, вам нужно это сделать таким образом, чтобы никто из соседей не узнал, что вы сделали точную копию их картошки и храните её в своем погребе.
Это скрепинг (data scraping) или парсинг данных (data parsing).
Вы приходите на огород, а там роботы сажают картофель. Оптимальный размер картошки, глубина ямок и скорость посадки рассчитывается в реальном времени на базе таких показателей, как скорость ветра, влажность, температура, стоимость картошки на мировом рынке и акций Kartoshka Inc. на Нью-Йоркской бирже.
Это искусственный интеллект (Artificial Intelligence).
Вам нужно посадить картошку, но никто в вашей семье не умеет это делать. Поэтому вы идете к соседу и смотрите, как он сажает картошку. Через некоторое время все сажают картофель как ваш сосед.
Это машинное обучение (machine learning).
P.S.
Вы выкопали картошку и складываете её в погребе — каждый сорт отдельно. Если по ошибке ваша картошка попадёт не на ту полку, прибежит ваш дед и начнет вас бить палкой.
Это реляционная база данных.
Однажды вам разрешили не сортировать картошку, а просто бросать её в погреб.
Это NoSql база данных.
Вы бросаете картошку не в погреб, а на чердак, где её распихивают по полкам, часть сносят назад в погреб, а часть — в погреб ваших соседей.
Это облачное хранилище данных.
У вас есть картошка. Но вместо того, чтобы её садить, вы из разных подручных средств делаете нечто, похожее на вашу картошку. Есть её нельзя, но сходство очевидное.
Это 3D-принтер.
В процессе посадки картошки вы записываете GPS координаты села, вашего поля, и, наконец, конкретной ямки, таким образом получая некий уникальный идентификатор, по которому можно легко вычислить, где закопана та или иная картошка.
Это IP адрес.
Комментарии (67)
ssurrokk
22.05.2019 22:25-1Круто!) больше всего понравилось по собеседование.
В копилку: твоя компания покупает картошку в США, упаковывает в красивую упаковку и продает по всему миру. В один прекрасный день США накладывает санкции и ты перестаешь получать картошку. Купившие твою картошку ещё могут её есть. Ты плюёшь на картошку и начинаешь сам выращивать и продавать свеклу --> Google и Huawei
Naves
23.05.2019 00:03Я бы насыпал вам мешок картошки сорта UDP, но часть может просыпаться мимо.
geisha
23.05.2019 13:53Ага, ваша дальняя родственница передаст вам TCP картошки через кума в Новгороде, дяду в Китае и брата на Марсе. По одной. И только если вы письменно подтвердите получение. Каждой.
Doomsday_nxt
23.05.2019 17:17Она будет пытаться отослать вам картошку, пока вы письменно не подтвердите получение
JC_IIB
23.05.2019 21:29Несколькими машинами, но строго по разным дорогам к вам едет картошка сорта SCTP.
geisha
24.05.2019 10:20Сидите вы на веранде, пьёте чай. Вам изредка прилетает ICMP картошка. К сожалению, внутри она несъедобная, поэтому вам остаётся только её подобрать и бросить обратно соседу-психу, который стоит с секундомером и ведром этой несъедобной картошки.
AC130
24.05.2019 21:03Собралось одновременно несколько соседей и начали с разбега закидывать картошку к вам. Однако картошку они кинули одновременно и вы не смогли поймать ни одной. Тогда соседи отступили от забора на случайное расстояние и вновь начали закидывать к вам картошку. Благодаря интервалам между прибытиями картошки вы смогли поймать их все. Это CSMA/CA.
Собрались опять соседи и опять начали закидывать вас картошкой с разбегу. Однако теперь, когда вы видите что соседи вот-вот кинут в вас картошкой одновременно, вы орёте на них благим матом. Соседи отступают на случайное расстояние и повторяют процедуру. Это CSMA/CD.
panteleymonov
23.05.2019 00:22+1Прикольно. Немного сбила с столку подача. Выделение жирным шрифтом выглядит как заголовок, невольно путается. Видимо говно код, это когда пытаешься упорядочить картошку сразу по многим признакам собственного назначения, а в результате она просто валяется не пойми как, но только мы знаем что она валяется правильно.
sashaeve Автор
23.05.2019 16:24Убрал форматирование. Спасибо за рекомендацию.
Peter03
23.05.2019 17:46Я бы форматирование оставил, просто сделал бы это заголовками.
Без форматирования тяжелее читать и понимать.S-e-n
23.05.2019 19:29+2Схема «сначала описание, потом ответ» даёт ощущение разгадывания загадки, ИМХО прикольный приём.
Peter03
23.05.2019 20:34Ну тогда надо явно это обговорить в начале статьи и ответы спрятать под спойлер.
А так получается что всё время путаешься и не сразу начинаешь вникать.
Конечно IMHO
ormoulu
23.05.2019 02:14На пункте с legacy картошкой потекли слезы :D
Bumerang7
23.05.2019 11:35Интересно, что картошка — это и есть генетический legacy код. Изначально этот код получают из семечка. Если код удачный, то берут его копии (клубни) и размножают их. Через некоторое время код устаревает (сорт вырождается), и нужно создавать новый из семечка.
И, когда происходит посадка, то среди клубней может попасться код, созданный отцом или дедом.
SergeySib
23.05.2019 03:37Описание хэширования скорее подходит к симметричному шифрованию. Документ — шифротекст, грамотность председателя колхоза — ключ. Из шифротекста с помощью ключа можно однозначно и без перебора восстановить открытый текст, в отличие от хэширования.
surly
23.05.2019 08:42Спасибо за самое доходчивое объяснение! Возьму на заметку. Особенно впечатлило про scrum-митинг и bitcoin.
vin2809
23.05.2019 10:10+1Отличные разъяснения терминов IT через обычную жизнь. Особенно понравилось про биткоин.
Bumerang7
23.05.2019 11:00Вы берете почву, воду, воздух и световое излучение и акуратно составляете из этого молекулы крахмала, из которых можно сформировать идеальную картофелину.
Это программирование на Ассемблере.
RomanArzumanyan
23.05.2019 11:57+1Это разработка на C
В конце грядки нет нулевой лунки, и вы сажаете картошку пока не упретёсь в забор соседа.Bumerang7
23.05.2019 12:39Если нет нулевой лунки, вы выкапываете картошку соседа и съедаете. Это может привести к разрушительным результатам…
RomanArzumanyan
23.05.2019 12:44Это разработка на С++, когда получаете доступ к элементам контейнера
при помощиstd::map<hole, potato>
вместо методаoperator[]
.std::map<hole, potato>::find()
robomakerr
23.05.2019 13:09Повеселило) в «искусственный интеллект» нужно добавить:
"… но картошка не вырастает, потому что робот по ошибке посадил высохшую отбраковку, которая внешне очень похожа на нормальный посадочный материал".
eefadeev
23.05.2019 15:19+6Про legacy скорее так: вы пытаетесь выкопать лунку под очередную картофелину, но ломаете лопату о закопанную на этом куске поля старую борону. Пытаясь её вытащить вы обнаруживаете что к ней прицеплен трактор. В тяжёлой ситуации при попытке выдернуть из земли старый трактор краном ваш дом съезжает в яму, образовавшуюся в результате.
half-life
25.05.2019 01:56Копая картошку, вы время от времени пробиваете трубу, по которой течет навоз из соседней коровьей фермы.
Это legacy код.eefadeev
25.05.2019 02:00Тоже вариант. Причём труба идёт не прямо, как можно было бы предположить, а кругами и зигзагами. Причём тот, кто её прокладывал переехал в другую деревню, а карты не оставил. Иногда, если заткнуть дырку в трубе — затапливает здание почты.
i86com
23.05.2019 17:43+6В вашей деревне есть стенгазета, куда время от времени выкладывают статьи. По идее, они должны быть про посадку картошки, но на деле там всё подряд.
И даже если проскальзывает действительно что-то про картошку, то это либо про посадку картошки дронами на Марсе, либо про экспериментальные модели 100-тонных комбайнов. Лопаты и мелкие огороды обсуждать настолько не принято, что выглядит так, будто их и не существует.
Каждый год назначаются модные сорта картошки, даже если это просто новые синонимы давно известных сортов. Картошка новых сортов считается априори лучше старых.
Это хабр.eefadeev
24.05.2019 14:52+1Если кому-то не понравилась ваша картошка он напишет вам на спине матное слово (но вы никогда не узнаете кто же это был и чем конкретно ему не понравилась картошка).
Если понравилась — в лучшем случае сотрёт одно из уже написанных.
Это карма на Хабре :)HEKOT
25.05.2019 02:32-1… на самом деле матное слово было написано за то, что во время совместной пьянки после или во время очередной посадки картошки Вы случайно сказали, что жуки в штате Колорадо пожирают картошку более жадно, чем их сородичи из Тульской области.
tamakio
23.05.2019 18:01+2Машинное обучение всё-таки иначе выглядит.
Никто в колхозе не знает как сажать, каждый растит картошку только на своем поле и всю зиму ест только свой урожай.
Через 50 попыток выжившие считаются обученнымиGryphon88
24.05.2019 13:12Это, по-моему, уже генетический алгоритм. А в статье обучение у учителем, но почему-то без описания проверочной выборки.
tamakio
25.05.2019 09:47Как мне кажется, обучение с учителем всё-таки больше подходит для распознования правильно ли посажена картошка. Или оаспознать севок.
Т.е. входные данные — ответ.
Вот в комментах потом было добавлено:
Вы выкопали картошку и складываете её в погребе — каждый сорт отдельно. Если по ошибке ваша картошка попадёт не на ту полку, прибежит ваш дед и начнет вас бить палкой.
Это вот с учителем
vlreshet
23.05.2019 18:54+2Вы сначала едите картошку, потом сажаете её, потом копаете под неё ямку, а только тогда убираете урожай. Никто не понимает что происходит, но вы сыты и всё нормально.
Это асинхронное программирование.ITurchenko
24.05.2019 11:56Пока однажды не помираете из-за того, что попытались съесть еще не выращенную картофелину.
Это Concurrent Modification Exception
ubivas
23.05.2019 18:58+1Вы долго клеите синей изолентой одинаковые универсальные саженцы в форме картошин. Засаживаете ими всё поле.
В результате на солнечной части огорода вырастают пальмы плодоносящие картошкой, на затененной — кусты с картошкой, на поливаемой — картофельный камыш.
Это — кроссплатформенность.
ilmarin77
23.05.2019 20:15Теперь надо ещё статью: объяснение терминов из сельхоз-работ по выращиванию картошки на примере IT процессов.
big_hasan
23.05.2019 22:25+1Просто великолепно!)
OpenSource — это, скорее, поле, выделенное колхозом для сельчан. Участок на этом поле не нужно покупать и платить за него земельный налог. Но земля на этом огороде такая себе, ее вспахивали всем селом, кое-как и кто чем мог — кто мотоблоком, кто конским плугом. Хороший, стабильный урожай на этой земле получить трудно, если не иметь диплом агронома.
SilverHorse
23.05.2019 23:00Про хеширование неправильно, потому что хеш необратим, и его не прочитает даже умеющий читать председатель, то, что описано — это криптография.
Хеширование скорее надо так: председатель занес информацию о вашей выкопанной картошке в свою домовую книгу, а вам выдал справку, где написано, что отчет о вашей выкопанной картошке записан в этой книге под номером eb54f97536da.
И про создать с нуля ведро и лопату — это скорее чистый С. С++ будет: пойти в библиотеку и взять там книгу (#include), где написано, как должны выглядеть ведро, лопата и картошка, из чего они должны быть сделаны, и какие действия разрешено с ними совершать на огороде, сделать конвейеры (new), позволяющие штамповать эти ведра, лопаты и картофелины по этому описанию, пойти на огород (namespace) и поставить там эти койвейеры, штампующие картошку, где раскладывать ее по ямкам. Выносить наштампованное с огорода, носить в ведрах что-то кроме воды и драться на лопатах с соседом вместо копания земли ими запрещено. Если вы хотите сделать это, вам сначала надо написать свою книгу об этом и отнести ее в библиотеку.
Adept_Omnissiah
24.05.2019 01:41+1Если программирование на С++ выглядит так, то на ассемблере надо собрать простые вещества из атомов, что бы потом сложить из них сложные органические вещества, из которых вырастить жизнь в виде картошки и деревьев…
Короче я уже запутался.
vav180480
24.05.2019 09:04Вы сажаете картошку, потом с части урожая берете клубни и засеиваете снова
Это программирование на BitBitJump
kolyuchii
24.05.2019 11:31+2Вы долго выбираете лопату из тысяч одинаковых. Постоянно спрашиваете всех соседей чем и как они копают и нравится ли им. Наконец берете такую же как у большинства соседей. Сажаете картофель неглядя, а когда приходите за урожаем, видите, что вместо некоторых картофелин выросла свекла или капуста. Некоторые места вообще пусты или картошка растет корнями вверх. Тут вы думаете, что не у вас руки из жопы, а надо взять другую лопату с контролем семян, которую недавно придумал ваш сосед с огородом побольше вашего.
Это JavaScript разработка
vlreshet
24.05.2019 12:30+3JavaScript разработка — это когда берёшь новейшую лопату, начинаешь ею сажать, а к концу грядки приходит 17-ти летний сосед и спрашивает почему ты копаешь таким старьём, ведь уже вышла Redux-Лопата, с удобной системой сапания и полива.
HattabbI4
24.05.2019 11:40Раньше вы садили картошку на нескольких полях, и если картошку на одном поле поел проволочник, вам приходилось в кратчайшие сроки искать новое поле и засаживать картошкой.
Теперь вы наняли фирму, которой сообщаете какую и сколько картошку вам нужно посадить, а они уже решают где это делать. И если вновь напал проволочник фирма сама найдет одно из полей в вашем резерве и засадит свежей картошкой. К сожалению для реализации этого, вам пришлось организовать несколько перевалочных пунктов и иногда фирма забывает выкопать сорт картошки который вам больше не нужен. Зато организовывает непрерывные поставки картофеля, пока юрлицо существует.
Это Kubernetes.
ITurchenko
24.05.2019 12:03Вы берете с собой сынишку. Он ещё неумело копает ямки, иногда забывает класть в них картофелины перед закапыванием или по ошибке берет свёклу вместо картофелины. Вам приходится присматривать за ним.
Это джуниор
Вы занимаетесь картошкой уже несколько лет, успешно справляетесь с возникающими трудностями, но ещё не готовы поучать молодежь или обосновать выбор модели лопаты.
Это миддл
Ваш дед сажал картошку всю жизнь. В том числе с завязанными глазами и голыми руками. Из его баек можно написать целую книгу, а то и не одну. Вот только вместо посадки картошки ему веселее напрягать молодежь, а самому давать советы из тенёчка.
Это сеньор
SergeyGrigorev
24.05.2019 12:49Забавно :-) Добавлю свои 5 копеек
Функциональное программирование это как разбрызгиватель, вода и трубы. Вы точно знаете, что воду можно пустить по трубам, а если соединить трубу с разбрызгивателем, то вода пойдет по трубам и будет орошать ваш огород. Как только вы перекроете воду, орошение завершится, включите — начнется снова.
Императивное программирование — тоже самое, что сверху, но как только вы выключили воду, и включили снова, почему-то труба стала протекать и разбрызгиватель засорился откуда-то взятой ржавчинойsaaivs
24.05.2019 13:16Не очень понятна связь, если честно. Налицо проблемы в качестве материалов и качестве сборки конструкции в каждом из случаев. При должном умении можно получить одинаковый результат с одинаковым количеством затрачиваемых усилий. Разница в подходах ощутима только при разном классе задач — где-то один подход более эффективен, а где-то другой. Сами по себе подходы — ничем не лучше один другого. Просто разные инструменты для разных задач. Пилой гвозди не забивают, а молотком пилить не очень удобно.
SergeyGrigorev
25.05.2019 00:08Я к тому, что без побочных эффектов, широко используемых в императивном стиле, сильно проще писать и рефакторить приложения. В функциональном стиле рестарт дает такой же эффект, в императивном надо залезть в код и посмотреть, можно ли сделать рестарт, все ли восстановится после остановки или останутся предыдущие значения, к примеру.
Fr0sT-Brutal
24.05.2019 15:39+1Вы сажаете картошку на модном смарт-тракторе размером с самосвал, где есть встроенный вейп, смузи-бар, машинка для подкручивания усов и завивки бороды, и даже спрятанный Пакман в панели приборов. При этом вы тратите недели на то, чтобы все это настроить под конкретное поле, сорт картошки и сегодняшнюю погоду. В итоге всё равно за процессом приходится постоянно приглядывать, потому что этот чудовищный конгломерат может внезапно и по неизвестной причине развалиться на кусочки.
Ваш дед параллельно сажает картошку с помощью механического плуга, лопаты и железного ведра, при этом успевая перекурить, потрепаться с соседом и сходить пообедать. И всё равно заканчивает быстрее вас.
Модный фреймворк vs код на стандартной библиотеке
Hedgehog7
24.05.2019 16:01Еще про data science можно написать :)
ITurchenko
24.05.2019 16:40Так напишите :)
Давайте я начну.
В вашей семье мелкая картошка идёт в пюре, а крупную — жарят с салом. Вот только вам уже порядком надоело что без вашего участия домочадцы не способны перебрать картошку самостоятельно. Вы запираетесь в гараже и спустя неделю выносите шайтан-коробку, которая каким-то образом разделяет подаваемую картошку на три лотка: «крупная», «средняя», «мелкая».
Всё что от вас потребовалось, так это приварить нужное количество лотков и поставить измеритель веса картошки, после чего просто пересыпать мешок картошки. Коробка сама-себя как-то откалибровала.
Это кластерный анализ.
DrunkBear
24.05.2019 17:41Вы решили не заморачиваться с сортировкой и отбором картошки, открыли подвал и накидали туда большой картошки, маленькой, чистой, грязной, кабачков, капусты и случайно — кота Васю.
Вроде всё хорошо, но теперь нужно выбрать для жарки молодую чистую картошку из этой свалки…
Это Hadoop.
JerleShannara
24.05.2019 18:02Вы долго читали про всякие способы, как сажать и выращивать картошку, как получить картошку, но у них всех были фатальные недостатки. Вы разрабатываете принципиально новый(тм) способ и метод.
Это разработка нового языка программирования (или вы уже долгое время работаете в Микрософт)
Fr0sT-Brutal
24.05.2019 18:29Вы насыпаете картошку из мешка в ведро, а потом постепенно забираете оттуда по одной верхней картофелине. Это структура типа LIFO (стек).
Ваша бабуля сыпет картошку из мешка в длинный наклонный желоб, по которому клубни съезжают вам в руки. Это структура типа FIFO (очередь).
UndeadDragon
24.05.2019 18:30+2У автора знания о С++ лет на 20 не отстали?
Самая длинная реклама C# на Хабре.
Про шарп скорее так:
Вы можете взять странную лопату, обклееную рекламой, с розовым помпончиком на конце и очень красиво, с пафосом посадить готовую картошку в строго определенные готовые лунки (в других она не вырастит).
Картошка будет постоянно о себе напоминать и просить самую последнюю версию воды для полива в 3 ночи.
А в конце созревания она передаст данные о выращиваемой вами мяте на соседней грядке в соответствующие органы.
HEKOT
24.05.2019 18:51Вы сажаете картошку, но никто никогда её не увидит. Это Embedded программирование.
Вы приходите на огород, а там роботы сажают картофель. Оптимальный размер картошки, глубина ямок и скорость посадки рассчитывается в реальном времени на базе таких показателей, как скорость ветра, влажность, температура, стоимость картошки на мировом рынке и акций Kartoshka Inc. на Нью-Йоркской бирже.
Это Precision Agriculture
Ranwise
24.05.2019 22:16пакетные менеджеры забыли…
есть ящик с разными сортами картошки, но некоторую нельзя посадить если не подходит земля, лопата или до этого не были посажены другие нужные сорта
Peter03
Креативно! Было бы неплохо добавить описание что такое база данных, IP адрес и 3D принтер.
sashaeve Автор
Вы выкопали картошку и складываете её в погребе — каждый сорт отдельно. Если по ошибке ваша картошка попадёт не на ту полку, прибежит ваш дед и начнет вас бить палкой.
Это реляционная база данных.
Однажды вам разрешили не сортировать картошку, а просто бросать её в погреб.
Это NoSql база данных.
Вы бросаете картошку не в погреб, а на чердак, где её распихивают по полкам, часть сносят назад в погреб, а часть — в погреб ваших соседей.
Это облачное хранилище данных.
У вас есть картошка. Но вместо того, чтобы её садить, вы из разных подручных средств делаете нечто, похожее на вашу картошку. Есть её нельзя, но сходство очевидное.
Это 3D-принтер.
В процессе посадки картошки вы записываете GPS координаты села, вашего поля, и, наконец, конкретной ямки, таким образом получая некий уникальный идентификатор, по которому можно легко вычислить, где закопана та или иная картошка.
Это IP адрес.
ksr123
С 3d принтером некорректно. На нем можно делать вполне годные вещи.