LLVM front-end debugger 디버거 도구다..!@
우리가 작성한 언어를 LLVM 프로토콜을 준수하는 과정에서 생기는 어쩌구,,
컴퓨터 프로그램 개발 단계 중에 발생하는 오류나 버그를 찾아내고 그 원인을 밝히고 수정하는 작업과정
언어 → 언어로 인코딩하는 과정
원시코드(소스코드) → 목적코드
소스코드 파일을 실행가능한 소프트웨어 산출물로 만드는 일련의 과정을 말한다.
이거 한 다음에 시뮬레이터에서 실행해주는 것.
전처리preprocess → 컴파일compile → 링크link (소스코드 파일을 연관관계에 따라 이어줌, linker fail 어쩌구 오류는 이과정과 관련된 것) → 빌드
스위프트는 빌드할 때 컴파일이 이루어진다~ 빌드시점에 실행가능한 형태로 모두 컴파일되어 나오는 언어를 컴파일언어라고 한다.
사용자가 코드를 실행했을 때 즉석으로 번역하는 언어도 있음 → 인터프리터 언어
해리포터 책을 원서로 사서 읽으면 인터프리터 언어 방식.
번역본을 사면 컴파일 언어 방식.
번역본을 읽는게 시간이 훨씬 빠르지만, 오역과 오류(버그)가 있을 수 있음.
실행속도는 빠르지만, 앱스토어에 업데이트 전까지 버그를 고칠 수 없음.. 버그가 터쳤을 때 빨리 대응하기가 어려움.
인터프리터 언어는 공개된 장소에 소스코드가 올라와있고 그걸 사용자(브라우저)가 소스코드를 실행하는 형태라서 빠르게 대응을 할 수 있다. 웹페이지는 업데이트 같은 공지가 없었던 거 같음. 개발자가 실수했어도 3초만에 수정 가능ㅎ 배포가 자유로운 장점이 있지만, 속도는 좀 느림 (실시간 번역을 해야해서). 빠르게 무거운 작업을 하기에 적합하지 않다.
바이트코드 언어 = 두개의 장점을 갖고있다? 두개의 단점도 갖고있다.. 이도저도 아니다..? 만국공용어(중간언어)를 지정해서 그 언어로 컴파일해서 배포한다 → 각국에서 해당언어로 번역한다 → 뭐하는 짓임?
컴파일에서 중간언어로 배포를 하고 중간언어를 시스템언어로 바꿀 수 있는 친구만있으면 어느 시스텡ㅁ에서든지 실행가능.. 중간 언어(자바)를 바꿀 수 있는게 JVM 이란 애다.. 배포할때도 다시 빌드해서 배포해야하는 단점..
컴파일 언어들은 빌드할 때 컴파일을 하면 이미 번역이 되어서 가야하기 때문에 어느 환경에서 실행될 지 타겟팅을 다 해야한다. 아이폰용 빌드, 맥용 빌드, 윈도우용 빌드 등등 다 따로 나가야 함 (게임 다운받을 때 맥용, 윈도우용 어쩌구 나와있는 것도 이런 이유 때문임)
왜 Swift언어를 사용할까?
컴파일 언어는 시스템에 최적화 될 수 있기 때문에 에너지 절약 측면에서도 좋고, 게임 등 범용적으로 올라갈 수 있어야하기 때문에 컴파일 언어를 쓴다.