컴퓨터와 프로그래밍의 언어 이해

컴퓨터와 프로그래밍 언어의 이해

프로그래밍을 시작할 때 가장 먼저 마주하는 관문은 컴퓨터가 정보를 처리하는 방식과 우리가 작성하는 코드가 실행되는 원리를 이해하는 것입니다. 본 가이드에서는 하드웨어의 기본 구조부터 프로그래밍 언어의 단계, 번역 방식, 운영체제별 명령어, 그리고 개발 환경(IDE 및 텍스트 편집기)까지 핵심 내용을 체계적으로 정리해 드립니다.

1. 하드웨어 구성

컴퓨터는 이진수(Binary, 0과 1)만을 사용해 정보를 처리합니다. 인간의 자연어와 달리 기계어로 작동하는 컴퓨터의 뼈대를 이해하면 프로그래밍 사고가 훨씬 명확해집니다.

  • 주요 구성 요소: CPU(중앙처리장치), 메모리(RAM), 저장장치(SSD/HDD), GPU(그래픽처리장치), 네트워크 장치

  • 핵심 의의: 프로그래밍은 결국 컴퓨터에게 일을 시키는 과정이므로, 하드웨어가 어떻게 상호작용하는지 이해하는 것이 코딩 실력 향상의 밑바탕이 됩니다.

2. 프로그래밍 언어의 단계와 분류

프로그래밍 언어는 기계어(이진수)를 이해하는 컴퓨터에게 명령을 내리기 위해 인간이 쉽게 사용할 수 있도록 만든 도구입니다.

2.1 발전 단계별 3가지 구분

  1. 기계어 (Machine Language): CPU가 직접 이해하는 언어로, 0과 1로 이루어진 이진 코드이며 매우 복잡하고 사람이 읽기 어렵습니다.

  2. 어셈블리어 (Assembly Language): 기계어를 사람이 읽기 쉽게 바꾼 것으로, add, mov 같은 니모닉(Mnemonics)을 사용합니다. 하드웨어에 종속되어 이식성(Portability)이 낮습니다.

  3. 고급 언어 (High-level Language): 인간의 언어와 가장 유사하며(C, C++, Java, Python, JavaScript 등), 하드웨어에 독립적이어서 이식성이 높습니다. 단, 컴퓨터가 직접 이해할 수 없으므로 번역 과정이 필수적입니다.

2.2 저수준 언어 vs 고수준 언어

  • 저수준 언어 (Low-level Languages): 시스템 프로그래밍이나 하드웨어 제어에 적합합니다.

    • 특징: 메모리 주소나 포인터를 직접 다루며 실행 속도가 매우 빠르나, 하드웨어에 종속적입니다.

    • 예시: C (운영체제, 임베디드 시스템), C++ (게임, 고성능 애플리케이션)

  • 고수준 언어 (High-level Languages): 인간의 사고방식에 가까우며 하드웨어 복잡성을 크게 신경 쓰지 않아도 됩니다.

    • 특징: 문법이 간결하여 생산성이 높고, 메모리 관리 등이 자동화되어 안정성이 높습니다.

    • 예시: Python (데이터 분석, AI, 웹), Java (엔터프라이즈 시스템, 안드로이드), JavaScript (웹 동적 기능 구현)

3. 컴파일러와 인터프리터 (번역 방식)

고급 언어를 기계어로 번역하는 방식은 크게 세 가지로 나뉩니다.

  • 컴파일러 (Compiler): 프로그램 전체 소스 코드를 한꺼번에 기계어로 번역해 실행 파일을 만듭니다. 실행 속도는 빠르지만 수정 시 전체를 다시 번역해야 합니다. (예: C, C++, Rust)

  • 인터프리터 (Interpreter): 소스 코드를 한 줄씩 읽어 바로 실행합니다. 컴파일 과정이 없어 빠르게 테스트할 수 있으나 실행 속도는 컴파일 방식보다 느립니다. (예: Python, JavaScript, Ruby)

  • 하이브리드 방식 (가상 머신 기반): Java처럼 소스 코드를 중간 단계인 바이트코드(Bytecode)로 컴파일한 후, 가상 머신(JVM)이 이를 실행합니다. “한 번 작성하면 어디서든 실행된다(Write Once, Run Anywhere)”는 이식성의 장점을 가집니다.

4. 운영체제(OS)별 기본 명령어

터미널이나 명령 프롬프트에서 사용하는 주요 운영체제별 기본 명령어와 예시입니다. 대소문자를 구분하는 등의 특징에 유의해야 합니다.

4.1 Linux (예: Ubuntu)

서버와 AI 개발에 널리 쓰이는 오픈소스 OS입니다. (대소문자 구분 필수)

  • ls: 현재 폴더 목록 보기 (예: ls → 파일 목록 출력)

  • cd 경로: 폴더 이동 (예: cd Documents)

  • pwd: 현재 작업 중인 폴더 경로 확인

  • mkdir 폴더명: 새 폴더 생성 (예: mkdir ai_project)

  • touch 파일명: 새 빈 파일 생성 (예: touch script.py)

  • rm 파일명: 파일 삭제

  • cat 파일명: 파일 내용 보기

  • sudo apt update / sudo apt install python3: 패키지 업데이트 및 Python3 설치

4.2 macOS

Unix 기반으로 Linux와 유사한 터미널 명령어를 사용하며, 필수 패키지 매니저로 Homebrew를 활용합니다.

  • ls, cd, pwd, mkdir, touch, rm, cat 명령어는 Linux와 동일하게 작동합니다.

  • brew install python3: Homebrew를 통한 Python3 설치

4.3 Windows

기본 명령 프롬프트(CMD) 및 PowerShell을 사용하며, AI 개발 시 Linux 환경을 제공하는 WSL2(Windows Subsystem for Linux) 활용이 유리합니다.

  • dir: 폴더 내 파일/폴더 목록 보기

  • cd 경로 / cd ..: 폴더 이동 / 상위 폴더로 이동

  • mkdir 폴더명: 새 폴더 생성

  • echo. > 파일명: 새 파일 생성 (예: echo. > script.py)

  • del 파일명: 파일 삭제

  • type 파일명: 파일 내용 보기

  • winget install python: Python 설치

  • 참고: PowerShell에서 wsl --install 입력 후 WSL2를 설치하면 Windows에서도 ls, sudo apt install python3 같은 Linux 명령어를 사용할 수 있습니다.

5. IDE(통합 개발 환경)와 텍스트 편집기

5.1 IDE vs 텍스트 편집기 비교

  • IDE (Integrated Development Environment): 코딩, 디버깅, 테스트, 실행을 한 환경에서 지원하는 강력한 소프트웨어입니다. 자동 완성 기능이 뛰어나 초보자에게 친화적이지만 시스템 자원을 많이 소모합니다.

  • 텍스트 편집기: 간단한 코드나 텍스트 편집에 특화된 경량 도구입니다. 빠르고 가볍지만 실행이나 디버깅을 위해 별도의 터미널이 필요합니다.

5.2 프로그래머가 많이 사용하는 IDE

  • Visual Studio Code (VS Code): 무료이며 가볍고, 강력한 확장 프로그램(Python, Jupyter Notebook 등)을 지원하여 초보자에게 가장 추천됩니다.

  • PyCharm Community Edition: Python 전용 무료 IDE로, AI 및 데이터 과학 학습에 특화되어 있으나 초보자에게 다소 복잡할 수 있습니다.

  • Jupyter Notebook: 웹 기반 인터랙티브 환경으로, 코드와 결과(시각화 그래프 등)를 동시에 확인 가능하여 머신러닝/딥러닝 튜토리얼에 널리 쓰입니다.

  • Android Studio: 안드로이드 앱 개발을 위한 공식 IDE로, 모바일 환경에서 TensorFlow Lite 등 경량화된 AI 모델을 통합·실습하는 데 유용합니다.

5.3 프로그래머가 많이 사용하는 텍스트 편집기

  • Sublime Text: 빠르고 가벼우며 플러그인으로 Python 지원을 강화할 수 있습니다 (디버깅 기능은 부재).

  • Notepad++: Windows 전용으로 가볍고 초보자에게 친숙하나, AI 개발 용도로는 기능이 다소 부족해 WSL2 등과 결합하여 주로 사용됩니다