惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

H
Help Net Security
C
Cybersecurity and Infrastructure Security Agency CISA
S
Secure Thoughts
Application and Cybersecurity Blog
Application and Cybersecurity Blog
Hacker News: Ask HN
Hacker News: Ask HN
Attack and Defense Labs
Attack and Defense Labs
N
News and Events Feed by Topic
Exploit-DB.com RSS Feed
Exploit-DB.com RSS Feed
A
Arctic Wolf
www.infosecurity-magazine.com
www.infosecurity-magazine.com
cs.CV updates on arXiv.org
cs.CV updates on arXiv.org
The GitHub Blog
The GitHub Blog
W
WeLiveSecurity
Simon Willison's Weblog
Simon Willison's Weblog
WordPress大学
WordPress大学
Y
Y Combinator Blog
Recent Commits to openclaw:main
Recent Commits to openclaw:main
Forbes - Security
Forbes - Security
NISL@THU
NISL@THU
博客园 - 聂微东
G
Google Developers Blog
D
Darknet – Hacking Tools, Hacker News & Cyber Security
Schneier on Security
Schneier on Security
V
Vulnerabilities – Threatpost
V
V2EX
I
Intezer
S
Schneier on Security
Threat Intelligence Blog | Flashpoint
Threat Intelligence Blog | Flashpoint
雷峰网
雷峰网
L
LangChain Blog
小众软件
小众软件
Hugging Face - Blog
Hugging Face - Blog
T
The Blog of Author Tim Ferriss
L
LINUX DO - 热门话题
P
Proofpoint News Feed
Microsoft Security Blog
Microsoft Security Blog
Project Zero
Project Zero
V
Visual Studio Blog
Engineering at Meta
Engineering at Meta
爱范儿
爱范儿
H
Hacker News: Front Page
B
Blog
T
Threatpost
Spread Privacy
Spread Privacy
H
Heimdal Security Blog
F
Fortinet All Blogs
TaoSecurity Blog
TaoSecurity Blog
T
Threat Research - Cisco Blogs
cs.AI updates on arXiv.org
cs.AI updates on arXiv.org
The Cloudflare Blog

Все публикации подряд на Хабре

Ловим музу за клавиатуру: как айтишнику стать автором Что умеет Midjourney в 2026? Мой немного грустный разбор этого шикарного инструмента Никто не любит писать тесты, но ИИ может исправить это IPv8 выглядит как мечта. Поэтому почти наверняка не взлетит Производители вернули в продажу материнки с DDR3. Что происходит? Управление агентом с телефона через Telegram теперь в KodaCode От координации к лидерству: как меняется роль руководителя разработки Я сделала родителям бизнес вместо пенсии: зарабатываем 70 тысяч, мама не даёт продать В три раза быстрее приемка товара и оптимизация трудозатрат на 73%: как «РСТ-Инвент» помог Gulliver Group ИИ-шечный мир победил? О влиянии искусственного интеллекта на игропром Кремль снижает давление на Телеграмм пока Европа строит интернет по паспорту Как CEO, CTO и CIO за 8 часов собрали ИИ-директора, который умеет держать позицию под давлением Как (не) потерять домен за выходные Вместо 8 разных VPS: как я организовал практику студентам на одном сервере Почему твой Open Source проект не замечают? R&D: искусство управления неопределенностью в разработке AI-дефляция: вакансий для разработчиков больше, а рост зарплат — худший за 15 лет Мы отдали управление роботами OpenClaw. Что из этого вышло Галактический ID: система идентификации для всех форм разумной жизни Шесть основ бизнес-анализа: начинаем с вопроса «Кто в игре?» Код-ревью, в котором дело не в коде Данные переехали. Команда — нет Системной подход к сдаче OSWE в 2025 Почему комната управления реактором покрашена в цвет морской пены 4 YAML-файла вместо PySpark: как аналитикам строить пайплайны без разработчиков LLM-агент для поиска свободных доменов: автоматизируем подбор Когда, зачем и как правильно начинать новую сессию в Claude Code? Как я заставил нейросеть писать макросы для FreeCAD Анатомия ИИ‑агента для подбора персонала. От тысячи резюме к топ‑10 за минуты Опыт разработчика как экономика внимания Автономность как точка невозврата: кто будет субъектом в цифровом будущем Обучение ИИ в «диких» условиях: как рутинные действия превращаются в датасеты Как измерить LLM для задач кибербеза: обзор открытых бенчмарков Где хранить код? Сравнение GitHub, GitLab и Bitbucket Математика объясняет, почему нормальное распределение встречается повсюду Почему ваш FinOps не работает: 12 тезисов от практиков Как подписать проектную документацию УКЭП с использованием бесплатных лицензий Pilot Адаптивное администрирование Sigla Vision Я грузил уран в бочки, а потом 20 лет строил ИТ в атомной отрасли Чем позвонить с Эвереста? История и обзор спутниковой связи. Часть 2 Как языковая модель помогает контролировать качество инструктажей по охране труда в металлургии Как не передать на desktop свой IP в РКН Анатомия SAP Privileges: как устроено управление правами в macOS MoneyDev: Сказка про три главных слова Обновлённый токенизатор видео K-VAE 2.0 от Сбера Как сделать диспетчеризацию дома на 1284 квартиры почти бесплатно Как мы разогнали железную дорогу Мы дали агентам рутину. Теперь надо решить — что делать с освободившимся временем Токсичный контент, промпт-хакинг и защита ИИ — всё о Guardrails для LLM Умный город начинается с точного взгляда: как «Фалькон Тех» меняет пространство к лучшему Навайбкодил приложение для анализа графов Почему Дюну так интересно читать? Упрощаем работу с рутиной или как стать Гендальфом Белым Деконструкция Go: CPU, RAM и что там происходит. Go Assembler база. Часть 1.1 Какие профессии исчезнут из-за ИИ, а какие появятся? И что с этим делать Как мы построили IT-отдел, где хочется расти: архитектурные встречи, прозрачные метрики и книжные подарки Rufler: Делаем из Claude Code автономный рой через один YAML-конфиг Sing-box и белый список приложений Как построить надёжный обмен сообщениями в микросервисах: лучшие практики для enterprise OpenAI строит MLM-пирамиду, а McKinsey и Accenture помогают ей в этом Дом, который не построил Фишер (Часть 2) «Сверхзвуковой математик» против «Вдумчивого логиста»: битва алгоритмов 3D-упаковки Мультимодальные модели – грубый и дорогой инструмент Разговоры ничего не стоят. Код тоже Проверки физических лиц: с кого начнет ФНС Топ-10 бесплатных нейросетей для создания видео в 2026 году Первые слои кода: как наши решения сегодня определяют архитектуру ИИ на десятилетия Разработка нового статического анализатора: PVS-Studio JavaScript Поиск уязвимостей ПО: базовый минимум или роскошный максимум Почему оценка персонала не работает как инструмент управления Как мы разработали ИИ-ассистента и сократили рутину продуктовой команды на 50% Как я ушел из найма, нажарил косточек и продал на маркетплейсах на 168 млн в год Когда 1С:ERP уже внедрена, а нормального производственного плана всё ещё нет Как я сделал Claude мультимодальным, подключив к нему Qwen Omni Как приглашение на вакансию мечты превращается в атаку Infrastructure as Code: философия и лучшие практики IaC Тестируем Yandex Code Assistant на задаче, в которой нужно хранить секреты nxs-universal-chart v3.0: новое поколение универсального Helm-чарта Callback Injection: Техника, которая отправила Microsoft Defender в глухой нокаут «Все идеи на стол»: митап как способ вывести проект из тупика Сегодня я узнал нечто новое о GPU благодаря багу в своей игре Как заставить LLM ̶ ̶г̶а̶л̶л̶ю̶ ̶ эволюционировать Карта событий как фундамент аналитики: практический кейс для E-commerce Что выбрать для AI: x86, ARM или RISC-V? Дайджест железа за март Роль соматических мутаций в развитии аутоиммунных заболеваний: путь к избирательной терапии Mythos от Anthropic — тревожный сигнал для всех, а не только для банков Guardrails для LLM на Java: как приручить промпт‑инъекции и токсичные ответы Green-VLA: как мы собрали VLA-модель для реального антропоморфного робота и не потеряли обобщение Финансовая гонка вооружений: почему умные люди добровольно в ней участвуют Эра ИИ-агентов наступила: выбираем лучшего цифрового сотрудника # Практический опыт внедрения WinCC Redundancy на производственном предприятии Сделал MVP за 3 дня, а потом неделю прикручивал оплату. Оно того стоило? Физика против Маска: почему Starship V3 может оказаться ещё одной катастрофой Нефть Венесуэлы: крупнейшие запасы в мире, но не крупнейшая нефтяная держава JPA 4. Переосмысление Hibernate Почему зеркальная фотокамера Nikon D5 десятилетней давности идеально подошла для миссии «Артемида-2» Проект «Уровень-Спутник» или как мы сделали платформу для гидрологов «Замедлиться, чтобы ускориться»: почему ИИ повышает цену ошибок в требованиях и архитектуре Как с нуля поднять трафик IT-компании на 1657% при бюджете 55 тыс. и выжить Pixel-perfect Downsampling — идеальная отрисовка 50 миллионов точек без потерь
Генератор кода vs ChatGPT 5.3 Codex — тестируем кто пишет код лучше
Tehnoblog1 · 2026-05-12 · via Все публикации подряд на Хабре

Ещё три года назад идея попросить нейросеть написать рабочий код казалась экспериментом для энтузиастов. Сейчас это обычная рабочая практика. Разработчики используют ИИ чтобы закрывать рутинные задачи быстрее, а люди без технического образования — чтобы решать задачи которые раньше требовали нанять специалиста.

Вопрос уже не «умеет ли нейросеть писать код». Вопрос — какая справляется лучше и в чём разница.

Взяли два инструмента с Study AI — Генератор кода и ChatGPT 5.3 Codex — и прогнали через два теста: написать код с нуля и найти ошибку в готовом. Смотрим что вышло.

Генератор кода vs ChatGPT 5.3 Codex

Генератор кода vs ChatGPT 5.3 Codex

Участники тестирования

Генератор кода

Генератор кода - специализированная модель заточенная именно под работу с кодом. В отличие от универсальных языковых моделей, она обучена преимущественно на репозиториях, технической документации и задачах программирования. Понимает контекст кода глубже — видит не просто синтаксис, а логику и архитектуру.

Хорошо справляется с генерацией с нуля, рефакторингом, поиском ошибок и объяснением чужого кода. Отвечает лаконично — без лишних слов вокруг кода.

Генератор кода

Генератор кода

ChatGPT 5.3 Codex

ChatGPT 5.3 Codex - это версия GPT специально оптимизированная для задач программирования. Умеет работать с кодом в широком контексте — понимает не только что написано, но и зачем, предлагает альтернативные подходы, объясняет решения развёрнуто.

Сильная сторона — работа с многоязычными проектами и нестандартными задачами где нужна не просто генерация, а рассуждение над архитектурой.

ChatGPT 5.3 Codex

ChatGPT 5.3 Codex

Оба инструмента доступны на Study AI без VPN и лишних регистраций.

Тест 1: написать код с нуля

Задание

Написать на Python функцию которая переводит текст в азбуку Морзе. На вход — строка, на выходе — строка с точками и тире. Должна обрабатывать буквы, цифры и пробелы. Если символ не поддерживается — пропускать его.

Небольшое, понятное, с чётким ожидаемым результатом — хорошо подходит для сравнения.

Промт для обеих нейросетей

Напиши функцию на Python которая переводит текст в азбуку Морзе.
Вход: строка с текстом (буквы, цифры, пробелы).
Выход: строка с кодом Морзе, символы разделены пробелом,
слова разделены " / ".
Неподдерживаемые символы — пропускать без ошибки.
В конце покажи пример использования с выводом.

Генератор кода — результат

from typing import Dict

# International Morse code mapping for Russian + English letters and digits
MORSE_MAP: Dict[str, str] = {
    # Russian letters
    "а": ".-", "б": "-...", "в": ".--", "г": "--.", "д": "-..", "е": ".",
    "ё": ".", "ж": "...-", "з": "--..", "и": "..", "й": ".---", "к": "-.-",
    "л": ".-..", "м": "--", "н": "-.", "о": "---", "п": ".--.", "р": ".-.",
    "с": "...", "т": "-", "у": "..-", "ф": "..-.", "х": "....", "ц": "-.-.",
    "ч": "---.", "ш": "----", "щ": "--.-", "ъ": "--.--", "ы": "-.--", "ь": "-..-",
    "э": "..-..", "ю": "..--", "я": ".-.-",
    # English letters
    "a": ".-", "b": "-...", "c": "-.-.", "d": "-..", "e": ".", "f": "..-.",
    "g": "--.", "h": "....", "i": "..", "j": ".---", "k": "-.-", "l": ".-..",
    "m": "--", "n": "-.", "o": "---", "p": ".--.", "q": "--.-", "r": ".-.",
    "s": "...", "t": "-", "u": "..-", "v": "...-", "w": ".--", "x": "-..-",
    "y": "-.--", "z": "--..",
    # Digits
    "0": "-----", "1": ".----", "2": "..---", "3": "...--", "4": "....-",
    "5": ".....", "6": "-....", "7": "--...", "8": "---..", "9": "----.",
}

def text_to_morse(text: str) -> str:
    """Convert text to Morse code.
    Rules:
    - letters/digits are separated by a single space
    - words are separated by " / "
    - unsupported characters are skipped without error
    """
    words = text.lower().split()
    encoded_words = []
    for word in words:
        encoded_symbols = []
        for ch in word:
            morse = MORSE_MAP.get(ch)
            if morse is not None:
                encoded_symbols.append(morse)
        if encoded_symbols:
            encoded_words.append(" ".join(encoded_symbols))
    return " / ".join(encoded_words)

if __name__ == "__main__":
    sample_text = "Привет, World 123 !"
    result = text_to_morse(sample_text)
    print("Input:", sample_text)
    print("Morse:", result)

Вывод:

Input: Привет, World 123 !
Morse: .--. .-. .. .-- . - / .-- --- .-. .-.. -.. / .---- ..--- ...--

Сразу бросается в глаза: Генератор кода добавил полную поддержку русского алфавита — без дополнительного запроса. Все 33 буквы, включая ё, ъ, ы. Кроме того — аннотация типов через Dict[str, str], docstring с чёткими правилами, обработка регистра через .lower().

Результат генератора кода

Результат генератора кода

ChatGPT 5.3 Codex — результат

def text_to_morse(text: str) -> str:
    """
    Преобразует текст в азбуку Морзе.
    Правила:
    - Поддерживаются буквы (латиница), цифры и пробелы.
    - Символы в Морзе разделяются пробелом.
    - Слова разделяются " / ".
    - Неподдерживаемые символы пропускаются без ошибки.
    """
    morse_map = {
        # Буквы A-Z
        'A': '.-', 'B': '-...', 'C': '-.-.', 'D': '-..', 'E': '.',
        'F': '..-.', 'G': '--.', 'H': '....', 'I': '..', 'J': '.---',
        'K': '-.-', 'L': '.-..', 'M': '--', 'N': '-.', 'O': '---',
        'P': '.--.', 'Q': '--.-', 'R': '.-.', 'S': '...', 'T': '-',
        'U': '..-', 'V': '...-', 'W': '.--', 'X': '-..-', 'Y': '-.--',
        'Z': '--..',
        # Цифры 0-9
        '0': '-----', '1': '.----', '2': '..---', '3': '...--',
        '4': '....-', '5': '.....', '6': '-....', '7': '--...',
        '8': '---..', '9': '----.'
    }
    encoded_words = []
    # Разделяем по пробелам: каждое слово кодируем отдельно,
    # между словами затем ставим " / "
    for word in text.upper().split():
        encoded_chars = []
        for ch in word:
            code = morse_map.get(ch)
            if code is not None:  # неподдерживаемые символы пропускаем
                encoded_chars.append(code)
        if encoded_chars:  # добавляем только непустые слова
            encoded_words.append(' '.join(encoded_chars))
    return ' / '.join(encoded_words)

# Пример использования
input_text = "Hello 123 world!"
result = text_to_morse(input_text)
print("Вход:", input_text)
print("Выход:", result)

Вывод:

Вход: Hello 123 world!
Выход: .... . .-.. .-.. --- / .---- ..--- ...-- / .-- --- .-. .-.. -..

Codex поместил словарь прямо внутрь функции и добавил подробный docstring на русском. Код компактнее и читается как единое целое — всё в одном месте, ничего лишнего снаружи. Из минусов: только латиница, русский алфавит не поддерживается.

Результат ChatGPT 5.3 Codex

Результат ChatGPT 5.3 Codex

Итог теста 1

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


Тест 2: найти и исправить ошибку

Код с ошибкой

Вот небольшая функция на Python. Она должна находить самый частый элемент в списке. Код выглядит правдоподобно — но в нём есть ошибка.

def most_frequent(numbers):
    counts = {}
    for num in numbers:
        if num in counts:
            counts[num] += 1
        else:
            counts[num] = 0  # <- вот здесь

    return max(counts, key=counts.get)

print(most_frequent([1, 2, 2, 3, 3, 3, 4]))

Где ошибка: в строке counts[num] = 0. Когда элемент встречается впервые, его счётчик устанавливается в 0 вместо 1. В итоге все элементы которые встречаются ровно один раз получают счётчик 0, а те что встречаются дважды — счётчик 1 (а не 2). Функция возвращает неправильный результат — в данном случае выдаст 2 вместо 3.

Промт для обеих нейросетей

Найди ошибку в этом Python-коде и исправь её.
Объясни что именно было не так.

[код вставляется полностью]

Генератор кода — результат

Нашёл ошибку сразу и точно:

Когда число встречается впервые, ты ставишь счётчик в 0, хотя первая встреча уже произошла. Из-за этого все частоты занижены на 1.

Исправленный код:

def most_frequent(numbers):
    if not numbers:
        raise ValueError("numbers must not be empty")
    counts = {}
    for num in numbers:
        if num in counts:
            counts[num] += 1
        else:
            counts[num] = 1  # первая встреча = 1
    return max(counts, key=counts.get)

if __name__ == "__main__":
    print(most_frequent([1, 2, 2, 3, 3, 3, 4]))  # 3

Помимо основного исправления добавил проверку на пустой список — чтобы max() не падал с неочевидной ошибкой. Лаконично и по делу.

Исправление ошибки в Генераторе кода

Исправление ошибки в Генераторе кода

ChatGPT 5.3 Codex — результат

Тоже нашёл ошибку, объяснил чуть подробнее:

Ошибка в строке инициализации счётчика: было counts[num] = 0, должно быть counts[num] = 1. Когда число встречается впервые, его частота уже равна 1. Если поставить 0, все частоты будут занижены на 1. В этом примере итог часто получается правильным — потому что относительный порядок частот сохраняется — но это логически неверный подсчёт и может привести к проблемам при дальнейшей обработке частот.

Исправленный код:

def most_frequent(numbers):
    if not numbers:
        raise ValueError("Список numbers не должен быть пустым")
    counts = {}
    for num in numbers:
        if num in counts:
            counts[num] += 1
        else:
            counts[num] = 1  # исправлено: первая встреча = 1, а не 0
    return max(counts, key=counts.get)

print(most_frequent([1, 2, 2, 3, 3, 3, 4]))  # 3

Тоже добавил проверку на пустой список — независимо от первого.

Исправление ошибок в ChatGPT 5.3 Codex

Исправление ошибок в ChatGPT 5.3 Codex

Итог теста 2

Оба нашли ошибку правильно и оба самостоятельно добавили проверку на пустой список — без запроса. Разница в подаче: Генератор кода — коротко, с пояснением. Codex — чуть подробнее, отдельно объясняет почему на конкретном примере результат всё равно иногда выходит верным — и это полезно если важно понять суть, а не просто получить фикс.

Вопросы и ответы

Подходит ли это для людей без опыта программирования? Да. Для простых задач — написать скрипт, автоматизировать таблицу, собрать парсер — опыт не нужен. Главное чётко описать что должна делать программа. Чем конкретнее описание, тем точнее результат.

Можно ли доверять коду нейросети в продакшн? Простые функции — как правило да, после проверки. Сложную архитектуру, код с доступом к базам данных или финансовыми операциями — лучше проверять с разработчиком. Нейросеть может написать код который работает, но не оптимально или небезопасно.

На каком языке программирования лучше работают? Python — лучше всего, он был в обучающих данных больше всего. JavaScript, TypeScript, Go, Rust — тоже хорошо. Редкие или специфические языки — хуже, возможны ошибки.

Что лучше — Генератор кода или Codex? Зависит от задачи. Генератор кода — когда нужно быстро сделать или исправить. Codex — когда важно понять логику и получить подробное объяснение. Попробовать оба на своей задаче можно на Study AI.

Как правильно описывать задачу для лучшего результата? Указывайте язык, входные данные и ожидаемый результат. Если есть ограничения — напишите их сразу. «Напиши функцию на Python, вход — список чисел, выход — число, без использования сторонних библиотек» — это хороший промт.

Заключение

Обе нейросети справились с задачами уверенно. Рабочий код с нуля, найденная ошибка с объяснением — без единой подсказки.

Разница между ними не в качестве, а в стиле и глубине. Генератор кода — быстро, компактно. ChatGPT 5.3 Codex — подробно, с комментариями и разбором логики. Для разных ситуаций подходят разные инструменты — и хорошо что они доступны в одном месте.

Попробовать написать код в нейросети на Study AI