Swift언어는 뭐가좋아?

zeStars Team·2021년 4월 21일
1

Swift_Study

목록 보기
1/5

Swift언어는 뭐가좋아?

Published by AppleBug

Swift에 대한 간단한 소개

Swift는 Apple WWDC 2014에서 최초로 공개된 프로그래밍 언어로 당시 Objective-C의 단점을 보완하며 등장한 언어이다.

Swift는 초기버전부터 현재의 Swift5에 이르기까지 다양한 기능들이 추가되고 사라지며 업데이트가 되어왔고, 같은 애플의 언어인 Objective-C에 비해 사람이 이해하기 쉬운 언어(비교적 고급언어)이다.

TIOBE라는 사이트에서 선정한 2021년 4월 기준 검색어 점유율 상위 20개 프로그래밍 언어 중 15위(1.19%)를 차지할 만큼 영향력이 있는 프로그래밍 언어이다. (Swift의 대체제로 Obj-C가 있고 사용되는 분야가 Apple한정이라는 점에서 의미는 더 크다고 생각된다.)

출처:TIOBE Index for April 2021, Game over for Objective-C

Swift의 특징

  • Objective-C와 완벽한 호환이 가능하다.

    • 기본적으로 같은 Apple의 언어이기 때문에 계속적인 비교가 불가피함
    • Objective-C는 1980년대 부터 사용되어온 언어이기 때문에 많은 양의 자료가 있으며 그를 활용하기가 편리함(Cocoa)
  • PlayGround를 통해서 빠르고 간단하게 코드 테스트가 가능하며, 아이패드에서도 학습을 할 수 있다.

  • 빠른 속도를 보여준다.

    • Swift공개시 사용된 자료를 인용하면 Objective-C의 약 1.5배, python의 약 220배가 빠르다고 발표를 하였다. (RC4 암호화 기준)

    • 사실 빠른속도라고 해도 우리가 체감하기는 어려운것 같음...

  • 함수형 프로그래밍 패턴 (예: map 및 filter)

  • 메소드, 확장 프로그램 및 프로토콜을 지원하는 구조

    • 메소드(함수)는 파이썬의 함수 선언과 비슷함

    • extension을 통해 기존에 존재하는 Class에 기능을 추가해 넣을 수 있음

    • 프로토콜은 서비스를 이용할때 해야할 일들의 목록, 자바의 상속, 인터페이스와 비슷함

//----------------메소드
func printName(){ // 메소드 선언 
    print("My Name is Tom")
}
func add(_ a:Int, _ b: Int) -> Int { // 메소드 선언 및 파라미터와 리턴값 제약 조건 
    return a+b
}
//----------------extension
class SwiftClass { // 기본 클래스 선언 
    ...
}
extension SwiftClass { // 기본 클래스에 extension을 통해 추가 선언 
    ...
}
//----------------프로토콜
class ViewController: UIViewController { // UIViewController가 프로토콜이며 해당 프로토콜에 약속된 규칙들이 정의되어있다. 
    override func viewDidLoad() {
        super.viewDidLoad()
    }
  • 최신의 프로그래밍 패턴을 따른다.(Swift 공식문서에 따르면)

    • Variables are always initialized before use. (모든변수는 사용전에 초기화 되어야 한다.)
var text_var: String // (0)
var text_var: String = "변수 초기화를 함께 해주지 않아도 됩니다." // (0)
let text_let: String // (x)
let text_let: String = "상수는 항상 초기화를 해주어야 합니다." // (0)
  • Array indices are checked for out-of-bounds errors. (인덱스 범위를 벗어난 오류를 체크해줌)
  • Integers are checked for overflow. (정수값이 초과되는지 체크해준다. )
  • Optionals ensure that nil values are handled explicitly. (Optional이라는 개념을 통해 '없다'를 nil로 표현할 수 있다.)
  • Memory is managed automatically. (컴파일러가 알아서 메모리 관리를 해준다.)
  • Error handling allows controlled recovery from unexpected failures. (예상치 못한 에러들을 오류처리로 제어, 복구 할 수 있다.)

Swift의 문제점

  • Apple환경에서만 사용이 가능하다.

  • 한글자료 양의 부족하다.

    • 특히 UI 관련 자료를 찾을 때 한글로된 자료가 거의 없는것 같다.
  • Xcode를 활용하여 코딩 및 앱개발이 이루어진다.

    • 최근들어 많이 나아진 것이라고 해도 Xcode가 너무 무겁고 너무 버그가 많습니다...
  • 변화가 잦아 코드수정이 필요할 수 있다 (Swift 버전 업그레이드 시)

개인적인 생각

Java와 Python을 메인언어로 공부했던 저로써는 겪어보지 않은 Obj-C 시절의 이야기는 너무 옛날 이야기 같이 들리고 그래서인지 Obj-C에 비해서 편리하다는 말은 와닿지가 않았다.

맨처음 Swift를 접했을 때는 자바(프로젝트 구성과 함께 클래스 생성)와 파이썬(Swift 플레이그라운드)을 합쳐놓은 것 같다는 느낌을 크게 받았고, C, C#등 설치하는 것 부터 거부감이 드는 언어보다 접근성과 배우기가 편리했다.(실제로는 뭐부터 배워야할 지 모르겠어서 해맴)

Xcode는 너무 무거워서 대체제가 나왔으면 합니다...

출처

https://macclub.tistory.com/302

https://brunch.co.kr/@myoungjun/24

https://www.tiobe.com/tiobe-index/

https://docs.swift.org/swift-book/#

profile
zeStars 개발 블로그입니다

0개의 댓글