원래 인자 전달 방식으로는 참조 전달(call by reference)과 값 전달(pass by value) 등이 있습니다.
이 부분은 자주 오용되기 때문에, 먼저 정리해 보겠습니다.
이러한 것들과는 별개로, 최근 AI 관련 분야에서는 다음과 같은 '참조 전달'이라고 불리는 사례가 있습니다.
- 외부 리소스 등에 대한 참조를 사용한 '참조 전달'
- 객체의 읽기/쓰기를 위한 참조(URI, ID 등)를 전달함
- 로드할 때 인스턴스화하는 경우라면, 로컬의 인스턴스에 대한 변경은 외부 리소스에 그대로 반영되지 않음
- 참조값을 변경해도 호출한 쪽의 참조값은 변하지 않으므로, 프로그래밍 언어의 참조 전달과는 다름
- 외부 리소스의 내용을 변경할 수 있는 수단은 있음
- 공유 전달처럼 인스턴스를 공유하기보다는, 외부 리소스에 대한 접근 수단을 전달하는 것에 가깝습니다.
개념적으로는 공유 전달에 가까운 걸까요...
애초에 인자 전달 방식이라고 말하기에는 애매한 부분이 있어서, 뭐라고 단정하기가 어렵습니다.
아직 AI 측에서 Python 실행 환경을 가지고 인스턴스를 다루는, 즉 공유 전달에 가까운 형태를 '참조 전달'이라고 부르던 시절이 그리울 정도입니다.
이번 경우는 외부 리소스를 거치는 방식이기 때문에, 공유 전달처럼 같은 인스턴스를 공유하는 것이 아니라, 각각의 환경에서 객체를 가져오거나 생성하는 식의 처리 방식이 됩니다.
다만, 외부 리소스 등에 대한 참조만을 전달하고 있기 때문에, 참조값을 다른 것으로 교체해도 호출한 쪽의 참조값은 변하지 않습니다. 이 부분이 개념적으로는 공유 전달에 가깝다고 느끼는 이유일지도 모릅니다.
실제 표현으로는 Pass payloads by reference나 passing complex chemical data by reference through cloud storage 등이 사용됩니다.
영어권에서는 문맥을 통해 구별할 수 있지만, 일본어로 번역하면 그대로 '참조 전달'이 되기 쉬운 것이 고민되는 부분입니다.
AI 분야의 용어가 앞으로 어떻게 되어갈지도 모르기 때문에, 일단 최종적으로 정착된 부분이 생기면 다시 기사를 작성할 것 같습니다.
이상.