애플은 iOS, macOS, watchOS, tvOS 등 자사의 제품 개발에 활용하기 위해 새 프로그래밍 언어인 swift를 만들었는데 이 언어의 특징은 Safe, Fast, Expressive이다.
이 세가징 특징 외에도 많은 특징이 있는데 패러다임 관점에서 가장 강조하는 부분은 바로 함수형 프로그래밍 패러다임과 프로토콜 지향 프로그래밍 패러다임이다.
함수형 프로그래밍 패러다임
최근 프로그래밍 패러다임의 대세로 떠오르고 있는 가운데 가장 큰 장점은 대규모 병렬처리가 굉장히 쉽다는 점이다. 한눈에 이해하기 쉽게 우리가 한번씩은 들어본 명령형 프로그래밍과 비교를 해보겠다.
명령형 프로그래밍 | 함수형 프로그래밍 | |
---|---|---|
프로그래머가 초점을 두는 곳 | 작업 수행 알고리즘 상태의 변경 추적 | 원하는 정보 필요한 변환 |
상태 변경 | 중요 | 없음 |
실행 순서 | 중요 | 낮은 중요도 |
주요 흐름 제어 | 제어 구문(반복문, 조건문 등) 함수(메서드)호출 | 순환(재귀)함수 호출 등의 함수 호출로 제어 |
주요 조작 단위 | 클래스나 구조체의 인스턴스 | 함수 |
프로토콜 지향 프로그래밍 패러다임
참조 타입인 클래스의 인스턴스보다 값 타입을 더 효율적으로 사용하며, 오류를 줄이는 패러다임이다. 프로토콜에 익스텐션을 활용할 수 있기 때문에 참조 타입의 문제에서 조금 더 자유로워질 수 있고, 다중상속이 불가능한 한계를 뛰어넘을 수 있으며, 더 나은 추상화 메커니즘을 구현할 수 있다.
기본 명명 규칙
모든 프로그래밍 언어가 그렇듯 스위프트 언어 자체에 명시된 규칙은 없지만 권장하는 명명법이나 코딩 규칙이 존재한다. 프로그래밍을 하다보면 종종 변수명이나 함수명을 정할 때 고민을 하는 경우가 생기는데 아래와 같은 명명법을 지킨다면 고민하는 시간을 단축할 수 있다.
세미콜론
swift에서 명령 구문 뒤에 세미콜론(;)을 붙이는 것은 선택 사항이다. 기존 프로그램밍 언어의 습관대로 세미콜론을 붙여도 상관없지만 새로운 문법에 적응하기 위해 붙이지 않기를 권장한다.
변수와 상수
변수와 상수는 특정 데이터 타입에 해당하는 값의 이름이다. 변수는 생성 후 데이터값을 변경할 수 있지만, 상수는 한번 값을 설정하면 다음에 변경할 수 없다.
변수
var [변수명]: [데이터 타입] = [값]
상수
let [상수명]: [데이터 타입] = [값]
데이터 타입을 생략할 경우 컴파일러가 타입을 추론하여 지정하지만 자칫 잘못된 타입 추론으로 인해 오류가 생기면 골치아프니 타입 추론을 권장하지 않는다.