공부/SWIFT

[SWIFT] 특징

알로하리미 2021. 3. 5. 09:45
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)?
  · 전달인자로 전달할 수 있다.
  · 동적 프로퍼티 할당이 가능
  · 변수나 데이터 구조 안에 담을 수 있음.
  · 반환 값으로 사용 가능
  · 할당할때 사용된 이름과 관계없이 고유한 객체로 구별 가능.

- 모나드, 함수객체, 필터, 맵, 플랫맵, 리듀스 등의 기능 사용가능

- 여러 가지 연산 처리 작업이 동시에 일어나는 프로그램 만들기 쉬움

- 여러개의 연산 프로세서를 사용하는 시스템에서 효율적인 프로그램을 만들기 쉬움

- 상태변화에 따른 부작용에서 자유로워지므로 순수하게 기능 구현에 초점을 맞추어 설계 가능

 

프로토콜 지향
- 값 타입을 더 효율적으로 사용, 오류를 줄일 방안.

- 더 나은 추상화 메커니즘 구현