혹시 "컴파일러"자체는 무엇으로 어떻게 만드는지 아십니까 ?
설명을 부탁드립니다.
모두들 "컴파일러"나 "인터프리터" "어셈블러" 자체를
어떻게 구현하는지에 대해서는 별 관심이 없는것 같군요.
우리도 기반기술을 보유해야 할 텐데...
누구 제게 자세히 설명 주실 분 안게십니까 ?
이 뉴스 그룹에 답변 올려주십시요.
그리고, 책도 소개해주십시요. 원서도 괜찮습니다.
감사합니다.
컴파일러도 exe라는 실행 파일로 만들어지기 때문에 일반 어프리케이션
프로그램 개발과 과정이 차이가 나는건 아닙니다.
그러니까 코볼이나 일반 어떤 language로도 컴파일러 구현은 가능합니다.
하지만 구현과 실제로 상품을 만든일은 차이가 있게 마련이지요.
그래서 퍼포먼스나 언어가 가지는 특별한 기능등을 위하여 보통 코볼이나
4GL로는 구현을 하지는 않지요.
제 생각으로는 대부분의 컴파일러가 C나 Assembler로 되어있지 않나
생각되는 군요.
제가 학교 다닐때 컴파일러라는 과목에서 실제로 간이 파스칼 컴파일러를
만든적이 있었는데 그때는 Turbo C로 만들었었지요.
컴파일러는 보통 어셈블러 변환기라고 생각하시면 되겠네요. 우리가 일반언어에서
add라는 명령을 사용하려할때 컴피일러는 자기가 가지고있는 문법 테이블에서
해당 문법이 올바른지를 체크하고 올바르다면 일정한 루틴에 따라서
add라는 명령어를 assembler로 변환하는 과정을 거치게 되죠....
제가 학교에서 구현한것은 이 assembler table을 만든는 것까지 했는데
긔이후는 저도 잘모르겠네요.....
대부분 대학의 컴퓨터 공학과에서는 이 컴파일러라는 과목이 필수는 아지만
선택과목으로 있습니다. 관심있으시면 학교 교제쪽으로 알아보세요...
그럼 이만.............
Question 이(가) <35F5E9...@edu.nm.kr> 메시지에서 작성하였습니다...
프로그래밍 언어로 만들죠 :) 예를들면, C++는 C++로 만들 수 있겠죠(질문 - 그럼
최초의 C++ 구현은?, 대답 - 직접 기계어로 만드는데, 전부 구현하지 않고 최소한
그것을 이용해서 자체를 다시 프로그래밍 할 수 있는 정도까지 만듬).
실제로 C를 만든 사람들의 글을 읽어보면, C는 C로 구현했었다고 하는데, 맨
처음에는 C의 구현물이 아직 없어서 Boot strapping program을 작성하여 하나의
구현물을 만들었다고 함(제 기억이 맞기를 ...:).
>설명을 부탁드립니다.
>
>
>모두들 "컴파일러"나 "인터프리터" "어셈블러" 자체를
>
>어떻게 구현하는지에 대해서는 별 관심이 없는것 같군요.
대부분 관심이 있지만, 대부분 상업적으로 성공하기 어렵기 때문에 (혹은 그걸로
먹고 살기 어렵기 때문에) 구현을 안한다고 보는 것이 더 맞습니다. 학교에서는
교육적인 목적으로 자주 구현하죠.
>우리도 기반기술을 보유해야 할 텐데...
>
>누구 제게 자세히 설명 주실 분 안게십니까 ?
자세한 책들이 많음.
>이 뉴스 그룹에 답변 올려주십시요.
일반적인 High level programming 언어를 만드는 것은(컴파일러나 인터프리터나
같다고 보고), 주어진 입력을 실행할 수 있는 형태 - 컴파일러인 경우는 통상
기계어인 경우가 많고 인터프리터의 경우는 구현에 사용된 언어에서 실행시켜서
그 결과를 얻을 수 있을 정도 까지 하면되고, 어셈블러인 경우 곧장 기계어로
바꿀 수 있어야 겠죠.
>그리고, 책도 소개해주십시요. 원서도 괜찮습니다.
책 제목 보다도 그림이 유명한 용책(Dragon book, 제목은 잊었음. 저자는 Seti,
Aho, Ulman 이던가?) - 전통적인(Classic) 방법으로 프로그래밍 언어를 만드는
방법이 잘 나와있으며, 대부분 학교에서 교제로 사용.
Essentials of Programming Lanugaes(MIT Press, 저자는 Daniel Friedman과 ...
기억 안남) - 처음부터 끝까지 프로그래밍 언어를 만들고 비판하고 향상시키는
내용의 반복임 - Lisp, Scheme 등을 알아야 보기 좋음.
둘다 원서가 좋음. 누구 또 덧붙일 만한 책 알면 이어주시기를 ...
- jwc
Question <quest...@edu.nm.kr>이(가) <35F6A5...@edu.nm.kr> 기사에서
작성했습니다...
>
> 저자는 누굽니까 ?
>
저자는 누굽니까 ?
NEWSer> 그책은 "Compilers"가 아닌지? 컴파일러의 바이블
NEWSer> 수준이지요(데니스리치의 "ANSI C" 처럼) 교보에 번역본이
NEWSer> 있는데 원서가 더 좋대요. 아호는 이론은 빠방한데 말주변이
NEWSer> 없서서 강의는 제미없대요. 그냥...
Compilers Principles, Techniques, and Tools
Alfred V. Aho, Ravi Sethi, Jeffrey D. Ullman
Addison Wesley Press
--
/* Dept. of Math and CSS, Seoul Nat'l Univ., Korea *
* <mailto:bbug...@brahma.snu.ac.kr> *
* TEL: 02-880-5374, Pager: 012-201-0322 */
> Question 이(가) <35F5E9...@edu.nm.kr> 메시지에서 작성하였습니다...
>> ...
>>혹시 "컴파일러"자체는 무엇으로 어떻게 만드는지 아십니까 ?
> 프로그래밍 언어로 만들죠 :) 예를들면, C++는 C++로 만들 수 있겠죠(질문 - 그럼
> 최초의 C++ 구현은?, 대답 - 직접 기계어로 만드는데, 전부 구현하지 않고 최소한
> 그것을 이용해서 자체를 다시 프로그래밍 할 수 있는 정도까지 만듬).
최초의 C++은 C로 만들지 않았나요? ^_^ (cfront)
> 실제로 C를 만든 사람들의 글을 읽어보면, C는 C로 구현했었다고 하는데, 맨
> 처음에는 C의 구현물이 아직 없어서 Boot strapping program을 작성하여 하나의
> 구현물을 만들었다고 함(제 기억이 맞기를 ...:).
요즘엔 bootstrapping하지 않고 그냥 cross-platform 개발하지 않나요?
OS 개발마저 cross-platform으로 하는데...
그리고 상용 컴파일러가 아닌 이상 대개 가능하면 고급언어를 씁니다. :)
컴파일러가 빠른 것보다는 컴파일러가 만들어내는 프로그램이 빠른 것이 더
중요하니깐 컴파일러를 어셈블리 언어로 coding할 필요까진 없습니다.
PS:
원저자님... (Question 님인가?)
왜 꼭 교차투고를 하셨나요? 이 질문은 C/C++과는 직접 관련이 없는데..
han.comp.lang.misc라는 귀걸이/코걸이 뉴스그룹을 놔두고..
--
박종대
-- ' C-language Edition
#define cdpark /* KAIST, CSDept, Theory of Computation Lab. */
#include <signature.h> /* the Hitchhiker's Guide to the Internet?? */
일반적으로 unix 를 조금 깊이 들어가면 배우게 되는데,
일반 pc용으로는 많은 분들이 언급하신대로 고급 언어로 하는게
맞는것으로 알고 있습니다.
저도 학교 다닐때 lex & yacc을 배웠는데, 제가 머리가 나빠서 그런지
정말 어렵더군요.
하지만 배울만한 가치는 충분히 있다고 생각합니다.
외국 검색도구로 한번 yacc이라고 해서 검색해 보시죠.
물론 국내도 있지만 쫒아가다 보면 결국은 영어로 봐야 하기 때문에
애초부터 외국쪽으로 찾아보심이 좋을듯 합니다.
CHOICE 작성함:
> 안녕하세요.
>
> 컴파일러도 exe라는 실행 파일로 만들어지기 때문에 일반 어프리케이션
> 프로그램 개발과 과정이 차이가 나는건 아닙니다.
> 그러니까 코볼이나 일반 어떤 language로도 컴파일러 구현은 가능합니다.
>
> 하지만 구현과 실제로 상품을 만든일은 차이가 있게 마련이지요.
> 그래서 퍼포먼스나 언어가 가지는 특별한 기능등을 위하여 보통 코볼이나
> 4GL로는 구현을 하지는 않지요.
>
> 제 생각으로는 대부분의 컴파일러가 C나 Assembler로 되어있지 않나
> 생각되는 군요.
>
> 제가 학교 다닐때 컴파일러라는 과목에서 실제로 간이 파스칼 컴파일러를
> 만든적이 있었는데 그때는 Turbo C로 만들었었지요.
>
> 컴파일러는 보통 어셈블러 변환기라고 생각하시면 되겠네요. 우리가 일반언어에서
> add라는 명령을 사용하려할때 컴피일러는 자기가 가지고있는 문법 테이블에서
> 해당 문법이 올바른지를 체크하고 올바르다면 일정한 루틴에 따라서
> add라는 명령어를 assembler로 변환하는 과정을 거치게 되죠....
>
> 제가 학교에서 구현한것은 이 assembler table을 만든는 것까지 했는데
> 긔이후는 저도 잘모르겠네요.....
>
> 대부분 대학의 컴퓨터 공학과에서는 이 컴파일러라는 과목이 필수는 아지만
> 선택과목으로 있습니다. 관심있으시면 학교 교제쪽으로 알아보세요...
>
> 그럼 이만.............
>
> Question 이(가) <35F5E9...@edu.nm.kr> 메시지에서 작성하였습니다...
> >안녕하십니까 ?
> >
> >혹시 "컴파일러"자체는 무엇으로 어떻게 만드는지 아십니까 ?
> >설명을 부탁드립니다.
> >모두들 "컴파일러"나 "인터프리터" "어셈블러" 자체를
> >어떻게 구현하는지에 대해서는 별 관심이 없는것 같군요.
> >우리도 기반기술을 보유해야 할 텐데...
> >누구 제게 자세히 설명 주실 분 안게십니까 ?
> >이 뉴스 그룹에 답변 올려주십시요.
> >그리고, 책도 소개해주십시요. 원서도 괜찮습니다.
> >감사합니다.