
해당 내용은 거의 TMI이고 파이썬에 대한 내용만 알고 싶으시다면 이번 장을 뛰어넘으셔도 됩니다. 이 글의 내용은 모른다고 해서 크리티컬하지 않습니다. 모르는 내용이 나와도 건너뛰셔도 됩니다.
∨ 소프트웨어 vs 프로그램
아마 소프트웨어와 프로그램이라는 단어를 자주 들으셨을 겁니다. 소프트웨어는 무엇이고 프로그램은 무엇일까요? 우선 컴퓨터가 무엇인지 알아야 합니다. 컴퓨터는 초기에는 세계 2차 전쟁에서 적군의 암호를 풀기 위해 사용되던 암호 해독 장치였습니다. 암호 해독만 하던 옛날 컴퓨터는 위대한 컴퓨터 과학자들의 손을 거쳐 현대에는 계산 이외에도 여러 프로그램 등을 작동시킬 수 있습니다. 즉, 현대 컴퓨터는 프로그램을 작동시키는 기계입니다. 그렇다면 프로그램은 무엇일까요? 프로그램은 컴퓨터가 해야할 일을 적어놓은 명령어들로 구성된 레시피 같은 것입니다.

예를 들자면 계산기는 숫자와 +, -를 누르면 숫자의 더하기, 빼기를 실행하게 하는 명령어들로 구성된 프로그램이고, 게임은 방향키를 누르면 이동하는 명령어와, 특정 키를 누르면 공격하거나 스킬을 쓰는 명령어들로 구성된 프로그램이라고 할 수 있죠.
그렇다면 소프트웨어는 무엇일까요? 대략적으로 표현하자면 하드웨어는 기계와 장치들의 세계를 의미하고 소프트웨어는 프로그램과 데이터들의 세계를 의미합니다. 이렇게만 알아도 좋지만 더 정확히 알고 싶다면 아래 내용을 읽어보시길 바랍니다.
사실 프로그램과 소프트웨어는 비슷한 단어입니다. 하지만 소프트웨어가 더 넓은 의미의 단어이죠. 대략적으로 표현하자면 하드웨어는 기계, 장치들의 세계를 의미하고 소프트웨어는 프로그램, 데이터들의 세계를 의미합니다. 프로그램이 소프트웨어라고 하면 맞지만 소프트웨어가 프로그램이라고 하면 약간 애매한 설명이 됩니다. 소프트웨어는 컴퓨터 시스템에서 실행되는 모든 프로그램과 관련된 데이터의 총칭입니다. 주로 컴퓨터를 구성하는 장치들(CPU, 메모리, 그래픽 카드, 마우스, 모니터 등등)을 하드웨어라고 합니다. 소프트웨어는 하드웨어와 대비되는 개념으로 컴퓨터를 구성하는 물리적 장치는 아니지만 컴퓨터가 동작하고 사용자가 원하는 기능을 수행할 수 있도록 하는 모든 프로그램과 데이터의 집합입니다.

∨ 프로그래밍 언어란?
위에서 프로그램이 컴퓨터가 작동할 명령어를 적어놓은 레시피라는 문장을 기억하시나요? 이 프로그램은 모두 사람이 만듭니다! 물론 프로그래밍 언어를 아는 사람만이 프로그램을 만들 수 있죠. 즉, 프로그래밍 언어는 프로그램을 만드는 도구입니다. 프로그래밍 언어로 컴퓨터가 실행할 명령들을 작성하죠. 참고로 프로그래밍 언어로 작성한 명령어들을 코드라고 합니다. 프로그램은 명령어들로 구성되니깐, 다른 말로 하면 프로그램은 코드로 구성되어 있는 것이죠.


프로그래밍 언어는 여러 가지가 있습니다. C언어라는 프로그래밍 언어로 프로그램을 만들 수 있고, 파이썬이라는 프로그래밍 언어로도 가능하고, 자바, Go, Ruby, Rust 등등 프로그래밍 언어 종류는 모두 다양하고 각각 개성이 있고 특징이 있습니다. 어떤 프로그램을 작성하느냐에 따라 어떤 프로그래밍 언어가 좋은 지도 달라집니다. 여기 강의에서는 많고 많은 프로그래밍 언어 중에서도 C 언어라는 프로그래밍 언어에 대해 배워보겠습니다!
∨ C언어

1970년대 초, 벨 연구소의 데니스 리치는 UNIX라는 운영체제를 더 체계적으로 만들기 위해 프로그래밍 언어인 C언어를 개발했습니다. C언어 이전 버전의 프로그래밍 언어였던 B언어는 너무 단순해서 복잡한 시스템을 만드는 데 한계가 있었기 때문입니다. 물론, C언어가 만들어지기 이전에도 어셈블리어 등의 프로그래밍 언어는 있었습니다. 하지만 어셈블리어와 같은 언어는 사람이 이해하는데 쉽지 않았고, 하드웨어 의존성이 컸습니다. 또 Fortran이나 COBOL과 같은 다른 프로그래밍 고급 언어는 특정 분야(과학 수치 계산, 비즈니스 계산)에 최적화되어 있어서 범용적인 시스템 프로그래밍에는 적합하지 않았습니다. (물론 어셈블리어와 Fortran은 특정 분야에서 아직도 쓰입니다.)
∨ C언어 활용 분야
C언어는 높은 성능과 효율성, 그리고 하드웨어를 직접 제어할 수 있는 특성 덕분에 하드웨어를 다루는 분야에서 핵심적인 위치를 차지하게 되었다. 오늘날에도 C언어는 운영체제, 임베디드 시스템, 컴파일러 등 다양한 분야에서 널리 사용되며, 여전히 중요한 프로그래밍 언어로 자리 잡고 있습니다. 또한, C언어는 이후 등장한 C++, Java 등 많은 프로그래밍 언어에 큰 영향을 주었으며, 현대 프로그래밍 언어의 기반이 되는 언어로 평가받고 있습니다.
- 운영체제(OS) 개발
→ Linux, Windows 일부 핵심 구성 요소 - 임베디드 시스템
→ 가전제품, 자동차 ECU, IoT 기기 등 (메모리·성능 제약 환경) - 컴파일러 및 인터프리터
→ GCC 같은 컴파일러 - 디바이스 드라이버
→ 키보드, 마우스, GPU 등 하드웨어 제어 - 시스템 소프트웨어
→ 파일 시스템, 네트워크 스택 등 - 네트워크 프로그램
→ 서버 프로그램, 소켓 통신 등 - 게임 엔진 및 고성능 프로그램 일부
→ 성능이 중요한 핵심 로직 - 데이터베이스 시스템
→ MySQL, SQLite - 보안 및 해킹/리버스 엔지니어링
→ 메모리 구조, 취약점 분석
∨ C언어를 사용하는 직군
그렇다면 C언어를 필수로 알아야 하는 직군은 무엇이 있을까요?
- 시스템 / OS 개발자
윈도우나 안드로이드, iOS같은 운영체제를 개발하고 관리하는 직군에서는 메모리와 프로세스, 하드웨어를 직접 다루므로 C언어를 필수적으로 알아야 합니다.
- 임베디드 개발자
임베디드 개발자는 컴퓨터 이외에 여러 가전 제품(냉장고, 에어컨 등)이나 자동차나 IoT 등의 장치에 프로그램을 이식하는 직군을 말합니다. 예를 들면 스마트폰으로 에어컨을 원격 조종할 수 있는 것은 에어컨 내부에도 네트워크를 할 수 있는 프로그램을 통해 스마트폰의 원격 조종 신호를 받을 수 있기 때문인데, 이처럼 임베디드 개발자는 다양한 전자기기 내부에서 동작하는 소프트웨어를 개발합니다. 하드웨어를 제어할 수 있는 C언어를 임베디드 개발자는 100% 무조건 알아야 합니다.
- 보안 전문가
보안 전문가는 시스템의 취약점을 분석하고 해킹을 방어하는 역할을 합니다. 특히 메모리 구조나 프로그램의 동작 원리를 이해해야 하기 때문에 하드웨어에 근접한 저수준 언어에 대한 지식이 중요합니다. C언어로 작성된 프로그램이 많고, 버퍼 오버플로우와 같은 취약점도 C언어 기반에서 자주 발생하기 때문에 C언어에 대한 이해는 필수적입니다.
- 게임 엔진 / 고성능 개발자
게임 엔진이나 그래픽 처리, 물리 연산 등 높은 성능이 요구되는 분야에서는 프로그램의 실행 속도가 매우 중요합니다. 이러한 분야에서는 불필요한 자원 사용을 줄이고 성능을 극대화해야 하기 때문에 C언어나 C++와 같은 언어가 주로 사용됩니다.
- 네트워크 / 시스템 프로그래머
네트워크 통신이나 서버 프로그램을 개발하는 직군에서는 데이터 처리 속도와 안정성이 중요합니다. 특히 많은 사용자의 요청을 처리해야 하는 환경에서는 성능이 중요한 요소가 되므로, C언어를 활용하여 효율적인 프로그램을 개발하기도 합니다.
- 컴파일러 / 언어 개발자
컴파일러는 프로그래밍 언어를 컴퓨터가 이해할 수 있는 기계어(0과 1)로 바꿔주는 프로그램을 의미합니다. 이런 컴파일러, 혹은 프로그래밍 언어 자체를 개발하는 직군에서는 언어의 동작 원리와 메모리 구조에 대한 깊은 이해가 필요합니다. 이러한 시스템 소프트웨어는 주로 C언어로 구현되는 경우가 많기 때문에, C언어에 대한 이해가 매우 중요합니다. 예를 들어 GCC와 같은 컴파일러는 C언어로 개발되었습니다.
'지식 아카이브 > C언어' 카테고리의 다른 글
| Chapter5. C언어 : 변수의 선언, 대입, 초기화, 참조. (0) | 2026.04.15 |
|---|---|
| Chapter4. C언어 : only 실습 모드 (0) | 2026.04.15 |
| Chapter3. C언어 : 코드에 대한 기본 구조. 주석 (0) | 2026.04.15 |
| Chapter2. C언어 : 프로그램이 만들어지는 과정. 컴파일과 링킹 (0) | 2026.04.15 |
| Chapter1. C언어 : Visual Studio 환경 설정하기, 비쥬얼 스튜디오. (0) | 2026.04.01 |
