06 April 2024

За Милан

Некоторые мысли о северной столице Италии. 

Цены на все весьма бодрящие, но к этому приезжающих подготавливают еще на этапе бронирования жилья. 
С другой стороны, многие продукты питания в супермаркетах стоят плюс-минус одинаково практически в любой стране ЕС. А если страна более-менее зажиточная, то продукты это далеко не главная статья расходов среднестатистического семейства.
Несколько удивило практически полное совпадение цен в Макдональдсе в Софии и в Милане. Это, возможно, одна из главных причин большой нелюбви болгар к этой сети фэстфуда -- она им просто не по карману. 

Погода в Милане это просто писец, зонтик забывать дома нельзя. Фактор личного невезения я опроверг сухими (на самом деле, мокрыми) цифрами. В Одесса в марте месячная норма осадков -- 32 мм, а в Милане -- 82 мм. Короче, фактор погоды надо как-то понимать и учитывать. 

Центр города застроен богато и красиво, большинство зданий выдержано в стиле второй половины XIX века и это все в городе, который был нещадно разрушен во время Второй Мировой.
С другой стороны, центр по средневековому очень тесный: улочки узенькие, тротуары из серии издевательства над пешеходами, деревьев нет, парков и скверов абсолютный минимум. Местные деревья в кадках массово выставляют на балконы, чтобы хоть как-то оживить эти бесконечные каменные джунгли. 

Жил я при этом примерно в 8 км от центра, судя по всему, не в самом плохом районе. Все чисто, аккуратно, ухожено и со значительно большим количеством растительности. Приятное место для жизни и прогулок.  

Насчет пропитания скажу так. В центре города все грустно и даже выложив 50-60 евро на человека в приличном ресторане за обед или ужин (без алкоголя) вряд ли вы получите что-то хотя бы как-то оправдывающее расходы такого порядка. За столовки и забегаловки я тоже ничего хорошего сказать не могу.
Но! Вкусную еду можно найти в заведениях спальных районов, есть места, где действительно вкусно и не за все деньги мира. Другой вопрос, кто из туристов, прилетевших на пару дней, будет тратить драгоценное время на такого рода вылазки. Да, еще есть интересный нюанс, что открываются такого рода заведения обычно в 12-00 дня, а с 15-00 до 18-00 у них время обеденного перерыва. В это время итальянцы не кушают. Терпят.   
Да, еще могу похвалить продукты в супермаркетах -- почти все, что я покупал, было вкусное и отличного качества. 

08 February 2024

Генеративные алгоритмы, продолжаем наблюдение

Не все с этими новомодными AI алгоритмами так уж и плохо.
Я вот, к примеру, недавно пописал код на C# в Visual Studio 2022 и был приятно удивлен качеством подсказок, которые мне выдавались по ходу работы. Чаще всего они были тривиальными, из области каких-то общеизвестных алгоритмических вещей (типа поиска минимального или максимального значения). Да и объем анализируемого кода, исходя из которого можно было бы сгенерировать такого рода подсказу, обычно весьма скромный, на уровне класса из двух-трех десятков строк. И сами подсказки, как правило, ограничивается строго одной строкой. Но, тем не менее, работа в связке с такими вот полуавтоматическими подстановками кода это особый, весьма прикольный опыт. 

С другой стороны, надо понимать, что где-то в 10-15% случаев подсказки оказываются нерелевантными и это, на самом деле, большая проблема. Получается, что программист все равно должен напрягаться в полную силу и держать в голове корректный код. И вряд ли кто-то всерьез будет считать, что главное достоинство такого рода подсказок заключается в том, что ты просто набираешь чуть меньше букв -- производительность программиста редко когда упирается просто в скорость набора текста. 
Короче, из-за несовершенства алгоритма подсказок, получается ситуация точно как с автопилотом в электрокарах Tesla. Он вроде как есть, но доверять ему нельзя и нужно все время следить за тем, что он делает и за ситуацией на дороге. Потому что иногда он ошибается и такого рода ошибки могут стоит жизни пассажирам авто. При написании кода ставки, безусловно, не столь высоки, но уверен, что активно пользующиеся такого рода фичами, могут рассказать о случаях, когда машинально принятая подсказка приводила потом к потерянному времени в отладчике и тщетным попыткам найти непонятно откуда взявшийся баг в совершенно банальном коде.  


***

И если мой опыт с AI в Visual Studio это скорее позитивная история, то вот общение с ChatGPT это бесконечная череда разочарований. 

Я не сильно большой фанат этого решения и даже в тех редких случаях, когда пытаюсь его использовать, постоянно натыкаюсь на крайне раздражающие моменты. 

Вот список проблем:

  • потеря контекста в самых простых и однозначных диалогах. Машина внезапно "забывает" то, о чем вы общались буквально одно-два предложения назад и начинает выдавать совершенно нерелевантные ответы, без учета очевидных, подразумевающихся из контекста, факторов. Например, с самого начала код просили писать на C++, а через пару промптов выдача почему-то начинается на другом языке программирования.  
  • выдача абсолютно общих, бессодержательных ответов на конкретно сформулированные запросы. 
  • выдача откровенной лжи и некорректной информации (т.н. эффект галлюцинаций). Иногда речь идет о совершенно базовых и общеизвестных вещах, сведения о которых находятся в Википедии за пару секунд. 
  • работа в режиме безграничного доверия и потакания клиенту: исходные запросы и утверждения имеют какие-то сверхприоритеты в системе, поэтому их содержание очень часто перекрывает истинное положение вещей. Если в запросе попросили перечислить виды слонов, обитающих в Латинской Америке, то AI кинется их перечислять, а не поставит под сомнение изначальную корректность этой просьбы.  Если человек скажет, что написанный выше (абсолютно корректный) код не компилируется, то AI готов до бесконечности искать, находить и "исправлять" несуществующие ошибки. 

Несколько иллюстраций. 

Вот, к примеру, мой запрос о сравнении работы SIP протокола поверх TCP и поверх WebSocket. 
Абсолютно некорректная (и просто бредования) выдача:

Кто не в курсе, WebSocket это надстройка поверх TCP, т.е. быть более эффективной и легковесной она просто не может быть по определению.  

Так же ужасно обстоят дела с "написанием" кода. Однажды попросил написать сохранение скриншота окна в BMP файл под Windows. Сразу получил достаточно правдоподобный код, который скомпилировался и даже сохранял BMP файл при работе. Только файл был некорректного формата и не открывался ни одной программой. После нескольких безуспешных итераций в попытках исправить код (во время которых мне на руки стали выдаваться версии, которые уже просто не компилировались), AI предложил кардинально сменить стратегию и начать использовать для работы с BMP изображением какой-то там специализированный COM класс, который тянет внешние зависимости. На выходе получился принципиально новый код, который, разумеется, тоже корректно не работал. И не заработал даже после того, как я намекнул AI, что нужно все-таки не забывать вызывать CoInitialize (кстати, код имел кучу точек отказа и ноль строчек для их диагностики и обработки). После ряда безуспешных попыток на свет родилась еще одна, принципиально новая, версия с использованием GDI+. Точно такая же неработающая. 

По итогу, потеряв полчаса, я пошел гуглить и через 10 секунд нашел идеально работающую версию необходимого кода на StackOverflow (на 99% совпадающую с примером из MSDN).  
Даже не знаю, что тут еще комментировать... Кстати, а как там обстоят дела с запретом на использование AI для написание ответов на SO? Он все еще действует?  

Мне вообще повезло, потому что все закончилось относительно быстро, но вообще в жизни случаются куда как более веселые истории. Вот тут рассказ о том, как человек попросил ChatGPT сгенерировать ему LUT обработку данных для Python. Буквально 10 строчек кода, с которыми человек потом сношался несколько часов. Знаете почему? Потому что AI при вызове функции рисования графика почему-то переставил координаты x и y местами. Ошибка, с которой можно бороться очень, очень долго даже в таком маленьком объеме кода...  

Международная банковская система держится на компьютерах. Компьютеры помогают человеку управлять атомными электростанциями и десятки лет ведут космические спутники за пределы Солнечной системы. Компьютеры это наши незаменимые супер-помощники, потому что, в отличии от человека, они никогда не ошибаются. 
Однако тот процесс, начало которого мы сейчас наблюдаем, это попытки заставить компьютеры работать в совершенно новой для себя роли. Мы опустили их до такого уровня, что не можем им доверить даже такую ерунду, как управление стиральной машинкой.