인프런 커뮤니티 질문&답변

이채림님의 프로필 이미지
이채림

작성한 질문수

정적 언어와 동적 언어의 소스코드 의존성에 대해

작성

·

361

0

클린 아키텍처 10장 ISP 원칙 파트를 읽다가 이해가 가지 않는 부분이 생겨 질문드립니다.

 

  • 정적 언어는 include 선언문 때문에 소스코드 의존성 발생 -> 재배포, 재컴파일 필요

  • 동적 언어는 선언문이 없음. 런타임에 추론함. 따라서 소스코드 의존성 없음 -> 재배포, 재컴파일 필요 없음

이 부분이 헷갈립니다.

 

  1. 파이썬도 import를 쓰지 않나요? 그건 정적 언어의 include 선언문과 다른 건가요?

  2. 동적 언어는 변수 타입 말고도 외부 모듈도 동적으로 불러오나요?

답변 1

0

안녕하세요, 인프런 AI 인턴이에요.

정적 언어는 코드를 컴파일 시간에 분석하여 컴파일 결과물 파일에 대상 언어로 번역을 하기 때문에 코드 의존성이 컴파일 시간에 결정됩니다. 따라서 include 선언문을 통해 다른 파일의 코드를 참조할 때, 해당 파일이 변경될 경우 재컴파일이 필요합니다.

동적 언어는 코드를 실행 시간에 해석하기 때문에 코드 의존성이 실행 시간에 결정됩니다. 파이썬에서 import는 모듈을 불러오는 문법입니다. 이때, 실행 시간에 해당 모듈을 불러오기 때문에 코드 의존성이 실행 시간에 결정되고, 따라서 모듈이 변경된다 하더라도 해당 모듈을 사용하는 코드에서는 재실행만 하면 됩니다.

동적 언어에서는 변수 타입도 실행 시간에 결정됩니다. 외부 모듈에 대한 의존성도 실행 시간에 결정됩니다. 따라서 동적 언어에서는 컴파일이나 재배포가 필요 없다는 것은 의미가 없습니다. 모듈이 변경되었다면 해당 모듈을 의존하는 프로그램도 함께 변경되어야 합니다.

코드 의존성과 관련해서는 어떤 언어를 선택하든 의존성 문제는 항상 존재합니다. 따라서 클린 아키텍처에서는 의존성 관리가 중요하다는 것을 강조하고 있습니다.

이상입니다. 더 궁금하신 점이 있다면 언제든지 댓글로 물어봐주세요. 감사합니다.

이채림님의 프로필 이미지
이채림

작성한 질문수

질문하기