프로그래밍 : 컴퓨터에게 일련의 명령을 수행하는 프로그램을 만드는 과정.
- 프로그래밍(Programming); 컴퓨터에게 일을 시키자
- 컴퓨터에게 일을 시키기 위해서는 소통 수단 프로그래밍 언어(Programming Language)가 필요하다.
- 프로그래밍 언어를 통해서 일을 어떻게 하면 되는지 컴퓨터에게 알려준다.
- 이 과정 전반을 프로그래밍 또는 코딩(Coding)이라고 합니다.
즉, 컴퓨터 공학은 컴퓨터 일을 잘 시키는 걸 배우는 분야
프로그 래밍의 구성 요소
- 코드 (Code) - 특정 프로그래밍 언어로 기술되는 텍스트.
def say_welcome(name):
print(f"Hello World! {name}!")
say_welcome("Yongdam")
- 언어이기 때문에, 문법(Syntax)과 의미론(Semantic)이 있음.
- 컴퓨터는 코드 그 자체를 그대로 믿기 때문에 문법이 틀린 코드를 작성하면, 절대로 실행되지 않습니다!
- 코드를 잘 쓰기 위해서는(=컴퓨터에게 일을 잘 시키기 위해서는) 컴퓨터를 잘 이해해야 합니다.
- 컴퓨터 (Computer) - 코드를 수행하는 기계.
TMI : 컴퓨터의 발전과전(History of computer)
- 컴퓨터는 다음과 같은 구조로 되어 있습니다.
Computer Architecture(Von Neumann Architecture) : 폰 노이만이 제안한 현대 컴퓨터 구조.
Source : https://geteducationskills.com/computer-architecture/
- 우리가 이해해야 하는 중요한 3가지
- Central Processing Unit(CPU)
- 컴퓨터에서 일어나는 모든 연산을 담당하는 기관.
- 비트(어떤 정보를 담당하는 최소단위)로 되어있는 연산을 한다. 비트는 0또는 1로 되어있음
- 그런 64개, 32개의 명령을 처리해 주는 게 CPU다.
- 비트는 각각 정보를 담당하기 떄문에 그래서 비트가 크면 더 많은 정보를 담당할 수 있다.
- 즉 64비트, 32비트 아키텍처가 있으면 64비트가 더 좋은 하드웨어(한 번에 처리할 수 있는 정보량이 많음!)
- Memory=RAM (메인메모리: DRAM)
- 프로그래밍을 할 때 사용하는 모든 데이터, 코드가 올라와 있는 공간.
- 프로그래밍할때 메인으로 사용,
- 메모리가 부족->프로그램을 끄거나 데이터를 지우거나 해야 함..
- Input/Output Devices(IO Devices)
- 인풋디바이스: storage(HDD, SSD)
- 아웃풋디바이스: Monitor, Mouse, Keyboard, ...
- 우리가 작성한 프로그램은 모두 메모리 안에 상주하고 있습니다!
- 프로그램 입장에서 모든 처리는 메모리를 기준으로 이루어집니다.
- 즉 메모리 밖에 있는 장치들과 연결해줘야해서 CPU를 부르고, 데이터를 만들고, 메모리가 날아가도 데이터는 알아가지 않도록 하기 위해 반영구장치(스토리지)에 저장한다. 여기에 저장된 데이터를 불러오는 과정을 Load라고 한다.
- 저장 장치(storage)에 있는 데이터를 불러오는 Load, 메모리에 있는 내용을 저장 장치에 저장하는 Save 모두 I/O(input-output디바이스가 서로 소통하는 행위)에 해당합니다.
- 메모리에 있는 프로그램이 명령을 CPU로 보내는 fetch, CPU에서 해당 내용을 연산하고 처리하는 decode, execute, 다시 해당 내용을 메모리로 보내는 fetch까지 instruction cycle이라고 부릅니다.
- instruction cycle을 계속 돌면서 프로그램이 컴퓨터에서 실행이 됩니다.
요약
- 프로그래밍은 컴퓨터에게 일을 시키는 과정입니다.
- 프로그래밍의 구성 요소에는 코드 / 컴퓨터가 있습니다.
- 코드는 특정 프로그래밍 언어의 문법/의미론을 따릅니다.
- 컴퓨터는 폰 노이만 아키텍쳐로 구성되어 있습니다. (CPU, Memory, I/O Devices)
- 데이터와 프로그램은 메모리에 상주하며, 모든 연산은 CPU가 담당합니다.
- 프로그램에서 수행한 결과를 저장하고 싶을 때는 저장 장치에 Save를 합니다.
- Instruction cycle을 통해서 CPU는 지속적으로 주어진 일을 처리합니다.
'언어 > 파이썬' 카테고리의 다른 글
Chapter.01 파이썬 프로그래밍-02. Python 소개/03. Data Type (0) | 2024.03.17 |
---|---|
머신러닝with파이썬6강(3)_랜덤포레스트&XGBoost, 하이퍼파라미터 튜닝 (0) | 2024.03.15 |
머신러닝with파이썬6강(2)_라쏘회귀,엘라스틱넷회귀 (2) | 2024.03.14 |
머신러닝with파이썬6강(1)_선형회귀, 릿지회귀 (0) | 2024.03.13 |
머신러닝with파이썬5강(3)_분류모델평가, 회귀모델평가 (1) | 2024.03.12 |