프로그래밍 용어, 쉽게 풀어 설명
코딩을 시작하면 만나게 되는 단어들을 짧고 정확하게 정의했어요. 용어마다 페이지가 따로 있고, 브라우저에서 실행해 볼 수 있는 예제, 흔히 하는 실수, 이어지는 용어로 가는 링크가 들어 있어요.
코드가 실행되는 방식
입력한 코드가 실행되는 프로그램이 되기까지 일어나는 일: 컴파일러, 인터프리터, 런타임 환경, 운영체제.
소스 코드소스 코드는 프로그래머가 파이썬, 자바, C 같은 언어로 작성해 일반 텍스트 파일로 저장한, 사람이 읽을 수 있는 프로그램의 텍스트입니다. 컴파일러나 인터프리터가 이 텍스트를 컴퓨터가 실행할 수 있는 명령으로 바꿔요.컴파일러컴파일러는 프로그래밍 언어로 작성한 소스 코드를 프로그램이 실행되기 전에 기계어나 바이트코드 같은 더 낮은 수준의 형태로 번역하는 프로그램입니다. 번역된 프로그램은 원래 소스 없이도 실행할 수 있어요.인터프리터인터프리터는 프로그램 전체를 별도의 기계어 파일로 먼저 번역하지 않고, 소스 코드를 직접 실행하면서 그 명령을 차례로 수행하는 프로그램입니다. 파이썬과 루비의 표준 구현이 인터프리터예요.런타임 환경런타임 환경은 프로그램이 실행되는 동안 그 주변에 필요한 소프트웨어입니다. 코드를 실행하는 엔진, 프로그램이 호출하는 표준 라이브러리, 그리고 메모리, 오류, 운영체제 접근을 관리하는 기능으로 이루어져요. JVM, Node.js, CPython이 그 예예요.운영체제운영체제(OS)는 컴퓨터의 하드웨어를 관리하고 다른 모든 프로그램을 실행하는 소프트웨어입니다. 프로세서, 메모리, 저장 장치를 프로그램들 사이에 나눠 주고, 파일, 네트워크, 입출력을 제공해요. 윈도우, macOS, 리눅스, 안드로이드, iOS가 운영체제예요.
프로그램의 기본 요소
모든 프로그램을 이루는 기본 요소: 값, 변수, 배열, 반복.
변수프로그래밍에서 변수는 프로그램이 실행되는 동안 읽고 바꿀 수 있는 값을 저장하는, 이름이 붙은 메모리 공간입니다. score나 user_name 같은 이름 덕분에 코드는 값이 어디에 저장되어 있는지 몰라도 그 값을 가리킬 수 있어요.불리언프로그래밍에서 불리언은 참(true)과 거짓(false), 딱 두 가지 값만 가지는 자료형입니다. 프로그램은 age >= 18 같은 비교로 불리언을 얻고, if 문과 반복문의 조건에서 어떤 코드를 실행할지 정하는 데 써요.배열배열은 같은 타입의 값 여러 개를 하나의 연속된 메모리 블록에 저장하는 자료구조입니다. 요소라고 부르는 각 값에는 인덱스라는 위치 번호로 접근하며, 인덱스는 대부분의 언어에서 0부터 시작해요.반복프로그래밍에서 반복(이터레이션)은 조건이 충족되거나 컬렉션의 모든 항목을 처리할 때까지, 보통 반복문으로 명령 묶음을 되풀이하는 것입니다. 되풀이되는 명령을 한 번 지나가는 것도 이터레이션이라고 불러요.
오류와 디버깅
세 가지 오류, 프로그램이 오류를 다루는 방법, 그리고 C 프로그래머가 가장 먼저 만나는 충돌.
구문 오류구문 오류(syntax error)는 콜론, 괄호, 따옴표를 빠뜨리는 것처럼 코드의 구조가 프로그래밍 언어의 문법 규칙을 어긴 실수입니다. 컴파일러나 인터프리터는 프로그램을 한 줄도 실행하기 전에 이 코드를 거부합니다.런타임 오류런타임 오류(runtime error)는 프로그램이 실행되는 도중에, 0으로 나누기나 리스트 끝을 넘어서 읽기처럼 가진 값으로는 연산을 수행할 수 없을 때 발생하는 오류입니다. 오류를 처리하지 않으면 프로그램은 그 줄에서 멈춥니다.논리 오류논리 오류(logic error)는 프로그램의 추론이 잘못되어, 비정상 종료나 오류 메시지 없이 틀린 결과를 내는 실수입니다. 코드는 올바르고 모든 줄이 실행되지만, 프로그래머가 의도한 대로 동작하지 않습니다.예외 처리예외 처리(exception handling)는 프로그램이 실행 중에 발생하는 오류에 대응하는 방법입니다. 실패할 수 있는 코드를 try 같은 보호 블록에 넣고, 오류가 발생하면 프로그램이 멈추는 대신 except나 catch 같은 처리기로 제어가 넘어갑니다.세그멘테이션 오류세그멘테이션 오류(segmentation fault, segfault)는 널 포인터를 통해 주소 0에 접근하는 것처럼, 프로그램이 접근이 허용되지 않은 메모리를 읽거나 쓰려 할 때 일어나는 비정상 종료입니다. 운영체제가 SIGSEGV 시그널로 프로그램을 멈춥니다.
데이터와 저장
컴퓨터가 데이터를 저장하고 손상 없이 도착했는지 확인하는 방법: 비트, 바이트, 체크섬, 데이터베이스.
비트비트(bit)는 binary digit(이진 숫자)의 줄임말로, 컴퓨팅에서 데이터의 가장 작은 단위이며 0 또는 1 중 하나의 값을 가집니다. 컴퓨터는 숫자와 텍스트부터 이미지와 프로그램까지 모든 정보를 비트의 연속으로 저장하고 처리합니다.바이트바이트(byte)는 8비트로 이루어진 디지털 데이터 단위로, 0부터 255까지 256가지 값을 나타낼 수 있습니다. 대부분의 컴퓨터에서 자기 주소를 가지는 가장 작은 메모리 단위이며, 파일 크기는 바이트로 셉니다.체크섬체크섬(checksum)은 파일이나 네트워크 패킷 같은 데이터 블록에서 계산해 데이터와 함께 저장하거나 전송하는 짧은 값입니다. 나중에 다시 계산해 두 값을 비교하면 데이터가 손상이나 전송 오류로 바뀌었는지 알 수 있습니다.데이터베이스데이터베이스(database)는 프로그램이 빠르고 안전하게 찾고, 추가하고, 변경하고, 삭제할 수 있도록 컴퓨터에 저장한 체계적인 데이터 모음입니다. PostgreSQL, MySQL, SQLite, MongoDB 같은 데이터베이스 관리 시스템(DBMS)이라는 소프트웨어가 이를 관리합니다.
객체 지향 프로그래밍
클래스와 객체를 떠받치는 생각: 데이터 숨기기, 공통 인터페이스 공유, 세부 사항 감추기.
캡슐화객체지향 프로그래밍에서 캡슐화(encapsulation)는 객체의 데이터와 그 데이터를 다루는 메서드를 보통 클래스라는 하나의 단위로 묶고, 내부 세부 사항을 숨겨서 다른 코드가 공개된 메서드를 통해서만 객체를 사용하게 하는 것입니다.다형성프로그래밍에서 다형성(polymorphism)은 함수 호출이나 메서드 이름 같은 하나의 코드가 서로 다른 타입의 값과 함께 동작하고, 각 타입이 자신만의 동작을 제공하는 능력입니다. shape.area()를 호출하면 원과 정사각형에서 서로 다른 계산이 실행됩니다.추상화프로그래밍에서 추상화(abstraction)는 어떤 것이 동작하는 방식의 세부 사항을 더 단순한 인터페이스 뒤에 숨겨서, 그것이 무엇을 하는지만 알고도 사용할 수 있게 하는 것입니다. sorted(names)를 호출하면 정렬 알고리즘을 직접 작성하거나 보지 않고도 리스트가 정렬됩니다.
자주 묻는 질문
초보자는 어떤 프로그래밍 용어부터 알아야 하나요?
코딩을 시작하기 전에 이 용어들을 알아야 하나요?
아니요. 대부분은 작은 프로그램을 짜다가 모르는 단어가 나오면 찾아보면서 익혀요. 용어가 설명하는 오류나 출력을 한 번 직접 보고 나면 훨씬 빨리 기억에 남아요.
프로그래밍 용어는 언어마다 같나요?
개념은 같아요. 이름과 세부 사항이 달라요. 파이썬은 배열을
list라고 부르고 True라고 쓰고, 자바스크립트는 true라고 쓰며, 자바는 변수의 타입을 선언하게 해요. 각 페이지에서 언어마다 다른 점을 짚어 두었어요.이 개념들은 어디서 연습할 수 있나요?
용어 페이지마다 브라우저에서 고쳐 실행할 수 있는 예제가 있어요. 체계적으로 연습하고 싶다면 Coddy의 무료 파이썬 강의에서 변수, 반복문, 오류, 클래스를 작은 연습 문제로 하나씩 익힐 수 있어요.