티스토리 뷰
04_프로그래밍 언어
•프로그래밍 언어의 이해
•IDE의 개념과 역할을 설명할 수 있다.
•편집기, 컴파일러, 디버거, 링커의 기능을 이해한다.
•컴파일 방식과 인터프리터 방식을 비교할 수 있다.
소스코드에서 실행까지의 전체 과정을 설명할 수 있다.
알고리즘으로 문제해결을 위한 절차를 설계 했다면, 이제는 컴퓨터로 이를 구현하기 위한 프로그래밍을 해야 합니다. 즉 특정활동을 컴퓨터에게 시키려며 프로그래밍 작업이 필요하다. 그 전에 프로그래밍을 하기 위해 어떠한 프로그래밍 언어가 있는지 살펴보도록 하겠습니다.
자연어 -> 컴퓨터 언어로 변환
알고리즘을 구현하려면
- 컴퓨터가 읽어서 처리할 수 있는 명령어와 사용 문법에 맞게 프로그래밍을 작성하여야 컴퓨터가 실행
자연어를 컴퓨터 언어로 변환하여 알고리즘을 구현하려면, 컴퓨터가 이해할 수 있는 명령어와 문법을 사용해 프로그래밍을 해야 한다. 이는 사람의 언어와는 달리 컴퓨터가 실행할 수 있는 정확하고 명확한 언어로 알고리즘을 표현하는 것을 의미한다.
프로그래밍 언어 컴퓨터에게 작업을 지시하기 위해 사용하는 언어로, 다양한 수준과 종류가 있다.
프로그래밍 언어는 크게 저급 언어와 고급 언어로 분류할 수 있습니다. 이 분류는 언어의 추상화 수준에 따라 이루어집니다.
•컴퓨터에게 작업을 지시하기 위해 사용하는 언어
•기계어, 어셈블리어, C, C++, 자바, 파이썬, 스크래치…
•저급언어와 고급언어
여기서 잠깐!
• 프로그램 : 컴퓨터로 문제를 해결하기 위해 작성하는 명령어들의 모임
• 프로그래밍 : 프로그램을 작성하는 과정
• 프로그래머 : 프로그램을 작성하는 사람 또는 직업

저급 언어 (Low-Level Language): 사람이 이해하기 힘든 언어
- 기계어 (Machine Language):
- 컴퓨터가 직접 이해할 수 있는 언어로, 0과 1로 이루어진 이진수로 구성되어 있다.
- CPU의 종류에 따라 고유한 명령어가 존재하며, 매우 낮은 수준의 명령어로 이루어져 있어 컴퓨터가 빠르게 실행할 수 있다.
- 그러나 사람에게는 이해하고 작성하기 매우 어렵다.
- 예시: 01011011 등의 이진수
- 어셈블리어 (Assembly Language):
- 기계어를 사람이 이해할 수 있는 문자 형식으로 바꿔 놓은 언어이다.
- 기계어와 1:1로 매핑되는 관계를 가지며, 프로세서의 명령어와 직접적으로 연관된 언어이다.
- 어셈블리어는 기계어보다는 읽기 쉽지만 여전히 하드웨어에 밀접하게 종속적이기 때문에, 프로그래밍하기 까다롭다.
- 예시: MOV, ADD 등의 명령어를 사용
저급 언어는 컴퓨터와 매우 가까운 언어로, 프로그래머가 하드웨어를 직접 제어할 수 있는 능력을 제공하지만, 코드 작성과 유지보수가 어렵다는 단점이 있다.
고급 언어 (High-level Language):
- 사람이 이해하기 쉬운 언어:
고급 언어는 사람들이 사용하는 단어와 비슷하여 이해하기 쉬운 언어로 구성되어 있다. 이는 프로그래밍 언어가 일상 언어와 가까운 형태로 만들어져 있어 학습과 사용이 용이하다. - 작성 용이성:
프로그램을 작성할 때 명령어가 일상 언어와 비슷하여 기계어와 비교했을 때 훨씬 이해하기 쉽고 간결하게 코드를 작성할 수 있다. 이는 개발자에게 더 많은 생산성을 제공한다. - 저급 언어와의 차이점:
기계어와 어셈블리어를 제외한 대부분의 언어가 고급 언어로 분류되며, 저급 언어에 비해 코딩 부분이 훨씬 줄어들어 프로그램 개발 시간이 단축되고 유지보수도 용이하다. - 하드웨어 독립성:
고급 언어는 컴퓨터 하드웨어에 독립적이다. 이는 하나의 코드가 다양한 하드웨어 환경에서 실행될 수 있음을 의미하며, 컴파일러 또는 인터프리터를 통해 기계어로 변환되어 실행된다. - 예시 언어:
고급 언어의 예로는 C 언어, C++, 자바 (Java), C#, 파이썬 (Python) 등이 있다. 이러한 언어들은 각각의 특성과 용도에 맞게 다양한 분야에서 사용된다.
고급 언어는 복잡한 작업을 간단하게 처리할 수 있도록 하며, 개발자의 생산성을 크게 향상시킨다.
프로그래밍 언어 개발 도구
아래 도구들은 프로그램 개발 과정에서 필수적으로 사용되며, 각각의 도구는 소프트웨어 개발의 다양한 단계에서 중요한 역할을 한다.
- 편집기 (Editor):
- 프로그램 명령어인 소스 코드를 작성하고 편집하는 도구이다. 프로그래밍 언어로 작성된 내용을 수정하거나 새로 작성할 때 사용된다.
- 컴파일러 (Compiler):
- 개발 도구에서 가장 중요한 역할을 한다. 작성된 고급 프로그래밍 언어를 컴퓨터가 이해할 수 있는 기계어로 변환해 준다.
- 디버거 (Debugger):
- 작성된 프로그램에서 발생하는 오류를 찾아 수정할 수 있도록 도와주는 도구이다. 프로그램이 의도한 대로 동작하지 않을 때 사용된다.
- 링커 (Linker):
- 여러 목적 파일을 하나의 실행 파일로 만들어주는 기능을 담당한다. 각 파일이 상호 연결되어 동작할 수 있도록 해 준다.
통합 개발 환경(IDE: Integrated Development Environment)
통합 개발 환경(IDE: Integrated Development Environment)은 소프트웨어 개발을 위한 여러 도구들을 하나의 소프트웨어 패키지로 통합하여 제공하는 개발 환경을 의미한다. 개발자가 효율적으로 프로그램을 작성, 수정, 디버깅, 실행할 수 있도록 다양한 기능을 지원한다.
IDE의 주요 구성 요소:
- 편집기 (Editor):
- 코드 작성 및 수정에 사용되는 도구이다. 문법 강조(Syntax Highlighting), 자동 완성 등의 기능을 통해 개발자가 코드 작성 시 편의성을 제공한다.
- 컴파일러/인터프리터 (Compiler/Interpreter):
- 작성된 소스 코드를 컴퓨터가 이해할 수 있는 기계어로 변환해주는 도구이다. 대부분의 IDE에는 이 컴파일러가 내장되어 있어 개발자가 작성한 코드를 바로 실행할 수 있다.
- 디버거 (Debugger):
- 프로그램 실행 중 발생하는 오류를 찾아 수정할 수 있도록 도와주는 도구이다. 개발자가 코드의 오류를 쉽게 확인하고 해결할 수 있게 한다.
- 빌드 자동화 도구 (Build Automation Tools):
- 코드 컴파일, 패키징, 테스트 등을 자동화해주는 도구이다. 복잡한 빌드 과정을 자동으로 처리해 개발 속도를 높인다.
- 버전 관리 시스템 (Version Control System):
- 프로젝트의 소스 코드 변경 내역을 추적하고, 다양한 버전 관리 시스템(Git, SVN 등)과 통합하여 코드 관리가 가능하도록 지원한다.
IDE의 장점:
- 편리한 코드 작성: 문법 강조, 자동 완성, 코드 템플릿 등 다양한 기능을 통해 코드 작성이 효율적이다.
- 즉각적인 피드백: 코드 작성 후 바로 실행하고 디버깅할 수 있어 실시간으로 피드백을 받을 수 있다.
- 통합된 환경: 여러 개발 도구가 하나의 환경에서 작동하므로, 개발자가 따로 도구를 설치하거나 관리할 필요가 없다.
- 생산성 향상: 다양한 자동화 도구를 사용하여 프로젝트 개발 속도를 높일 수 있다.
대표적인 IDE:
- Visual Studio: 마이크로소프트에서 제공하는 IDE로, 주로 C#, .NET 개발에 사용된다.
- Eclipse: 자바 개발에 널리 사용되는 IDE이다.
- PyCharm: 파이썬 개발에 특화된 IDE이다.
- IntelliJ IDEA: 자바와 다양한 언어를 지원하는 강력한 IDE이다.
- Xcode: macOS, iOS용 애플리케이션을 개발하기 위한 IDE이다.
- Android Studio: Android 애플리케이션 개발을 위한 IDE이다.
컴파일과 인터프리트
컴파일러와 인터프리터는 고급 프로그래밍 언어로 작성된 소스 코드를 컴퓨터가 이해하고 실행할 수 있도록 변환하는 도구입니다. 그러나 이 둘은 작동 방식과 사용 목적에서 차이가 있습니다.

컴파일러 (Compiler):
- 동작 방식: 컴파일러는 소스 코드를 한 번에 기계어로 변환하여 실행 파일(executable file)을 생성한다. 생성된 실행 파일은 별도의 컴파일 과정 없이 나중에 바로 실행할 수 있다.
- 예시: C, C++, 자바(Java) 등이 대표적인 컴파일 언어이다.
- 장점:
- 컴파일이 완료된 후에는 프로그램이 매우 빠르게 실행된다.
- 소스 코드가 기계어로 변환된 상태에서 실행되므로, 배포할 때 소스 코드가 노출되지 않는다.
- 단점:
- 컴파일 과정에서 전체 소스 코드를 한 번에 변환하므로, 코드 변경 후에는 다시 컴파일해야 한다.
- 실행 파일을 생성하기까지 시간이 걸리며, 디버깅이 복잡할 수 있다.
인터프리터 (Interpreter):
- 동작 방식: 인터프리터는 소스 코드를 한 줄씩 읽고 실행한다. 소스 코드가 실행될 때마다 인터프리터가 즉시 해석하고 그 결과를 반환한다.
- 예시: 파이썬(Python), 루비(Ruby), 자바스크립트(JavaScript) 등이 인터프리터 언어로 사용된다.
- 장점:
- 코드 수정 후 바로 실행할 수 있으므로 개발과 테스트가 빠르다. (수정한 부분만 다시 실행 가능합니다.)
- 한 줄씩 실행되기 때문에 디버깅이 상대적으로 용이하다.
- 플랫폼 독립적입니다. (소스 코드가 그대로 유지되므로 다양한 환경에서 실행 가능합니다.)
- 단점:
- 실행할 때마다 소스 코드를 해석해야 하므로, 프로그램 실행 속도가 느릴 수 있다.
- 코드가 그대로 노출되므로, 배포 시 소스 코드 보호가 어렵다.
비교 요약:
- 컴파일러는 전체 코드를 한 번에 변환하여 기계어로 실행 파일을 생성하는 방식으로, 빠른 실행 속도가 장점이다.
- 인터프리터는 코드를 한 줄씩 해석하며 즉시 실행하는 방식으로, 개발 편의성이 뛰어나지만, 실행 속도는 느릴 수 있다.
소스작업
소스 코드 (Source Code):프로그램 언어를 이용하여 원하는 작업을 기술한 내용을 소스 코드 또는 간단히 코드라고 한다. 개발자는 소스 코드를 편집기를 통해 작성하며, 이는 컴파일러나 인터프리터에 의해 실행 가능한 형태로 변환된다.예시로, C 언어로 작성된 소스 코드를 보면, #include <stdio.h>로 표준 입력/출력 라이브러리를 포함하고, main() 함수 안에 "첫 C 프로그램!"이라는 문자열을 출력하는 코드를 작성했다. 이와 같은 소스 코드는 컴파일 과정을 거쳐 실행 파일로 변환되거나, 인터프리터에 의해 바로 실행될 수 있다.
소스 코드는 프로그램의 핵심이며, 컴퓨터가 처리해야 할 명령어를 사람이 이해할 수 있는 형태로 작성한 것이다.
프로그램 구현 과정

1. 소스 코드 (Source Code):
- 설명: 개발자가 편집기에서 작성한 코드로, 컴파일링(compiling)이나 어셈블러(assembler)에 의해 기계어로 변환된다.
- 과정:
- 컴파일러 또는 어셈블러를 통해 소스 코드는 목적 파일 (Object File)로 변환된다.
2. 목적 파일 (Object File):
- 설명: 컴파일 또는 어셈블 과정을 거쳐 생성된 파일이다. 목적 파일은 바로 실행할 수 없고, 다른 목적 파일과 함께 링커 (Linker)에 의해 연결된다.
- 과정:
- 링커가 목적 파일들을 연결하여 실행 파일을 생성한다.
3. 실행 파일 (Execute File):
- 설명: 링커를 통해 생성된 실행 파일은 실제로 컴퓨터에서 실행될 수 있는 파일이다. 이 파일은 로더 (Loader)에 의해 메모리에 적재된 후 실행된다.
- 과정: 로더는 실행 파일을 메모리에 적재한 후, 프로그램이 실행되도록 한다.
구현 과정 전체 흐름:
- 원시 코드 작성 (Source Code)
- 어셈블러 또는 컴파일러를 통해 목적 파일 생성 (Object File)
- 링커를 통해 목적 파일들을 연결하여 실행 파일 생성 (Execute File)
- 로더가 실행 파일을 메모리에 적재하고, 프로그램이 실행됨.
디버깅 (Debugging)과 디버거:
- 디버깅: 컴파일 에러나 실행 중 발생하는 에러를 수정하는 과정을 의미한다. 프로그램의 명령을 수행하는 동안 발생한 오류를 찾아 수정하는 것이 디버깅의 목표이다.
- 디버거: 디버깅을 도와주는 프로그램으로, 컴퓨터의 상태를 보여주거나 명령어 수행 중 발생하는 오류를 쉽게 찾아낼 수 있도록 도와준다. 개발자는 이 도구를 사용하여 문제를 추적하고 수정할 수 있다.
- 중요성: 처음부터 오류가 없는 프로그램을 작성하는 것은 매우 어려우므로, 디버깅 과정은 필수적이다. 디버깅을 통해 개발자는 프로그램을 점진적으로 개선해나가며, 경험이 많아질수록 에러를 쉽게 찾고 수정할 수 있게 된다.
에러 또는 오류의 종류:
- 컴파일 에러: 컴파일 과정에서 발생하는 오류로, 주로 문법 오류나 잘못된 명령어 사용으로 인해 발생한다.
- 링크 에러: 프로그램 내의 다른 파일이나 라이브러리와 연결하는 과정에서 발생하는 오류이다.
- 실행 에러 (런타임 에러): 프로그램이 실행되는 동안 발생하는 오류로, 주로 메모리 문제나 잘못된 연산 등으로 인해 발생한다.
디버깅은 프로그램 개발 과정에서 중요한 역할을 하며, 에러를 추적하고 수정하여 프로그램이 제대로 동작할 수 있도록 한다.
반응형
반응형
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
링크
TAG
- 텍스트마이닝
- 챗봇
- 스마트기술
- 텍스트 마이닝
- UI
- 데이타R지
- HIG
- 파이썬
- 데이터R지
- IOT
- 휴리스틱평가
- 사물인터넷
- UX
- 프로토타입
- Idle
- 초보자를 위한 텍스트마이닝
- 컴퓨팅사고력
- 라이브러리
- 안드로이드
- figma
- 파이썬기초
- 챗GPT
- python
- 4차산업혁명
- 피그마
- 관계자분석
- Text Mining
- 파이썬 기초
- HCI
- matplotlib
| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 1 | 2 | 3 | 4 | 5 | 6 | 7 |
| 8 | 9 | 10 | 11 | 12 | 13 | 14 |
| 15 | 16 | 17 | 18 | 19 | 20 | 21 |
| 22 | 23 | 24 | 25 | 26 | 27 | 28 |
| 29 | 30 | 31 |
글 보관함
