왜 저는 코딩을 배우고 있는가? (그 다음은 무엇인가?)

카테고리

프로그래밍/소프트웨어 개발

서브카테고리

개발 툴

대상자

  • 초보 프로그래머자기계발 중심의 학습자
  • 난이도: 기초 수준 (초보자에게 추천, 추상화 개념 이해에 초점)

핵심 요약

  • C/C++ 학습의 목적: 추상화를 넘어 시스템 레벨 개념(예: stdout, 포인터)을 깊이 이해하기 위해 선택
  • 프로젝트 기반 학습: UNIX 쉘 구현을 통해 실무 경험 확보
  • 자원 추천: FreeCodeCampStephen Brennan의 쉘 개발 튜토리얼 활용

섹션별 세부 요약

1. 학습 동기 및 언어 선택

  • 추상화의 단점: 자바스크립트, 파이썬 등 고수준 언어는 print("hello")와 같은 추상화로 저수준 동작(예: stdout)을 숨기는 문제
  • C/C++의 장점: 포인터, 메모리 관리 등 핵심 개념을 직접 학습 가능
  • 목표: 시스템 레벨 프로그래밍 이해 및 GPU/게임 개발으로의 전환 준비

2. 학습 자원 및 프로젝트 계획

  • 자원:

- FreeCodeCamp C 프로그래밍 튜토리얼

- Stephen Brennan의 C 쉘 개발 가이드

  • 프로젝트: UNIX 쉘 구현 (C 언어로 작성, 실무적 구조 이해)
  • 다음 단계: C++ 학습 후 GPU 프로그래밍 또는 게임 개발 탐색

3. 환경 및 추천

  • 운영체제: Linux (Arch) 사용 권장 (Windows 의존성 없음)
  • 추천: Linux 전환 또는 듀얼부팅 고려 (소프트웨어 호환성 문제 해결)
  • 장기 목표: 자율적인 개발자 커뮤니티 구축을 위한 지속적인 학습과 공유

결론

  • 초보자에게 C/C++ 학습을 추천하며, 실제 프로젝트(예: UNIX 쉘)를 통해 시스템 레벨 개념을 체계적으로 습득해야 함.
  • Linux 환경에서의 개발은 성능 최적화자원 관리 능력 향상에 도움.
  • 프로젝트 기반 학습커뮤니티 공유기술 습득과 동기 유지에 효과적.