Swift

[ Swift ] Swift๋ž€?

Forest Yun 2023. 10. 8. 22:04
728x90

 
 
 

Swift

 

Swift is a general-purpose programming language that's approachable for newcomers and powerful for experts.
It is fastmodernsafe, and a joy to write.

์œ„ ๊ธ€์€ Swift.org์—์„œ ๊ฐ€์žฅ ๋จผ์ € ๋ณผ ์ˆ˜ ์žˆ๋Š” Swift ์†Œ๊ฐœ๊ธ€์ด๋‹ค. Swift๋Š” ์ ‘๊ทผ์„ฑ์ด ์ข‹๊ณ  ๊ฐ•๋ ฅํ•œ ๋ฒ”์šฉ ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์–ธ์–ด์ด๋ฉฐ, ๋น ๋ฅด๋ฉฐ ํ˜„๋Œ€์ ์ด๊ณ  ์•ˆ์ „ํ•˜์—ฌ ์ฆ๊ฒ๊ฒŒ ํ”„๋กœ๊ทธ๋ž˜๋ฐํ•  ์ˆ˜ ์žˆ๋‹ค๊ณ  ํ•œ๋‹ค.
 

interactive programming language

Swift์—์„œ ๊ฐ•์กฐ๋˜๋Š” ๋‹ค๋ฅธ ํ•˜๋‚˜๋Š” ์ƒํ˜ธ์ž‘์šฉ์ด๋‹ค. ์ปดํŒŒ์ผ ์–ธ์–ด์ž„์—๋„, ์ปดํŒŒ์ผ๋Ÿฌ๊ฐ€ ์ตœ์ ํ™”๋˜์–ด์žˆ์–ด ๋งˆ์น˜ ์Šคํฌ๋ฆฝํŠธ ์–ธ์–ด์ฒ˜๋Ÿผ ์‹ค์‹œ๊ฐ„์œผ๋กœ ์ƒํ˜ธ์ž‘์šฉํ•˜๋ฉฐ ํ”„๋กœ๊ทธ๋ž˜๋ฐํ•  ์ˆ˜ ์žˆ๋‹ค.

์ปดํŒŒ์ผ ์–ธ์–ด์ปดํŒŒ์ผ์„ ํ†ตํ•ด ์ฝ”๋“œ๋ฅผ ๊ธฐ๊ณ„์–ด๋กœ ๋ณ€ํ™˜ํ•˜์—ฌ ํŒŒ์ผ์„ ์ƒ์„ฑํ•˜๊ณ  ์ด ํŒŒ์ผ์„ ์‹คํ–‰์‹œํ‚จ๋‹ค. 
์‹คํ–‰ ์†๋„๊ฐ€ ๋น ๋ฅด๊ณ , ์˜ค๋ฅ˜ ๋ฐœ์ƒ ์‹œ ์ปดํŒŒ์ผ ์—๋Ÿฌ๋ฅผ ๊ฑฐ์น˜๊ธฐ ๋•Œ๋ฌธ์— ์˜ค๋ฅ˜ ํ™•์ธ์ด ์‰ฝ๋‹ค.
(์˜ˆ: C, C++)
์Šคํฌ๋ฆฝํŠธ ์–ธ์–ด:๋ณ„๋„์˜ ํŒŒ์ผ ์ƒ์„ฑ์—†์ด ์ฝ”๋“œ ์ž‘์„ฑ ์‹œ ๋ฐ”๋กœ ๊ธฐ๊ณ„์–ด๋กœ ๋ฒˆ์—ญ๋˜์–ด ์‹คํ–‰ํ•œ๋‹ค.
(์˜ˆ: Python, Javascript)

 
์•ˆ์ „ํ•˜๊ณ  ๋น ๋ฅด๋ฉฐ, ํ’๋ถ€ํ•˜๊ณ  ๊ฐ„๊ฒฐํ•œ ์ฝ”๋“œ ํ‘œํ˜„์„ ๊ฐ€์ง„ Swift๋Š” ๊ฒฐ๊ณผ์ ์œผ๋กœ ์ž‘์„ฑํ•˜๊ธฐ ์‰ฌ์šธ ๋ฟ๋งŒ ์•„๋‹ˆ๋ผ ์ฝ๊ณ  ์œ ์ง€ํ•˜๊ธฐ๋„ ์‰ฝ๋‹ค.
๊ทธ๋ž˜์„œ Apple์€ Swift๋ฅผ ๋‹ค์Œ๊ณผ ๊ฐ™์ด ์†Œ๊ฐœํ•œ๋‹ค.

The powerful programming language thatโ€™s also easy to learn.
์†์‰ฝ๊ฒŒ ํ•™์Šตํ•  ์ˆ˜ ์žˆ๋Š” ๊ฐ•๋ ฅํ•œ ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์–ธ์–ด

 
 
 

General-Purpose Programming Language

๋ชจ๋ฐ”์ผ, ๋ฐ์Šคํฌํƒ‘ ์•ฑ, ํด๋ผ์šฐ๋“œ ์„œ๋น„์Šค, ์„œ๋ฒ„ ๋“ฑ ๋ชจ๋“  ์‹œ์Šคํ…œ ํ”„๋กœ๊ทธ๋ž˜๋ฐ์— ์ ํ•ฉํ•˜๋‹ค. ๋˜ํ•œ iOS, macOS, watchOS, visionOS ๋“ฑ ๋ชจ๋“  Apple ํ”Œ๋žซํผ์„ ์ง€์›ํ•œ๋‹ค.
 
 
 

Modern

Swift๋Š” ๊ฐ„๊ฒฐํ•˜๋ฉด์„œ๋„ ํ‘œํ˜„๋ ฅ์ด ํ’๋ถ€ํ•œ ๊ตฌ๋ฌธ๊ณผ ํ˜„๋Œ€์ ์ธ ๊ธฐ๋Šฅ์œผ๋กœ ์‚ฌ์šฉํ•˜๊ธฐ ๊ฐ„ํŽธํ•˜๋‹ค.

  • ์„ธ๋ฏธ์ฝœ๋ก  ์ƒ๋žต, ํƒ€์ž… ์ถ”๋ก  ๋“ฑ์„ ์ง€์›ํ•˜์—ฌ ๊ฐ„ํŽธํ•˜๊ณ  ์‹ค์ˆ˜์—†๋Š” ๊ฐœ๋ฐœ์„ ๋•๋Š”๋‹ค.
  • ์ž๋™์œผ๋กœ ์ฐธ์กฐ๋ฅผ ๊ด€๋ฆฌํ•˜๋Š” ARC(Automatic Reference Counting)์„ ํ†ตํ•ด ๊ฐ€๋น„์ง€ ์ปฌ๋ ‰์…˜์—์„œ ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ๋Š” ์˜ค๋ฒ„ํ—ค๋“œ ์—†์ด ๋ฉ”๋ชจ๋ฆฌ๊ฐ€ ์ตœ์†Œํ•œ์˜ ํฌ๊ธฐ๋กœ ์œ ์ง€๋˜๋„๋ก ์—„๊ฒฉํ•˜๊ฒŒ ๊ด€๋ฆฌ๋œ๋‹ค.
  • String์€ ํ•œ๊ตญ์–ด๋ฅผ ํฌํ•จํ•œ ๋‹ค๊ตญ์–ด ๋ฐ ์ด๋ชจํ‹ฐ์ฝ˜ ์ง€์›์„ ์œ„ํ•ด ์œ ๋‹ˆ์ฝ”๋“œ ํ‘œ์ค€์„ ๋”ฐ๋ฅด๋ฉฐ ์„ฑ๋Šฅ ์ตœ์ ํ™”๋ฅผ ํ†ตํ•ด UTF-8 ๊ธฐ๋ฐ˜์˜ ์ธ์ฝ”๋”ฉ์„ ์‚ฌ์šฉํ•œ๋‹ค.
  • built-in๋œ ํ‚ค์›Œ๋“œ๋ฅผ ํ†ตํ•ด ๋™์‹œ์„ฑ ์ฝ”๋“œ๋ฅผ ์ž‘์„ฑํ•  ์ˆ˜ ์žˆ์–ด ๊ฐ€๋…์„ฑ์ด ๋†’๊ณ  ์˜ค๋ฅ˜ ๋ฐœ์ƒ ๊ฐ€๋Šฅ์„ฑ์ด ๋‚ฎ๋‹ค
  • ๊ตฌ์กฐ์ฒด๋ฅผ ํ†ตํ•ด ๊ฐ„๊ฒฐํ•œ ํ˜„๋Œ€์  ๊ตฌ๋ฌธ์œผ๋กœ ์ƒˆ๋กœ์šด ํƒ€์ž…์„ ์„ ์–ธํ•  ์ˆ˜ ์žˆ๋‹ค. ์ธ์Šคํ„ด์Šค ์†์„ฑ์— ๊ธฐ๋ณธ ๊ฐ’์„ ์ œ๊ณตํ•˜๊ณ  custom ์ด๋‹ˆ์…œ๋ผ์ด์ €๋ฅผ ์ •์˜ํ•  ์ˆ˜ ์žˆ๋‹ค.
  • extension์ด๋ผ๋Š” ํ‚ค์›Œ๋“œ๋กœ ํ™•์žฅ ํ”„๋กœ๊ทธ๋žจ์„ ์‚ฌ์šฉํ•˜์—ฌ ๊ธฐ์กด ํƒ€์ž…์— ๊ธฐ๋Šฅ์„ฑ์„ ๋”ํ•  ์ˆ˜ ์žˆ๋‹ค. (์˜ˆ: JSON ์ธ์ฝ”๋”ฉ โ€ข ๋””์ฝ”๋”ฉ)
  • ๊ฐ•๋ ฅํ•˜๊ณ  ์‚ฌ์šฉ์ด ๊ฐ„ํŽธํ•œ ์ œ๋„ค๋ฆญ
  • ํ”„๋กœํ† ์ฝœ ํ™•์žฅ ํ”„๋กœ๊ทธ๋žจ์œผ๋กœ ๋ณด๋‹ค ์‰ฌ์–ด์ง„ ์ œ๋„ค๋ฆญ ์ฝ”๋“œ ์ž‘์„ฑ
  • ์ผ๊ธ‰ํ•จ์ˆ˜(ํ•จ์ˆ˜๋ฅผ ํƒ€์ž…์œผ๋กœ ์‚ฌ์šฉ ๊ฐ€๋Šฅ) ๋ฐ ๊ฐ€๋ฒผ์šด ํด๋กœ์ € ๊ตฌ๋ฌธ
  • range ๋˜๋Š” collection์—์„œ์˜ ๋น ๋ฅด๊ณ  ๊ฐ„๊ฒฐํ•œ ๋ฐ˜๋ณต(iterate)
  • ํŠœํ”Œ ๋ฐ ๋ฉ€ํ‹ฐํ”Œ ๋ฐ˜ํ™˜ ๊ฐ’
  • ๋ฉ”์„œ๋“œ, ํ™•์žฅ ํ”„๋กœ๊ทธ๋žจ ๋ฐ ํ”„๋กœํ† ์ฝœ์„ ์ง€์›ํ•˜๋Š” ๊ตฌ์กฐ
  • ํŽ˜์ด๋กœ๋“œ(raw value)๋ฅผ ํฌํ•จํ•  ์ˆ˜ ์žˆ์œผ๋ฉฐ ํŒจํ„ด ์ผ์น˜๋ฅผ ์ง€์›ํ•˜๋Š” enum
  • ํ•จ์ˆ˜ํ˜• ํ”„๋กœ๊ทธ๋ž˜๋ฐ ํŒจํ„ด(์˜ˆ: map, filter ๋“ฑ)
  • try, catch, throw๋ฅผ ์‚ฌ์šฉํ•œ built-in ์˜ค๋ฅ˜ ์ฒ˜๋ฆฌ

 

Safe

swift๋Š” ์•ˆ์ „ ์ค‘์‹ฌ ์„ค๊ณ„๋กœ ๋˜์–ด ์žˆ๋‹ค. ์ •ํ™•ํžˆ ์ •์˜๋œ ๋™์ž‘๊ณผ ์‹คํ–‰ ์ „ ์ปดํŒŒ์ผ์„ ํ†ตํ•œ ์˜ค๋ฅ˜ ํŒŒ์•…์œผ๋กœ ์•ˆ์ •์„ฑ์„ ํ™•๋ณดํ•œ๋‹ค

  • ๋ณ€์ˆ˜๋Š” ์‚ฌ์šฉ ์ „์— ํ•ญ์ƒ ์ดˆ๊ธฐํ™”๋˜๊ณ , ๋ฐฐ์—ด ๋ฐ ์ •์ˆ˜์— ๋Œ€ํ•œ ์˜ค๋ฒ„ํ”Œ๋กœ์šฐ ๊ฒ€์‚ฌ๊ฐ€ ์ˆ˜ํ–‰๋œ๋‹ค.
  • ARC๋ฅผ ํ†ตํ•ด ๋ฉ”๋ชจ๋ฆฌ๋Š” ์ž๋™์œผ๋กœ ๊ด€๋ฆฌ๋œ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ๋ฉ”๋ชจ๋ฆฌ์— ๋Œ€ํ•œ ๋…์ ์ ์ธ ์ ‘๊ทผ์œผ๋กœ ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์‹ค์ˆ˜๊ฐ€ ๋ฐœ์ƒํ•˜์ง€ ์•Š๋„๋ก ๋ณดํ˜ธํ•œ๋‹ค.
  • ๋ณ€์ˆ˜ var, ์ƒ์ˆ˜ let๊ณผ ๊ฐ™์ด ์„ธ๊ธ€์ž์˜ ๊ฐ„๋‹จํ•œ ํ‚ค์›Œ๋“œ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๊ฐœ๋ฐœ์ž์˜ ์˜๋„๋ฅผ ์‰ฝ๊ฒŒ ์ •์˜ํ•  ์ˆ˜ ์žˆ๊ฒŒ ์ œ๊ณตํ•œ๋‹ค. ๊ฐ„๊ฒฐํ•˜์ง€๋งŒ ํ™•์‹คํ•œ ๊ตฌ๋ฌธ์€ ์‹ค์ˆ˜๋ฅผ ์ค„์ผ ์ˆ˜ ์žˆ๋‹ค.
  • ๋ฐฐ์—ด, ๋”•์…”๋„ˆ๋ฆฌ ๋“ฑ ๊ธฐ๋ณธ ํƒ€์ž…์€ ๊ฐ’ํƒ€์ž…์œผ๋กœ ๋˜์–ด์žˆ์–ด, ์‚ฌ๋ณธ์„ ๋งŒ๋“ค์—ˆ์–ด๋„ ๋‹ค๋ฅธ ๊ณณ์—์„œ ์›๋ณธ์„ ์ˆ˜์ •ํ•  ์ˆ˜ ์—†๋‹ค.
  • swift ๊ฐ์ฒด๋Š” ์ ˆ๋Œ€ nil์ด ๋  ์ˆ˜ ์—†๋‹ค. ์ปดํŒŒ์ผ๋Ÿฌ๋Š” ์ปดํŒŒ์ผ์‹œ, ์˜ค๋ฅ˜๊ฐ€ ์žˆ๋Š” nil ๊ฐ์ฒด๋ฅผ ๋งŒ๋“ค๊ฑฐ๋‚˜ ์‚ฌ์šฉํ•  ์ˆ˜ ์—†๋„๋ก ํ•œ๋‹ค. ์ด๋ฅผ ํ†ตํ•ด ๊น”๋”ํ•˜๊ณ  ์•ˆ์ „ํ•œ ์ฝ”๋“œ ์ž‘์„ฑ์„ ํ•  ์ˆ˜ ์žˆ์œผ๋ฉฐ ์•ฑ์—์„œ ๋Ÿฐํƒ€์ž„ ์ถฉ๋Œ์„ ๋ฐฉ์ง€ ํ•  ์ˆ˜ ์žˆ๋‹ค.
  • ๋กœ์ง ์ƒ nil์ด ์œ ํšจํ•˜๊ณ  ์ ์ ˆํ•œ ๊ฒฝ์šฐ, Swift์—์„œ๋Š” Optional์„ ์ œ๊ณตํ•ด ์‚ฌ์šฉํ† ๋ก ํ•œ๋‹ค.  ?  ๊ตฌ๋ฌธ์„ ํ†ตํ•ด ๊ฐœ๋ฐœ์ž๋Š” ์ปดํŒŒ์ผ๋Ÿฌ์—๊ฒŒ nil์„ ํฌํ•จํ•œ ๋™์ž‘์ด ์•ˆ์ „ํ•˜๊ฒŒ ์ฒ˜๋ฆฌ๋  ๊ฒƒ์ž„์„ ์•Œ๋ฆด ์ˆ˜ ์žˆ๋‹ค.
  • ์ด๋Ÿฌํ•œ ์˜ต์…”๋„์€ ์˜ต์…”๋„ ๋ฐ”์ธ๋”ฉ๊ณผ ์˜ต์…”๋„ ์ฒด์ด๋‹์„ ํ†ตํ•ด ์•ˆ์ „ํ•˜๊ณ  ํšจ์œจ์ ์œผ๋กœ ์ž‘์—…ํ•  ์ˆ˜ ์žˆ๋‹ค.

 

Fast

Swift๋Š” ์ตœ์ดˆ ๊ฐœ๋… ์„ค์ • ์‹œ์ ๋ถ€ํ„ฐ ๋น ๋ฅด๊ฒŒ ๋™์ž‘ํ•˜๋„๋ก ๋งŒ๋“ค์–ด์กŒ๋‹ค. Swift ์ฝ”๋“œ๋Š” ๊ณ ์„ฑ๋Šฅ LLVM ์ปดํŒŒ์ผ๋Ÿฌ ๊ธฐ์ˆ ์„ ์‚ฌ์šฉํ•˜์—ฌ ๋ชจ๋˜ ํ•˜๋“œ์›จ์–ด๋ฅผ ์ตœ๋Œ€ํ•œ ํ™œ์šฉํ•  ์ˆ˜ ์žˆ๋„๋ก ์ตœ์ ํ™”๋œ ๊ธฐ๊ณ„์–ด ์ฝ”๋“œ๋กœ ๋ณ€ํ™˜๋œ๋‹ค. ๋˜ํ•œ ๊ตฌ๋ฌธ ๋ฐ ํ‘œ์ค€ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋Š” ๋ชจ๋ฐ”์ผ์—์„œ ์„œ๋ฒ„๊นŒ์ง€ ์‚ฌ์šฉ์ด ์‰ฝ๊ณ  ์ตœ๊ณ ์˜ ์„ฑ๋Šฅ์ด ๋ฐœํœ˜๋˜๋„๋ก ๋งŒ๋“ค์–ด์กŒ๋‹ค.
C, C++, Object-C์˜ ํ›„์†์–ธ์–ด๋กœ, ํƒ€์ž…, ํ๋ฆ„์ œ์–ด, ์—ฐ์‚ฐ์ž์™€ ๊ฐ™์€ ๊ฐ€์žฅ ๊ธฐ๋ณธ ๊ธฐ๋Šฅ๋ถ€ํ„ฐ ํด๋ž˜์Šค, ํ”„๋กœํ† ์ฝœ, ์ œ๋„ค๋ฆญ๊ณผ ๊ฐ™์€ ๊ฐ์ฒด ์ง€ํ–ฅ ๊ธฐ๋Šฅ์„ ์ œ๊ณตํ•˜์—ฌ Cocoa ๋ฐ Cocoa Touch ๊ฐœ๋ฐœ์ž์—๊ฒŒ ํ•„์š”ํ•œ ์„ฑ๋Šฅ๊ณผ ํŒŒ์›Œ๋ฅผ ์ œ๊ณตํ•œ๋‹ค.
๋ฐฐ์›€์— ์˜ค๋žœ ์‹œ๊ฐ„์„ ์‚ฌ์šฉํ•˜์ง€ ์•Š์•„๋„ c์–ธ์–ด ๊ธฐ๋ฐ˜ ์–ธ์–ด์™€ ๋™๋“ฑํ•œ ์˜ˆ์ธก๊ฐ€๋Šฅํ•˜๋ฉฐ ์ผ๊ด€์„ฑ์žˆ๋Š” ์ˆ˜ํ–‰์„ ํ•œ๋‹ค
 
 

Approachable

swift๋Š” ์ ‘๊ทผ์„ฑ์ด ์ข‹๊ณ  ๊ฐ•๋ ฅํ•˜๋‹ค. ์•ฑ์˜ ๊ทœ๋ชจ์— ์ƒ๊ด€์—†์ด ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์œผ๋ฉฐ ํ™•์žฅ์„ฑ์ด ์žˆ๋‹ค.
์ฒซ ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์–ธ์–ด๋กœ ๋ฐฐ์šธ ์ˆ˜ ์žˆ๊ฒŒ ๊ฐœ๋ฐœ๋˜์—ˆ์œผ๋ฉฐ ์˜คํ”ˆ์†Œ์Šค๋กœ ์ œ๊ณต๋˜์–ด ๋ชจ๋“  ์‚ฌ๋žŒ๋“ค์ด ์ด์šฉํ•˜๊ณ  ๊ฐœ๋ฐœ์— ์ฐธ์—ฌํ•  ์ˆ˜ ์žˆ๋‹ค.
 
 
 
 

Swift.org
Swift.org About
Apple Swfit
About Swift
728x90

'Swift' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€

[ Swift ] zip(_:_:)  (1) 2023.10.08
[ Swift ] isCase | isLowercase | isUppercase  (0) 2023.10.04
[ Swift ] print(_:separator:terminator:)  (0) 2023.10.04
[ Swift ] ํ”„๋กœํ† ์ฝœ ์ง€ํ–ฅ ํ”„๋กœ๊ทธ๋ž˜๋ฐ  (0) 2023.09.24
[ Swift ] Serialization์ด๋ž€?  (0) 2023.01.18