Programming/C++

[C++] Lec 26. String Literals in C++

Goal본 포스팅은 The Cherno의 C++ series 리뷰입니다.이전 글에서 문자열이 "문자의 배열 + 널 종료 문자"라는 것을 배웠습니다. 이번 포스팅은 그 문자열을 코드에 직접 적는 것, 즉 문자열 리터럴(String Literal) 을 더 깊이 파고듭니다.문자열 리터럴이란 코드에 큰따옴표로 적은 "Cherno" 같은 값을 말합니다. 단순해 보이지만, 그 뒤에는 메모리 어디에 저장되는가, 왜 const여야 하는가, 문자 하나가 몇 바이트인가 같은 중요한 이야기가 숨어 있습니다. 이번 글에서는 문자열 리터럴의 정체와 주의점, 그리고 다양한 문자 인코딩까지 살펴봅니다.Chapter 1 : 문자열 리터럴이란 : 그리고 왜 const인가 Chapter 2 : 리터럴은 어디에 저장되는가 Chapter ..

Deep Learning/Embedded AI

[MIT 6.5940] Lec 4. Quantization (Part I)

GoalPruning(Lecture 2~3)이 weight의 개수를 줄였다면, Quantization은 weight 하나당 비트 수를 줄인다. 저장 용량은 비트 수 × weight 개수이므로, 둘은 서로 직교(orthogonal)하며 함께 곱셈적으로 결합된다. 폰에서 AI를 돌린다면 십중팔구 quantization을 쓰고 있을 만큼 현대 딥러닝에 핵심적인 기법이다. Quantization도 두 강의(Part I·II)에 걸쳐 다룬다. Part I의 두 축:데이터 타입(numerical types) : 정수(integer), 고정소수점(fixed-point), 그리고 부동소수점 FP32·FP16·BF16·FP8·FP4. 각각 어떻게 표현하고, 정수 vs 부동소수점은 언제 유리한가.신경망 양자화 기법 : K..

Programming/C++

[C++] Lec 25. How Strings Work in C++ (and how to use them)

Goal본 포스팅은 The Cherno의 C++ series 리뷰입니다.이전 글에서 같은 타입의 값을 나란히 모은 배열을 다뤘습니다. 이번 포스팅의 주제인 문자열(String) 은 사실 그 배열의 특수한 경우 문자(char)들의 배열 입니다. 배열을 이해했으니 문자열도 자연스럽게 따라옵니다.C++에는 문자열을 다루는 두 가지 방식이 있습니다. C 시절부터 내려온 C 스타일 문자열(char 배열)과, 현대 C++의 std::string 입니다. 이번 글에서는 문자열이 메모리에서 어떻게 동작하는지(핵심은 널 종료 문자), 두 방식의 차이, 그리고 실전에서 어떻게 쓰는지를 살펴봅니다.Chapter 1 : 문자열은 문자의 배열이다. 그리고 널 종료 문자 Chapter 2 : C 스타일 문자열 vs std::st..

Programming/C++

[C++] Lec 24. Arrays in C++

Goal본 포스팅은 The Cherno의 C++ series 리뷰입니다.이번 주제는 배열(Array) 입니다. 배열은 같은 타입의 여러 값을 메모리에 나란히 모아둔 것으로, 데이터를 대량으로 다루는 모든 코드의 기본 재료입니다. 배열은 지금까지 배운 두 개념이 만나는 지점입니다. 포인터(배열은 사실 포인터입니다)와 반복문(배열은 반복문으로 훑습니다). 특히 앞서 포인터 편에서 잠깐 본 new int[100]이 무엇이었는지, 이번 글에서 완전히 이해하게 됩니다. 배열의 정체, 포인터와의 관계, 그리고 스택·힙 배열의 차이까지 살펴봅니다.Chapter 1 : 배열이란 무엇인가 : 같은 타입을 나란히Chapter 2 : 배열은 사실 포인터다 Chapter 3 : 스택 배열 vs 힙 배열, 그리고 주의점 Con..

Programming/C++

[C++] Lec 23. Visibility in C++

Goal본 포스팅은 The Cherno의 C++ series 리뷰입니다. 우리는 지금까지 클래스 편에서 public/private를, 상속 편에서 protected를 다뤘습니다. 이번 포스팅은 이 세 가지 가시성(Visibility), 즉 클래스 멤버가 어디까지 보이고 접근 가능한지를 한자리에 모아 제대로 정리합니다.이 강의에서 Cherno가 특히 강조하는 중요한 포인트가 있습니다. 가시성은 순수하게 객체지향(OOP) 개념일 뿐, 프로그램의 성능이나 동작에는 아무 영향이 없다는 것입니다. 가시성은 컴퓨터가 아니라 사람(개발자)을 위한 것입니다. 이번 글에서는 세 지정자의 차이와, "왜 굳이 접근을 막는가"라는 그 진짜 이유를 살펴봅니다.Chapter 1 : 가시성이란 무엇인가 : 사람을 위한 개념 Ch..

Programming/C++

[C++] Lec 22. Interfaces in C++ (Pure Virtual Functions)

Goal본 포스팅은 The Cherno의 C++ series 리뷰입니다.이전 글에서 virtual 키워드로 다형성을 구현하는 가상 함수를 배웠습니다. 이번 포스팅은 그것을 밀어붙인 개념, 순수 가상 함수(Pure Virtual Function) 와 그것으로 만드는 인터페이스(Interface) 입니다. 일반 가상 함수는 부모가 기본 구현을 제공하고 자식이 원하면 재정의했습니다. 순수 가상 함수는 한 걸음 더 나아가, 부모가 구현을 아예 제공하지 않고 "이 함수는 반드시 자식이 구현하라"고 강제합니다. 즉 "규격만 정하고 내용은 비워두는" 것이죠. 이번 글에서는 이 개념이 무엇이고, 왜 강력한지를 살펴봅니다.Chapter 1 : 순수 가상 함수란 무엇인가 Chapter 2 : 인터페이스 — 구현을 강제하는..

Programming/C++

[C++] Lec 21. Virtual Functions in C++

Goal본 포스팅은 The Cherno의 C++ series 리뷰입니다.이전 글에서 상속(Inheritance)을 다루며 "자식은 부모의 한 종류다(is-a)"라는 관계를 배웠습니다. 이번 포스팅은 그 관계를 진짜 강력하게 만들어주는 가상 함수(Virtual Function) 와 다형성(polymorphism) 입니다.핵심 질문은 이것입니다. "부모 타입으로 자식 객체를 가리킬 때, 어느 쪽의 메서드가 호출될까?" 상속만으로는 여기서 원치 않는 결과가 나오는데, virtual 키워드가 이를 해결합니다. 이번 글에서는 그 문제 상황부터, virtual의 동작, 그리고 그것이 메모리(vtable, sizeof)에 미치는 영향까지 살펴봅니다.Chapter 1 : 문제 상황 — 상속만으로는 부족하다 Chapte..

Deep Learning/Embedded AI

[MIT 6.5940] Lec 3. Pruning and Sparsity (Part II)

GoalLecture 2(Part I)에서 pruning의 네 질문 중 granularity(어떤 단위로)와 criterion(무엇을)을 배웠다. Part II는 나머지 두 질문 + "희소성을 실제 속도로 바꾸는 법"을 다룬다.Pruning Ratio (얼마나 자르나) — 레이어별 비율을 정하는 세 방법: sensitivity analysis · AMC(강화학습) · NetAdapt(규칙 기반).정확도 회복 (어떻게 되살리나) — fine-tuning 전략(learning rate·iterative·regularization), 그리고 Lottery Ticket Hypothesis.System & Hardware 지원 — 희소성을 실제 속도로 바꾸는 세 계열: EIE(weight·activation sp..

Programming/C++

[C++] Lec 20. Inheritance in C++

Goal본 포스팅은 The Cherno의 C++ series 리뷰입니다.지금까지 클래스를 만들고(정의), 초기화하고(생성자), 정리하는(소멸자) 법을 익혔습니다. 이번 포스팅은 객체지향의 가장 강력한 기능 중 하나인 상속(Inheritance) 입니다. 기존 클래스를 재사용하면서 새로운 클래스를 만드는 방법이죠. 함수 편에서 "함수는 코드 중복을 막는다"고 했던 것을 기억하시나요? 상속은 그 아이디어를 클래스 단위로 확장한 것입니다. 여러 클래스가 공통으로 갖는 코드를 부모 클래스 한 곳에 모아두고, 여러 자식 클래스가 그것을 물려받아 쓰는 것. 이것이 상속의 핵심이며, 이번 글의 주제입니다.Chapter 1 : 상속이란 무엇인가 — 공통 코드를 부모 클래스로 Chapter 2 : 상속 문법과 동작 — ..

Programming/C++

[C++] Lec 19. Destructors in C++

Goal본 포스팅은 The Cherno의 C++ series 리뷰입니다.이전 글에서 객체가 태어날 때 자동 호출되는 생성자(Constructor)를 다뤘습니다. 이번 포스팅은 그 자연스러운 짝, 객체가 사라질 때 자동 호출되는 소멸자(Destructor) 입니다.생성자가 객체의 "탄생"을 담당한다면, 소멸자는 객체의 "죽음"을 담당합니다. 주로 객체가 사라지기 직전에 뒷정리(cleanup) 를 하는 데 쓰입니다 — 특히 포인터 편에서 배운 new로 할당한 메모리를 해제하는 것처럼요. 이번 글에서는 소멸자가 무엇인지, 언제 자동으로 호출되는지, 그리고 왜 중요한지를 살펴봅니다.Chapter 1 : 소멸자란 무엇인가 — 객체 소멸 시 자동 호출 Chapter 2 : 소멸자는 언제 호출되는가 Chapter 3..

홈으로 돌아가기

검색 결과

"search" 검색 결과입니다.