프로그래밍 공부 일지

2024년 11월 12일 프로그래밍 언어론 공부 5일차

김씨 달팽이 2024. 11. 13. 00:49
반응형

 오늘 오랜만에 프로그래밍 언어론 공부를 해봤다. 오늘은 P.129 ~ P.148을 공부했다. 구문론과 의미론 파트였다. 원래는 공부를 이어서 계속 할 생각이었는데 이해도 안되고 어려워서 자꾸 멈추다가 텀이 많이 길어졌다. 

 

 오늘은 평소와 다르게 중요하다고 생각되는 것들을 적으면서 공부해봤는데 의외로 공부에 집중도 잘되고 재밌었다. 

 

 솔직히 구문론과 의미론이 뭔지 이해하는데 좀 걸렸다. 말로는 프로그램의 표면적인 구조를 나타내는 것과 프로그램의 내용적인 효과를 정의한다는데 실질적으로는 이해를 못 했었다. 오늘 공부를 다 하고나서는 어느 정도 감은 잡았지만 더 해야된다. 

 

 정의될 대상인 비단말 기호와 언어에서 직접 사용되는 표현인 단말 기호는 확실히 기억하고 넘어가야 되겠다. 뒤에 계속 나오는데 이해하지 못한 상태로 넘어가면 앞으로 계속 돌아가서 찾게된다. 

 

 BNF와 EBNF를 어떻게 이해해야 할까 하다가 프로그램의 구조를 그림으로 표현한 구문 도표를 문자로 표현하는데 필요한 것들이라고 생각하기로 했다. 

 

- BNF의 메타 기호들

::= 정의
| 택일(or)
< > 비단말 기호

 

- EBNF의 메타 기호들

[  ] 생략 기능
< > 0번 이상 반복
(  ) 메타 기호 | 와 함께 쓰여 한정된 범위의 택일
'  ' 단말 기호로 사용함

 

 BNF에서 EBNF로 확장된 것이다. 

 

 위의 내용들을 구문 도표와 함께 볼때 이해를 바로 할 수 있었다. 구문 도표는 순서도와 유사하게 그림으로 구문을 표현한 것이라 이해가 너무 쉬웠다. 

 

 솔직하게 아직도 속성 문법 말고는 더 찾아보고 공부해봐야 한다. 기능적 의미론의 추상기계의 상태가 뭔지 잘 모르겠다. 다른 것들은 말로는 추상적으로는 이해가 가지만 구체적으로 이해하지는 못했다. 

 

 나는 비단말 기호를 데이터라고 생각하면서 이해했다. 정의될 대상이니까 입력한 데이터들, 그리고 프로그램 안에 저장된 변수와 상수들이라고 이해했다. 그런 데이터들은 타입이 존재하고, 그런 타입들의 규칙을 정의하고 표현하는 것이 속성 문법이라고 이해했다. 아닐 수도 있지만, 적어도 지금은 그렇게 이해하고 받아들였다. 

 

 의미론은 구체적인 학습이 필요하다는 판단이 섰지만, 더 딥하게 들어가는건 아직 무리라는 생각이 든다. 프로그래밍 언어 개발을 할 생각이 아직은 없고, 프로그래밍 언어를 좀 더 쉽게 공부하고 싶어서 하는거라 그런게 있구나 정도로만 하고 넘어가고자 한다. 

 

 오늘은 어느 정도 공부다운 공부를 할 수 있었다고 생각한다. 

반응형