인터프리터라고하면 1줄씩 읽어서 한다고하는 횽들 많은데 틀린거라던데..
생각을 해보면 어떻게 블럭이나 반복문 처리 된거 한줄읽고 어케 처리할거??
암튼
인터프리터 = 실행시 결과만을 보여줌
컴파일러 = 실행시 생성물을 만듬
자바도 컴파일러로 일단 하지영
요것이 맞나요 성님들?
생각을 해보면 어떻게 블럭이나 반복문 처리 된거 한줄읽고 어케 처리할거??
암튼
인터프리터 = 실행시 결과만을 보여줌
컴파일러 = 실행시 생성물을 만듬
자바도 컴파일러로 일단 하지영
요것이 맞나요 성님들?
컴파일러 : 원시 프로그램 번역해서 목표 언어의 프로그램 생성, 인터프리터 : 원시프로그램을 읽어들여 명령어를 실행 , 새끼야 헷갈리게 하지마 좀
니말이 맞네 꼭 1줄만 읽는것도 아니지
ㄴ 맞을수밖에.. 우리 컴공 교수님이 알려준거니까.. 햇갈려서 다시한번 물어본건데.. 교수님이 질문했는데 학생이 1줄씩 읽어서 어쩌구 하니까 교수님이 깠음... 인터프리터는 결과만을 보여주는거로 이해하면 편하다고 했음 흐흐흑
컴파일방식 : 원시언어를 컴파일하여 독립적으로 실행가능한 언어로 번역
인터프리터방식 : 원시언어를 실시간에 번역하여 실행
자바 방식 : 자바컴파일러는 원시언어를 바이트코드로 번역하고, JVM 은 실시간에 바이트코드를 번역하여 실행 (컴파일 방식 + 인터프리터 방식)
야 꼭 결과만 보여주는 것=인터프리터 는 아니야. 어떤 언어는 repl이 있으면서 컴파일러도 같이 있는 경우 있다. 즉 니가 함수 정의해서 엔터 치는 순간 바로 그 함수만 컴파일하고 그 함수 호출하면 컴파일된 함수를 실행해서 결과를 보여줌
아 이런것들이였구나 모두 도움 고맙습니다// 자꾸교수님이 원초적인 질문하는데 대답못하는 내가 한심스러울뿐 ㅠㅠ
그러고보니, sbcl 은 완전히 native 로 컴파일되고, clisp은 인터프리터가 실행하잖아. 표준으로 정의안하는 모양이네~
이게 예전처럼 중요한 개념은 아닌 것 같은데, 가령 파이썬은 인터프린터언어라고 알려져있지만, 컴파일 해서 쓰기도 하고, 자바스크립트도 인터프린터지만 최근에 들어서는 컴파일해서 쓰는 애들 이야기도 심심치 않게 들리더라. 자세한 내용은 나도 잘 모른다.
언어가 컴파일러다 인터프리터다 갈리는 것이 아니라 구현이 갈리는 거긔. C도 인터프리터로 구현하면 인터프리터 되는 거긔.
어디더라. 데비안인가 어디서 프로그래밍 언어 속도 비교한 사이트 있는데 거기서 터무니 없이 느린 구현은 거의 인터프리터로 구현한거라 보면 됨.
그렇군. 사실 그다지 생각해본적이 없는지라, 무의식적으로 이런 부분(컴파일/인터프리터, etc..)들까지 표준으로 정의하지 않을까 했는데.. 대부분 아닌가보네.
ㄴ CL은 표준에 컴파일하는 함수가 있으므로 인터프리터와 컴파일러가 공존하는 희안한 케이스긔. 디버깅할때는 아무래도 인터프리터 방식이 더 많은 정보를 제공해주니까 개발시 그쪽을 주로 이용하고 실행시는 전부 컴파일한 것이 빠를테니까 그쪽으로 스윗칭. 형은 이상적 언어라면 구현에서 이 둘을 다 지원해줘야 한다고 봄.
예를들면 요거:
http://shootout.alioth.debian.org/u64/performance.php?test=fannkuchredux
거기서 보면 대충 Clean인가부터 속도가 현저히 떨어지니, 아마 거기서 부터가 인터프리터 구현물들.
어휴, 형이 CL 쫌 읽을 줄 아는데, 거기 소스는 타입 정보 조낸 박아서 읽기가 어렵다. 빡시게 인간 옵티마이징 한 코드. ㅋㅋ
clean 구현은 1가지고, repl이 존재하지만,밑에 make파일 보니까 native로 컴파일해서 돌린거네 하스켈 ghc도 마찬가지고. 일반적으로 저 테스트에선, sbcl이 조금더 빠르긴하다.
http://shootout.alioth.debian.org/u64/benchmark.php?test=fasta&lang=all
은 sbcl 보다 하스켈이 좀더 빠르네 ㅋㅋ
그리고 저 벤치마크는,큰 의미 못주는거 같아.
레노//벤치마크는 문제가 뭐냐에 따라 순위가 확확 바뀔 수 있는데, 형이라면 일반적으로 자바가 적당한 자리(?)에 있는 벤치마크를 믿긔. ㅋㅋㅋ
맞다. 큰 의미 없고 첫번째 것보다 100배 이상 떨어지는 것들은 의미 있다고 봄. ㅋㅋㅋ
(100밴 쫌 센가? 50배? ㅋㅋ)
난 궁금한게 파이썬이 왜 저렇게 느린가야..사실 구현적인 측면에선 lisp하고 큰차이 없는거 같은데...
ㄴ 뭔소리여, CL 구현의 GC는 그 계열의 원존데! 요즘은 jvm이 인력과 돈으로 더 나아진 듯 하지만 CL의 GC 구현들은 아직은 top 3안에 든다고 본다. 그리고 CL은 여러 구현이 경쟁을 하다 보니까 아무래도 질이 경쟁 안해도 되는 프로그래밍 언어들 보다는 낫긔.
ㄴ 아, 난 잘모르고 하는소리야. GC기술은 다 비슷한듯해서.
형은 오히려 머신코드 컴파일은 다 비슷하다고 보고 차이는 gc라고 봄. 물론 형도 잘 모르는 걍 추측. ㅋㅋ 얼핏 얼서 듣기론 jvm은 이제 거의 현대 기술의 결정체 라던데?