Study: Software(SW)/SW: Language

    [C++] 객체지향 프로그래밍: 변수 및 구조체 접근법 정리 (feat. struct vs class)

    1. 구조체 (struct vs class) struct 멤버 변수/함수에 대한 기본적으로 제공되는 접근지시자가 public이며, 대게 단순한 데이터를 표현하는데 사용합니다. class 멤버 변수/함수에 대한 기본적으로 제공되는 접근지시자가 private이며, 대게 기본적으로 제공되지 않는 constructor, operator를 사용하지 않거나 다양한 접근지시자가 필요할 때 사용합니다. 2. 변수 및 구조체 (pointer, reference, struct, class, union, choice, enum 등) 구조체 선언 typedef struct packet1 { int data0; int* data1; union uni{ int data2 int data3 }Uni; }Packet; + 구조체 선..

    [C++] 함수형 프로그래밍(feat. lambda function)

    함수형 프로그래밍? 함수형 프로그래밍 도입 C++은 Object Oriented Programming(OOP) 패러다임이 중심이 언어이며, High performance가 필요한 곳에서 사용하고 있습니다. 그리고 이렇게 High performance가 필요할 경우 늘 cache hit을 쳐줘야 합니다. 이를 위해서는 Data oriented programming 스타일이 자연스럽게 C++스타일에 들어오게 됩니다. 이후 C++11부터 함수형 프로그래밍을 지원하기 위해 lambda expression을 도입. 그래서 간단히 함수형 프로그래밍이란? 함수를 object/variable 처럼 다루는 개념. 이를 활용하면? 다양하게 응용할 수 있습니다. First-Class Object C++0x에서는 람다 함수(..

    [C++] 조건부 컴파일 매크로(전처리기 지시어): Header Guard (#if, #ifdef, #elif, #else, #endif...)

    #if vs #ifdef 두 지시어의 차이는 무엇인가? #if vs #ifdef 두 지시어의 차이 #if: 만약 ~이라면? e.g. #if USING==ON 변수 USING에 들어가 있는 값이 중요하게 작용합니다. #ifdef: 만약 ~가 정의되어 있다면? e.g. #ifdef USING if defined의 약자로, 사전에 정의되어 있는지만 확인합니다. #ifdef을 사용하는 경우? (feat. __DEBUG__, __TEST__, __REAL__) 보통 회사에서 개발서버, 테스트 서버, 운영서버를 따로 관리합니다. 테스트를 하기 위해 운영되고 있는 서버를 내릴 순 없으니까요. 대게로 소스를 동일하게 맞춰놓는데, 개발 서버에서만 동작해야하는 소스가 있을 것입니다. 이런 상황에 컴파일 기본 옵션으로 개발..

    [C++] 병행 컴퓨팅: 순차, 병렬, 병행의 차이

    순차(sequential) / 병렬(parallel) / 병행(concurrent) 순차 처리 (sequential): 복수의 업무를 순서대로 하나씩 처리. 병렬 처리 (parallel): 복수의 업무를 "동시에" 처리. 병행 처리 (concurrent): 병렬에 비해 추상도가 높은 표현. 한 개의 업무를 어떠한 순서로 처리하든 상관 없는 여러 개의 작업으로 분할하여 처리. 멀티쓰레드 프로그램의 경우 병행 처리를 의미하며, 작업자가 한 명이라면 분할된 작업들을 순차적으로 처리하게 되지만, 두 명이라면 같은 작업을 병렬적으로 처리할 수 있다. 멀티쓰레드 프로그램 만약 CPU가 한 개 뿐이라면 병행처리를 순차적으로 실행할 테고, CPU가 여러개라면 병행처리를 병렬적으로 실행할 수 있다. 만약 CPU가 한 개..