본문 바로가기
iOS

Swift: About Swift

by Dev Arthur 2023. 4. 6.

- It’s an industrial-quality programming language that’s as expressive and enjoyable as a scripting language

= 스위프트는 스크립트 언어만큼 표현력있고 즐거운 산업 품질 프로그래밍 언어이다

(스크립트 언어처럼 사용할 수 있지만 스크립트 언어는 아니다)

 

- Swift defines away large classes of common programming errors by adopting modern programming patterns

= 스위프트는 최신 프로그래밍 패턴을 채택해서 많은 클래스의 흔한 프로그래밍 에러를 정의한다

  • Variables are always initialized before use.
    = 변수는 항상 사용전에 초기화된다
  • Array indices are checked for out-of-bounds errors.
    = 배열 인덱스는 범위초과 에러에 대해 체크된다
    (게임에서 벽뚫기 같은 게 이를 이용한 버그라고 볼 수 있다)
  • Integers are checked for overflow.
    = 정수는 오버플로우에 대해 체크된다
    (정수 오버플로우: 정수가 허용된 범위를 초과할 때 발생하는 에러)
    (ex) 0~10까지 담을 수 있는 곳에 정수 11을 담으면 범위를 초과해서 0이 담긴다)
    (몸무게가 체중계의 측정 한도를 넘거나, 네이버 날씨에 온도가 비정상적으로 뜨는 것, 그 외에 게임에서도 여러 예시를 볼 수 있다)
  • Optionals ensure that nil values are handled explicitly.
    = 옵셔널은 nil 값이 명시적으로 다뤄지는 것을 보장한다
  • Memory is managed automatically.
    = 메모리는 자동적으로 관리된다
  • Error handling allows controlled recovery from unexpected failures.
    = 에러 처리를 통해 예기치 못한 오류에 대한 복구를 제어할 수 있다

- Swift code is compiled and optimized to get the most out of modern hardware.

= 스위프트 코드는 최신 하드웨어를 최대한 활용하기 위해 컴파일되고 최적화된다
(컴파일러 언어이다)

 

※ 컴파일러 언어와 인터프리터 언어의 차이

  컴파일러 언어 인터프리터 언어
컴파일 o x
실행 속도 빠름
(단, 컴파일을 해야하기에 실행 전까지 시간이 소요됨)
느림
(단, 컴파일 과정이 없기 때문에 실행 전까지 걸리는 시간이 짧음)
실행 파일 o x
실행 단계 분리 컴파일 단계와 실행 단계
구분이 존재
인터프리트 단계와 실행 단계 구분이 없음
방식 소스 코드 전체를 컴파일 소스 코드를 한 줄씩 변환
타입 명시 보통 정적 타입 언어 보통 동적 타입 언어

※ 스위프트는 기본적으로 정적 타입 언어인데, 선택적으로 동적 타입 언어의 기능을 제공한다

 

- Swift combines powerful type inference and pattern matching with a modern, lightweight syntax, allowing complex ideas to be expressed in a clear and concise manner.

= 스위프트는 강력한 타입 추론과 패턴 매칭을 현대적이고 가벼운 구문과 결합해서, 복잡한 생각을 명확하고 간결한 방법으로 표현할 수 있도록 한다

(타입 추론(<->타입 어노테이션): 변수에 타입을 지정하지 않고 값을 넣었을 때, 컴파일러가 값을 토대로 타입을 추론해서 지정하는 것
ex)

let type = "10"

(패턴 매칭: 특정 패턴(if문의 조건이나 switch문의 case의 조건 같은)과 변수의 값을 매칭되도록하는 것?, 패턴 종류 다양
(패턴 종류(크게 보면 2가지): 어떤 종류의 값과도 일치하는 패턴어떤 종류의 값과는 일치하지 않는 패턴(특정 종류의 값과만 일치하는 패턴))

ex)

let a = 10

//어떤 종류의 값과도 일치하는 패턴
switch a{
case _:
	print("a is ten")
}

//어떤 종류의 값과는 일치하지 않는 패턴
if String(a) == "10"{
	print("a is ten")
}
반응형

'iOS' 카테고리의 다른 글

Swift: A Swift Tour - Objects and Classes  (0) 2023.07.13
Swift: A Swift Tour - Functions and Closures  (0) 2023.04.25
Xcode: 설치하기  (0) 2023.04.13
Swift: A Swift Tour - Control Flow  (0) 2023.04.10
Swift: A Swift Tour - Simple Values  (0) 2023.04.07