Показаны сообщения с ярлыком программирование. Показать все сообщения
Показаны сообщения с ярлыком программирование. Показать все сообщения

воскресенье, 23 июня 2019 г.

ИТ-термины на примере процесса выращивания картошки

Отличная  идея объяснить значение тех или иных ИТ терминов на примере процесса выращивания картошки реализована автором поста  https://m.habr.com/ru/post/453006/
Представим, что вам необходимо посадить картошку. 
У вас есть много способов решения этой задачи.
Вы можете найти человека с трактором, который приедет и посадит вам картошку, а также человека, который будет следить за тем, чтобы человек с трактором правильно посадил картошку. Они приедут со своей картошкой.
Это аутсорсинг (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 адрес

вторник, 21 февраля 2017 г.

Алгоритмы и манипулирование: как происходит управление нашими предпочтениями

Небольшое необходимое вступление: 
 Евгений Золотов из Компьютерры закрепил )) словами известные, но не учитываемые большинством пользователей интернета методы и способы манипулирования.
 
Как алгоритмы влияют на жизнь
автор: Евгений Золотов 21 февраля 2017 http://www.computerra.ru/163397/algo/
Вот уже несколько лет в околоайтишных кругах ведётся интереснейший диалог, который всё никак не проложит дорогу к широкой общественности — хоть самым непосредственным образом на судьбы её, общественности, влияет. Объяснить смысл проблемы, а тем более её потенциальные решения, обывателю непросто. Вот только хочет он того или нет, вникать придётся, ибо с каждым годом масштаб последствий увеличивается. Впрочем, простите, что говорю загадками: речь о скрытой роли, которую играют в нашей жизни алгоритмы.
Вообразите самую обычную ситуацию: вы уселись посмотреть кино в онлайновом кинотеатре. И конечно, первое, что видите, запустив приложение на «умном» телевизоре, это список фильмов, которые предположительно должны вам понравиться. Как этот список был составлен? Кинотеатр за время пользования накопил о вас некоторые сведения и теперь делает на их основе предположение-прогноз насчёт ваших вкусов. Например, если в прошлом вы смотрели фильмы ужасов, то и сейчас вам предложат главным образом картины того же жанра. Ну и, конечно, кому-то предложенные ленты понравятся, а кому-то нет. Это нормально. Разработчики алгоритма, угадывающего вкусы зрителя, допускают, что он не всегда окажется прав, но процент «попаданий» оправдывает его применение.
И это лишь один из примеров. Если присмотреться к происходящему вокруг, окажется, что очень и очень многое в нашей жизни определяют или пытаются определять именно алгоритмы. Это они подбирают рекламу, которую вы видите в своём браузере. Они составляют список товаров, которые попадаются на глаза в первую очередь, когда вы заходите в интернет-магазин. Они советуют друзей в социальных сетях. Они на самом деле оценивают заявки на кредит и даже определяют сумму, которой банку в каждом конкретном случае допустимо рискнуть. Они всё чаще фильтруют кандидатов на собеседованиях при приёме на работу. Они помогают полиции «умно» распределять ресурсы, направляя силы туда, где те предположительно будут нужнее всего. Они даже помогли шуту победить на выборах президента Соединённых Штатов — подсказав, какие слои населения будет легче склонить в свою сторону.
Недостатки такого подхода уже просматриваются, но давайте их формализуем. Что плохого в широком применении алгоритмов для решения чисто жизненных задач? Во-первых, алгоритмы не безгрешны. То, что выглядит как беспристрастная математика, на самом деле всего лишь набор правил, сформулированных человеком или (всё чаще) искусственным интеллектом. Цель алгоритма — не сделать человека счастливым, а решить задачу с приемлемой погрешностью или риском. При этом алгоритм всецело зависит от входных данных (которые по умолчанию не могут содержать всего: это лишь потоки информации, описывающие некоторую часть картины), логики (придуманной программистом и известной зачастую ему одному; если же логика придумана ИИ, то и вообще никому не ясна), вероятностей (слепого случая). Вот почему алгоритмы могут сбоить, выдавая результаты, оторванные от жизни или неприменимые в ней.
Но — и это во-вторых — несмотря ни на что, алгоритмы всё чаще влияют на нашу жизнь сильно. Хорошо если речь всего лишь о странном банере или неудачно рекомендованном фильме: вы посмеётесь над ошибкой программы, неверно определившей ваши предпочтения, и забудете. Но что если речь об отказе в кредите на запуск бизнеса? Или об отказе в приёме на работу? Или, как это уже практикуется в США, о длительности срока заключения, рекомендованном судье? Насколько можно быть уверенным, что алгоритм оценил человека правильно и принял правильное решение?
Алгоритмические ошибки в таких ситуациях уже не теория и не редкость: их обнаруживали и обнаруживают много. Например, в той же судебной практике оказалось, что алгоритм, из-за неверно расставленных акцентов во входных данных, склонен переоценивать риск рецидивизма со стороны темнокожих. Равно и в финансовой сфере клиентам, которым не повезло родиться в «цветной» семье, присваивался несправедливо низкий кредитный рейтинг.
Всё это заставляет задаться вопросом: насколько общество вправе доверять алгоритмам?     И ответ на него, к сожалению, непростой и неприятный.
Начать с того, что обратного пути нет. От алгоритмов уже не удастся отказаться, потому что живём мы в информационную эпоху, когда информации слишком много, чтобы её могли обрабатывать только люди. Но значит нужны какие-то ограничения, которые помогли бы минимизировать потенциальный вред. И вот именно вокруг них сейчас и кипит самый жаркий спор.
Где-то алгоритмический рынок пока совершенно дикий: как в России, где у гражданина и потребителя попросту нет права ни оспорить алгоритмическое решение, ни даже узнать, что решение было принято алгоритмом. Но к примеру британцы гордятся тем, что их судебная система резервирует за гражданином право потребовать через суд отменить принятое алгоритмом решение (если оно значительно влияет на жизнь человека) и потребовать повторно обработать те же данные человеком, чтобы исключить возможные машинные огрехи.
Дальше же всех шагнул Евросоюз, в котором с 2018-го года вступает в силу так называемое «право на объяснение». Смысл очень простой, но в этом и коварство. Гражданин ЕС вправе потребовать не просто пересмотреть, а и объяснить, как было принято то или иное алгоритмическое решение. Идея выглядит логичной и даже прогрессивной, но на деле реализовать её будет чрезвычайно трудно. Попробуйте-ка объяснить человеку с улицы процедуру оценки кредитного рейтинга или диагностики рака, проводимой ИИ! А что если алгоритм был разработан не человеком, а машиной — и теперь его не понимает вообще никто? Так что право на объяснение скорее всего останется нереализованным.
Отсюда — мрачный прогноз: мы движемся прямиком к «обществу чёрного ящика», где алгоритмы будут играть всё возрастающую роль, но мы контролировать их всё меньше. И решение напрашивается только одно: законодательно запретить применение алгоритмов в некоторых сферах, где их ошибки могут навредить людям неадекватно сильно. Да, это шаг назад по воображаемой ступени технической эволюции. Но что поделаешь, если компенсировать токсический эффект чрезмерной сложности больше нечем?


Ну и несколько комментариев про дополнительные аспекты  проблемы:

  • Ну автор поздно прозрел, т.к. еще в глубокой древности Шекспир сказал, что "вся наша жизнь - игра...". А игра есть не что иное как набор алгоритмов. Поэтому перефразируя, можно сказать: вся наша жизнь - алгоритмы ;)
  • Алгоритм - это система правил, пошаговая инструкция.
Пока иной рабочей системы основанной на анархии или каком либо генераторе случайных чисел или иных квантовых эффектах нет. Придется смирится с тем, что есть.
  • а как же быть с нейросетями?
    это еще не интеллект, но уже и не алгоритм...

суббота, 4 февраля 2017 г.

Достаточно близкое будущее...

https://www.ft.com/content/d629e512-e805-11e6-967b-c88452263daf

публикация файнешнл Таймс

В недалеком будущем человечество будет делиться на две категории: 
люди, которые приказывают компьютерам, что им делать,  
и люди, которым компьютеры будут указывать, что им делать