Defer в Си
Мне очень нравится конструкция defer в «Гоу» — очень удобно для управления ресурсами, можно рядом с получением
Оказывается в прошлом году её предложили добавить и в Си (чему я очень рад, потому что в последнее время больше всего, пожалуй, пишу именно на нём),
Этикет в «Телеграме»
Напишу, пока слово «Телеграм» ещё можно невозбранно писать.
Очень мне не нравится, когда собеседники пишут свои мысли построчно в чатах — особенно в рабочее время, когда я часто заглядываю в «Телеграм». Темп работы у нас такой, что обычно за день происходит очень много всего, требующего моего внимания.
Как правило, сообщения приходят, когда я
Поэтому, когда приходят сообщения, я, как правило, отвлекаюсь
Правильно написать свой «привет» и сутевую часть в одном сообщении, не надо разбивать его на много, это отвлекает, заставляет тратить время на ожидание и, следовательно, раздражает.
Бабушкин подстаканник
Родители в прошлый приезд привезли много памятных вещей оставшихся от бабушек и прабабушки. Я уже выделил для них отдельную полку у себя в кабинете и аккуратно всё расставил, но надо бы понемногу продолжать их описывать — иначе, если откладывать, руки так никогда и не дойдут.
На фотографии — алюминиевый подстаканник, который мне
Судя по клейму «КХИ» (я вставил его в правом верхнем углу фотографии), это советский подстаканник производства Казаковского завода художественных изделий.
Это одно из старейших предприятий народных художественных промыслов Нижегородской области, расположенное в селе Казаково Вачского района. Завод ведёт историю с конца 19 века и выпускает свою продукцию до сих пор.
На подстаканнике, подаренном бабушкой, изображено судно на подводных крыльях «Ракета», производившееся в СССР с 1957 по 1976 годы, я на таких катался в детстве по Волге.
Судя по информации в интернете, этот подстаканник выпускали в конце
ИИ: умрёт ли профессия программиста ★
Честно говоря, плач по «умирающей» профессии программиста меня очень сильно утомил. Я понимаю, откуда берутся пессимистические настроения, но сам я далёк от мысли, что программисты вымрут. Профессия не исчезнет — она просто изменится.
И дело не в наивном оптимизме. Дело в механике развития технологий.
Собственно, это уже не раз происходило. Каждая новая волна автоматизации забирала у программистов часть низкоуровневой работы — но не саму профессию. Исчезала механика, оставалась ответственность. Исчезала рутина, оставалось мышление.
Многим кажется, что изменения происходят впервые, просто потому что они не застали предыдущие волны. Но даже беглого перечисления ключевых слов, которые есть в памяти каждого айтишника, достаточно, чтобы понять: с каждым десятилетием программировать становилось комфортнее — и при этом программистов становилось больше, а не меньше.
В моём детстве я писал первые команды прямо в машинных кодах — шестнадцатеричными цифрами (!) — в тетрадке, отлаживая их в уме. Потом ждал, иногда целыми днями, когда смогу ввести их в компьютер, набирая прямо из тетрадки. Получив
Это очень похоже на то, как
Потом пришли ассемблеры. Потом компиляторы. Потом высокоуровневые языки. Потом фреймворки. Потом облака. И всё заверте…
Снижение стоимости разработки не убило рынок — каждый раз он только расширялся. Когда программировать становится проще, программировать начинают больше. Появляются новые продукты, новые интеграции, новые автоматизации, новые требования к качеству, безопасности, масштабируемости. Сложность системы растёт быстрее, чем упрощается инструмент.
Мы больше не программируем в машинных кодах. Очень мало кто пишет даже на ассемблере и даже Си многие считают
И что именно из этого следует?
Если нейросеть способна переводить текст в код, это значит, что исчезает этап механической трансляции. Но разработка программного обеспечения никогда не сводилась к набору текста.
Я специально нашёл слайд презентации, которая с моим участием готовилась для президента нашей республики в 2021 году. Схема упрощённая; сегодня я добавил бы туда ещё
Нейросеть может помочь почти на каждом этапе. Но помощь и замещение — разные вещи.
Разработчик высокого уровня даже сейчас способен закрыть большинство, а то и все (разве что насчёт ЮИкса у меня есть сомнения), этапы самостоятельно. Почитайте, например, историю известнейшей игры «Принц Перси» — её создал один разработчик, пройдя все без исключения этапы, включая дизайн.
Важно не то, что он был один. Важно то, что ему пришлось проявить себя во множестве ипостасей.
Представьте, что у этого разработчика в то время была бы под рукой мощная нейросеть. Было бы ему нечего делать? Вряд ли. Он бы быстрее перебирал варианты, быстрее тестировал идеи, быстрее исправлял ошибки. Но кто бы решал, какую игру делать? Кто бы определял, что она достаточно хороша? Кто бы нёс ответственность за результат?
Автоматизация всегда убирает уровень ниже. Программисты просто поднимаются выше.
ИИ не отменяет сложность. Он лишь сдвигает её на другой уровень абстракции.
Поэтому вопрос не в том, вымрут ли программисты. Вопрос в том, кто останется на уровне «переводчика текста в код», а кто поднимется на уровень «архитектора систем и решений».
Стамбул: викинг в Софийском соборе
Интересное проявление феномена Баадера—Майнхоф: стоило мне в Софийском соборе Стамбула увидеть надпись, оставленную рунической записью викингом Хальвданом в 9—10 веках, как уже на следующий день я услышал о ней в лекции об английской письменности. А спустя несколько дней — в совершенно другой лекции, посвящённой расселению народов.
Наверное, я слышал о ней и раньше — надпись довольно известная, — но просто не обращал внимания. Стоило её увидеть, и я перестал пропускать упоминания о ней мимо ушей.
GPU: нашли в чём проблема с RTX 6000 Pro
Нашли, в чём причина плохого охлаждения графического ускорителя RTX 6000 Pro. Ларчик просто открывался — я сунул руку под карту и обратил внимание, что один из двух вентиляторов не крутится. Даже когда пытаешься провернуть его рукой, он прокручивается с небольшим сопротивлением.
Оказалось, что стойка поддержки видеокарты (такие используются для тяжёлых моделей) — я обозначил её стрелкой, на снимке она справа — резиновой опорой прижала вентилятор снизу, и он вообще не вращался. После того как мы передвинули стойку, температура перестала подниматься выше 80 градусов.
Кстати, если искусственно включить вентиляторы на стопроцентную производительность, то температура держится на уровне 70—75 градусов.
До чего техника дошла!
Я всегда думал, что записанный голос с объявлениями в начале полёта воспроизводится
По крайней мере, на вчерашнем рейсе (мы летели на «Аэробусе
Стамбул: кошки
Красоты города — это, конечно, отлично, но больше всего меня в Стамбуле удивили кошки. В прошлый наш приезд сюда, в 2012 году, мне это в глаза не бросилось. Впрочем, может, мы были в другом районе и не по всему городу так, но в этот раз ухоженные, упитанные кошки окружают нас буквально на каждом шагу.
Как сказала дочка, они тут «не облезлые попрошайки, а знатные толстенькие гости» — на улице даже есть специальные автоматы, куда можно бросить монетку, чтобы их накормить. Но и кроме этого тут постоянно встречаются вполне обычные кормушки, а так же домики для уличных кошек, стоящие прямо на пороге многочисленных кафешек и магазинов.
Они часто лежат или сидят где придётся и их никто не гоняет. Видимо поэтому большинство кошек непуганые, ласковые, сами бросаются гладиться.
У нас в Казани есть антикафе «Мурзик», где можно попить чай и погладить кошек, а тут — весь город такое антикафе.
GPU: кратко про RTX 6000 Pro
Некоторое время назад я обещал выложить цифры производительности очень интересного графического ускорителя — RTX 6000 Pro.
Коротко: пока результатов нет. Несмотря на мощные вентиляторы на самой карте и уже установленные в корпусе компьютера, в который мы её поставили, она перегрелась в одном из первых тестов.
Будем усиливать охлаждение — добавим дополнительные вентиляторы и попробуем снова.
Бытовое: вылет в Стамбул
Вчера весь день добирались до Стамбула — встали в шесть утра, а до отеля добрались незадолго до полуночи. Больше всего времени ушло на ожидание вылета — его несколько раз переносили. Должны были вылететь в 10¹⁰, а по факту в самолёт сели уже после пяти вечера.
Летели «Турецкими авиалиниями», и вот странность: авиакомпания сообщала нам об изменениях в расписании иногда за несколько часов до того, как они появлялись на табло в аэропорту. Так было три раза.
Например, я сфотографировал табло в 16¹¹. На табло было написано, что задержка нашего рейса — до 16³⁰, тогда как уже в 14²⁵ мы получили письмо, в котором сообщалось, что она будет до 16⁵⁵. То ли аэропорт не общается с авиакомпанией, то ли им просто пофиг.
Я ставлю на второй вариант. Мы сидели
Например, только от неё я узнал, что наш самолёт, не сумев сесть в Казани, приземлился в Уфе и ещё оттуда не вылетел, тогда как общее табло оптимистично сообщало, что мы
Я вообще понял, что мне бы хотелось видеть более подробный прогресс на табло. Например,
Нейросети: Gemini 3.1 Pro Preview
Заметил сегодня, что в «Курсоре» появилась Gemini 3.1 Pro. А я только утром читал статью о том, что она стала доступна для раннего ознакомления и, якобы, уже «всех рвёт» по интеллекту. Заинтересовался, но, если честно, то, что я увидел, пока меня не впечатлило.
Собственно, всё на скриншоте — даже мой промпт видно.
Логично, что для локальных адресов этого делать не нужно — именно эту задачу я и поставил «Джемини».
В итоге решение содержит ошибку — если адрес будет начинаться на localhost (при этом он может не быть локальным) или некоторых цифр (такие домен я иногда встречаю), то алгоритм будет давать ложноположительный результат.
Книги: «Вопрос и ответ»
Вчера прочитал вторую книгу из серии «Трилогия хаоса» Патрика Несса. По первой книге в 2021 году был снят фильм «Поступь хаоса», может,
После книг про Боба
Зато в этой книге самый достоверный антогонист, которого я вообще могу вспомнить. Он раз за разом обманывал не только главных героев, но и меня. Раз за разом я почти ему верил, иногда всерьёз сомневаясь, — может быть я неправильно понял, может он это всё делает на благо? Не помню, чтобы я ещё
Не думаю, что это спойлер, когда читаешь книгу,
Бытовое: заснеженный Стамбул
Напрасно я надеялся сбежать от зимы в Стамбул: сегодня написала экскурсовод, которую мы там наняли, и сказала, что в воскресенье в Стамбуле ожидается снег. Ну что за шутки, зима? Я надеялся хоть
Ещё
Это непрошеное волнение, плюс погода, плюс дорога (очень не люблю проводить много времени в пути), — и я уже начинаю жалеть, что вообще всё это затеял: потратил деньги, семью потащил. Быстрее бы уже в самолёт — там уже поздно размышлять, не плюнуть ли на всё и не остаться ли дома.
Острова: предвкушаю
Ещё даже весна не наступила, а я уже предвкушаю, как мы с друзьями снова поедем летом на необитаемые острова — мы уже который год туда ездим, ночуя в палатке.
И который год пытаемся подобрать правильную обувь, чтобы с комфортом ходить по тамошнему каменистому берегу. Кроссовки неудобны тем, что промокают, в сапогах жарко, так что в прошлом году, закрывая сезон, мы пообещали друг другу испытать «кроксы».
Никто из нас их никогда не носил, но со стороны они выглядят подходящей обувью — мягкие, дышащие, и носок у них закрыт, в отличие от тапок — не поранишься о камни. Не уверен, что они не будут спадать при ходьбе с мокрой ноги, но почему бы не попробовать?
Правда, честно говоря, я совсем забыл про то обещание, пока
Чтобы они не лежали просто так, надел их в офис — у нас там многие ходят в «кроксах». Они вообще
Правда на острова их везти
Стены в кафе
Мы с прошлого года пытаемся расширить кафе — взяли в аренду соседнее большое помещение и делаем там ремонт. Не очень ходко всё идёт, но к финалу двигается. А так как помещения мы арендуем в старинном здании, когда сняли весь гипсокартон, я не мог не посмотреть что же за ним скрывалось.
Оказалось, что часть дома, по всей видимости, строилась позднее, потому что, на стене отчётливо видны заложенные дверь и окно. Ведут они с соседнее помещение, там где у нас сейчас кафе и с той стороны их, кстати, не видно. Если дверь может быть межкомнатной, то с окном непонятно —
Внутри противоположной стены открылся ещё и старый домоход в копоти, но его уже заделали, не успел сфотографировать. При этой печки нет, то ли разобрали, то ли она была
Подписки
Недавно один приятель, когда мы затронули тему подписок на разные стриминговые сервисы
Зато у меня три подписки на нейроинструменты: «Нанабанану», где я обрабатываю фотографии; «ЧатГПТ» — для глубокого поиска и обработки текстов; и «Курсор», где я программирую.
Все сервисы заграничные, и меня очень раздражает, как во всех них реализована оплата. Я не держу на карте, которой их оплачиваю, много денег и, конечно же, время от времени, когда очередной сервис пытается списать деньги, их там не хватает.
Сегодня я борюсь с «Курсором». Уже оплатил всё вручную, но «Курсор» деньги всё равно не видит, хотя прошло уже несколько часов.
«Виола»: нейросеть «Опус 4.6»
Недавно компания «Антропик» выпустила новую нейросеть для программирования — «Опус 4.6». Я с большим интересом слежу за тем, что они выпускают, потому что, по моему опыту, их сетки программируют лучше любых других.
У меня в загашнике есть несколько сложных задач и с каждым обновлением программирующих нейросетей этот список потихоньку убывает — те задачи, которые ещё недавно были им не по зубам, постепенно поддаются.
«Опус 4.6» я тестировал на задаче реализации типа нумерации для списков в «Виоле» — в найденных мной материалах упоминается, что такая возможность должна быть, но она так и осталась нереализованной.
До выхода «Опуса 4.6» нейросети с этой задачей не справлялись — либо ломали код, либо делали довольно кривую реализацию. «4.6» с задачей справилась. Рабочую реализацию она написала примерно с третьего раза, но я считаю, что это очень хороший результат, учитывая скорость её работы. Правда было два неприятных момента.
С этим багом мы боролись очень долго. Конечно, это ожидаемо — «Курсор», — среда разработки, которую я использую,
RTX 6000 Pro
Настройка больших языковых моделей на оборудовании —
В ходе экспериментов выяснилось, что лучше всего себя ведёт конфигурация из четырёх одинаковых моделей, установленных на паре видеокарт каждая. Я это связываю с тем, что в других конфигурациях либо слишком интенсивный обмен по NVLink, либо, напротив, модель слишком «зажата» по памяти — на кеши выделено слишком мало.
В общем, пока всё приходится испытывать на практике — выходит новое оборудование и надо понимать можем ли мы его рекомендовать клиентам.
В прошлом году появилась очень интересная карта — RTX 6000 Pro. Мы её заказали, чтобы погонять на ней наши модели. Она втрое дешевле, чем H100, при этом производительность у неё далеко не втрое ниже. В аренду мы почему разным причинам не смогли её получить, поэтому купили.
На фотографии я держу её в руке — оцените, какая она огромная, и поверьте: очень увесистая. Тут она в исполнении Workstation Edition, поэтому у неё есть собственное охлаждение; обычно в серверных картах оно только пассивное.
Погоняем тесты, потом постараюсь
Бытовое: город завалило
В этом году в Казани очень снежная зима: дорожные службы стараются изо всех сил, но не справляются, когда снег идёт несколько дней подряд. Во всех дворах — огромные кучи снега, вывозить не успевают. Кажется, прошлой зимой было то же самое: я помню, мы кучу денег заплатили за вывоз снега в коммунальных счетах.
Много засыпанных по крышу машин даже в рабочие дни — люди, похоже, даже не пытаются выехать. Легковушки вязнут в хрущёвских дворах, где не особо чистят; много машин стоит, мигая аварийками, на поворотах — там скапливается снег, когда его счищают с больших дорог.
В такую зиму я очень рад, что у нас гибридная машина: четыре независимых двигателя, почти 500 лошадиных сил суммарно. Пока проезжаем везде безо всяких проблем — только подвеску переводим в верхнее положение. Машина у нас ещё и очень тяжёлая за счёт батареи, поэтому сцепление у колёс очень хорошее — помогает в сложных ситуациях. В общем, китайцы — молодцы, умеют делать.
Формально — двадцать дней до весны, но зима как будто
Утилита «s-tools»
Вчера перед сном вспоминал, что ещё я такого программировал в детстве, о чём можно упомянуть, кроме программы «Паррот», о которой я рассказывал около месяца назад. Вспомнил про утилиту s-tools, которую мы писали вдвоём с братишкой на ассемблере x86 под ДОС.
Название придумал я. Расшифровывалось оно как «Stepanischevs’ tools», а сокращение намеренно было сделано похожим на «stools» — «табуретки», поэтому я нередко так эту утилиту и называл.
Это был набор утилит в одном файле и самый объёмный код на ассемблере, который мы
Утилиты вызывались, если я ничего не путаю, при помощи номерного ключа, после которого шли параметры самой утилиты. К каждой из них прилагалось описание на русском языке. Часть программ была «резидентами» (TSR), и некоторые из них умели загружаться в HMA.
В ДОСе были специальные вызовы, при помощи которых можно было выделить себе в HMA кусочек памяти. Но поскольку это был один сегмент, программам приходилось модифицировать себя, чтобы поменять у себя внутри адреса ячеек памяти и использовать только ближние вызовы (jmp near или call near).
Я попытался вспомнить что именно умели «табуретки», но вспомнил только малую часть, разумеется. Утилиты в моём списке идут не по порядку следования, я его просто не помню.
Первое, что я вспомнил — в отдельном файле s-tools.ovl лежал шрифт, который мы вынули
Вторая утилита умела поднимать тайминги памяти на PC XT, идея была подсмотрена
Третья утилита решала проблему буфера клавиатуры. Компьютеры в те времена работали так медленно, что не успевали обрабатывать весь ввод пользователя, он попадал в специальный буфер, а уже оттуда его забирали программы. Если вы печатали достаточно быстро, вы вполне могли упереться в размер буфера и услышать звуковой сигнал, означающий, что вам надо подождать.
Буфер можно было переместить, но недалеко — в пределах, если ничего не путаю, первых 64 килобайт ОЗУ. Я тогда нашёл в ДОС два неиспользуемых зарезервированных участка памяти, куда, на выбор, и переставлял этот буфер. Второй из этих участков
Четвёртая утилита меняла палитру экрана. Если верно помню,
Следующая утилита выводила по нажатию
Шестая утилита умела записывать в файл нажатые клавиши, а потом их «проигрывать» — это было удобно для автоматизации
Седьмую утилиту я написал уже когда учился в Университете. Как я уже упоминал, я тогда работал лаборантом и, как и все лаборанты, нередко
Позже
Восьмую утилиту, возможно, следовало бы вспомнить первой. Не исключено, что с неё и начались «табуретки», но это не точно. В те времена мы много работали с дискетами и, если на них портился сектор на нулевой дорожке, где помещалось оглавление файловой системы, то её можно было выбрасывать — несмотря на то, что другие сектора в таких случаях помечались как «плохие» и просто не использовались, тот же фокус с нулевой дорожкой не проходил.
Один из наших соотечественников написал драйвер pu_1700, позволявший выбрать другую дорожку для хранения оглавления. Было только одно неудобство — драйвер приходилось запускать с разными параметрами руками, чтобы работать с разными дискетами.
В «табуретках» была резидентная программа, которая по горячей клавише патчила память pu_1700, меняя дорожку с оглавлением. Это позволяло быстро переключаться между стандартными и нестандартными дискетами.
Больше никаких подробностей я чётко не помню.
Смутно припоминаю, что была некая утилита для сканирования файловой системы, которую точно писал братишка, но что она делала вспомнить не могу. Кроме того, было