본문으로 이동

미디어위키 1.45 안정화가 거의 끝났습니다. 다만 Flow 확장 기능 관련 이슈가 있어서 대체하는 작업을 수행할 계획입니다.

  1. 큰숲백과:청사진에서 위키 발전의 대략적인 방향성을 제시했습니다. 의견이 있으신 분은 큰숲백과토론:청사진에서 의견을 남겨주시면 좋겠습니다.
  2. 기능상의 오류로 지원하지 않고 있는 기능에 대해서는 큰숲백과토론:이슈 트래커에 요약했습니다. 참고하시기 바랍니다.
  3. 데이터베이스 덤프 받고싶으신 분은 큰숲백과 가입 후에 사용자토론:Bigforest에 의견 남겨주시면 ftp 주소, 계정, 비밀번호를 특수:EmailUser를 통해서 공개할 예정입니다.

컴파일러

큰숲백과, 나무를 보지 말고 큰 숲을 보라.

컴파일러(Compiler)란 넓은 의미로는 하나의 프로그래밍 언어로 짜인 코드를 다른 프로그래밍 언어를 사용한 코드로 바꿔 주는 프로그램이나 보통은 협소한 의미로 고수준 프로그래밍 언어로 작성한 소스 코드를 기계어로 번역하는 프로그램을 말한다.

프로그램 소스 코드 전체를 한번에 기계가 알아들을 수 있도록 변환하는 컴파일 과정 때문에 코드 한 줄 실행할 때마다 변환을 하는 인터프리터보다 훨씬 빠르다.

대신 역방향으로 기계어나 바이트 코드에서 프로그래밍 언어 소스 코드로 변환해야 한다면 인터프리터가 더 정확한 결과를 내놓는 경우가 많다. 왜냐하면 컴파일러는 컴파일 과정 중 발생하는 코드 최적화 단계에서 원래 코드의 구조가 박살나기 때문이다.[1]

  • gcc 및 g++: 리눅스 환경 중심으로 컴파일하는 것을 상정한 C언어 및 C++ 언어용 오픈 소스 컴파일러이다. 그러나 MS 윈도우와 같은 다른 환경에도 Cygwin 같은 프로그램으로 포팅되어 있다.
  • MSVC: 비주얼 스튜디오에 포함된 C++ 언어 컴파일러다. 이쪽은 클로즈드 소스 컴파일러다.
  • Turbo C/Turbo C++: 볼랜드가 개발했던 컴파일러다. 표준 C언어의 변화를 잘 반영하지만 실무용으로는 gcc에 다소 밀린다. 현재는 개발사 엠바카데로[2]가 개발을 포기하고 C++ 빌더 개발로 넘어간 상황이라 더 이상 쓰지 않는다.

상기한 것들은 C/C++ 언어에 대한 컴파일러를 다루지만 파스칼이나 Go 등의 다른 몇몇 프로그래밍 언어도 컴파일러가 있다.

파이썬, 자바, lua, 자바스크립트 같은 스크립트 언어들은 인터프리터를 사용한다.

  • 한 데스크탑 운영체제/자원 및 환경(호스트 시스템) 상에서 소스 코드를 컴파일한 뒤 전혀 다른 운영체제/자원 및 환경(타겟 시스템)을 가진 기기에서 실행되도록 몇 가지 변경 옵션을 주어 컴파일한 경우 해당 컴파일러를 '크로스 컴파일러'라고 한다. 보통 스마트폰 앱 개발/임베디드 기기 펌웨어 개발에 크로스 컴파일러를 만들어 활용한다.
    • 크로스 컴파일러로 만든 프로그램을 타겟 시스템에 올리는 퓨징을 할 때에는 시리얼 포트, JTAG, Ethernet 포트 등을 활용한다.
  • 바이너리 코드와 트리형 자료구조를 만들 수 있는 언어의 경우 컴파일러가 자기 자신의 소스 코드를 컴파일할 수 있다!
  • 컴파일러의 경우 하드웨어와 소프트웨어 특성, 프로그래밍을 포함한 컴퓨터공학 이론에 모두 통달해야 제작 가능하기 때문에 운영체제와 더불어 가장 만들기 어렵다는 프로그램으로 평가된다.
  1. 가령 단순한 반복문을 SIMD 벡터 명령어로 바꾸는 과정이 있다.
  2. 원 개발사였던 볼랜드 사의 IDE 및 컴파일러 개발 부문이었던 코드기어를 인수했다.