Многие сталкивались в своей жизни со странной процедурой «апгрейда» устройств: где-то надо отпаять перемычку, где-то замкнуть пару контактов, где-то «разлочить» устройство, чтобы удалить один файл, являющийся для него флагом эконом-класса. Это бывает с процессорами и сотовыми телефонами, с велокомпьютерами и GPS-навигаторами... Суть одна - производителю дешевле делать качественные вещи с нужными функциями, но у части экземпляров отключать некоторые из них.
Теперь вопрос: позволяет ли это производителю снизить цену на товары нижнего уровня? Нет, потому что он сначала делает именно полноценное устройство, обладающее всеми функциями (а себестоимость от сокрытия нескольких функций не падает). Это означает, что производитель таким образом может только повысить цену на товары верхнего уровня.
Поэтому знающие люди покупают минимальную модель за разумные деньги, а потом дома отключают у неё лишние ограничители возможностей - так они лишаются гарантии производителя, но получают качественный товар за разумную цену (иногда это получается случайно - провайдер не смог урезать мне доступ к услуге, поэтому я плачу меньше, но не имею возможности требовать работоспособности, если что-то поломается).
А бывает так, что производитель даёт доступ к очень мощному инструменту. Такому мощному, что даже профессионал может легко совершить ошибку, потому что уж очень много кнопок позволяют влиять на процессы. Больше того, если мы используем сложный инструмент для простой задачи, то помимо трудностей с настройкой и управлением, мы получаем неожиданный антибонус - все минусы мощного устройства. На своём месте они казались приемлемыми, потому что мощная и универсальная технология давала массу преимуществ. Но страдать от тех же минусов при решении простой задачи - это слишком дорого.
Простой пример - многие современные осциллографы работают под управлением операционной системы Windows, поэтому приходится тратить много сил, чтобы понять, где именно проблема: в физическом устройстве, которое должно давать сигнал, в программном обеспечении осциллографа, в операционной системе, которая решила проявить самостоятельность или в перегреве каких-то компонент компьютера, на котором это всё работает. Чем проще устройство, тем меньше у него причин сломаться.
Но давайте рассмотрим самое простое и распространённое: цикл for в C-подобных языках программирования. Если я заранее предупрежу, что ниже есть ошибка, то Вы её легко найдёте:
int i, j;
for (i=0; i<10; i++) {
for (j=0; i<10; i++) {
// ... сложный код
}
}
Но представьте, как долго её можно искать, если вокруг есть много сложного кода. В чём же проблема? Кто-то скажет, что надо запретить использовать copy-paste в средах для разработчиков, чтобы не порождать подобных ошибок, кто-то скажет, что бывают компиляторы, предупреждающие об изменении переменной цикла внутри тела цикла, а кто-то будет утверждать, что у него точно таких ошибок не бывает, потому что он внимательный. Ещё есть понятные соображения про итераторы и более осмысленные имена переменных... Но когда мне пришлось исправлять код, который почти всегда работает правильно (потому что почти всегда в первой строке таблицы был элемент с нужными свойствами, что приводило к успешному прекращению цикла), то найти ошибку было нелегко. Хотя сама ошибка очень простая - скопировав строчку, программист исправил имя переменной только один раз, а не три (видимо, отвлёкся).
Есть языки программирования, синтаксис которых не требует трижды указывать имя одной переменной, если необходимо перебрать целые значения от одной величины до другой (я думаю, вы согласитесь, что это самое распространённое применение цикла for). Их ограниченная спецификация не позволяет делать некоторые интересные трюки, которые легко удаются C-программистам, но она не позволяет делать таких ошибок. Полагаю, это хороший пример слишком мощного инструмента, приглашающего наделать глупых ошибок, который крайне редко используется в полную мощь. Кстати, некоторые участники олимпиад по программированию используют специальные макросы вида «FOR(i,a,b)», которые автоматически раскрываются в конструкцию «for(i=(a);i<(b);i++)» - это позволяет быстрее реализовывать простой код, заведомо избегая подобных распространённых граблей.
Вспоминается по этому поводу история, которую рассказывал Терехов Андрей Николаевич - генеральный директор ТЕРКОМ. Когда он только начинал делать программно-аппаратные комплексы для различных военных задач, ему довелось участвовать в обсуждении установки, которую создали за многие годы до того разговора. И он произнёс довольно резкие слова по поводу производительности той системы - «как же так надо было проектировать, что включение установки и её подготовка к работе происходят целых полторы минуты?». На что неожиданно отреагировал очень взрослый и опытный конструктор (как оказалось, это был создатель обсуждаемого комплекса): «Во-первых, личный состав по нормативам должен успевать приготовиться к выполнению боевой задачи за две минуты, поэтому старт за полторы - это вполне достаточно, а во-вторых, попробуйте сначала сами сконструировать систему, которая будет надёжно работать в боевых условиях» (если я правильно помню, то вычислительное устройство могли монтировалось на ГАЗ-66 и БМП, подвеска которых не отличается мягкостью).
В такой момент приходит понимание, которое у военных есть всегда - делать надо не что-то идеальное и универсальное, а то, что решает поставленные задачи и имеет высокую надёжность. Андрей Николаевич говорил, что у него после этих слов более опытного коллеги многое в голове встало на место.
Вывод: слишком универсальные решения бывают, причём они имеют как минимум два минуса:
1) они могут быть слишком сложными, поэтому будут плохо выполнять свою функцию (компьютер с тв-тюнером может полностью заменить видеомагнитофон, но сможет ли им пользоваться ваша бабушка?),
2) ради расширения функциональности приходится заметно поднять цену (да, компьютер с тв-тюнером может автоматически вырезать рекламу, может самостоятельно скачивать программу передач и ещё много всего, но он стоит в 10 раз дороже видеомагнитофона).
Совершенно нет разницы, название какой компании написано в графе «производитель», какие конкурсы назвали его «товаром года», в каких журналах его называют передовым и уникальным. Важно только то, как оно работает - хорошо выполняет свои функции или плохо. И ирония нашего времени состоит в том, что производителю выгодно делать хорошие вещи, а потом их портить. Что-то не так в мире, если к экономическому росту приводит быстрое преобразование природных богатств в кучи мусора на свалках (у нас ведь только рост потребления ведёт к оздоровлению экономики?). Кстати, только что взглядом на это поделился Макс Крайнов - он предлагает посмотреть на вопрос стимулирования экономики не с позиции банкиров и промышленников, а исключительно со своей колокольни. Поскольку потребитель указывает производителю, что делать (покупая или отказываясь от каких-то товаров), то можно надеяться, что распространение вменяемого отношения к навязываемой необходимости постоянно что-то покупать сможет стимулировать производителей и продавцов делать правильные шаги.
Хорошего вам дня!
Представьте, что кто-то принесёт аналогичный парадокс про решение дифференциального уравнения или о задачке из ТФКП. Да это никто не станет публиковать и обсуждать! Потому что данные научные дисциплины большинству совсем неизвестны. А про теорию вероятностей многие готовы высказаться.
Широко отмечать не будем, но некоторый анализ ситуации сделать можно. Начнём с русского сегмента интернета вообще. Вооружившись
Распределение по странам не поменялось, а с городами выявился интересный эффект - за последнее время с 10% до 20% поднялась доля читателей из Санкт-Петербурга (приветствую культурную столицу!).
Это совершенно нормально, что людям нравится ощущать свою правоту. Я думаю, это заложено в защитные механизмы, сформированные очень давно. «Если я прав, значит я всё понимаю и контролирую, значит я в безопасности» - естественный ход древней мысли. Неправому же человеку не очень комфортно: он ощущает свою малую осведомлённость, чувствует свою уязвимость - ему страшно.
В другой раз было весьма похоже - автобус стоял на остановке, а слева от него шёл плотный поток машин (скорость была около 40-50 км/ч, так как перед этим был медленный поворот, я же разогнался до 25-30). Формально водители обязаны выпустить автобус из остановочного кармана, так как он включил сигнал поворота. Но поток машин шёл непрерывный, поэтому я тоже решил проехать (всё равно автобусу придётся стоять, пока не образуется достаточного окна). Дальше произошло совершенно неожиданное - как только я подъехал близко к автобусу, он дёрнулся в едущий слева от него поток машин. Благо, у всех хватило реакции: автомобили, двигающиеся слева от автобуса, резко сместились влево, а водители встречного направления мгновенно дали им место, влетев колёсами своих машин в бордюры. Это были очень опасные манёвры, но никто не пострадал.
Последние годы популярность суши-баров и сервисов по доставке суши на дом очень выросла, но не все любят питаться вне дома, а предпочитают заведомо качественную и не очень дорогую домашнюю еду. Да и делать что-то
Если родителям повезло в своём детстве много бегать по двору, лазать через заборы и по деревьям, играть в футбол на ближайшей площадке, часто ходить плавать на речку и так далее, то они имеют развитое и здоровое тело. И они просто не знают многих бед со здоровьем, потому что почти не болеют.