POCU COMP3200 C++ 언매니지드 프로그래밍 후기
- POCU
- 2024. 12. 23.
수강 목적
C 프로그래밍 수업을 들으면서 저수준에서 메모리를 관리하고 어셈블리어까지 컴퓨터 공학적인 지식을 배우는 것이 즐거웠다. C++ 도 언매니지드 프로그래밍 답게 메모리 관리 측면에서 개체지향까지 곁들여서 어떤식으로 처리할 수 있는지 궁금했다.
C++ 은 사실 학교에서도 OpenCV 로 이미지 처리를 하고, 인턴을 통해 SVM Top View 를 개발할 때도 썼었지만, 거의 로직 위주의 개발이 많았고, C++ 과 언매니지드 프로그래밍 관점에서는 놓치는 부분이 많았다.
개인적으로 로직에 집중하는 것도 좋지만, 저수준에서 메모리 관리를 직접 해보고 동작하는 것을 보는 것이 가려운 부분을 긁어주는 부분이 컸기 때문에, 이번 강의는 재밌을 것 같았고, 개체지향 관점에서의 메모리 관리도 알아볼 수 있겠다고 생각하여 수강하게 되었다.
강의 내용
C++ 은 사실 문법자체가 익숙하지 않았다. 하지만 앞선 과정에서 기초를 다져왔기 때문에 빠르게 그 언어에 대한 특징을 습득할 수 있었다.
기본적으로 C 언어와 같이 포인터도 다루지만, 참조라는 것을 추가적으로 배울 수 있었고, C++ 관점에서의 개체지향 프로그래밍을 배울 수 있었다.
백엔드 개발자이기 때문에 단순히 생성자를 사용하는 정도로만 실무에서 사용해왔었는데, C++ 에서 생성자와 초기화리스트, 복사 생성자, 생성자 오버로딩, 소멸자 등을 배우면서 개체의 라이프 사이클에 대해서 자세하게 배울 수 있었고 지금껏 써왔던 자바와도 비교가 되면서 더욱 흥미로웠고 재밌었다.
특히 연산자 오버로딩은 매우 새로웠는데, C++ 에서 막연하게만 쓰던 연산자들이 사실은 오버로딩을 통해서 기능을 사용할 수 있었다는 점이 흥미로웠다.
어셈블리어 관점에서 코드를 까볼 수도 있었고 가상 함수, 가상 테이블을 통해 다형성이 어떻게 동작하는지 자바와 어떻게 다른지 비교를 통해 학습할 수 있어서 더 잘 이해할 수 있었다.
또한 기존에 C++ 을 통한 STL 을 사용한 코딩 테스트 문제를 풀곤 했었는데, 중간고사까지 배워온 빌드업을 이어서 템플릿 프로그래밍을 이해하면서 vector 가 무엇이고 map 이 무엇인지 어떻게 이 자료구조들이 구현될 수 있었는지 이해할 수 있었다. 예전에는 그냥 가져다 사용하기만 했었는데, 이러한 배경들을 이해하고나니 더욱더 개념들이 잘 체화될 수 있었다.
또한 템플릿 프로그래밍 기반으로 '스마트 포인터' 개념을 익히면서 자동으로 메모리관리가 되는것이 얼마나 편한지 체감할 수 있었다. 이외에도 rvalue, 이동생성자 개념을 통해 불필요한 복사를 막고, 람다 표현식을 통한 처리 등등 정말 많은 걸 배웠다.
강의 내용을 되돌아보면 C++ 과목은 가장 많은 내용을 학습했던 것 같은데, 하나하나가 너무 재밌었다.
강의 실습 & 과제
개인적으로 C++ 프로그래밍 실습, 과제는 크게 어려움을 느끼진 않았던 것 같다. 과제2에서 개체의 메모리 관리하는 부분에 살짝 애를 먹긴 했지만, 다른 과목에 비해서는 즐겁게 실습, 과제에 임했던 것 같다.
특히 모던 C++ 을 이용하여 과제, 실습을 진행하면서 스마트 포인터가 어떻게 활용되는지 알 수 있어서 좋았다.
중간 & 기말 시험
마찬가지로 유형은 다른 과목과 비슷했다. 개인적으로 C++ 은 되게 즐겁게 공부했어서 시험이 크게 어렵다고 느껴지지는 않았다. 다만 참조, rvalue 를 어느 상황에서 쓰는지 확실히 체화가 되지는 않았는지, 시험때 조금 헷갈리는 부분이 있었던 것 같다. 확실히 IDE 에 의존적으로 개발을 해오다보니 단순히 코드만 보고 문제가 있는지 판단하는 것이 쉽지는 않았던 것 같다.
점수는..?
실습, 과제는 모두 만점을 받았고, 중간, 기말고사도 모두 80점 이상 받았다. C++ 수업을 들으면서 개인적으로 C++ 을 이용한 사이드 프로젝트를 하고 싶을 정도로 학기내내 재밌었다..
느낀점
C++ 언매니지드 프로그래밍 수업을 들으면서 C 에서 익숙해진 포인터가 장착된 채 여러 내용들을 배워나갔는데, 그냥 재밌었다. 계속 재밌었다는 말을 반복하는 것 같은데, 아무래도 나는 언매니지드 프로그래밍을 하면서 재미를 많이 느끼는 것 같다. (자동으로 누군가가 해주는 것보다 내가 하나씩 다 제어하는 것이 매력적이었다.)
C++ 개념이 이제 어느정도 정립되었다는 생각이 들었고, 알고리듬적으로 C++ 기반 예제 코드들이 많이 있는데, 이제 더이상 겁내지 않고 잘 읽어낼 수 있다는 자신감이 생겼다.
이제 POCU 수업의 5/(7 to 12) 을 들었다. 이제 앞으로 강의 2개가 남았다. 알고리듬과 어셈블리어.. 어셈블리어도 너무 재밌을 것 같지만, 우선순위를 고려했을때, 알고리듬을 통해 많은 점을 얻을 수 있을 것 같아 다음학기에는 알고리듬을 수강할 것 같다. 언제나 컴퓨터 공학의 기초를 쌓는 것은 즐거운 것 같다.
'POCU' 카테고리의 다른 글
POCU COMP2500 개체지향 프로그래밍 및 설계 (Java) 후기 (0) | 2024.12.23 |
---|---|
POCU COMP2200 C 언매니지드 프로그래밍 후기 (0) | 2024.08.26 |
POCU COMP1000 소프트웨어 공학용 수학 후기 (0) | 2023.12.25 |
POCU COMP1500 실무 프로그래밍 입문(C#) 후기 (0) | 2023.08.21 |