프로그래머를 위한 ChatGPT
ChatGPT에게 물어보자.
1. 개발 관련 질문에 대한 답변
프로그래머가 ChatGPT를 가장 유용하게 사용할 수 있는 부분이라고 생각한다.
해결 방안이 잘 보이지 않는 논리적인 문제에 대해 알고리즘을 짜달라고 하거나,
코드가 제대로 동작하지 않으면 코드를 올려보면서 무엇이 잘못됐는지, 잠재적인 오류가 있는지 점검해 볼 수 있고,
동료가 짠 코드가 제대로 이해되지 않을 때, 이 코드가 무슨 동작을 하는지 물어볼 수도 있다.
2. 프로그래밍 지식 및 팁 제공
내가 개인적으로 가장 많이 도움받았던 부분은 바로 변수, 함수 이름 짓기다.
도메인과 현재 상황에 대한 구체적인 질문을 통해 어쩌면 가장 중요하면서도 가장 어려운데 시간은 많이 쓰기 싫은 변수, 함수명을 그럴싸하게 잘 지어준다.
3. 코드 생성
"문자열을 어떤 조건에 따라 정수로 바꾸는 자바 함수 만들어줘" 등 간단한 함수부터 어느 정도 수준 있는 예시까지 뚝딱뚝딱 잘 만들어준다.
그냥 말하듯이 질문하면 여러 예시를 깔끔하게 정리해서 답변해주기 때문에 요즘은 코드 생성 부문에서는 구글보다 많이 활용하는 것 같다.
ChatGPT를 활용하여 코드 생성하기
최근에 가장 잘 활용하고 있는 코드 생성에 대해 알아보자.
ChatGPT에게 간단한 가위바위보 함수를 작성해달라고 질문해보자.
python 코드로 원하는 가위바위보 기능과 요청하지 않았던 validation 부분까지 깔끔하게 잘 작성해주었다.
간단한 기능은 간단하게 질문해도 되지만, 실전에서는 보다 구체적으로 바라는 사항을 ChatGPT에게 요구해야 한다.
질문을 좀 더 구체화시켜보자.
ChatGPT에 답변은 이랬다. (느낌만 보자)
import java.util.Random;
import java.util.Scanner;
public class RockPaperScissors {
public static void main(String[] args) {
playRockPaperScissors();
}
public static void playRockPaperScissors() {
String[] gestures = {"가위", "바위", "보"};
Random random = new Random();
Scanner scanner = new Scanner(System.in);
System.out.print("가위, 바위, 보 중에서 선택하세요: ");
String userGesture = scanner.nextLine();
// 사용자가 제대로 입력할 때까지 입력 받기
while (!isValidGesture(userGesture, gestures)) {
System.out.println("잘못된 입력입니다.");
System.out.print("가위, 바위, 보 중에서 선택하세요: ");
userGesture = scanner.nextLine();
}
int computerGestureIndex = random.nextInt(3);
String computerGesture = gestures[computerGestureIndex];
System.out.printf("컴퓨터: %s%n", computerGesture);
// 가위바위보 승부 결정하기
if (userGesture.equals(computerGesture)) {
System.out.println("비겼습니다.");
} else if ((userGesture.equals("가위") && computerGesture.equals("보")) ||
(userGesture.equals("바위") && computerGesture.equals("가위")) ||
(userGesture.equals("보") && computerGesture.equals("바위"))) {
System.out.println("사용자가 이겼습니다.");
System.out.println("커피를 제공합니다.");
} else {
System.out.println("컴퓨터가 이겼습니다.");
}
scanner.close();
}
public static boolean isValidGesture(String gesture, String[] gestures) {
for (String validGesture : gestures) {
if (validGesture.equals(gesture)) {
return true;
}
}
return false;
}
}
해당 코드가 단순해보이지만 많은 것을 얻어갈 수 있다.
1. 변수, 함수명에 대한 가이드
2. 원하는 기능에 대한 알고리즘 (+ 리팩토링)
3. 세부적으로 질문할수록 세부적으로 답변해준다는 점
만약 나에게 명확하게 구현하고 싶은 요구사항이 있을 때,
일반 검색 엔진에서 검색한 후 4~5개의 블로그, 공식 매뉴얼 등을 잘 정리해서 취합하는 것에 비해,
명확한 질문 하나로 그 무엇보다 강력한 가이드를 얻을 수 있다는 점이 ChatGPT의 명확한 장점이 아닐까 싶다.
ChatGPT를 활용한 알고리즘
앞선 '코드 생성'에 대한 설명은 나에게 명확한 문제와 그에 대한 해결방안이 있을 때, ChatGPT가 그것을 코드로 구현하게 해주는 역할을 했다.
이번에는 나에게 명확한 문제는 있지만 그에 대한 '해결방안'이 잘 떠오르지 않을 때, 즉 ChatGPT에게 알고리즘(해결방안)을 요청하는 연습을 해 보자.
이런 문제가 있다.
1. 나는 여우, 닭, 새모이를 강 건너편으로 옮겨야 한다.
2. (내가 없을 때) 여우와 닭이 함께 있으면 여우가 닭을 잡아먹는다.
3. (내가 없을 때) 닭과 새모이가 함께 있으면 닭이 새모이를 먹는다.
4. 여우, 닭, 새모이는 한 번에 하나씩만 옮길 수 있다.
5. 여우, 닭, 새모이를 모두 안전하게 강 건너편으로 옮길 수 있는 방법은 무엇인가.
쉬운 것 같으면서도 헷갈리는 그런 문제다. ChatGPT에게 물어보자.
ChatGPT에게 물어볼 때는 세부적으로 작성하지만 가급적 군더더기를 덧붙여서는 안된다. 최대한 간결하게 내가 원하는 바를 질문해야 한다.
또한 애매한 표현을 쓰지 않는 것이 좋기 때문에, '모이' 대신 '곡식'이란 표현을 사용했다.
답변은 다음과 같다.
한 번 옮긴 닭은 다시 제자리로 되돌리는 것은 쉽게 생각하기 어려웠는데, 이런 key 포인트들을 잘 캐치해내는 것 같다.
ChatGPT를 활용한 코드 디버깅
마지막으로 ChatGPT로 디버깅하는 연습을 해보자.
잘못된 코드 예시는 여기서 가져왔다.
<답변>
Good!
ChatGPT 문서
더 상세한 내용은 공식 문서를 참고해야겠다.
https://platform.openai.com/docs/introduction
OpenAI API
An API for accessing new AI models developed by OpenAI
platform.openai.com
보니까 ChatGPT open API를 사용하는 가이드도 존재한다.
우리가 어느 기업에 들어가기 위해 코딩테스트를 보는데 이는 결국 문제에 대한 문제해결능력과, 이를 코드로 구현하는 구현능력을 보는 것이라 생각한다.
ChatGPT는 두 능력에 모두 특화된 AI인데, 해당 능력은 개발자의 기본 소양이기도 하다.
따라서 ChatGPT를 활용하는 것은 좋지만 너무 의존하는 것보다는 나의 기본 소양도 같이 신경써야 한다는 생각이 들었다.
'chatgpt' 카테고리의 다른 글
[ChatGPT] ChatGPT에서 최신 정보에 접근하는 법(2021 ~ ) (2) | 2023.05.14 |
---|