Programming🧑💻
-
XML 알아보기Programming🧑💻 2025. 4. 21. 22:21
XML이란 무엇인가?XML(eXtensible Markup Language)은 HTML과 비슷한 구조를 가지고 있지만 목적이 다릅니다. HTML이 데이터를 표시하는 데 중점을 둔다면, XML은 데이터를 구조화하고 전송하는 데 중점을 둡니다.확장 가능성: 사용자가 자신만의 태그를 정의할 수 있습니다자기 서술적: 데이터와 그 구조를 동시에 표현합니다플랫폼 독립적: 다양한 시스템 간에 데이터를 쉽게 공유할 수 있습니다XML 기본 구조 XML 배우기 홍길동 2023 프로그래밍 기초 김철수 2022 XML 문서는 다음 요소로 구성됩니다.XML 선언: 문서 맨 앞에 위치하며 XML 버전과 인코딩을 명시합니다요소(Elements): 시작 태그와 종료 태그 사이에 데이터가 ..
-
가상 함수와 함수 호출 방식( 정적 디스패칭, 동적 디스패칭 )Programming🧑💻/Cpp 2025. 4. 7. 16:38
가상 함수(Virtual Function)의 개념과 작동 원리가상 함수는 객체 지향 프로그래밍의 정수인 다형성(polymorphism)을 구현하는 핵심 메커니즘입니다. 쉽게 말해서, 가상 함수는 부모 클래스에서 선언되고 자식 클래스에서 재정의(override)될 수 있는 함수입니다.1. 가상 함수의 기본 개념C++에서 함수 앞에 virtual 키워드를 붙이면 그 함수는 가상 함수가 됩니다.class Parent {public: virtual void show() { std::cout 여기서 Parent 클래스의 show() 함수는 virtual 키워드로 선언되었고, Child 클래스에서 이를 재정의했습니다. override 키워드는 C++11에서 추가된 것으로, 이 함수가 부모 클래스의..
-
const 키워드 맥락에 따라 구분하기Programming🧑💻/Cpp 2025. 4. 6. 21:06
const 키워드는 C++에서 매우 중요한 개념으로, 코드의 안정성과 가독성을 높이는 데 큰 역할을 합니다. 하지만 다양한 상황에서 활용되기 때문에 언어에 익숙하지 않은 경우, 맥락에 따른 의미를 파악하기 어려울 수 있습다. 이번 글에서는 다양한 곳에서 cosnt가 어떻게 활용되는지 살펴보도록 하겠습니다. 1. 상수 변수 선언가장 기본적인 const 사용법은 변수를 상수로 선언하는 것입니다.const int MAX_USERS = 100;const double PI = 3.14159265359;이렇게 선언된 변수는 초기화 후 값을 변경할 수 없습니다.2. 포인터와 constconst와 포인터를 함께 사용할 때는 두 가지 경우가 있습니다. const 키워드는 자신의 왼쪽에 있는 것을 상수로 만듭니다. 하지만..
-
inline 키워드 알아보기Programming🧑💻/Cpp 2025. 4. 5. 20:51
C언어에서의 시작inline 키워드는 원래 C89 표준에는 없었고 C99에서 추가되었습니다. 그러나 그 이전에도 많은 C 컴파일러들은 비표준 확장 기능으로 이를 지원했습니다. 처음에 inline의 주요 목적은 컴파일러에게 힌트를 제공하는 것이었습니다. 이 힌트는 "이 함수를 호출할 때마다 함수 호출 메커니즘을 사용하지 말고, 함수 코드를 직접 호출 지점에 삽입해 달라"는 의미였습니다.inline int square(int x) { return x * x;}이렇게 정의된 함수는 컴파일러가 다음과 같이 변환하기를 기대했습니다.// 원래 코드int result = square(5);// 컴파일러가 변환한 코드 (개념적으로)int result = 5 * 5;C++로의 발전C++에서 inline의 의미는 상..
-
헤더 전용 라이브러리는 뭐고 언제 쓸까?Programming🧑💻/Cpp 2025. 4. 4. 21:38
헤더 전용 라이브러리란 무엇인가?헤더 전용 라이브러리는 단어 그대로 헤더 파일만으로 구성된 라이브러리입니다.일반적인 라이브러리들이 헤더 파일(.h, .hpp)과 구현 파일(.c, .cpp)로 나뉘어 있는 것과 달리, 헤더 전용 라이브러리는 모든 코드가 헤더 파일 안에 담겨 있습니다. 전통적인 라이브러리 방식 : 이 방식에서는 선언과 구현이 분리되어 있습니다.calculator.h (선언부)#ifndef CALCULATOR_H#define CALCULATOR_H// 함수 선언int add(int a, int b);int subtract(int a, int b);double divide(double a, double b);int multiply(int a, int b);// 클래스 선언class Calcul..
-
static 키워드 정복하기Programming🧑💻 2025. 3. 25. 21:08
Swift에서 static 키워드는 "프로퍼티를 인스턴스가 아닌 타입 레벨로 올림으로써 타입 내에서 공유하는 속성,기능을 만들 수 있게 해 준다. " 라고 이해하고 있었으며 주로 싱글톤 패턴이나 타입 메서드를 구현할 때 사용했습니다. 따라서 static 키워드를 "타입 레벨의 동작을 지원하기 위해 만들어진 녀석이구나" 정도로 이해하고 있었습니다. 근데 thread-safe 코드 작성에 대해 살펴보기에 앞서 thread-unsafe 한 경우가 무엇이 있는지에 대해 보고 있던 와중에 "정적 지역 변수는 함수 내에 있더라도 data 영역에 저장이 되며 함수의 반환 이후에도 함수의 상태를 기억한다. 즉 여러 쓰레드에서 접근이 가능한 공유 자원으로 취급되기 때문에 주의가 필요하다." 라는 구절을 읽었습니다.그..
-
함수형 프로그래밍이 선언적인 이유Programming🧑💻/Functional Programming 2025. 2. 17. 22:49
SwiftUI와 UIKit 뷰 구성하는 법 비교하기 ( 선언형, 절차형 패러다임 비교)SwiftUI - 선언형 프로그래밍선언형 프로그래밍에서는 "무엇"을 원하는지를 코드로 작성합니다.개발자는 원하는 결과를 설명하고, 시스템이 그 결과를 어떻게 달성할지 결정합니다.SwiftUI 예제다people-analysis.tistory.com이전에 SwiftUI와 UIKit에서 뷰를 구성하는 방법을 비교하면서 선언적 프로그래밍과 함수형 프로그래밍을 서로 비교해 봤는데요. 최근에 함수형 프로그래밍을 접하면서 함수를 이용해 값의 입력과 출력을 다루는 게 마치 SwiftUI에서 값 변경을 감지해 이를 화면에 반영하는 뷰 랜더링 사이클과 비슷하다는 느낌이 들었습니다.그래서 함수형 프로그래밍이 왜 '선언적'이라고 불리는지, ..
-
상태기계와 코루틴 프레임Programming🧑💻/Cpp 2025. 2. 14. 22:40
코루틴이란?일반적인 함수의 경우 한번 호출되면 완료될때까지 실행되지만 코루틴은 실행 중간에 중단되었다가 나중에 중단됨 지점부터 다시 재개될 수 있는 함수입니다. 상태기계 (State Machine)상태기계는 코루틴이 어떻게 함수의 실행을 중단했다가 다시 재개할 수 있는지를 설명하는 핵심 매커니즘입니다. 컴파일러는 코루틴 함수를 상태기계로 변화하는 과정을 거칩니다. 예를 들어, 다음과 같은 코루틴이 있다고 가정했을 때, task example_coroutine() { std::cout 컴파일러는 이 코드를 내부적으로 다음과 같은 상태들을 가진 상태 기계로 변환합니다. // 컴파일러가 생성하는 내부적인 상태 기계의 의사 코드class ExampleCoroutineStateMachine { // ..