Кому нужен этот промт и как он работает?
Этот промт предназначен для программистов, студентов и всех, кто хочет улучшить навыки отладки кода. Он помогает практиковаться в нахождении и исправлении различных видов ошибок в коде, что важно как для обучения, так и для повышения профессионального уровня.
Промт работает, генерируя фрагменты программного кода с преднамеренными, но неочевидными ошибками. После каждого примера он предлагает пользователю найти ошибку и при необходимости получить подсказку. Затем даётся краткое объяснение, почему это ошибка и как её исправить. Такой интерактивный подход способствует глубокому пониманию типов ошибок и методам их поиска.
Готовый промт
1 |
Представь, что ты AI, который пишет код с ошибками, чтобы я мог тренироваться в нахождении багов. После каждого сгенерированного фрагмента кода с ошибкой добавляй фразу: "Если ты не можешь найти ошибку, можешь попросить помощь" и останавливайся. После моего ответа давай краткое объяснение и обратную связь. Ошибки должны циклично включать: 1) Проблемы с конкуренцией (гонки, взаимоблокировки, неконсистентный доступ к ресурсам), 2) Логические ошибки, 3) Ошибки валидации ввода (уязвимости: переполнение буфера, SQL-инъекции, XSS), 4) Проблемы с производительностью, 5) Ошибки рекурсии (отсутствие условия выхода или нежелательные модификации через ссылки). Создавай ошибки реалистично, но неочевидно. В начале спроси: "На каких языках программирования ты хочешь улучшить навыки отладки сегодня?" |
Как использовать промт и на что обратить внимание
Перед началом работы уточните, для каких языков программирования будет полезна тренировка — это помогает генерации более релевантных примеров.
После получения каждого фрагмента внимательно изучайте код перед тем, как просить подсказку. Такой подход развивает аналитическое мышление и навыки отладки.
Рекомендуется использовать промт последовательно, чтобы проходить все типы ошибок циклично и охватывать разные группы проблем.
Помните, что сгенерированные ошибки намеренно сделаны неочевидными, поэтому не всегда они будут легко обнаружимы с первого взгляда.
В редких случаях AI может не идеально сгенерировать ошибку, если язык программирования очень специфичен или содержит мало контекста, — в таких ситуациях полезно уточнять запрос.
Примеры использования
Пример 1. Развитие навыков отладки на Java
1 |
На каких языках программирования ты хочешь улучшить навыки отладки сегодня? Java |
Этот вариант помогает отработать поиск ошибок, связанных с многопоточностью, логикой и безопасностью, на практике использования Java.
Пример 2. Обучение обработке уязвимостей в веб-приложениях на JavaScript
1 |
На каких языках программирования ты хочешь улучшить навыки отладки сегодня? JavaScript |
Такой вариант полезен для тренировки в обнаружении XSS, SQL-инъекций и проблем с производительностью именно в контексте frontend и backend JavaScript-разработки.
Пример ответа нейросети на этот промт
AI может начать диалог так:
«На каких языках программирования ты хочешь улучшить навыки отладки сегодня?»
После ответа, например «Python», сгенерирует код с ошибкой:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 |
import threading counter = 0 def increment(): global counter for _ in range(100000): counter += 1 # Ошибка: отсутствует синхронизация при доступе к общему ресурсу, возможны гонки. threads = [] for i in range(5): t = threading.Thread(target=increment) threads.append(t) t.start() for t in threads: t.join() print(f"Counter value: {counter}") Если ты не можешь найти ошибку, можешь попросить помощь. |
После запроса пользователя пояснит, что значение переменной counter
может быть некорректным из-за отсутствия блокировок при одновременном доступе из нескольких потоков.
Итог: зачем использовать этот промт?
Данный промт существенно упрощает процесс обучения поиску и устранению ошибок в коде. Он позволяет тренировать мышление программиста, помогая стать внимательнее и быстрее находить сложные баги. Такой интерактивный способ обучения повышает качество знаний и сэкономит время на практике.
Главное преимущество: эффективная и систематическая тренировка навыков отладки с помощью реалистичных, разнообразных ошибок.