C의 선언

한계

4.5) 한계

정말 많은 내용을 공부했고생각보다 결과도 괜찮다이 정도면 좀만 더 개선하면 컴파일러가 되지 않을까서문에서 밝힌 적이 있는데필자는 간단한 변수의 선언 및 정의(정확히는 구조체의 선언과 정의까지는 연구했었다)와 수식의 계산까지 완료했지만 함수 정의와 호출에서 막혀서 포기했다지금 작성한 코드로 함수조건문과 반복문,포인터 연산동적 할당 등을 모두 완성할 수 있다면 당신은 필자보다 아주 뛰어난 사람임에 틀림이 없다.

이는 아주 어려운 문제인데기존에 함수 정의와 호출을 구현하는 방법을 모르는 상태에서 이것을 구현하려면 순수하게 개발자의 아이디어만으로 프로젝트를 진행해야 하기 때문이다사고력을 키워준다는 점에서 의미가 없다고 할 수는 없으나그것에 들이는 노력에 비해 결과가 시원치 않을 가능성이 높고대개는 처음에 떠올린 설계 자체에 오류가 생겨서 그전까지 작성했던 코드를 몽땅 버려야 하는 상황이 생각보다 자주 닥치기 때문이다이 문서에서는 설계가 없는 프로그래밍의 위험성도 많이 강조할 것이다컴파일러의 설계도 없이 혼자 이 프로젝트를 진행하기에는학부생 수준의 프로그래밍 능력으로는 너무나도 어렵다따라서 이 문제에 대해 필자는 일단 납득하길 바라지만정 궁금하다면 자신이 스스로 컴파일러를 설계하여 그대로 진행해보는 것도 좋은 경험이 될 수는 있다고 생각한다.

참고로방금 우리가 작성한 dcl 모듈은 완전히 개선되지 않았다식별자에 대해 어떤 것을 고려해야 하는지를 떠오르는 대로 나열해보자.

자료형

주소

정적인가? (static)

상수인가? (const)

컴파일러가 최적화하는가? (volatile)

레지스터인가? (register)

외부에 존재하는가? (extern)

외부에서 참조할 수 없는가? (static)

형식인가? (typedef)

함수인가?

함수라면인자 정보는 어떠한가?

배열인가?

포인터인가?

사용자 정의 자료형인가? (struct, union, enum)

사용자 정의 자료형이라면멤버 정보는 어떠한가?

...

일단 이 문제부터 모두 해결할 수 있다면 바로 컴파일러에 도전해도 좋을 것 같다.

댓글

댓글 본문
graphittie 자세히 보기