Передостання історія, де мені знадобилося, щоби мене носом ткнули в очевидне, вкотре нагадала, що ми часом не бачимо тривіальних речей. Вміння знайти просте і гарне рішення складної задачі -- це особливий скіл, напевне, половина олімпіадних і "Квантівських" всяких штучок колись давно була саме про це. Може, не половина, але чверть точно. Я ніколи не вмів легко знаходити красиві прості рішення. Але не я один, як показує досвід, вперше побачити щось просте -- нелегко. Причому, "прості рішення складних задач" -- це неправильно я сказав, бо, як тільки складне рішення стає відомим, воно стає очевидним, і задачка переходить в розряд тривіальних. Як ото об'єм корони поміряти до і після Архімеда... Словом, два приклади простих задач з очевидними розв'язками, які до якогось моменту були не очевидними.
Перший -- рентгенівська анґіографія. Себто, отримання картинок кров'яних судин з допомогою ренгтенівських променів (потім аналогічно робили з МРТ і ультразвуком). Кров трохи краще поглинає не надто високоенергетичні рентгенівські промені, ніж сусідні тканини, але цього не досить, на картинках видно не дуже, плюс, на нижких енергіях там розсіяння. Придумали колоти спеціальні контрастні агенти -- речовини з більшим перерізом розсіяння, щось важче, там, ґадоліній, або, принаймні йод. Стало краще, але не дуже, бо фон все-одно майже все забиває. І в якийсь момент один медичний фізик придумав очевидний хід: зробити ДВІ знимки: до того, як людині вкололи контраст і одразу після того, поки людина не встигла порухатися. І відняти першу знимку від другої, отримавши красиві картинки власне судин, з усіма їх потовщеннями, розривами і корками... Очевидно ж. Елементарно! Але хтось це придумав перший раз, написав статтю, отримав патент. Цей патент був другий за кількістю грошей, які він приніс універу з 1980 до 2005, далі я не слідкував. Отака проста-простецька думка: фото раз, фото два, віднімаємо -- вуаля, перед нами те, чим два фото відрізняється. Пишаюся, що я працював під началом цього чоловіка пару років дві декади тому.
Другий приклад -- з нашої практики в Берклійській Нац. Лабораторії. Був у нас великий проект, в якому треба було отримати ядерну картинку (SPECT -- single photon emission computed tomogrphy) зразка, у формі вертикальної труби 15 см шириною і півметра висотою. Прилад для міряння людей, які лежать горизонтально на спеціальному столі, але ми придумали, як, замість крутити кільце (gantry) сканера навколо зразка ми зупиняємо сканер в одному хитрому положенні, а крутиться сам зразок в полі зору детекторів. І ще, важлива деталь: нам треба було отримувати картинку, вірніше, послідовність з 60 картинок, синхронізованих з крутінням зразка, кожних 8 хвилин протягом майже двох діб. Півтори доби мінімум. Крутіння зразка і всяке інше (там ще було качання насосом через нього грунтових вод, бо проект з гідрології і біогеохімії) контролював скрипт на Лабв'ю з лаптопчика, а от сканер доводилося запускати вручну. Він був спеціально так зроблений -- концепція, що запускатися така штука може лише живим технологом була закладена в саму систему. Це ж медицина, діагностика, скандер думає, що там всередині в ньому живий пацієнт, якого не приведи господь вдарить, притисне, чи забуде. Тому все може запускатися лише наживо, клацанням по кнопочках їхнього ЮаЙ. Ніяку програму, де можна написати скрипт, туди не вставиш -- закрита архітектура, компутер жорстко інтегрований з рештою всього, FDA схвалює лише все разом, тому комп все той самий, старий, на нього нічого нового записати не можна в принципі (Зате ще в 2020-му я останній раз реально щось робив на компі 1998 року з живою OS/2... ех, кайф!) Вже що ми не придумували... Перший великий експеримент довелося робити наживо, ми з колегами втрьох чергувалися і з ранку п'ятниці до полудня суботи реально що вісім хвилин проклацували запуск протоколу считки даних. Задовбалися -- не то слово. Але альтернатив придумати не могли -- ну, не піддається система втручанню, принаймні, щоби її не ламати, а ламати не можна, бо на тому сканері ще людей, кроликів і щурів треба міряти... Почали шукати інші сканери. Я обдзвонив все Західне узбережжя. Один варіант був -- сканер для коней: кастом-геометрія (бо коні стоять), але там роздільна здатність була не та. Плюс ціна пару сот тисяч, а у нас максимум тисяч тридцять на це можна було бюджету виділити. Нарешті, знайшов варіант, якогось українця в другому поколінні, який в околицях Лос Анжелеса тортував вживаною медтехнікою. Полетіли туди з начальником і ще одним інженером дивитися. Робочий прилад тої ж моделі у них стояв на лізинґу в якомусь госпіталі. Виробництво року восьмидесятого, як не раніше, древня панель оператора, я таких клавіш з часів студентської молодості і комп'ютерного кабінету ЄС-100 не бачив. Архітектура так само закрита, але оскільки 1980-й рік, то вся операція без мишки. Тут один зі співробітників сказав: о, з цим ми впораємося, можна зробити роботизовану руку, яка натискатиме правильні кнопки, всього кілька тисяч, помістимо в бюджет... Далі я на нього дивлюся, як на дурного: а якщо робити робо-руку, то нафіга нам купувати додатковий сканер, сканер у нас уже є! (Я тоді ще пам'ятав, як навігувати між віндовсівськими компонентами без мишки) Зраділи, покупку відмінили, повернулися в лабораторію, на наступному ж засіданні говоримо про нашу геніальну ідею, після чого ще один наш колега, який не їздив, як почув про це, подивився на нас як на дурних: а нашо робити роборуку, якщо можна просто перехопити сигнал з клавіатури
Словом, замість сканера за $30К або роборуки за кілька тисяч (навіть не знаю, скільки), купили PS/2 keyboard spoofer за двадцятку і все запустили з того ж ЛабВ'ю скрипта.
Очевидно, банально, тривіально. Але, якби хтось не подумав про це вчасно, мого би бути набагато складніше, дорожче і гірше.
Питання: а скільки навколо нас ще отаких задач, які ми вважаємо складними лише тому, що хтось перший не придумав тривіально просте рішення?