SLAM Engineer

🌈 2023λ…„ μƒλ°˜κΈ° ν”„λ‘œκ·Έλž˜λ° μ±… μΆ”μ²œ 3ꢌ


λͺ‡ 달 λ’€μ˜ λ‚˜λ₯Ό μœ„ν•œ μ½”λ“œλ₯Ό μž‘μ„±ν•˜μž

  1. 쏙쏙 λ“€μ–΄μ˜€λŠ” ν•¨μˆ˜ν˜• μ½”λ”© (Grokking Simplicity: Taming complex software with functional thinking)
  2. 파이브 라인슀 였브 μ½”λ“œ (Five Lines of Code: How and when to refactor)
  3. μ „λ¬Έκ°€λ₯Ό μœ„ν•œ C++ 5판 (Professional C++, 5th Edition)

κ°œμš”

  • νšŒμ‚¬μ—μ„œ ν•œλ‹¬μ— 30λ§Œμ›μ”© κ°œμΈμ—…λ¬΄μ§€μ›λΉ„λ₯Ό μ£ΌλŠ”λ° 덕뢄에 쒋은 책듀을 잘 읽고 μžˆλ‹€.
  • 2023λ…„ μƒλ°˜κΈ° 정말 감λͺ…κΉŠκ²Œ 읽은 μ±… 3κΆŒμ„ 정리해본닀.
  • λͺ©ν‘œλŠ” 더 λ‚˜μ€ μ½”λ“œλ₯Ό μž‘μ„±ν•˜λŠ” 것.

더 λ‚˜μ€ μ½”λ“œλž€?

  • λ‹€μ–‘ν•œ 관점이 μžˆκ² μ§€λ§Œ, 산업계에 μžˆλŠ” μ‚¬λžŒμœΌλ‘œμ¨, 무엇이든 λˆμ„ μ•„κ»΄μ£ΌλŠ” μ½”λ“œκ°€ 쒋은 μ½”λ“œλΌλŠ” 생각이 λ“ λ‹€.
    • κ°œλ°œνšŒμ‚¬μ— μžˆμ–΄ λˆμ΄λž€, κ²°κ΅­ 개발자의 인건비가 λŒ€λΆ€λΆ„μΌ 것이닀. 즉, λˆμ„ 아끼기 μœ„ν•΄μ„œλŠ” 개발자의 인건비λ₯Ό μ•„κ»΄μ•Ό ν•œλ‹€. μ—¬κΈ°μ„œ 인건비λ₯Ό μ•„λ‚€λ‹€λŠ” 말은, λˆμ„ 쑰금만 λ“€μΈλ‹€λŠ” λœ»λ³΄λ‹€λŠ”, 높은 월급을 λ°›μ•„κ°€λŠ” 개발자의 생산성을 λ†’μΈλ‹€λŠ” 츑면이닀.
    • κ°œλ°œμ€ μ½”λ“œλ₯Ό μž‘μ„±ν•˜λŠ” μ‹œκ°„κ³Ό μ½”λ“œλ₯Ό μ½λŠ” μ‹œκ°„μœΌλ‘œ κ΅¬μ„±λœλ‹€. 그리고 ν†΅μƒμ μœΌλ‘œ ν›„μžκ°€ 더 λ§Žμ€ λΉ„μœ¨μ΄λΌκ³  μ•Œλ €μ Έμžˆλ‹€.
    • 즉, κ°œλ°œμžκ°€ μ½”λ“œλ₯Ό μ½λŠ” 데 λ“€μ–΄κ°€λŠ” μ‹œκ°„μ„ μ•„λ‚„ 수 있으면 개발자의 인건비λ₯Ό μ•„λ‚„ 수 μžˆλ‹€κ³  μƒκ°ν•œλ‹€.
  • 사섀이 κΈΈμ—ˆλ‹€. κ²°κ΅­, 기계가 읽기 μ‰¬μš΄ 게 μ•„λ‹ˆλΌ μ‚¬λžŒμ΄ 읽기 μ‰¬μš΄ μ½”λ“œκ°€ 쒋은 μ½”λ“œλΌκ³  μƒκ°ν•œλ‹€.
    • λ§κ·ΈλŒ€λ‘œ, κ·Ήλ‹¨μ μœΌλ‘œ, μžμ—°μ–΄μ²˜λŸΌ 술술 μ½ν˜€μ•Ό ν•œλ‹€κ³  μƒκ°ν•œλ‹€. κ·Έλž˜μ•Όλ§Œ 읽고 μ΄ν•΄ν•˜λŠ” 데 λ“€μ–΄κ°€λŠ” μ‹œκ°„μ„ 쀄일 수 있기 λ•Œλ¬Έμ΄λ‹€.
      • ps. 특히 C++ project 의 경우 O3 μˆ˜μ€€μ—μ„œλŠ” μ»΄νŒŒμΌλŸ¬κ°€ κ²°κ΅­ λ‘œμ§μ„ λ‹€ λ§Œμ§€κΈ° λ•Œλ¬Έμ—, 세뢀적인 ν”„λ‘œκ·Έλž˜λ¨Έμ˜ μž”μž”λ°”λ¦¬ μ°¨λ ₯μ‡ΌλŠ” μ§€μ–‘λ˜μ–΄μ•Ό ν•œλ‹€κ³  μƒκ°ν•œλ‹€ (e.g., 더 μ€‘μš”ν•œ 건 근본적으둜 O(1)인데 O(n)을 μ±„νƒν•˜κ³  μžˆμ§€λŠ” μ•Šμ€μ§€. O(n)이더라도, accuracy에 영ν–₯을 주지 μ•ŠλŠ” μ„ μ—μ„œ n자체λ₯Ό 쀄일 수 μžˆλŠ”μ§€ λ“±. κ°€μž₯ 쒋은 λΆ€ν’ˆμ€ β€˜μ—†λŠ”β€™ λΆ€ν’ˆ.)
  • 근데 κ·Έκ²ƒμœΌλ‘œ μΆ©λΆ„ν• κΉŒ? κ°œλ°œμžκ°€ μ½”λ“œλ₯Ό μ½λŠ” μ‹œκ°„μ΄ μ™œ 자꾸 많이 μ†Œμš”λ κΉŒ? 심지어 λ‚¨μ˜μ½”λ“œλ„ μ•„λ‹ˆκ³  뢈과 λͺ‡ 달전 λ‚΄κ°€ μž‘μ„±ν–ˆλ˜ μ½”λ“œμΈλ°?
    • λ”μš±μ΄ 이 λ¬Έμ œλŠ” μ½”λ“œλ₯Ό λ‹¨μˆœνžˆ λͺ‡ 달 λ’€ λ‹€μ‹œ λŒλ €λ³΄λŠ” 데 κ·ΈμΉ˜λŠ”κ²Œ μ•„λ‹ˆλΌ, κΈ°λŠ₯을 ν™•μž₯ν•΄μ•Όλ§Œ ν•˜λŠ” μ‚¬νƒœκ°€ λ²Œμ–΄μ§ˆ λ•Œ 더 μ€‘λŒ€ν•΄μ§„λ‹€. μ—¬κΈ°λ₯Ό κ³ μ³€λ”λ‹ˆ μ €κΈ°κ°€ μ•ˆλ˜λŠ” 일듀이 λ°œμƒν•˜κ³ β€¦, λ‹€μ‹œ μ½”λ“œλ² μ΄μŠ€ 전체λ₯Ό λœ―μ–΄λ΄μ•Ό ν•˜λŠ” 일, 이 ν˜„μ‹€μ—μ„œ λ²Œμ–΄μ§„λ‹€.
    • 점점 λ‚˜μ˜ λ‡ŒκΈ°λŠ₯이 ν‡΄ν™”λ˜μ„œμΌκΉŒ? 그게 μ•„λ‹ˆλΌλ©΄ κ·Όμ›μ μœΌλ‘œ λ‚΄κ°€, 싀리적인 λ°©μ‹μœΌλ‘œ μ½”λ“œλ₯Ό μž‘μ„±ν•΄μ˜€μ§€ μ•Šμ•˜λ‹€λŠ” 말이 λœλ‹€. 그리고 그게 μ’€ 더 ν˜„μ‹€μ μ΄κ³ , 극볡가λŠ₯ν•œ λͺ…μ œμΌ 것이닀.
  • <μ—¬κΈ°λ₯Ό κ³ μ³€λ”λ‹ˆ μ €κΈ°κ°€ μ•ˆλ˜λŠ” 일듀이 λ°œμƒν•˜κ³ β€¦, λ‹€μ‹œ μ½”λ“œλ² μ΄μŠ€ 전체λ₯Ό λœ―μ–΄λ΄μ•Ό ν•˜λŠ” 일> λ”°μœ„μ˜ μ‚¬νƒœλ₯Ό μ‹œμŠ€ν…œμ μœΌλ‘œ 막을 수 μžˆλŠ” κ΅¬ν˜„μŠ΅κ΄€μ΄ λ§Œμ•½ μžˆλ‹€λ©΄?
    • 그런 ν‰μ†Œμ˜ μ§ˆλ¬Έμ— λ‹΅ν•΄μ€€ μ±…λ“€ 3κΆŒμ΄λ‹€.

1. 쏙쏙 λ“€μ–΄μ˜€λŠ” ν•¨μˆ˜ν˜• μ½”λ”© (Grokking Simplicity: Taming complex software with functional thinking)

  • μ›μ œκ°€ 더 λ§ˆμŒμ— λ“ λ‹€: Grokking Simplicity: Taming complex software with functional thinking
  • 단연 μ˜¬ν•΄ λ‚΄ λ§ˆμŒμ† μƒλ°˜κΈ° 1λ“± 책이닀.
    • 읽닀보면 functional coding(도 λ‹Ήμ—°νžˆ λ‹€λ£¨μ§€λ§Œ)이 μ•„λ‹Œ functional thinking 에 λŒ€ν•œ ν•„μš”μ„±λΆ€ν„° λΉŒλ“œμ—…μ„ ν•΄λ‚˜κ°€λŠ” 것이 μΌν’ˆμ΄μ—ˆλ‹€.
  • 핡심은, ν•¨μˆ˜λŠ” side-effect κ°€ μ—†μ–΄μ•Ό ν•œλ‹€λŠ” 것이닀.
    • ꡳ이 이름을 λΆ™μ΄μžλ©΄ β€œpure function” 이라고도 ν•œλ‹€.
    • μ±… μ΄ˆλ°˜λΆ€μ— 이것을 κ°•μš”ν•œλ‹€κΈ° 보닀 (λͺ¨λ“  상황에 항상 μ΄λ ‡κ²Œ ν•˜μž 라기보닀), 이런 λ§ˆμΈλ“œ λ₯Ό μž₯μ°©ν•˜μžκ³  κΆŒμœ ν•΄λ‚˜κ°€λŠ” λΉŒλ“œμ—…μ΄ μΉœμ ˆν•˜κ³  κ°•λ ₯ν–ˆλ‹€. κ·Έλž˜μ„œ μ•žλΆ€λΆ„μ— 이야기가 κΈΈκ³ , μ‹€μ œ ν•¨μˆ˜ν˜•API ν…Œν¬λ‹‰μ€ κ½€λ‚˜ μ§€λ‚˜μ„œ μ€‘λ°˜μ―€λΆ€ν„° λ‚˜μ˜¨λ‹€.
      • λ§΅λ¦¬λ“€μŠ€λ‹ˆ μ»€λ§μ΄λ‹ˆ ν•˜λŠ” 것듀은 μ–΄λ–»κ²Œ 보면 기술적인 μ°¨λ ₯쇼에 μ§€λ‚˜μ§€ μ•ŠλŠ” λŠλ‚Œμ΄ λ“€μ—ˆλ‹€. 이런 μ™Έν˜•μ μœΌλ‘œ λ“œλŸ¬λ‚˜λŠ” ν˜„μƒμ μΈ 것에 ν•¨μˆ˜ν˜•ν”„λ‘œκ·Έλž˜λ°μ΄λΌλŠ” 고정관념적 딱지λ₯Ό 뢙여두고, μ§€κΈˆκΉŒμ§€ ν•¨μˆ˜ν˜•μ€ μ΄λž˜μ„œ OOP에 λΉ„ν•΄μ„œ μ•ˆλΌ, λ³„λ‘œμ•Ό, 단점이 λΆ„λͺ…νžˆ μžˆμ„κ±°μ•Ό 라며 관심을 많이 가지지 μ•Šμ•„μ˜¨ 건 μ•„λ‹Œκ°€ λ°˜μ„±μ„ ν•˜λŠ” κΈ°νšŒμ˜€λ‹€.
    • 더 μ’‹μ•˜λ˜ 것은 λ§ˆμΈλ“œμ— κ·ΈμΉ˜μ§€ μ•Šκ³  μ‹€μš©μ μ΄κΈ°κΉŒμ§€ ν•˜λ‹€λŠ” 점이닀. 예λ₯Ό λ“€μ–΄ conventional ν•œ for loopλ₯Ό μ–΄λ–»κ²Œ ν•¨μˆ˜ν˜•μœΌλ‘œ λ³€ν™˜ν•˜λŠ”μ§€ 과정을 μ°¨κ·Όμ°¨κ·Ό λ°Ÿμ•„λ‚˜κ°„λ‹€. 그리고 μ±… λ’·λΆ€λΆ„μ—μ„œλŠ” μ—¬λŸ¬ μ–΄λ €μš΄ μš©μ–΄λ“€μ΄ κ³λ“€μ—¬μ§€λŠ” ν•¨μˆ˜ν˜•ν”„λ‘œκ·Έλž˜λ° ν…Œν¬λ‹‰λ“€λ„ κ²°κ΅­ μ†Œκ°œλ˜λŠ”λ°, 이쯀되면 이미 λ³Έμ§ˆμ„ μ•Œκ³  (μ€‘μš”ν•œ 것은 ν•¨μˆ˜ν˜•APIκ°€ μ•„λ‹Œ ν•¨μˆ˜ν˜•μ‚¬κ³ ) μ•žμ—μ„œλΆ€ν„° λ„ˆλ¬΄ μΉœμ ˆν•œ κ°€μ΄λ“œλ₯Ό λ°›μ•˜κΈ° λ•Œλ¬Έμ— 마음이 μ••λ„λ˜μ§€ μ•Šκ³  ν•¨μˆ˜ν˜•ν”„λ‘œκ·Έλž˜λ°μ— μ΅μˆ™ν•΄μ§ˆ 수 μžˆμ—ˆλ‹€.
    • 결둠은 ν•œ 쀄인데, μ΄λ ‡κ²Œ μΉœμ ˆν•˜κ²Œ κ°€μ΄λ“œ ν•˜μ§€ μ•ŠμœΌλ©΄ 사싀 μ € 결둠을 λ§ˆμŒμ— 심을 수 μ—†μ—ˆμ„ 것이닀.
      • ps. 이 책을 읽을 λ•Œμ˜ λŠλ‚Œμ„ λ°›λŠ” 적이 자주 μžˆμ§€λŠ” μ•Šλ‹€. κ·Έλ‚˜λ§ˆ μ΅œκ·Όμ—λŠ” λ°‘λ°”λ‹₯λΆ€ν„° μ‹œμž‘ν•˜λŠ” λ”₯λŸ¬λ‹ 3ꢌ 이 κ·Έλž¬μ—ˆλ‹€ (μ—¬κΈ°μ„œλ„ μ—­μ‹œ 핡심은 β€˜κ³„μ‚°κ·Έλž˜ν”„λ‘œ μˆ˜ν–‰ν•˜λŠ” auto diff κ°€ λ”₯λŸ¬λ‹μ˜ λͺ¨λ“  것이닀’ 인데 κ·Έκ±Έ 직접 κ΅¬μΆ•ν•΄λ‚˜κ°€λŠ” 과정이 μΌν’ˆμ΄μ—ˆλ‹€).
  • λ°˜μ„±νƒ€μž„
    • SLAM open source 듀을 보닀보면 ν•˜λ‚˜μ˜ 만λŠ₯클래슀λ₯Ό κ΅¬μ„±ν•˜κ³ , 이 ν΄λž˜μŠ€κ°€ λ³€μˆ˜λ₯Ό μˆ˜μ‹­κ°œ κ°€μ§€λŠ” μ‹μ˜ κ΅¬ν˜„μ„ 자주 보게 λœλ‹€. 이λ₯Έλ°” λ…Έλ“œλ‹¨μœ„ μ‹±κΈ€νŒŒμΌ 인데… μ—¬λŸ¬λͺ¨λ‘œ μœ μ§€λ³΄μˆ˜ κ΄€μ μ—μ„œ 쒋지 μ•Šλ‹€λŠ” 생각이 λ“ λ‹€. μ½”λ“œλ₯Ό μ½λŠ” 데 μ‹œκ°„μ΄ 점점 많이 μ†Œμš”λ  것이닀. 만λŠ₯클래슀 λ©”μ„œλ“œλŠ” 클래슀의 λͺ¨λ“  λ³€μˆ˜μ— μ ‘κ·Όκ°€λŠ₯ν•˜κ²Œ λ˜λ―€λ‘œ μ‹€μ œ 인자둜 받지 μ•Šμ€ λ³€μˆ˜λ“€κΉŒμ§€ λ§˜λŒ€λ‘œ μ ‘κ·Όν•˜κ³  κ³ μΉ˜λŠ” λ§Œν–‰λ“€μ΄ λ©”μ„œλ“œ μ—¬κΈ°μ €κΈ°μ—μ„œ λ²Œμ–΄μ§ˆ 것이닀. 그러면 μ–Έμ  κ°€ ν•˜λ‚˜μ˜ λ©”μ„œλ“œ μˆ˜μ • μ‹œ λ‹€λ₯Έ λ©”μ„œλ“œλ“€μ΄ 영ν–₯을 λ°›λŠ” μˆœκ°„μ΄ 였고.. μ½”λ“œ 전체 (λͺ‡μ²œμ€„) λ₯Ό λ‹€μ‹œ λ‹€ λœ―μ–΄λ΄μ•Όν•˜λŠ” μ‹œκ°„μ΄ 올 것이닀. ROSλ…Έλ“œλ‹¨μœ„λ‘œ μ‹±κΈ€νŒŒμΌμ„ μž‘μ„±ν•˜λ‹€λ³΄λ‹ˆ μ „μ—­λ³€μˆ˜λ„ 마ꡬ μ‚¬μš©ν•˜κ³  μžˆλŠ”λ° 이 μ—­μ‹œ λͺ¨λ“  ν•¨μˆ˜μ—μ„œ μ ‘κ·Όκ°€λŠ₯ν•˜λ‹€λŠ” μ μ—μ„œ 만λŠ₯클래슀의 λ³€μˆ˜λ“€κ³Ό 같은 μ²˜μ§€μ΄λ‹€.
    • μ „μ—­λ³€μˆ˜κ°€ λ‚˜μ˜λ‹€λŠ” 건 μ‰½κ²Œ 생각할 수 μžˆμ—ˆμ§€λ§Œ, 이 μ±…μ˜ κ΄€μ μ—μ„œ, 무인자(zero-argument) ν•¨μˆ˜ μ—­μ‹œ (맀우!) λ‚˜μœ κ²ƒμ΄μ—ˆλ‹€. getter만이 μ‹ μ„±ν•œ 무인자 ν•¨μˆ˜κ°€ λ˜μ–΄μ•Όν•˜μ§€ μ•Šμ„κΉŒ? 무인자의 νƒˆμ„ μ“°κ³  μ‹€μ œλ‘œ ν•¨μˆ˜ λ‚΄λΆ€μ—μ„œ ν•¨μˆ˜μ™ΈλΆ€μ˜ λ³€μˆ˜λ“€μ— 마ꡬ μ ‘κ·Όν•˜λŠ” 만λŠ₯λ©”μ„œλ“œλ“€μ΄ μƒκΈ°κ²Œ λ˜λŠ”λ°. 더 큰 λ¬Έμ œλŠ” κ΅¬ν˜„μž(ν”„λ‘œκ·Έλž˜λ¨Έ) κ°€ 이런 ν˜„μƒμ„ 잘λͺ» 지지 (ν•¨μˆ˜ μΈν„°νŽ˜μ΄μŠ€ 섀계 μ‹œ 인자 κ°œμˆ˜κ°€ μ μ„μˆ˜λ‘ 무쑰건 μ’‹μ•„!) ν•˜κ³  μ˜€λ‚¨μš©ν•˜λŠ”μ§€λ„ λͺ¨λ₯΄κ²Œ ν΄λž˜μŠ€κ°€ λΉ„λŒ€ν•΄μ§€λŠ” 상황이 μ•„λ‹κΉŒ. κ°€μž₯ 큰 ν”Όν•΄μžλŠ” λͺ‡ 달 λ’€ λ‚΄κ°€ 될 것이닀. 이런걸(μŠ€μŠ€λ‘œλ„ μ˜ˆμƒν•˜μ§€ λͺ»ν•œ ν˜„μƒλ“€μ„) κ³ μΉœλ‹€κ³  μ‹œκ°„μ„ λ‹€ 쏟고 μžˆλ…ΈλΌλ©΄, 버그λ₯Ό 잘 λ§Œλ“€κ³ , κ·Έκ±Έ 빨리 λͺ»κ³ μΉ˜λŠ” ν”„λ‘œκ·Έλž˜λ¨ΈλΌλŠ” ν‰νŒμ„ λ“£κ²Œ λ˜μ§„ μ•Šμ„κΉŒ. μ„±μž₯의 κ°€μž₯ 큰 동λ ₯원은 두렀움이닀.
    • ps. 졜근 λ³Έ 예쁜 SLAM code λŠ” kiss-icp μ˜€λ‹€. λ“£κΈ°λ‘œ μ €μžκ°€ μ—„μ²­ μ˜μ‹μ μœΌλ‘œ μ½”λ“œλ₯Ό 잘 μ§œλ €λŠ” μŠ΅κ΄€μ΄ μžˆμœΌμ…”μ„œβ€¦ λ””νŽœλ˜μ‹œ λ§ˆμ €λ„ μ΅œμ†Œν™” ν•˜λ €κ³  ν•˜μ‹ λ‹€λ˜λ°. κ·Έλž˜μ„œ ICP도 직접 Jκ΅¬ν•΄μ„œ μˆ˜ν–‰ν•˜λŠ” 뢀뢄이 μΌν’ˆμ΄λ‹€.

2. 파이브 라인슀 였브 μ½”λ“œ (Five Lines of Code: How and when to refactor)

  • μ•žμ˜ 책보닀 μ’€ 더 급진적인 μ˜κ²¬μ„ μ œμ•ˆν•œλ‹€. ν•˜λ‚˜μ˜ ν•¨μˆ˜λŠ” 5개의 μ‹€ν–‰ μ΄ν•˜λ‘œ κ΅¬μ„±λ˜μ–΄μ•Ό ν•œλ‹€κ³  μ£Όμž₯ν•œλ‹€.
    • 이λ₯Ό λ’·λ°›μΉ¨ν•˜κΈ° μœ„ν•΄ μ‹€μ œλ‘œ λͺ¨λ‘ μ½”λ“œκΈ°λ°˜μœΌλ‘œ μ „/ν›„ λ₯Ό 보여주며 μ„€λͺ…ν•œλ‹€. 봐, ν•  수 μžˆμ§€?
  • μ–΄μ¨Œκ±°λ‚˜ 그런 μ½”λ“œλ“€λ„ κ·Έμ € ν•˜λ‚˜μ˜ μ˜ˆμ‹œμ΄κΈ° λ•Œλ¬Έμ—, 이 μ±…μ—μ„œλŠ” μ—­μ‹œ λ‚΄ 고정관념을 깨고자 ν•˜λŠ” μšΈλ¦Όμ •λ„λ₯Ό μ–»μ–΄κ°€λŠ” 기회둜 μ‚ΌλŠ” 데 μ§‘μ€‘ν•˜μ˜€λ‹€.
  • 그런데 생각해보면 μ•žμ˜ μ±…κ³Ό μ΄μ–΄μ§€λŠ” λ§₯락이 μžˆλ‹€. μ‚¬μ΄λ“œ μ΄νŽ™νŠΈλ₯Ό μ—†μ• λ €κ³  λ…Έλ ₯ν•˜λ‹€ 보면, κ°œλ³„ ν•¨μˆ˜λ“€μ΄ μ•Œμ•„μ•Όν•˜λŠ” 사전 지식 (인자 개수) 을 μ˜λ„μ μœΌλ‘œ 잘 μ„€κ³„ν•΄μ„œ μ œν•œν•΄μ•Όλ§Œ ν•œλ‹€. κ·Έλ ‡κ²Œ 잘 ν•˜λ‹€λ³΄λ©΄ ν•¨μˆ˜λ§ˆλ‹€ 5개 μ΄ν•˜μ˜ μ‹€ν–‰μœΌλ‘œ ꡬ성할 μˆ˜λ„ μžˆμ„μˆ˜λ„ μžˆμ§€ μ•Šμ„κΉŒ? 라며 마음이 μ—΄λ¦¬λŠ” λ“―(μ €μžμ˜ μ˜κ²¬μ— λ™μ˜ν•˜λŠ”) ν•˜μ˜€λ‹€.
  • μ—­μ‹œ μ•žμ˜ μ±…μ—μ„œ 얻은 κ°€μž₯ 큰 μˆ˜ν™•μΈ λ§ˆμΈλ“œνƒ‘μž¬, 처럼, 이 μ±…μ—μ„œλ„ κ·ΈλŸ¬ν•œ λ§ˆμΈλ“œλ₯Ό νƒ‘μž¬ν•˜λŠ” 것에 λ…Έλ ₯ν–ˆλ‹€. 상황상 λ‹Ήμ—°νžˆ λͺ¨λ“  ν•¨μˆ˜λ₯Ό λ‹€ 5쀄 μ΄ν•˜λ‘œ κ΅¬μ„±ν•˜λŠ” 것은 λ•Œλ•Œλ‘œ 더 μ“Έλ°μ—†λŠ” μ‹œκ°„μ΄ μ†Œμš”λ˜λŠ” μΌμΌμˆ˜λ„ μžˆκ² λ‹€. μ–΄μ¨Œκ±°λ‚˜ 핡심은 λͺ¨λ“  κ²½μš°μ— κ·Έλ ‡κ²Œ 무쑰건 ν•˜μžκ°€ μ•„λ‹ˆλΌ, μ΅œλŒ€ν•œ κ·Έλ ‡κ²Œ ν•  수 μžˆλŠ” 상황이라면 κ·Έλ ‡κ²Œ ν•˜λ €κ³  ν•œλ²ˆ 더 μƒκ°ν•΄λ³΄μž, λΌλŠ” λ§ˆμΈλ“œλΌκ³  μƒκ°ν•œλ‹€.
  • 그리고 ν΄λ¦°μ½”λ“œκ°€ μ–΄μ©Œλ„€ μ €μ©Œλ„€ 사싀 ν”Όκ³€ν•œ 뢀뢄듀이 λ§Žμ€λ°, 5μ€„μ΄ν•˜λ‘œ ν•˜λ €κ³  λ…Έλ ₯해라! λΌλŠ” 지침은 λ‹¨μˆœν•΄μ„œ μ–΄μ¨Œκ±°λ‚˜ μ‹€μš©μ μ΄λΌκ³  μƒκ°ν•œλ‹€. ν•œλ²ˆ μ½μ–΄λ³Όλ§Œν•œ μ±….

3. μ „λ¬Έκ°€λ₯Ό μœ„ν•œ C++ 5판 (Professional C++, 5th Edition)

  • 사싀 5판 λ²ˆμ—­μ„ 기닀리고 μžˆμ—ˆλŠ”λ° 이제 λ‚˜μ™€μ„œ μ‚° 책이닀. 4판으둜 C++ κΈ°μ΄ˆλ¬Έλ²•μ„ κ³΅λΆ€ν•˜λŠ” 데 도움을 λ°›μ•˜μ–΄μ„œ, 의리둜 μ‚° μ±….
  • … 이라기엔 C++20 feature 듀을 닀루고 μžˆλŠ” ν˜„μž¬ λ²ˆμ—­μ„œ 쀑 κ°€μž₯ μΆ©μ‹€ν•œ 책이라, C++20 을 미리 곡뢀할 κ²Έ κ΅¬λ§€ν•œ μ±…, 이며 κ·Έ 뢀뢄에 λŒ€ν•΄μ„œ λ§Œμ‘±ν•˜λ©° 읽고 μžˆλ‹€. κ·Έ μ™Έμ—λŠ” 4판과 거의 μœ μ‚¬ν•˜λ‹€.
  • 마치 C++κΈ°μ΄ˆν”ŒλŸ¬μŠ€β€¦ 같은 λ‘κΊΌμš΄ 책인데 κ·Έ μ±…λ³΄λ‹€λŠ” μ’€ 더 μ „κ°œλ‚˜ μ„€λͺ…이 μ‰¬μš΄ 것 κ°™μ•„μ„œ 이 책을 쒋아함. 두껍기 λ•Œλ¬Έμ— ν•œλ‘λ‹¬λ§Œμ— ν•œλ²ˆμ½κ³  끝낼 책은 μ•„λ‹ˆκΈ΄ ν•˜λ‹€. 짬날 λ•Œλ§ˆλ‹€ ν•œμ±•ν„°μ”© 봀던 챕터도 ν•œλ²ˆμ”© 또 보고 ν•˜λŠ” μ±….
  • ps. 4νŒμ΄λ“  5νŒμ΄λ“  이정도 문법을 ν•œλ‘λ²ˆ 정도 λ³Έ λ‹€μŒμ—λŠ” cppcon의 talk듀을 λ³΄λŠ” 것이 μ‹€λ¬΄κ΄€μ μ—μ„œλŠ” μ’€ 더 도움이 되고 μžˆλ‹€.

κ²°λ‘ 

  • 근데 졜고둜 μ€‘μš”ν•œ (그리고 제일 μ–΄λ €μš΄) 건 이름짓기 κ°€ μ•„λ‹κΉŒβ€¦