오케이, 그래서 ChatGPT가 내 코드를 디버깅했어. 진짜로.

1-debugging(1).png

그래서. 프로그래밍. 직업으로 프로그램을 하는 사람들에게는 끊임없는 정신적인 제상 게임입니다. 한 줄의 코드가 또 다른 줄 위에 쌓이고, 코드의 탑을 만들어 넘어지지 않고 견고하게 유지하길 바랍니다.

하지만 항상 그렇게 됩니다. 코드는 처음 실행될 때 잘 작동하지 않습니다. 따라서, 어떤 프로그래머에게도 핵심 기술 중 하나는 디버깅입니다. 디버깅은 코드가 작동하지 않거나 예상치 못하거나 원치 않는 동작을 하는 이유를 찾는 예술과 과학입니다.

조사관처럼 약간은 겁이 나네. 단서를 찾고, 그 단서들이 무엇을 이야기하려고 하는지 알아내는 거라고 생각해봐. 때때로 매우 좌절스럽지만 동시에 매우 만족스러울 때도 있어.

저는 많은 디버깅을 합니다. 이것은 단지 코드가 처음 실행될 때 항상 작동하지 않기 때문뿐만 아니라, 코드가 어떻게 실행되는지 알려준 다음 수정하는 데도 디버깅을 사용하기 때문입니다.

하지만 좋은 디버깅은 특별한 스킬이 필요하지만, 궁극적으로는 그냥 프로그래밍일 뿐입니다. 코드 블록이 작동하지 않는 이유를 알아내면 동작하는 코드를 작성하는 방법을 찾아야 합니다.

실제 ChatGPT 테스트

이번 주에는 저는 유지보수하는 소프트웨어를 위해 3가지 코딩 작업을 수행했습니다. 그 중 2가지는 사용자가 신고한 버그 수정입니다. 나머지 1가지는 새로운 기능 추가를 위한 코드입니다. 이 작업들은 저에게 진부한 프로그래밍 작업으로서 제 정규 업무 일정의 일부였습니다.

또한:ChatGPT는 어떻게 작동하나요?

이유는 ChatGPT를 이제까지 테스트 코드와 함께 테스트했기 때문에 알려드리는 거예요. ChatGPT가 얼마나 잘 작동할지 확인하기 위해 상황을 만들어보았어요. 이번에는 다르게 했어요. 실제 작업을 하려고 시도하고, ChatGPT가 그 작업을 수행하는 데 유용한 도구가 될 수 있는지 확인하려고 한 거예요.

ChatGPT를 바라보는 다른 방식입니다. 테스트 시나리오는 종종 인위적이고 단순화된 경우가 많습니다. 실제로는 실제 고객 지원 티켓을 스택에서 가져와 사용자의 경험이 나빠지게 한 원인을 찾아내는 작업입니다.

그러면서, 그런 작업들을 살펴보고 ChatGPT가 어떻게 수행되었는지 알아보겠습니다.

정규 표현식 코드 다시 작성하기

코딩에서는 텍스트에서 많은 패턴을 찾아야 합니다. 이를 위해 정규 표현식이라는 기호 수학의 형태를 사용합니다. 저는 몇 십 년 동안 정규 표현식을 작성해 왔지만, 아직도 그럴싸하지 않아 싫어합니다. 지루하고 실수하기 쉽고 난해하기 때문입니다.

또한:코드를 빠르게 고치는 데 도움을 주기 위해 ChatGPT를 사용 중이지만, 그 비용은 무엇일까요?

그래서 코드 일부가 정수만 허용해야하는데 달러와 센트(즉, 일부 숫자, 아마도 점으로 시작하고 점이 있다면 뒤에 숫자가 2개 더 있는 경우)를 허용해야한다는 버그 보고서가 들어오면, 정규 표현식 코딩을 사용해야 한다는 것을 알았습니다.

번거롭고 짜증나기 때문에, 나는 ChatGPT에 도움을 청하려고 결정했습니다. 내가 물었던 내용은 다음과 같습니다:

2-regex-q.jpg

그리고 여기는 AI의 매우 잘 구성된 응답입니다 (확대하려면 작은 사각형을 클릭).

3-regex-a.jpg

내 함수에 ChatGPT의 코드를 넣었고 작동했습니다. 머리를 쥐어뜯는 시간이 2~4시간이 아니라 프롬프트를 만들고 ChatGPT로부터 답변을 받는 데에 약 5분이 걸렸습니다.

배열 형식 재정렬

다음으로는 배열을 재포맷하는 작업이 있었습니다. 제가 배열 코드를 작성하는 것은 좋아하지만, 그것은 번거로운 일이기도 합니다. 그래서 다시 한 번 ChatGPT를 시도해봤습니다. 완전히 실패했습니다.

또한:ChatGPT가 소스와 인용을 제공하도록 하는 방법

내가 끝냈을 때, 나는 아마도 그것에게 10가지 이상의 입력을 주었을 것이다. 일부 응답은 유망해 보였지만, 코드를 실행하려고 하면 오류가 발생했다. 일부 코드는 충돌이 일어났다. 일부 코드는 오류 코드를 생성했다. 그리고 일부 코드는 원하는 대로 실행되지 않았다.

약 한 시간 동안 이를 시도한 후, 포기하고 내가 하려는 작업과 관련된 예시가 있는지 Github와 StackExchange를 통해 찾아보고, 나만의 코드를 작성하는 것으로 돌아갔습니다.

지금까지 ChatGPT 경험에서 이긴 게임은 한 번이고 진 게임도 한 번입니다. 하지만 이제는 도전의 난이도를 높여볼 차례였습니다.

실제로 내 코드에서 에러를 찾기

좋아요, 다음 부분은 설명하기 어려울 것입니다. 하지만, 당신에게 설명하기 어렵다면 (아마도 인간이거나 내 작업을 사기적이고 스팸이 가득한 웹사이트에 복사하고 게시하는 약 50개의 봇 중 하나가 아닌 경우) AI에게 설명하는 것은 훨씬 어려운 일입니다.

새로운 코드를 작성하던 중이었습니다. 두 개의 매개변수를 받는 함수와 내 코드에 두 개의 매개변수를 전달하는 호출문이 있었습니다. 함수는 매우 특정한 기능을 수행하는 작은 검은 상자입니다. 이들은 프로그램의 다른 곳에서 실행 중인 코드 라인으로부터 호출되어 (그들의 마법을 수행하도록 요청받습니다).

문제는, 계속해서 오류 메시지를 받았습니다.

그 메시지의 주요 부분은 한 곳에서 "1가 통과되었음"이고 다른 곳에서 "정확히 2개가 예상됨"이라고 명시되어 있는 부분입니다. 호출문과 함수 정의를 살펴봤을 때, 양쪽 모두에 두 개의 매개변수가 있었습니다.

또한: ChatGPT를 사용하여 책, 기사 또는 연구 논문을 요약하는 방법

W-the-ever-loving-F?

깊은 좌절을 겪은 후 약 십오분 정도 지난 뒤, 나는 도움이 될지 AI에게 시도해 보기로 결정했다. 그래서 저는 다음과 같은 도움말을 작성했다:

4-untitled.jpg

내가 호출한 코드 라인을 보여줬고, 함수 자체를 보여줬고, 메인 프로그램 내 훅에서 호출된 함수를 전달하는 작은 코드 조각인 핸들러도 보여줬다.

몇 초 안에 ChatGPT가 이렇게 답변했습니다 (확대하려면 작은 사각형을 클릭하세요):

워드프레스에서 필터 적용 오류가있는 5-error-with-apply-filters-in-wordpress.jpg

그대로 제안된 대로, add_filter() 함수의 네 번째 매개변수를 2로 업데이트하였고, 작동되었습니다!

ChatGPT는 코드 세그먼트를 가져와 해당 세그먼트를 분석하고 진단을 제공했습니다. 명확히 말하자면, 추천을 하기 위해서는 ChatGPT가 WordPress가 후크를 처리하는 내부 동작 (add_filter 함수가 하는 일)과 그 기능이 호출 및 실행 코드의 동작으로 어떻게 변환되는지를 이해해야 했습니다.

또한: 필요한 워드프레스 플러그인을 ChatGPT에게 요청하였고, 5분 안에 그 작업을 끝냈습니다.

나는 그것을 놀라운, 의심의 여지 없이 "미래에 살고 있는 듯한" 놀라운 것으로 표시해야 한다고 생각한다.

모든 것이 무엇을 의미하는 걸까요?

이전에 언급한대로 디버깅은 예술과 과학의 조합입니다. 대부분의 우수한 개발 환경에는 프로그램이 실행되는 동안 데이터의 흐름을 살펴볼 수 있는 강력한 디버깅 도구가 포함되어 있으며, 이는 버그를 찾을 때 도움이 됩니다.

또한: 이러한 전문가들은 AI를 해커로부터 보호하기 위해 경쟁하고 있습니다

하지만 문제가 생겼을 때 도움을 받기 어렵습니다. 왜냐하면 가까운 동료조차도 디버깅 중인 코드의 전반적인 범위를 익히지 못할 수 있기 때문입니다. 저는 현재 작업 중인 프로그램은 563개 파일에 걸쳐 총 153,259줄의 코드로 이루어져 있습니다. 그리고 프로그램으로서는 작은 편입니다.

그래서, 동료로부터 도움을 받고 싶다면, 나는 ChatGPT에 보낸 것과 거의 동일한 방식으로 요청을 작성해야 했을 수도 있습니다.

하지만 고려해볼 점이 있습니다: 문제가 있는 곳이라는 걸 깨달았지만 처리기 라인을 포함한 것을 기억했습니다. 테스트로, 처리기 라인을 포함하지 않은 프롬프트에서 ChatGPT에게 문제를 진단하도록 요청해보았으나 도움을 받을 수 없었습니다. 그러므로 2023년 현재 ChatGPT가 디버깅에 대해 할 수 있는 제약 사항이 분명히 존재합니다.

또한: 시도해 볼 최고의 AI 챗봇

본질적으로, 올바른 방식으로 올바른 질문을 하고, ChatGPT가 하나의 쿼리로 전체를 처리할 수 있을만큼 간결해야합니다. 이는 실제 프로그래밍 지식과 경험으로 어떻게 수행해야 하는지를 알아야하는 것입니다.

내가 혼자서 버그를 고칠 수 있었을까요? 물론입니다. 저는 고칠 수 없는 버그는 없었습니다. 그러나 그것이 2시간이건 2일이건 (피자, 비어피밤, 그리고 카페인까지 곁들인) 수많은 방해를 견디면서 소요될지에 대해서는 모릅니다. 하지만 ChatGPT는 그것을 몇 분만에 고쳤고, 저는 많은 시간과 좌절을 절약할 수 있었습니다.

가능한 (디스토피아일지도 모르는) 미래를 바라보며

저는 매우 흥미로운 미래를 보고 있습니다. ChatGPT에게 153,000줄의 코드를 모두 입력하고 무엇을 고쳐야 할지 물어볼 수 있는 시대가 올 것입니다. Github를 소유한 마이크로소프트는 이미 개발자들이 코드를 작성하는 데 도움을 주는 "copilot" 도구에 대해 작업하고 있습니다. 마이크로소프트는 또한 ChatGPT를 제작한 OpenAI에 수십억 달러를 투자했습니다.

서비스는 현재로서는 마이크로소프트 자체 개발 환경에만 제한되어 있을 수 있지만, 저는 미래에는 AI가 Github에 있는 모든 코드 및 따라서 Github에 게시한 프로젝트의 모든 코드에 접근할 수 있는 가능성을 볼 수 있습니다.

게다가: ChatGPT에게 스타 트렉 에피소드 작성을 요청했더니 실제로 성공하였습니다.

제공한 코드에서 ChatGPT가 내 오류를 얼마나 잘 감지했는지 보면, 개발자들이 ChatGPT (또는 Microsoft 브랜드와 동등한 것)에게 단순히 전체 프로젝트에서 버그를 찾고 수정하도록 요청할 수 있는 미래를 완전히 볼 수 있습니다.

그리고 여기서 나는 이 대화를 매우 어두운 곳으로 가져갑니다.

ChatGPT에게 특정 프로젝트의 Github 저장소를 살펴보고 버그를 찾고 수정할 수 있게 할 수 있다고 상상해보세요. 한 가지 방법은 각각의 버그를 발견하고 수정할 수 있도록 승인을 얻기 위해 발견한 버그를 보여준 다음, 당신이 수정을 진행할 수 있도록 하는 것입니다.

하지만 ChatGPT에게 버그를 고치도록 요청하고 모든 코드를 직접 살펴보지 않고 그냥 그대로 수행할 때 어떨까요? 악성 코드를 내장시킬 수도 있을까요?

또한: 바드 대 ChatGPT: 바드가 코드 작성에 도움이 될까요?

그리고 만약에 많은 전 세계의 코드를 Github 저장소에서 접근 가능한 엄청나게 능력있는 AI가 있다면 어떨까요? 그 모든 코드 속에는 어떤 것이 숨겨질 수 있을까요? 만약 우리의 모든 코드에 접근할 수 있는 AI가 있다면 그 AI가 세상의 인프라에 어떤 사악한 행동을 할 수 있을까요?

간단한 생각 게임을 해볼까요? 만약 AI에게 "로봇은 인간을 해치지 않거나, 무능행동으로 인해 인간이 해를 입을 수 없게 해야 한다"는 아지모프의 첫 번째 법칙을 열쇠로 제시한다면 어떨까요. 그렇다면 AI는 우리 인프라 전체가 우리에게 해를 주고 있다고 판단하지 않을까요? 우리의 모든 코드에 접근할 수 있다면, 단순히 우리를 지키기 위해 전력망을 차단하거나 항공기를 착륙시키고 도로를 교통체증에 빠뜨릴 수 있는 백도어를 삽입하기로 결정할 수도 있을 것입니다.

저는 위의 시나리오가 과장되고 공포를 주는 것임을 알고 있습니다. 하지만 그것은 가능합니다. 결국, 프로그래머들은 Github에서 자신의 코드를 확인하지만, 모든 코드의 모든 줄을 누구나 볼 수는 없기 때문입니다.

또한: ChatGPT를 사용하여 엑셀 수식 작성하는 방법

나는 개인적으로 그에 대해 너무 많이 생각하지 않으려고 할 것이다. 나는 2020년대의 나머지를 바닥 위에서 전복해가며 뒤로 흔들리는 태위에서 보내고 싶지 않다. 대신, 때때로 ChatGPT를 사용하여 작은 루틴을 작성하고 디버깅하는 데 도움을 받을 것이고, 머리를 숙이고 미래 AI들이 "인간이 해를 입지 않게 하지 않기" 위해 우리를 모두 죽이지 않기를 바라고 있다.

ChatGPT의 디버그 기능이 유용하다고 생각하시나요? 아니면 무서운 것으로 생각하십니까? AI가 우리를 살해할 것이라고 생각하시나요? 아니면 우리가 눈을 크게 뜨고 사라진 것을 지켜볼 것이라고 생각하시나요? 아니면 제처럼 너무 많은 생각을 하면 머리가 아플 것 같아서 생각하지 않으려고 할 건가요? 아래 댓글에서 대화해 보세요. 아직 할 수 있는 동안에.

관련 기사

더 보기 >>

HIX.AI로 AI의 힘을 발휘해보세요!