HihoBookStudy / EffectiveJava

이펙티브 자바 북스터디입니다.
1 stars 0 forks source link

[Item10] 결정적 계산의 정확한 의의가 무엇일까요? #18

Closed Limgayoung closed 2 months ago

Limgayoung commented 3 months ago

61페이지에 equals는 항시 메모리에 존재하는 객체만을 사용한 결정적 계산만 수행해야 한다고 나와 있습니다.

결정적 계산은 메모리에 존재하는 객체를 사용한 모든 계산을 다 포함해서 말하는 것일까요? 아니면 그것보다는 범위가 작은 것일까요? 검색해봐도 해당 부분에 대해서는 찾을 수 없어서 질문해 봅니다.

ForteEscape commented 3 months ago

Q.

결정적 계산은 메모리에 존재하는 객체를 사용한 모든 계산을 다 포함해서 말하는 것일까요? 아니면 그것보다는 범위가 작은 것> 일까요? 검색해봐도 해당 부분에 대해서는 찾을 수 없어서 질문해 봅니다.

A. 개인적인 생각이나, 전자에 가까운 것 같은 느낌입니다. 해당 예시를 보면 개발자가 인지하지 못하는 사이에 무언가가 외부에서 변경되는 객체나 값에 equals가 의존하게 되면 문제가 발생한다고 설명하고 있습니다.

따라서 equals가 프로그램 내부에서만 변경될 수 있고, 개발자가 모르는 영역에서 변경되지 않는 객체들에 대한 연산을 결정적 계산이라고 하는 것 같습니다.

IAGREEBUT commented 3 months ago

어제 세훈님(@ForteEscape)이 명확하게 잘 정리해주신 것 같아서 답변에 추가로 달아둡니다. -> 결정적 연산 : 특정 입력에 대하여 같은 입력이면 항상 같은 출력이 나오도록 하는것 ex) URL의 경우 중간에 IP처럼 개발자가 내부적으로 통제하지 못하는 요소(네트워크를 통함)로 인해 값이 변경된다 (비결정적)

추가로 어제 제가 언급한 오토마타(automata)에서 쓰이는 결정적/비결정적 용어에 대해서 조금 더 말씀드립니다.

오토마타란? 오토마타 이론은 계산 능력이 있는 추상 기계와 그 기계를 이용해서 풀 수 있는 문제들을 연구하는 컴퓨터 과학의 분야라고 합니다. 쉽게 말하면 컴퓨터(계산 능력이 있는 추상 기계)와 컴퓨터를 이용해서 풀 수 있는 문제들을 연구하는 컴퓨터 사이언스 분야입니다. 오토마타의 표현방법으로 표현해낼 수 있는 문제들은 컴퓨터로 해결이 가능한 문제임

예시) 스위치를 오토마타로 표현

스크린샷 2024-03-28 오후 1 43 37

참고 https://somuchthings.tistory.com/268 https://bestowing.github.io/automata/automata1/