λ³Έλ¬Έ λ°”λ‘œκ°€κΈ°
3️⃣ Swift/Swift 정리

[Swift] μŠ€μœ„ν”„νŠΈμ˜ 언어적 νŠΉμ„±

by seolhee2750 2021. 6. 9.

λ‚˜λŠ” μŠ€μœ„ν”„νŠΈ μ–Έμ–΄μ˜ κ°œλ… 곡뢀 이전에, λƒ…λ‹€ 문제 풀이뢀터 μ‹œμž‘ν–ˆλ‹€.

문제λ₯Ό 풀어보며 ν•„μš”ν•œ ν•¨μˆ˜λ‚˜ 기본적인 κ°œλ…λ“€μ„ κ·Έλ•Œ κ·Έλ•Œ μ°Ύμ•„λ³΄λŠ” μ‹μœΌλ‘œ 곡뢀λ₯Ό ν–ˆλ‹€.

κ·Έλ ‡κ²Œ ν•˜λ‹ˆκΉŒ ν™•μ‹€νžˆ 진도도 λΉ λ₯΄κ³ , μ‹€μ œλ‘œ μ½”λ“œλ₯Ό μž‘μ„±ν•˜λ©° κ³΅λΆ€ν•˜λ‹€λ³΄λ‹ˆ 금방 μ΅ν˜€μ§„λ‹€λŠ” μž₯점이 μžˆλ‹€.

ν•˜μ§€λ§Œ 점점 μ–΄λ €μš΄ 문제λ₯Ό μ ‘ν•˜κ³ , λ‹€μ–‘ν•œ κ°œλ…λ“€μ΄ λ“±μž₯ν•˜λ‹€λ³΄λ‹ˆ μ •ν™•ν•œ κ°œλ… 정리 없이 ν•„μš”ν•  λ•Œλ§ˆλ‹€ λ°°μš΄λ‹€λŠ” κ²ƒμ—λŠ” ν•œκ³„κ°€ λŠκ»΄μ‘Œλ‹€.

그리고 μŠ€μœ„ν”„νŠΈλ₯Ό κ³΅λΆ€ν•˜κΈ° 이전에, λ‚΄κ°€ Cλ‚˜ C#, 그리고 Java λ“±λ“± μ–Έμ–΄λ₯Ό λ°°μšΈλ•Œλ„ 항상 μ§„λ„λΉΌλŠ” 것에 κΈ‰κΈ‰ν•˜λ‹€λ³΄λ‹ˆ

λ‚˜μ€‘μ— 정말 μ–΄λ €μš΄ κ°œλ…λ“€μ„ μ ‘ν•΄μ•Ό λ λ•Œλ©΄, μ •λ¦¬μ•ˆλœ λ‚΄μš©λ“€μ΄ λ¨Έλ¦Ώμ†μ—μ„œ 정립이 λ˜μ§€ μ•Šμ•„ μ’Œμ ˆν–ˆλ˜ κ²½ν—˜μ΄ λ§Žλ‹€,,

λ”°λΌμ„œ μ˜€λŠ˜μ€ 정말 기초둜 λŒμ•„κ°€μ„œ, μŠ€μœ„ν”„νŠΈ μ–Έμ–΄μ˜ νŠΉμ„±μ— λŒ€ν•΄μ„œ μ•Œμ•„λ³΄λŠ” μ‹œκ°„μ„ 가져보겠닀.

 

πŸ“Ž Swift μ–Έμ–΄

μŠ€μœ„ν”„νŠΈ μ–Έμ–΄λŠ” μ• ν”Œμ΄ iOS, whatchOS, macOS λ“± μžμ‚¬ μ œν’ˆ κ°œλ°œμ— ν™œμš©ν•˜κ³ μž κ°œλ°œν•œ 언어이닀.

(μ§€κΈˆμ€ μ˜€ν”ˆμ†ŒμŠ€!)

μŠ€μœ„ν”„νŠΈ 둜고

ARC(Auto Reference Counting, μžλ™ μ°Έμ‘° 횟수 계산)을 μ§€μ›ν•˜μ—¬ μ‰½κ²Œ λ©”λͺ¨λ¦¬λ₯Ό 관리해주고, 슀크립트 언어와 같이 λ°”λ‘œ μ½”λ“œμ˜ κ²°κ³Όλ₯Ό ν™•μΈν• μˆ˜λ„ μžˆλŠ”! νŽΈλ¦¬ν•¨μ„ κ°–μΆ˜ 컴파일러 언어이닀. 문법도 슀크립트 언어와 λΉ„μŠ·ν•˜κ²Œ 보여진닀.


πŸ“Ž Swift의 언어적 νŠΉμ„± (Feat. μ• ν”Œ)

μ• ν”Œμ΄ λ°œν‘œν•œ μŠ€μœ„ν”„νŠΈμ˜ 언어적 νŠΉμ„±μ€ 총 μ„Έ κ°€μ§€λ‘œ, Safe(μ•ˆμ „μ„±), Fast(신속성), Expressive(더 λ‚˜μ€ ν‘œν˜„μ„±)이닀.

 

 βœοΈ Safe(μ•ˆμ „μ„±) 

κ³΅λΆ€ν•˜λ©΄μ„œ 제일 많이 μ ‘ν•œ νŠΉμ„±μ΄ λ°”λ‘œ 이 μ•ˆμ „μ„±μ— λŒ€ν•œ λ‚΄μš©μΈ 것 κ°™λ‹€.

μŠ€μœ„ν”„νŠΈλŠ” μ•ˆμ „ν•œ ν”„λ‘œκ·Έλž˜λ°μ„ 지ν–₯ν•œλ‹€. κ·Έ 정도가 쑰금 λΉ‘λΉ‘ν•˜κ²Œ 느껴질 정도일 μˆ˜λ„ μžˆμ§€λ§Œ,, μ‹€μˆ˜λ₯Ό μ€„μ΄λŠ” 데에 큰 κ³΅ν—Œμ„ ν•œλ‹€.!

이 μ•ˆμ „μ„±μ„ λ³΄μ—¬μ£ΌλŠ” λŒ€ν‘œμ μΈ μ˜ˆμ‹œκ°€ μ˜΅μ…”λ„μ΄λ‹€. μ˜΅μ…”λ„μ€ λ‚΄κ°€ 첫 번째 κ²Œμ‹œκΈ€λ‘œ λ§Œλ“€μ—ˆλ˜ λ‚΄μš©μΈλ°,

μŠ€μœ„ν”„νŠΈμ˜ μ•ˆμ „μ„±μ„ λ¬Έλ²•μœΌλ‘œ λ‹΄λ³΄ν•˜λŠ” κΈ°λŠ₯으둜, λ³€μˆ˜ λ˜λŠ” μƒμˆ˜μ˜ 값이 nilμΌμˆ˜λ„ μžˆλ‹€λŠ” 것을 μ˜λ―Έν•œλ‹€.

그리고 κ·Έ 외에도 guard ꡬ문, 였λ₯˜μ²˜λ¦¬, κ°•λ ₯ν•œ νƒ€μž… ν†΅μ œ 등을 톡해 μŠ€μœ„ν”„νŠΈλŠ” μ•ˆμ „ν•œ ν”„λ‘œκ·Έλž˜λ°μ„ κ΅¬ν˜„ν•œλ‹€.

 

 βœοΈ Fast(신속성) 

μŠ€μœ„ν”„νŠΈλŠ” Cμ–Έμ–΄λ₯Ό 기반으둜 ν•œ C++, Objective-C와 같은 ν”„λ‘œκ·Έλž˜λ° μ–Έμ–΄λ₯Ό λŒ€μ²΄ν•˜λ €λŠ” λͺ©μ μ„ 가진닀. ν˜„μž¬ μ‹€ν–‰ μ†λ„μ˜ μ΅œμ ν™”, 그리고 더 λΉ λ₯Έ 컴파일러 μ„±λŠ₯을 κ΅¬ν˜„ν•΄ λ‚˜κ°€κ³  μžˆλ‹€.

 

 βœοΈ Expressive(더 λ‚˜μ€ ν‘œν˜„μ„±) 

λ‹€μ–‘ν•œ ν”„λ‘œκ·Έλž˜λ° 언어듀은 λͺ¨λ‘ 각각의 μž₯단점을 κ°€μ§€μ§€λ§Œ, μŠ€μœ„ν”„νŠΈλŠ” μ΄λŸ¬ν•œ 점듀을 λͺ¨λ‘ μ°Έκ³ ν•˜μ—¬ μ’€ 더 νŽΈν•˜κ³  보기 쒋은 문법을 κ΅¬ν˜„ν•˜λ €κ³  λ³΄μ™„ν•œλ‹€. 덕뢄에 ν˜„μž¬ μŠ€μœ„ν”„νŠΈλŠ” ν˜„λŒ€μ μ΄κ³  κΉ”λ”ν•œ 문법 ꡬ사λ₯Ό ν•  수 있게 λ˜μ—ˆμœΌλ©°, 계속 λ°œμ „ν•˜κ³  μžˆλ‹€.


πŸ“Ž μŠ€μœ„ν”„νŠΈμ˜ ν”„λ‘œκ·Έλž˜λ° νŒ¨λŸ¬λ‹€μž„

μŠ€μœ„ν”„νŠΈλŠ” 닀쀑 νŒ¨λŸ¬λ‹€μž„ ν”„λ‘œκ·Έλž˜λ° 언어이닀. 크게 λͺ…λ Ήν˜• ν”„λ‘œκ·Έλž˜λ° νŒ¨λŸ¬λ‹€μž„, 객체지ν–₯ ν”„λ‘œκ·Έλž˜λ° νŒ¨λŸ¬λ‹€μž„, ν•¨μˆ˜ν˜• ν”„λ‘œκ·Έλž˜λ° νŒ¨λŸ¬λ‹€μž„, ν”„λ‘œν† μ½œ 지ν–₯ ν”„λ‘œκ·Έλž˜λ° νŒ¨λŸ¬λ‹€μž„μ„ μ°¨μš©ν–ˆλ‹€.

이 λ§Žμ€ νŒ¨λŸ¬λ‹€μž„ 쀑, μš°λ¦¬κ°€ μ£Όλͺ©ν•΄μ•Ό ν•  것은 λ°”λ‘œ ν•¨μˆ˜ν˜•κ³Ό ν”„λ‘œν† μ½œ 지ν–₯ ν”„λ‘œκ·Έλž˜λ° νŒ¨λŸ¬λ‹€μž„μ΄λ‹€.

(이 두 νŒ¨λŸ¬λ‹€μž„μ΄ λ°”λ‘œ μŠ€μœ„ν”„νŠΈκ°€ κ°€μž₯ κ°•μ‘°ν•˜λŠ” νŒ¨λŸ¬λ‹€μž„μ΄λ‹€.)

 

 βœοΈ ν•¨μˆ˜ν˜• ν”„λ‘œκ·Έλž˜λ° νŒ¨λŸ¬λ‹€μž„ 

졜근 λ– μ˜€λ₯΄λŠ” νŒ¨λŸ¬λ‹€μž„μ˜ λŒ€μ„Έλ‘œ, μ• ν”Œμ—μ„œ νŠΉνžˆλ‚˜ κ°•μ‘°ν•˜λŠ” νŒ¨λŸ¬λ‹€μž„μ΄λ‹€.

λŒ€κ·œλͺ¨ λ³‘λ ¬μ²˜λ¦¬λ₯Ό μ‰½κ²Œ ν•œλ‹€λŠ” νŠΉμ§•μ΄ 있고, μƒνƒœλ³€ν™”λ³΄λ‹€λŠ” ν•¨μˆ˜ 자체의 μ‘μš©μ„ μ€‘μš”ν•˜κ²Œ μ—¬κΈ΄λ‹€.

그리고 이 ν•¨μˆ˜ν˜• ν”„λ‘œκ·Έλž˜λ° νŒ¨λŸ¬λ‹€μž„μ˜ κ°€μž₯ 큰 νŠΉμ§•μ€ ν•¨μˆ˜λ₯Ό 일급 객체(First-class Citizen)으둜 λ‹€λ£¬λ‹€λŠ” 것이닀.

(ν•¨μˆ˜λ₯Ό 호좜, 전달, λ°˜ν™˜ν•˜λŠ” λ™μž‘λ§ŒμœΌλ‘œλ„ ν”„λ‘œκ·Έλž¨ κ΅¬ν˜„μ΄ κ°€λŠ₯ν•˜λ‹€λŠ” 의미!)

 

μ΄λ ‡κ²Œ ν•¨μˆ˜ν˜• ν”„λ‘œκ·Έλž˜λ° νŒ¨λŸ¬λ‹€μž„μœΌλ‘œ ν”„λ‘œκ·Έλž¨μ„ μž‘μ„±ν•˜λ©΄ λ³‘λ ¬μ²˜λ¦¬λ₯Ό μ‰½κ²Œ ν•˜κ³ ,

또 μƒνƒœ 변화에 λ”°λ₯Έ λΆ€μž‘μš©μ—μ„œ μžμœ λ‘œμ›Œμ§„λ‹€λŠ” νŠΉμ§•μ΄ 있기 λ•Œλ¬Έμ— μˆœμˆ˜ν•˜κ²Œ κΈ°λŠ₯의 κ΅¬ν˜„μ— μ΄ˆμ μ„ 맞좰 섀계가 κ°€λŠ₯해진닀.

 

 βœοΈ ν”„λ‘œν† μ½œ 지ν–₯ ν”„λ‘œκ·Έλž˜λ° 기법 

15년도 2.0 버전이 λ°œν‘œλ˜λ©΄μ„œ ν”„λ‘œν† μ½œ μ΅μŠ€ν…μ…˜μ΄ μΆ”κ°€λ˜λ©΄μ„œ, ν”„λ‘œν† μ½œ 지ν–₯ ν”„λ‘œκ·Έλž˜λ°μ΄ κ°€λŠ₯ν•΄μ‘Œλ‹€.

ν”„λ‘œν† μ½œ 지ν–₯ ν”„λ‘œκ·Έλž˜λ°μ΄ κ°€λŠ₯ν•΄μ‘Œλ‹€λŠ” μ˜λ―ΈλŠ”,

μ°Έμ‘° νƒ€μž…μ˜ μ°Έμ‘° λ¬Έμ œμ—μ„œ μ’€ 더 μžμœ λ‘œμ›Œμ§ˆ 수 있고, 닀쀑상속이 λΆˆκ°€λŠ₯ν•œ ν•œκ³„λ₯Ό λ›°μ–΄λ„˜μ„ 수 있으며, 더 λ‚˜μ€ 좔상화 λ©”μ»€λ‹ˆμ¦˜μ˜ κ΅¬ν˜„μ΄ κ°€λŠ₯ν•΄μ§„λ‹€λŠ” 것이닀.

ν™•μ‹€νžˆ ν”„λ‘œν† μ½œ μ΅μŠ€ν…μ…˜μ˜ κΈ°λŠ₯은 μŠ€μœ„ν”„νŠΈμ˜ ν”„λ‘œν† μ½œ 지ν–₯ ν”„λ‘œκ·Έλž˜λ° κΈ°λ²•μ˜ 완성을 도왔고, κ°•λ ₯ν•˜κ²Œ ν•΄μ£Όμ—ˆλ‹€.


🌟 정리 🌟

μŠ€μœ„ν”„νŠΈλŠ” μ•ˆμ „ν•œ ν”„λ‘œκ·Έλž˜λ°μ„ 지ν–₯ν•˜λŠ” μ–Έμ–΄λ‘œ,

ν•¨μˆ˜ν˜• ν”„λ‘œκ·Έλž˜λ° 언어이며 ν”„λ‘œν† μ½œ 지ν–₯ 언어이닀.

 


μ°Έκ³ 

  • πŸ“– μŠ€μœ„ν”„νŠΈ ν”„λ‘œκ·Έλž˜λ°

λŒ“κΈ€