다른 언어로 코드 옮기고 차이 확인하기

옮긴 코드와 함께 문법·라이브러리 차이를 받는다

프롬프트 · 변수 3개

저는 {{원본 언어}} 로 짠 아래 코드를 {{옮길 언어}} 로 옮기려 합니다. 저는 {{원본 언어}} 는 편하지만 {{옮길 언어}} 는 문법만 아는 수준입니다.

코드를 {{옮길 언어}} 로 옮겨 주세요. 문법만 그대로 바꾸지 말고, {{옮길 언어}} 를 쓰는 사람이 보통 짜는 방식으로 고쳐 주세요. 원본에서 쓰던 관용구가 {{옮길 언어}} 에서는 위험하거나 어색한 경우에는 바꾼 이유를 알려 주세요.

이 순서로 답해 주세요. ① 옮긴 코드 ② 바꾼 부분 표 — 원본 표현 · 옮긴 표현 · 왜 그렇게 했는지 ③ 두 언어에서 동작이 달라질 수 있는 지점(정수 나눗셈, 문자열 인코딩, 널 처리, 정렬 안정성 같은 것) ④ 대체한 라이브러리와 그 라이브러리를 쓰기 위해 필요한 설정.

원본에 없는 기능을 새로 넣지 말아 주세요. 대응되는 방법이 여러 개라 고르기 애매하면 임의로 하나를 고르지 말고 후보 두 개와 차이를 알려 주세요. 함수 이름이나 라이브러리 이름이 확실하지 않으면 지어내지 말고 "확인 필요" 라고 표시해 주세요.

코드: """ {{코드}} """

복사한 뒤 여기에 붙여 넣으세요 · ChatGPT·Claude는 프롬프트를 실은 채 열립니다 ChatGPT에서 열기 ↗Claude에서 열기 ↗Gemini에서 열기 ↗뤼튼에서 열기 ↗ 빌더에서 고치기 수업용 카드 이미지 받기

이 프롬프트에는 개인정보가 들어갈 수 있는 변수가 있습니다. 실제 이름·번호·회사명은 가명으로 바꿔 넣으세요.

결과 예시

네 부분이 순서대로 나왔고, ③에서 동점일 때 상위 10개가 달라지는 문제(파이썬 dict는 삽입 순서, 자바 HashMap은 순서 없음)가 잡혀 LinkedHashMap이 후보로 올라왔다.

원본 표현 옮긴 표현 왜 그렇게 했는지
total.get(u, 0) + a total.merge(u, a, Long::sum) 자바에서 흔히 쓰는 누적 방식
r['status'] != 'paid' !"paid".equals(r.get("status")) !=는 참조 비교라 값이 같아도 다르게 나온다

라이브러리는 표준 스트림만 써서 추가 설정이 없었다.

Claude에서 실제로 실행해 확인 · 2026-09

왜 이렇게 쓰는가

맥락
저는 {{원본 언어}} 로 짠 아래 코드를 {{옮길 언어}} 로 옮기려 합니다. 저는 {{원본 언어}} 는 편하지만 {{옮길 언어}} 는 문법만 아는 수준입니다.
과제
코드를 {{옮길 언어}} 로 옮겨 주세요. 문법만 그대로 바꾸지 말고, {{옮길 언어}} 를 쓰는 사람이 보통 짜는 방식으로 고쳐 주세요. 원본에서 쓰던 관용구가 {{옮길 언어}} 에서는 위험하거나 어색한 경우에는 바꾼 이유를 알려 주세요.
형식
이 순서로 답해 주세요. ① 옮긴 코드 ② 바꾼 부분 표 — 원본 표현 · 옮긴 표현 · 왜 그렇게 했는지 ③ 두 언어에서 동작이 달라질 수 있는 지점(정수 나눗셈, 문자열 인코딩, 널 처리, 정렬 안정성 같은 것) ④ 대체한 라이브러리와 그 라이브러리를 쓰기 위해 필요한 설정.
제약
원본에 없는 기능을 새로 넣지 말아 주세요. 대응되는 방법이 여러 개라 고르기 애매하면 임의로 하나를 고르지 말고 후보 두 개와 차이를 알려 주세요. 함수 이름이나 라이브러리 이름이 확실하지 않으면 지어내지 말고 "확인 필요" 라고 표시해 주세요.
입력 자료
코드: """ {{코드}} """

코드 변환은 AI가 겉보기에 가장 잘하는 일이라, 돌아온 코드를 그대로 붙여 넣게 되기 쉽습니다. 문제는 문법이 맞는 코드와 그 언어에서 안전한 코드가 다르다는 점입니다. 파이썬에서 무심코 쓰던 표현이 자바에서는 값이 잘리거나 예외로 터지는데, 컴파일은 통과하니 한참 뒤에 발견됩니다.

과제 문단에서 "문법만 그대로 바꾸지 말고" 를 못 박은 이유가 여기 있습니다. 이 한 줄이 없으면 한 줄씩 대응시킨 번역문이 나옵니다. 돌아가긴 하지만 그 언어 사람이 보면 어색하고, 되레 고치기 어려운 코드가 됩니다. 원본에서 자연스럽던 표현이 옮긴 언어에서는 위험한 관용구가 되는 경우를 짚어 달라고 덧붙인 것도 같은 목적입니다.

출력 형식 의 핵심은 ②번과 ③번입니다. 옮긴 코드만 받으면 무엇이 왜 달라졌는지 알 수 없어 배움이 남지 않습니다. 바꾼 부분 표는 두 언어의 차이를 한눈에 보여 주고, "동작이 달라질 수 있는 지점" 은 파이썬 자바 변환에서 실제로 사고가 나는 자리 — 정수 나눗셈, 인코딩, 널 처리 — 를 미리 꺼내 놓습니다.

제약 의 "확인 필요" 표시는 없는 함수 이름을 그럴듯하게 지어내는 것을 막습니다. 모른다고 적게 해 두면 검색할 곳이 정해집니다. 코드를 """ 로 감싼 것은 코드 안의 주석이나 문자열이 지시로 읽히지 않게 하기 위해서입니다. # 이 부분은 지워도 됨 같은 주석 한 줄이 프롬프트로 해석되는 일이 실제로 있습니다.

용어가 낯설면 아하AI에서: hallucination, output-format

나쁜 예와 비교

흔한 나쁜 예

이거 자바로 바꿔줘 def parse_orders(rows): ... (코드 붙여넣기)

코드는 나오지만 원본과 한 줄씩 대응되는 형태라 자바에서는 잘 쓰지 않는 구조가 그대로 남습니다. 무엇이 바뀌었는지 설명이 없으니 정수 나눗셈처럼 조용히 값이 달라지는 지점을 놓치고, 라이브러리 이름이 틀려도 실행해 보기 전까지 모릅니다. 결국 옮긴 코드를 처음부터 다시 읽으며 검증해야 해서, 직접 옮기는 것과 시간 차이가 나지 않습니다.

변형

옮기기 전에 위험한 곳부터 알고 싶을 때

옮기기 전에 위험한 곳부터 알고 싶을 때

아래 {{원본 언어}} 코드를 {{옮길 언어}} 로 옮길 계획입니다. 아직 코드는 옮기지 말고, 옮길 때 문제가 될 만한 지점만 짚어 주세요. 위험도 순으로 목록을 만들고 각 항목마다 원본의 어느 부분인지 · 왜 문제인지 · 대응 방법 후보를 적어 주세요. 문제가 없는 부분은 언급하지 말아 주세요.

""" {{코드}} """

분량이 큰 코드를 옮기기 전에 먼저 씁니다. 위험 지점을 알고 시작하면 옮긴 코드를 검토할 때 어디를 볼지 정해집니다.

옮긴 코드가 맞는지 확인할 때

옮긴 코드가 맞는지 확인할 때

아래는 제가 {{원본 언어}} 에서 {{옮길 언어}} 로 옮긴 코드입니다. 원본과 결과가 달라질 수 있는 입력값을 찾아 주세요. 입력 예 · 원본의 결과 · 옮긴 코드의 결과 · 왜 다른지를 표로 정리하고, 차이가 없다고 판단한 부분은 그 근거를 한 줄로 적어 주세요.

""" {{코드}} """

직접 옮긴 뒤 검토를 맡기는 쓰임입니다. 결과를 비교할 입력값을 먼저 받으면 그대로 시험해 볼 수 있습니다.

모델별 주의

옮긴 코드는 반드시 직접 실행해 확인하세요. 표준 라이브러리 이름은 맞아도 함수 이름이나 인자 순서를 잘못 기억하는 일이 흔합니다

관련 프롬프트

마지막 수정 2026-09-02 · 잘못된 점이 있나요? 알려 주세요