| 이전 주제 보기 :: 다음 주제 보기 | 
	
	
		| 글쓴이 | 메시지 | 
	
		| 이도형 
 
 
 가입: 2018년 10월 4일
 올린 글: 2
 
 
 | 
			
				|  올려짐: 2018년10월4일 13:51    주제: 10.4 수업 내용 관련 질문 |   |  
				| 
 |  
				| 안녕하세요! 
 오늘 수업 내용 관련해서 이해가 잘 안되는 점이 있어 질문드립니다
 
 σ,M⊢C⇒M′
 
 위의 식이 특정 환경, 메모리 상태에서 Statement를 수행 시 M'를 만들어낸다라는 의미로 이해했는데요. 그렇다면 Statement 수행 후 환경(시그마)은 바뀌지 않는것인가요??
 x:= E와 같은 statement를 수행하면 Env에 x와 x에 해당하는 메모리 주소 값이 생길 수도 있는 것 아닌가요?
 
 오늘 교수님이 SEQ 설명하실 때 S1 ; S2에서 S1을 실행 후 메모리 공간은 변하여서 S2에서 이 변경된 메모리 공간이 적용되는데 환경은 S1, S2 둘 다 동일하다고 설명하신 부분이 잘 이해가 되지 않아 질문드렸습니다.
 
 제가 잘못 이해했거나 놓친 부분이 있는 것 같습니다.
 
 감사합니다!!
 |  | 
	
		| 위로 |  | 
	
		|  | 
	
		| 김두영 
 
 
 가입: 2018년 9월 13일
 올린 글: 4
 
 
 | 
			
				|  올려짐: 2018년10월4일 16:13    주제: 수업 끝나고 저도 헷갈려서 질문 드렸었는데 |   |  
				| 
 |  
				| 환경은 메모리 주소를 가리키는 개념이고 메모리 주소에 적혀있는 값은 환경이 변하지 않아도 바뀔 수 있는 것 같습니다. 새로운 환경이 만들어진다는건 어떤 변수(심볼)가 가리키는 메모리 주소가 변하는 경우일 거구요. 
 예를 들어서
 let x := 1 in
 x := x + 1
 x := x  + 2
 를 실행하면 let x := 1 을 실행할때 기존에 있던 환경(σ)에 (x, l) 이라는 걸 추가한 환경(σ')이 리턴되고 (x는 심볼(변수이름), l은 메모리 주소, l이 가리키는 메모리 값이 1), 밑의 SEQ(x := x + 1 ; x:= x + 2)를 실행할때는 둘 다 σ'이라는 환경을 사용하고 x가 가리키는 값(메모리주소)은 l로 변함없지만 l이라는 메모리주소에 담긴 값이 1->2->4로 변하는거라고 이해했습니다.
 (만약 이 이후에 let x := 2 in 이라는 문장이 있다면 이게 실행될때는 환경 σ'과는 달리 x가 l'을 가리키는 환경 σ''이 생기고, 이때 l'이라는 메모리 주소는 2라는 값을 가리키고 있겠죠.)
 |  | 
	
		| 위로 |  | 
	
		|  | 
	
		| 로파스 Site Admin
 
 
 가입: 2012년 9월 9일
 올린 글: 280
 
 
 | 
			
				|  올려짐: 2018년10월5일 11:07    주제: |   |  
				| 
 |  
				| 안녕하세요. 
 김두영 수강생님이 기본적으로 잘 설명해주셨는데요, 약간의 보충설명을 드리겠습니다.
 
 결론부터 말하자면 프로그램(C) 실행결과로 환경이 바뀔 수 있는 것이 맞고,
 
 S1;S2에서 S1과 S2의 환경이 동일하다는 것도 맞습니다.
 
 김두영 수강생님이 제시해주신 예제를 조금 변형해 아래와 같은 식을 생각해보겠습니다.
 
 (let x = 1 in x := x+1); x := x+2
 
 를 실행할때, let x = 1 in x := x + 1 을 실행할때의 환경이 σ라고 하면
 (이 프로그램 식의 앞부분은 생략했지만, 이런 경우라면 앞부분에 이미 x라는 변수가 정의가 되어있어야겠지요.)
 
 let x = 1 을 실행할때 환경이 한번 변할것이고, x := x+1을 실행할때 그 변한 환경을 반영해서 프로그램 식이 실행됩니다.
 
 그러나 lex x =1 은 x := x+1까지만 유효한 변수선언이기 때문에 x:=x+2를 실행할때는 왼쪽 식을 처음 실행할때의 환경인 σ를 기반으로 계산이 될 것입니다.
 
 그렇기때문에 결론적으로 S1과 S2가 같은 환경 내에서 실행이 된것입니다.
 
 쉽게 말하자면 프로그램 실행중에 환경은 계속 변할 수 있고, 변해가는 환경을 반영해서 프로그램 식을 계산해주어야 한다고 이해하시면 됩니다.
 
 σ,M⊢C⇒M′ 라는 표기때문에 헷갈리신 것 같은데,프로그램 실행결과로 환경을 리턴할 필요는 없기때문에 표기하지 않은 것일뿐 환경이 변하지 않는다는 뜻은 아닙니다. 실제로는 환경은 계속 변해가면서 실행되게 됩니다.
 
 더 궁금하신 점 있다면 질문해주세요.
 
 -조교 드림.
 |  | 
	
		| 위로 |  | 
	
		|  | 
	
		| 이도형 
 
 
 가입: 2018년 10월 4일
 올린 글: 2
 
 
 | 
			
				|  올려짐: 2018년10월8일 22:42    주제: |   |  
				| 
 |  
				| 이해가 되었습니다! 두 분 다 감사합니다!! |  | 
	
		| 위로 |  | 
	
		|  | 
	
		|  |