Swift01. Swift 시작하기

January 16, 2021

본 글은 raywenderlich.comSwift Apprentice도서를 요약 및 정리한 것이다.


1. Swift 기본

컴퓨터 동작 방식

  • 컴퓨터는 덧셈, 뺄샘과 같은 계산을 하는 기계이다.
  • 어떤 계산을 처리할 것인지는 사람이 작성한 프로그램에 의해 결정된다.
  • 계산은 ‘CPU(Central Processing Unit)‘라는 장치에서 이루어 진다.
  • CPU는 계산에 필요한 숫자, 계산식 등(이하 데이터)을 ‘RAM(Random Access Memory)‘이라 불리는 컴퓨터의 메인 메모리에서 불러와 ‘Register(이하 레지스터)‘라는 CPU의 작은 저장 장치에 저장한다.
  • 또 반대로, 레지스터에 담기에 큰 데이터를 상대적으로 저장 용량이 큰 ‘RAM’에 저장한다.
  • CPU가 수행하는 덧셈, 뺄셈, RAM에서 데이터 불러오기, RAM에 데이터 저장하기 등은 하나의 작업 단위로 처리되며, 예컨대 Window, Mac과 같은 복잡한 프로그램도 수 많은 작업의 구성으로 이루어진 것이다.
  • 프로그램을 제작하기 위해서는 수 많은 작업이 필요하며 이를 단순하고 명확하게 구성해야 효율성을 높일 수 있다.
  • 개발자는 프로그래밍 언어로 코드를 작성하여 프로그램을 제작한다. Swift는 수 많은 프로그래밍 언어 중 하나이다.
  • 개발자가 작성한 코드는 ‘Compiler(이하 컴파일러)‘라는 일종의 번역기를 통해 CPU가 해석할 수 있는 명령문으로 변환된다. 프로그램을 실행할 경우 CPU는 변환된 지시에 따라 작업을 수행한다.

숫자

  • 컴퓨터의 언어는 숫자이다. 어떠한 정보를 코드에 입력하더라도 컴파일러를 통해 정보는 숫자로 변환된다.
  • 예컨대, 이미지는 ‘pixel(이하 픽셀)‘이라 부르는 작은 네모난 점 단위로 쪼개어져 있으며, 각 픽셀마다 색상 정보를 가지고 있다(컴퓨터 모니터를 가까이서 유심히 보면 육안으로 확인할 수 있다).
  • 픽셀에 저장된 색상 정보는 다시 3가지 숫자로 구성되어 있으며, 각 숫자는 빨강, 초록, 파랑 색상의 농도 수치이다.
  • 즉, 이미지는 수 많은 색상 정보를 의미하는 숫자의 나열로 구성된 데이터이다.

2진수

  • 인간 세상의 숫자는 0부터 9로 이루어진 10진수에 기반하고 있지만, 컴퓨터의 숫자는 0과 1로 이루어진 2진수에 기반한다.
  • 그 이유는 물리적인 이유가 큰데, 전기적 신호로 전달하기에 가장 편리한 방식이기 때문이다. 전기 신호가 있거나(1), 없거나(0).
  • 2진수는 Base 2, Binary라고 부르기도 한다(2진수에 대한 자세한 설명은 본문을 참조).
  • 2진수 숫자 하나가 저장할 수 있는 데이터 양을 ‘Bit(Binary Digit)‘라고 부르며, 8개의 bit를 모아 ‘Byte’라고 부른다(8 Bits = 1 Byte).
  • CPU의 레지스터는 제한된 용량을 가지고 있으며, 이는 처리할 수 있는 숫자의 길이의 제한을 의미한다.
  • 일반적으로 레지스터는 32 bits 또는 64 bits 크기의 용량 제한이 있으며, 32-bit CPU, 64-bit CPU는 해당 크기의 레지스터를 갖는 CPU를 의미한다.
  • 32 bit CPU가 다룰 수 있는 최대 숫자는 11111111111111111111111111111111이며, 이를 초과하는 숫자에 대한 연산은 해당 수를 나누어 처리한다.

16진수

  • 2진수는 작성하는데 꽤나 많은 시간이 든다. 이 때문에 컴퓨터 프로그래밍에서는 종종 16진수를 채택하기도 한다. 이를 Base 16 또는 Hex(Hexadecimal)라고 부른다.
  • 16진수는 0 ~ 9까지 10진수와 동일하게 숫자를 사용하고 10부터 15까지는 순서대로 알파벳을 사용한다.

    • 10 = a
    • 11 = b
    • 12 = c
    • 13 = d
    • 14 = e
    • 15 = f
  • 예컨대, 16진수 c0de는 10진수 49364이다.
    (12 * 4096) + (0 * 256) + (13 * 16) + (4 * 1) = 49364
  • 16진수는 4개의 2진수로 맞아 떨어진다. 예컨대, 2진수 1111은 16진수 f와 같다. 이를 이용하면 각 16진수 자릿수를 나타내는 2진수를 연결하여 2진수 또는 10진수 보다 짧은 16진수 숫자를 만들 수 있다.
  • 32-bit CPU가 처리할 수 있는 가장 큰 수를 표현한다고 할 때, 이를 10진수로 표현할 경우 4,294,967,295 이지만, 16진수로 표현할 경우 ffffffff로 명확하고 단순하게 표현할 수 있다.

코드 동작 방식

  • 컴퓨터 자체로는 아주 적은 수의 작업만 할 수 있다.
  • 개발자는 코드를 통해 이 적은 수의 작업들을 통합하고, 일련의 단계로 조합하여 프로그램을 만들어낸다.
  • 코딩은 컴퓨터에게 어떤 재료(데이터)를 조합할지, 사용법을 단계별로 설명하는 요리 레시피와 같다. 예는 아래와 같다.

    1 단계. 사진 파일을 하드디스크에서 불러온다.
    2 단계. 사진을 가로 300, 세로 400 크기로 변경한다.
    3 단계. 사진에 흑백 필터를 적용한다.
    4 단계. 사진을 인쇄한다.
  • Swift 코드는 컴퓨터에게 한 번에 한 단계씩 작업을 지시한다는 점에서 위 예와 같다.
  • 프로그래밍 언어는 이와 같은 단계를 표현하기 위해 만들어진 약속된 표기 방법이라고 할 수 있다.
  • 컴파일러는 개발자가 작성한 코드를 해석하여 CPU가 실행할 수 있는 명령어로 변환한다.
  • 세상에는 다양한 프로그래밍 언어가 있으며 각기 다른 장단점을 지닌다. 이 중 Swift는 가장 현대적인 언어 중 하나이다.
  • 다른 언어들의 장점을 통합한 동시에 약점들을 보완할 수 있으며, 지금도 계속 발전하고 있다.

Jinsol Kim

Front-end Developer. Busan, South Korea.

#React #ReactNative #Firebase and #Swift#ing

© 2021, Jinsol Kim