어제 clojure 스터디할 때 evaluation에 대한 이야기가 나왔다. 그런데 evaluation의 정확한 의미를 알고 있는 개발자가 없었다. 나 또한 대략적으로 이런 작업을 evaluation이라는 생각을 할 뿐 evaluation에 대해 구체적으로 설명할 수 없었다.
대략적인 감은 있는데 다른 사람에게 정확하게 설명할 수 없다면 알고 있는 것이 아니라고 생각한다. 그런 의미에서 오늘 evaluation에 대해 구체적으로 까발려 보자. 각자 느끼고 있는 evaluation에 대해 다른 사람에게 설명한다면 어떻게 설명할 수 있을까?
프로그래밍을 시작하는 친구들을 위해 최대한 쉽게 명확하게 설명하면 금상첨화겠다.
REPL에 대한 구체적인 설명은 http://en.wikipedia.org/wiki/Read%E2%80%93eval%E2%80%93print_loop 에 있다.
0개의 의견 from FB
4개의 의견 from SLiPP
대략 찾아 보니 수학에서 쓰이는용어를 가져온것 같다. evaluation : '문제를 풀다'라는 뜻으로 사용되고 있는듯 한데 이게 넘어와서 '연산하다'즉, 해당 코드를 실행하다라는 뜻으로 사용되는것이 아닐까?
@jhindhal.jhang 내가 궁금한 것은 interpreter가 소스 코드를 읽은 후 어느 과정까지를 evaluation으로 봐야하는지가 궁금하다. 소스 코드가 언어 syntax에 맞는지 확인하고, 기계어로 변환하고, 실행까지를 evaluation으로 봐야하는 것이 맞을까?
암튼 대략 그렇다고 이해할 수는 있겠지만 좀 더 명확한 정의를 좀 알고 싶었다.
@자바지기 나도 확실하진 않지만 interpreter(REPL)관점에서 본다면 아래와 같지 않을까? 1. READ : 소스코드의 syntax check와 메모리 로딩 2. Evaluation : 해당 코드들의 연산 즉, 메모리에 로드된 소스코드나 데이터 구조체를 가지고 계산(로직수행)을 하는것. 3. Print : 계산(Evaluation)된 결과를 출력(output으로 전달)하는 것
이렇게 볼 수 있지 않을까?
절차형에서 그냥 "실행"이라고 부르는 것과 동일하다고 보면 될 것 같습니다. 함수형은 아무래도 추상화 수준이 높다 보니 그렇게 낮은 구현 수준에서 뭐가 evalutation이냐고 묻는다면 언어와 구현 기술에 따라 다를 것 같아요.
의견을 남기기 위해서는 SLiPP 계정이 필요합니다.
안심하세요! 회원가입/로그인 후에도 작성하시던 내용은 안전하게 보존됩니다.
SLiPP 계정으로 로그인하세요.
또는, SNS 계정으로 로그인하세요.