Все потоки
Поиск
Написать публикацию
Обновить
119.04

Ненормальное программирование *

Извращения с кодом

Сначала показывать
Порог рейтинга
Уровень сложности

Мой худший образец полезного кода

Время на прочтение5 мин
Количество просмотров9.7K

Однажды на собеседовании меня попросили привести примеры написанного мной кода: один — которым я наиболее горжусь, и другой — который я считаю наиболее неудачным. Недолго думая, я осознал, что на оба вопроса у меня готов ответ, и это один и тот же фрагмент кода. Горжусь я им потому, что, пожалуй, из всей моей практики именно этот код оказался наиболее весом, а стыжусь из-за него, так как, по мнению большинства из его читателей, этот код начался с костыля, который затем стали развивать: 

Читать далее

Налог на дизайн и его невидимые слоны

Уровень сложностиПростой
Время на прочтение2 мин
Количество просмотров481

Когда речь заходит о налоге на добавленную стоимость (НДС), концепция кажется элементарной, но на деле процесс может быть весьма запутанным и сложным. И тут возникает тот самый "налог на дизайн".

Читать далее

Как не-программист спас дедлайн и защитил тайны компании: История Веры и GPT для проверки договоров

Уровень сложностиПростой
Время на прочтение3 мин
Количество просмотров3.3K

Привет, Хабр! Меня зовут Александр, я лидер команды DevSup (это как DevOps, только с функцией поддержки больших клиентов которым Saas не подходит) в IT-компании ПравоТех.
 Мы создаем решения (например, case.one для ведения дел и doc.one для документооборота), чтобы юристы, менеджеры и все кто рядом с юриспруденцией могли работать быстрее, умнее и спокойнее. Наша миссия – «Помогаем людям получать удовольствие от работы».
Сейчас у нас активно внедряются ИИ-инструменты. Создаются боты для консультаций и опросов, часто обращаемся к большим моделям чтобы «обстучать» какую-то идею.
В этой статье поделюсь историей о том, как эффективно и безопасно использовать ИИ, превратив рутину в решенную задачу. 
 
Итак, представьте: вам в руки попадает договор поставки ПО. Не просто договор, а целая книжечка на 50-70 страниц А4. Нужно срочно – за 2-3 дня! – проанализировать его вдоль и поперек: проверить сроки, штрафы, бонусы, риски для вашей компании. Знакомая ситуация для менеджеров, юристов, закупщиков?

Дилемма: Выкроить время и вычитать всё дотошно, рискуя не успеть? Или пробежаться по диагонали, надеясь, что глаз «зацепит» опасную формулировку? Соблазн велик: закинуть текст в публичный ИИ-чат (типа ChatGPT или DeepSeek) и спросить: «Эй, ИИ, моя компания ООО «Рога и копыта» – найди всё, что нам невыгодно!»

Цена такого «упрощения» может быть огромной. Давайте разберемся, почему это крайне опасно:

1.  Конфиденциальность — прощай! Условия договора (а они почти всегда секретны!) отправляются владельцу ИИ-сервиса. Нарушение пункта о неразглашении – гарантировано.

Читать далее

«IT-Планета 2025»: задачи второго этапа по PostgreSQL

Уровень сложностиПростой
Время на прочтение29 мин
Количество просмотров3.2K

Мы продолжаем свое участие в международной олимпиаде «IT-Планета».  Как и в прошлые годы, проводился конкурс по SQL, состоящий из трех этапов: теоретический и практический туры, проходящие онлайн, и финальный очный тур.

В первом туре участвовало свыше 4 500 человек, из которых 245 были отобраны во второй. В этом году я занимался разработкой задач и проведением первых двух туров. Предлагаю перейти к рассмотрению задач практического этапа.

Читать далее

«Натягивая сову лингвистики на глобус архитектуры ПО: Что я нашел на стыке»

Уровень сложностиСредний
Время на прочтение11 мин
Количество просмотров1.3K

Давно думаю над моделью, в которой есть всего две формулы:

State = Static + Dynamic

и

State = Fact + Delay.

Казалось бы – пора звонить в Спортлото, не стыковались они у меня, хотя по отдельности каждая формула вроде работает. Но заявить, что на все вопросы я готов ответить по этим формулам – такого ощущения не было.

И вот... Сидел я как-то над пиццей, подумал, что прикольно раскидали начинки. «Четыре вкуса» и всё такое. И как бы мысленно (а потом и физически) ее ни резал – всё равно что-то влезет на соседний кусок. Итогом стало это...

Погнали натягивать сову на глобус!

Лаборатория в смартфоне: изучаем эффект Доплера на палочках в Android

Уровень сложностиСредний
Время на прочтение8 мин
Количество просмотров3.3K

В этой статье мы познакомимся с эффектом Доплера, но не так, как об этом рассказывается в школьном учебнике физики, а посредством своих любопытных глазок и ушек. Поможет нам в этом специально разработанное мной приложение для Андроид-смартфона.

Статья предназначена для девочек и мальчиков, а также их родителей.

Плывём по волнам!

Очередной эмулятор Nes. Продолжаем

Уровень сложностиСредний
Время на прочтение42 мин
Количество просмотров4.1K
image

Всем привет! С вами на связи снова Сергей, и я продолжаю творить «чудо».

В прошлой статье я немного задел тему эмуляции процессора. Советую почитать, кто не читал (ну, опять же, на ваше усмотрение — если решили сделать эмулятор сами, то лучше прочитать). Кстати, я обновил ту статью и немного пробежался по прерываниям. В этой статье, видимо, будет ещё больше технической информации — по правильной реализации памяти и работе с ней. И, наконец, доберёмся до видеоадаптера (PPU).
Читать дальше →

Низкоуровневый скриптинг на C++ для игровых движков

Время на прочтение21 мин
Количество просмотров7.4K

Я постарался охватить только основы, но текст всё равно получился очень длинным.

libriscv — это зрелый эмулятор RISC-V, который в настоящее время используется в игровых движках. Насколько мне известно, это единственный эмулятор, в котором основной акцент делается на обработке задержек, а также предоставляются специализированные решения и инструменты для выполнения быстрых вызовов при обращении с функциями — как входящих, так и исходящих. Причём, всё это заключено в безопасной песочнице. Задержки, наблюдаемые в libriscv,  гораздо ниже, чем в эталонных эмуляторах.

Меня многие спрашивали, как им пользоваться, но здесь интереснее то, как вообще может прийти в голову мысль писать скрипты на C++ — не слишком ли сложно это будет? Оказывается, нет, не очень. Вот уже несколько лет я пишу на C++ скрипты для одной большой и одной не очень большой игры, и меня почти не посещало ощущение, что виной каким-то возникающим при этом проблемам являются язык C++ или связанные с ним скриптовые API. Я много лет программирую на Lua, а до этого пользовался обычным C. Но сейчас современный идиоматический C++ — то, что мне нужно. Причём, я могу писать на этом языке как в самом игровом движке, так и за его пределами, при этом опираясь (буквально) на одни и те же абстракции и оперируя одинаковыми структурами данных. Наконец, C++ просто очень мощный. Правда, я признаю, что о вкусах не спорят, и при работе с C++ также не обойтись без компромиссов.

Читать далее

Делаем сразу множество игр, или Как создать эмулятор

Уровень сложностиСредний
Время на прочтение11 мин
Количество просмотров4.2K
image

Немногие из нас в настоящее время захотят делать эмулятор с нуля. На дворе 21-й век, и разных эмуляторов уже сделано очень много, «на любой вкус и цвет». По большей части бессмысленно создавать новый эмулятор. В данной статье я постараюсь затронуть информацию именно по созданию эмулятора с нуля, а это довольно нелёгкий путь.

Если вы не хотите его проходить, то:

  • возьмите готовый эмулятор;
  • повторите то, что в нём уже сделано.

Но если это не ваш путь, то милости просим в статью.
Читать дальше →

ИИ на Python: кто и зачем передаёт клавиатуру алгоритмам

Уровень сложностиПростой
Время на прочтение3 мин
Количество просмотров2K

Пока одни боятся, что искусственный интеллект отберёт у них работу, другие активно перекладывают на нейросети всё больше своих программных задач. Недавние исследования показывают, кто именно использует генеративный ИИ для написания кода и насколько это выгодно в реальности.

Учёные из Университета Утрехта совместно с Complexity Science Hub решили глубоко разобраться в распространении генеративного ИИ в программировании. Они изучили более 80 миллионов изменений кода на платформе GitHub, сделанных в период с 2018 по 2024 год. Исследователи разработали специальный нейросетевой классификатор, способный отличить код, написанный человеком, от кода, созданного с помощью генеративных алгоритмов.

Выяснилось, что лидерами в этой «гонке автоматизации» стали программисты из Соединённых Штатов. Уже к концу 2024 года более 30% всех Python-функций, написанных разработчиками в США, были результатом работы искусственного интеллекта. Европейские страны, такие как Германия и Франция, также активно следуют этому тренду, достигая показателей в 24,3% и 23,2% соответственно.

Любопытно, что среди стран Азии картина выглядит иначе: если в Индии использование ИИ достигло уровня 21,6%, то в России и Китае показатели значительно ниже — 15,4% и 11,7% соответственно. Эксперты связывают это с различиями в экономических и технологических условиях, а также с возможными регуляторными ограничениями.

Интересным аспектом исследования стало выявление групп, наиболее охотно передающих рутину программирования алгоритмам. Оказалось, что новички, которые недавно начали карьеру на GitHub, особенно склонны использовать нейросети в своей работе — они доверяют ИИ около 41% задач. Опытные программисты более консервативны и чаще предпочитают писать код вручную, полагаясь на алгоритмы лишь в 28% случаев.

Читать далее

Вайб-кодинг как хобби. Генератор вопросов

Уровень сложностиПростой
Время на прочтение5 мин
Количество просмотров2K

С появлением нейросетей, я смог реализовать свою небольшую мечту, а именно написать нагенерировать свою собственную программу, а точнее игру-викторину - Human vs AI. Которая не только запускается и работает, но и люди в нее играют.

Читать далее

Все игры для программистов со Steam Next Fest 2025

Уровень сложностиПростой
Время на прочтение6 мин
Количество просмотров6.5K

Наступил Steam Next Fest 2025 — нам стало доступно 2500 (!) демок игр, которые выйдут в релиз уже в этом году!


Из них под тег programming выставлен только у 18. Давайте посмотрим на каждую из них!


Читать дальше →

Эндрю Ын в защиту «вайб-кодинга»: программирование с ИИ — это не расслабленное хобби

Уровень сложностиПростой
Время на прочтение2 мин
Количество просмотров5.5K

Известный эксперт в области ИИ Эндрю Ын назвал термин "вайб-кодинг" неудачным и вводящим в заблуждение. По его словам, программирование с помощью ИИ — это не интуитивная импровизация, а серьёзная интеллектуальная работа.

Читать далее

Ближайшие события

Думает ли искусственный интеллект о коте Шрёдингера? История о том, как я внедрял в алгоритм идею параллельных вселенных

Уровень сложностиСредний
Время на прочтение127 мин
Количество просмотров1.6K

Представьте алгоритм, который моделирует параллельные реальности: как изменятся системы, если мы чуть сдвинем входные параметры? Какие последствия окажутся важными, а какие — потеряют значение? Какие метрики перестанут работать?

Мы больше не гонимся за одной "истиной". Мы проектируем карту будущего — с ветвлениями, визуализациями и понятными выводами.

Читать далее

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

Уровень сложностиСредний
Время на прочтение10 мин
Количество просмотров7.5K

Осторожно: в данной серии статей я рассказываю о реверс-инжиниринге и хакинге простых кнопочных звонилок. Цель простая: расширить скудный функционал телефонов ценой до 1 000 рублей и сделать их привлекательной платформой для самых разных гиков. Если вам интересно узнать, как происходит процесс взлома и изучения прошивок, а также написания новых программ для кнопочников — жду вас под катом!

Читать далее

Одноклассовый энтерпрайз

Уровень сложностиСложный
Время на прочтение30 мин
Количество просмотров11K

В пригороде далекого города Нью-Дели жил простой индийский паренек со сложным именем Чандракант. Любил он маму, Кришну и общаться с волшебными говорящими грибами.

Читать далее

Недистрибутивность деления, или Как я считал среднюю величину

Уровень сложностиСредний
Время на прочтение8 мин
Количество просмотров6.1K


Казалось бы: сложно отыскать формулу проще, чем нахождение среднего арифметического. Однако код — не формула, вдобавок, если вы пишете на С++, то разного (и в основном неприятного) рода сюрпризы могут ожидать вас где угодно.

Постановка задачи: реализовать функцию uint32_t average(uint32_t a, uint32_t b), не используя типов шире, чем uint32_t, и затем обобщить этот подход на произвольное количество аргументов.
Посмотреть, что из этого вышло

Создание и отладка модулей на языке Verilog (VHDL) в Matlab Simulink

Уровень сложностиПростой
Время на прочтение10 мин
Количество просмотров2.5K

Что если я скажу, что можно создать прошивку для ПЛИС на языке Verilog (VHDL), не написав ни одной строчки кода?

Читать далее

Game++. Performance traps

Время на прочтение27 мин
Количество просмотров10K

Стандартная библиотека C++ содержит множество классов и функций, которые легко интегрируются в проект, безопасны и протестированы на множестве кейсов. Однако за удобность и всеядность приходится платить производительностью. В играх, если производительность сразу не стоит на первом месте, то к концу проекта вы получаете такой технический долг, что проще бывает всё выкинуть и начать заново. Прямолинейное использование стандартной библиотеки в большинстве случаев, когда нужен производительный и эффективный код, я сейчас не только про игры, оказывается не лучшим выбором.

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

Статья рассчитана на читателей, которые не являются гуру C++ или знатоками тонкостей языка, но в целом знакомы с языком и его идеями, хотя знание ассемблера x86 не требуется, я буду прикладывать ссылки на примеры кода quickbench, чтобы объяснить, почему даю те или иные советы.

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

Читать далее

Пишем на C самоизменяющуюся программу x86_64

Время на прочтение14 мин
Количество просмотров18K


«Зачем вообще писать программу, меняющую код в процессе выполнения? Это же ужасная идея!»


Да, всё так и есть. Но это и хороший опыт. Такое делают только тогда, когда хотят что-то исследовать, или из любопытства.


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


Предупреждение: в этом посте активно используется язык ассемблера x86_64, в котором я ни в коем случае не являюсь специалистом. Для написания статьи мне пришлось изучать приличный объём материалов, и, возможно (почти наверняка), в ней есть ошибки.
Читать дальше →

Вклад авторов