Language/Swift

[1_스위프트 기초] Chaptrer 1. Swift

개랭갱깽스타 2021. 3. 11. 11:06

0. 주저리주저리

회사에서 iOS 업무를 맞게 되었다. Android 도 제대로 모르는 상태에서 iOS 를 하는 것 같아서 불안하지만....! Swift 와 Objective-C 둘 다로 되어있는 프로젝트여서, 그나마... Kotlin 과 유사해 보이는! Swift 부터 공부하기로 했다! 항상 책의 서론에는 역사부터 나온다. 시간이 없어, 그냥 넘어갈까 하다가, 절차지향/객체지향/함수형 프로그래밍 등에 대한 내용을 한번 정리하고, Swift는 어떤 Concept 으로 만들어졌을까 궁금해서 읽어보았다!

 

1. Swfit 의 특징

ARC(자동 참조 카운팅) 지원 -> 메모리 관리를 쉽게 할 수 있다.

Obejctive-C 의 동적 객체 모델과 매개변수 형식을 스위프트에 도입!

컴파일 언어이지만, 플레이그라운드를 사용해 스위프트 코드의 결과를 바로 확인 할 수 있다!(스크립트 언어처럼!)

----> 최신 언어의 철학을 결합 && 성능은 프로그램 실행 속도 향상, 빌드 시간 단축에 최적화 되어 있음!

 

Safe(안정성): 옵셔널 기능, guard 구문, 오류처리, 강력한 타입 통제 등을 통해

Fast(신속성): 실행 속도의 최적화 && 컴파일러를 지속적으로 개량

Expressive(더 나은 표현성)

 

2. 프로그래밍 패러다임

명령형 객체지향 프로그래밍 패러다임을 기반으로 한 함수형 프로그래밍 패러다임과 프로토콜 지향 프로그래밍 패러다임 지향.

객체지향 프로그래밍 패러다임

함수형 프로그래밍 패러다임

- 장점) 대규모 병렬처리가 굉장히 쉽다.

- 함수자체의 응용을 중요시 여김

- 함수를 일급 객체로 다룬다.

일급객체 ( https://ko.wikipedia.org/wiki/일급_객체 )

- 전달인자로 전달할 수 있다.
- 동적 프로퍼티 할다잉 가능하다.
- 변수나 데이터 구조 안에 담을 수 있다.
- 반환 값으로 사용할 수 있다.
- 할당할 때 사용한 이름과 관계없이 고유한 객체로 구별할 수 있다.

 

코드. 명령형 프로그래밍 패러다임 VS 함수형 프로그래밍 패러다임

//명령형 프로그래밍 패러다임
func doSomthing(){
    print("do something")
}

func doAnotherThing(){
    print("do another thing")
}

func executeAll(){
    doSomthing()
    doAnotherThing()
}

executeAll()
//함수형 프로그래밍 패러다임
func doSomething(){
    print("do something")
}

func doAnotherThing() {
    print("do another thing")
}

func execute(_ tasks: [() -> Void]) {
    for task in tasks {
        task()
    }
}

execute([doSomething, doAnotherThing])

 

**커링Curying: 여러 개의 매개변수를 갖는 함수를 매개변수 하나를 갖는 함수의 나열로 표현하는 방법

- 장점: 함수의 재사용성 향상 / 코드의 가독성 향상 (?? 응?? 모르겠는데??) ----> 아래 블로그 다시 보자.....어렵쓰....

jusung.github.io/Currying/

func sum(first:Int) -> ((Int) -> Int) {
    return { second in first + second }
}

sum(first: 10)(5)

 

프로토콜 지향 패러다임

 

반응형