{"meta":{"title":"Объяснение устаревшего кода","intro":"Копилот Чат может помочь объяснить незнакомый код.","product":"GitHub Copilot","breadcrumbs":[{"href":"/ru/copilot","title":"GitHub Copilot"},{"href":"/ru/copilot/tutorials","title":"Учебники"},{"href":"/ru/copilot/tutorials/copilot-chat-cookbook","title":"Кулинарная книга чата GitHub Copilot"},{"href":"/ru/copilot/tutorials/copilot-chat-cookbook/document-code","title":"Код документа"},{"href":"/ru/copilot/tutorials/copilot-chat-cookbook/document-code/explain-legacy-code","title":"Объяснение устаревшего кода"}],"documentType":"article"},"body":"# Объяснение устаревшего кода\n\nКопилот Чат может помочь объяснить незнакомый код.\n\nОдна из самых больших проблем с устаревшим кодом помогает разработчикам понять, кто не знаком с языками или платформами. С помощью Копилот Чатможно объяснить фон, который у вас есть, и попросить объяснения.\n\n## Пример сценария\n\nРассмотрим следующий код COBOL. Если вы являетесь разработчиком Python (например), возможно, вы не знакомы с COBOL, поэтому вы можете попросить Копилот Чат объяснить код.\n\n```text id=cobol-insert-record\nIDENTIFICATION DIVISION.\nPROGRAM-ID. INSERT-RECORD.\n\nENVIRONMENT DIVISION.\n\nDATA DIVISION.\nWORKING-STORAGE SECTION.\n01  WS-STATUS-FLAGS.\n    05 WS-DB-STATUS     PIC X(2).\n       88 WS-SUCCESS    VALUE \"00\".\n    05 WS-SQLCODE       PIC S9(9) COMP.\n    05 WS-ERROR-MSG     PIC X(50).\n\nLINKAGE SECTION.\n01  LS-PARAMETERS.\n    05 LS-PERSON-RECORD.\n       10 PERSON-ID     PIC 9(6).\n       10 PERSON-NAME   PIC X(50).\n       10 PERSON-AGE    PIC 9(3).\n    05 LS-RESULT        PIC X.\n       88 SUCCESS       VALUE 'T'.\n       88 FAILED        VALUE 'F'.\n\nPROCEDURE DIVISION USING LS-PARAMETERS.\n    PERFORM INSERT-AND-VALIDATE\n    GOBACK\n    .\n\nINSERT-AND-VALIDATE.\n    EXEC SQL\n        INSERT INTO persons (id, name, age)\n        VALUES (:PERSON-ID, :PERSON-NAME, :PERSON-AGE)\n    END-EXEC\n\n    IF SQLCODE = 0\n        EXEC SQL COMMIT END-EXEC\n        SET SUCCESS TO TRUE\n    ELSE\n        EXEC SQL ROLLBACK END-EXEC\n        SET FAILED TO TRUE\n        STRING \"DB Error: \" SQLCODE\n            DELIMITED BY SIZE\n            INTO WS-ERROR-MSG\n        DISPLAY WS-ERROR-MSG\n    END-IF\n    .\n```\n\n## Пример запроса\n\nВы можете запросить объяснение кода COBOL с точки зрения разработчика Python.\n\n```copilot copy prompt ref=cobol-insert-record\nI'm a Python developer. Help me better understand this code. Please provide analogies.\n```\n\n## Пример отклика\n\n> \\[!NOTE] Следующий ответ является примером. Ответы Копилот Чат являются недетерминированными, поэтому вы можете получить другой ответ, показанный здесь.\n\nCopilot предоставляет общие сведения о коде, прежде чем пройти различные операции и объяснить их таким образом, чтобы разработчики Python могли понять их. Он использует аналогии, чтобы сделать объяснение более доступным. Ответ может начинаться со следующего:\n\n```text\nLet me explain this COBOL code using Python analogies:\n\nHigh-Level Overview\nThis is similar to a Python function that inserts a person's record into a database with error handling.\n```\n\n```python\n# In Python, the COBOL divisions would be like:\n\n# IDENTIFICATION DIVISION = module/file name\n# PROGRAM-ID = function name\ndef insert_record():\n    pass\n\n# DATA DIVISION would be like declaring these variables:\nclass WorkingStorage:\n    db_status = \"\"  # WS-DB-STATUS\n    sqlcode = 0     # WS-SQLCODE\n    error_msg = \"\"  # WS-ERROR-MSG\n\n# LINKAGE SECTION is like function parameters\nclass PersonRecord:\n    def __init__(self, person_id: int, person_name: str, person_age: int):\n        self.person_id = person_id    # PERSON-ID\n        self.person_name = person_name # PERSON-NAME\n        self.person_age = person_age   # PERSON-AGE\n        self.success = False          # LS-RESULT\n```\n\n## Дополнительные материалы\n\n* [Инженерия подсказок для GitHub Copilot Chat](/ru/copilot/using-github-copilot/prompt-engineering-for-github-copilot)\n* [Лучшие практики использования GitHub Copilot](/ru/copilot/using-github-copilot/best-practices-for-using-github-copilot)"}