728x90
스위프트 특징
- Safe, Fast, Expressive
Safe : 엄격한 문법을 적용해 실수를 미연해 방지(옵셔널기능 , guard구문 , 오류처리, 강력한 타입통제)
Fast : C언어 수준과 동등한 성능을 일정한 수준으로 유지하는데 초점
Expressive : 사용하기 편하고 보기 좋은 문법 구현
- 다중 패러다임 언어 : 명령형과 객체지향 프로그래밍 패러다임을 기반으로 한
함수형 프로그래밍 패러다임과 프로토콜 지향 프로그래밍 패러다임을 지향
- 스위프트는 거의 모든 문법에서 소괄호 () 사용하거나 생략해도 무관
- 세미콜론 ; 도 생략 가능
- 중괄호 {} 생략 불가
객체지향 프로그래밍 패러다임(Object-Oriented Programming OOP )
- 여러개의 독립 단위인 객체의 모임으로 파악하고자 하는 시각
- 유연하고 쉽게 변경가능 대규모 개발에 많이 사용
- 직관적으로 코드분석 가능
- 클래스에 하나의 문제 해결을 위한 데이터와 메서드를 모아놓은 방식으로 응집력을 강화
- 각 클래스는 독립적이 되도록 클래스끼리는 결합력 약화
- 프로퍼티, 변수등에 해당하는 메모리 값의 변화(상태변화)가 있다.
- 특징 : 자료추상화, 상속, 다형성, 동적 바인딩
- 관련언어 : 스몰토크, Objective-C, C++, C#, 자바, 파이썬, 루비, 스위프트
- 용어 :
클래스(class) : 같은종류 또는 문제해결을 위한 하나의 종류라고 생각. 속성(변수), 행위(메서드)를 정의한 것 객체지향 프로그램의 기본 사용자 정의 데이터 타입이라고 할 수 있음. 클래스는 다른 클래스 또는 외부 요소와 독립적으로 디자인 되어야함.* 클래스는 설계도라고 보면됨.
객체(Object) : 클래스의 인스턴스( 실제로 클래스에서 메모리에 할당되었을때를 지칭 instance ). 객체는 자신 고유의 속성이 있으며 클래스를 정의한 행위를 할 수 있음. 스위프트에서는 "객체"라는 용어보단 "클래스의 인스턴스"라는 표현을 많이 씀
매서드(Method) : 클래스에 정의된 행위를 실질적으로 하는 함수
함수형 프로그래밍 패러다임
- 대규모 병렬처리가 굉장히 쉽다.
- 프로그램이 상태의 변화 없이 데이터 처리를 수학적 함수 계산으로 취급하고자 하는 패러다임
- 함수 자체의 응용을 중요시 함.
- 함수호출이 각각 상호간섭 없이 배타적으로 실행되므로 병렬처리할 떄부작용이 거의 없음.
락을 걸거나 대기할 필요없음
- 함수를 일급 객체로 다룸 (Javascript도 마찬가지) :
일급객체(First-class Citizen)?
· 전달인자로 전달할 수 있다.
· 동적 프로퍼티 할당이 가능
· 변수나 데이터 구조 안에 담을 수 있음.
· 반환 값으로 사용 가능
· 할당할때 사용된 이름과 관계없이 고유한 객체로 구별 가능.
- 모나드, 함수객체, 필터, 맵, 플랫맵, 리듀스 등의 기능 사용가능
- 여러 가지 연산 처리 작업이 동시에 일어나는 프로그램 만들기 쉬움
- 여러개의 연산 프로세서를 사용하는 시스템에서 효율적인 프로그램을 만들기 쉬움
- 상태변화에 따른 부작용에서 자유로워지므로 순수하게 기능 구현에 초점을 맞추어 설계 가능
프로토콜 지향
- 값 타입을 더 효율적으로 사용, 오류를 줄일 방안.
- 더 나은 추상화 메커니즘 구현
'공부 > SWIFT' 카테고리의 다른 글
[SWIFT] 컬렉션형 - 배열 (Array) (0) | 2021.03.09 |
---|---|
[SWIFT] 튜플(Tuple) - 프로그래머 마음대로 타입 (0) | 2021.03.09 |
[SWIFT] 데이터 타입 특징(타입안심, 타입추론, 타입별칭) (0) | 2021.03.09 |
[SWIFT] 데이터 타입 기본 및 자료형(Int~Any까지) (0) | 2021.03.09 |
[SWIFT] 기초(명명규칙, 로그, 주석, 변수, 상수) (0) | 2021.03.05 |