Suyeon9911 / TIL

매일 오전에 적는 미라클 TIL 🥣
10 stars 0 forks source link

[Book] 개발자 상식 2장 #88

Closed Suyeon9911 closed 1 year ago

Suyeon9911 commented 1 year ago
  1. 컴파일 타임과 런타임

    • 컴파일 타임 : 코드가 기계를 이해할 수 있는 언어인 기계어로 바꾸는 시간을 의미 . 소스코드는 기계어가 되어 실행가능한 상태로 바뀌게 된다.
    • 런타임 : 프로그램을 실행할 때 한 줄 씩 읽고 해석한 뒤, 실행하기 떄문에 프로그램을 모두 실행하는 속도는 컴파일 언어보다 느리다.
  2. 컴파일러 : 고급언어를 기계어로 번역해주는 도구 또는 논리적인 장치

  3. 빌드 : 고급언어로 작성된 소스코드를 실행가능한 파일로 만들어준다.

  4. 인터프리터 언어와 컴파일 언어

    • 인터프리터 언어 : 번역과 실행이 동시에 이루어지므로 별도의 실행파일이 존재하지 않으며 빌드시간이 없다.
    • 컴파일 언어 : 원시코드를 모두 기계어로 번역한 후 기계에 넣고 기계어 코드를 실행하는 것 / 빌드 과정을 거치기 때문에 빌드 타임이 없는 인터프리터 언어보다 실행 직전까지의 속도는 조금 소요될 수 있다.
  5. 정적타입 언어와 동적타입 언어

    • 코드의 상수, 변수, 함수등에 대한 타입을 언제 확인하는지
    • 타입을 명시한다는 것은 내가 해당 변수나 함수, 객체에 꼭 해당 타입의 데이터만을 넣겠다는 것을 의미
    • 정적 타입 언어 : 컴파일 시 변수의 타입이 결정되는 언어 .타입을 미리 지정해줘야하기 때문에 타입오류로 인한 문제를 컴파일 탐에서 해결할 수 있어서 안정성이 높습니다.
    • 동적타입 언어 : 실행후 자료형이 결정되는 언어. a라는 변수가 숫자형이라는 것을 미리 지정하지 않아도 코드가 실행되면 변수에 담긴 값을 보고 해당 변수가 숫자형이라는 것을 알게 된다. 소스코드 작성시 타입에 대한 제한이 없기 때문에 유연성이 높고 효율적이지만, 타입에 대한 실수가 있을 경우 이를 미리 알기 어렵다.
    • 정적타입언어의 장점은 컴파일 시 타입에 대한 정보를 결정하기 떄문에 속도가 빠르고 타입을 잘못 명시해서 발생하는 문제를 초기에 발견할 수 있어 안정성이 높다는 점입니다. 단점은 코드 작성시 자료형을 선언해줘야한다는 번거로움이 ㅅ있습니다.
    • 동적타입언어는 런타임까지 타입에 대한 결정을 보류할 수 있어서 많은 선택의 여지가 있고 문법이 간결하다는 점입니다.
    • 단점은 실행 도중 변수에 예상치 못한 타입이 들어와 타입오류가 많이 발생한다는 점입니다.

Swift는 정적타입 언어입니다. 컴파일 시점에 코드의 타입을 검사해 타입이 맞지 않는 경우 컴파일러가 에러를 발생시킴니다.

Suyeon9911 commented 1 year ago

https://jusung.github.io/Static-and-Dynamic-Typed-Language/