개발 일지/CS

[CS] 프로그래밍의 이해

미숫가루설탕많이 2022. 12. 16. 11:59

 나에게 느리고, 반복적으로 계산하는 것만큼 지루한 일은 없다. 하지만 컴퓨터는 빠르게 계산하고, 지루함을 느끼지 않는다. 이러한 컴퓨터의 특성을 활용하여 컴퓨터에게 문제 해결을 요구하는 일종의 커뮤니케이션 과정을 프로그래밍이라고 한다. 우리는 이러한 과정을 통해 사람이 하기 어려운, 또는 번거로운 일을 컴퓨터에게 맡길 수 있다.

 

 

프로그래밍 (Programming)

 프로그래밍 혹은 코딩(Coding)은 프로그램을 만드는 것을 뜻하며, 하나 이상의 관련된 추상 알고리즘을 특정한 프로그래밍 언어를 이용해 구체적인 컴퓨터 프로그램으로 구현하는 기술이다.  특정 목적을 달성하기 위해 설계된 알고리즘을 컴퓨터가 이해할 수 있는 프로그래밍 언어를 사용해서 컴퓨터에게 문제 해결을 맡기는 일종의 커뮤니케이션이라고 생각할 수 있다.

 

프로그램 (Program)

프로그램은 프로그래밍의 결과로 만들어진 것이다. 즉, 프로그램은 어떠한 목적을 달성하기 위한 컴퓨터 명령문의 집합체라고 할 수 있다.

 

프로그래밍 언어 (Programming Language)

 컴퓨터에게 명령이나 연산을 시킬 목적으로 설계되어 컴퓨터와 의사소통을 할 수 있게 해주는 언어를 뜻한다. 컴퓨터는 사람의 언어를 이해할 수 없기 때문에 문제 해결을 주문하려면 컴퓨터가 이해할 수 있는 언어로 설명해주어야 한다. 하지만 우리도 기계어는 이해하기 어렵기 때문에 컴퓨터의 언어와 사람의 언어를 매개해 줄 무언가가 필요한데 그것이 바로 프로그래밍 언어이다. 모든 프로그래밍 언어는 사람이 이해할 수 있으면서도 컴퓨터의 자세한 동작을 기술할 수 있도록 설계되고 만들어졌다. 따라서 우리는 복잡한 기계어 코드를 배울 필요없이 비교적 사람의 언어와 가까운 프로그래밍 언어를 사용함으로써, 컴퓨터와 소통을 할 수 있다.

 

 기계어와 같이 컴퓨터에게 가까운 언어일수록 저수준 언어라고 하며, 반대로 Java 및 C언어와 같이 사람과 가까운 언어일수록 고수준 언어라고 한다.

 

b8 21 0a 00 00 a3 0c 10 00 06 b8 6f 72 6c 64 a3 08 10 00 06 b8 6f 2c 20 57
a3 04 10 00 06 b8 48 65 6c 6c a3 00 10 00 06 b9 00 10 00 06 ba 10 00 00 00
bb 01 00 00 00 b8 04 00 00 00 cd 80 b8 01 00 00 00 cd 80

<Hello World! 를 출력하는 기계어 코드>

System.out.println("Hello World!");

<Hello World! 를 출력하는 프로그래밍 언어>

 

 

 

컴파일 (Compile)

 프로그래밍 언어는 그저 사람의 언어와 컴퓨터의 언어를 매개할 뿐, 컴퓨터는 프로그래밍 언어로 작성된 소스 코드를 이해하지 못한다. 그래서 소스 코드를 작성한 후에 컴퓨터에게 내용을 전달하려면 소스 코드를 기계어 코드로 변환시켜주어야 한다. 이처럼 프로그래밍 언어로 작성된 소스 코드를 컴퓨터가 이해할 수 있는 기계어 코드로 번역하는 과정을 컴파일이라고 하며 이것을 자동으로 수행해주는 소프트웨어를 컴파일러(Compiler)라고 한다.

 

빌드 (Build)

 앞서 언급한 컴파일은 빌드라는 과정의 일부이다. 빌드는 작성한 소스 코드를 실행할 수 있는 산출물로 변환시키는 과정을 의미하는데, 그 과정 중에 소스 코드를 기계어 코드로 번역하는 컴파일 과정에 포함되어 있다. 컴파일을 마친 코드는 기계어 코드로 번역되어 컴퓨터가 이해할 수 있을 뿐, 아직 사용자가 소스 코드를 실행할 수는 없다. 프로그램이 실행되려면 .exe 또는 .msi 확장자를 가진 실행 파일로 만들어주는 빌드 과정이 필요하며, 빌드가 완료되어야 소스 코드가 비로소 실행시킬 수 있는 하나의 프로그램으로 완성된다.

 

통합개발환경 (Integrated Development Environment, IDE)

 통합개발환경이란 공통된 개발자 툴을 하나의 그래픽 사용자 인터페이스(Graphical User Interface, GUI)로 결합하는 애플리케이션을 구축하기 위한 소프트웨어이다. 프로그래밍에 필요한 모든 작업을 하나의 프로그램 안에서 처리할 수 있도록 만들어진 프로그램이며, IDE를 사용하면 단순히 코드를 작성하고 편집하는 것뿐만 아니라, 디버깅, 빌드 등의 작업을 하나의 IDE 안에서 할 수 있다. Visual Studio Code, IntelliJ, Eclipse 등이 대표적인 IDE에 해당한다.

'개발 일지 > CS' 카테고리의 다른 글

[자료구조] 큐(Queue)  (0) 2023.01.16
[자료구조] 스택(Stack)  (0) 2023.01.16
[Data Type] JSON(JavaScript Object Notation)  (0) 2023.01.13
[알고리즘] 재귀(Recursive)  (0) 2023.01.12
[CS] 컴퓨터의 이해  (2) 2022.12.16