본문 바로가기
ETC/LEARN

[혼공얄코] 프로그래밍 용어 습득하기 (5주 차)

by 아이엠제니 2024. 8. 6.

 

💾 혼공학습단 12기


 

 

 

 

 

챕터 4. 개발자의 길로 들어서기: 프로그래밍 용어 알기

04-1 컴퓨터는 어떻게 일하나요?

 

 

1. CPU


  • CPU (중앙 처리 장치)
  • 컴퓨터에 주어진 일들을 해내는 주체로, 다른 컴퓨터의 구성 요소와 정보를 주고받으면서 컴퓨터에서 이뤄지는 모든 일을 관할함
  • 컴퓨터의 뇌
  • 컴퓨터에 저장된 프로그램을 불러와서 기계어로 작성된 명령문을 해석하고 실행함

 

 

2. 코어, 스레드, 클럭


  • 코어
    • CPU 중에서 가장 핵심이 되는 부품
    • 멀티 코어: 코어가 하나 이상
      • 듀얼: 2
      • 쿼드: 4
      • 헥사: 6
      • 옥타: 8
  • 스레드
    • 하나의 코어로, 2개의 코어가 작동하는 것처럼 보이는 것
    • 2코어 4스레드 사양의 CPU를 장착한 컴퓨터의 정보를 열어보면 4코어가 설치되어 있다고 인식하는 것
  • 클럭
    • 기가헤르츠(GHz) 단위로 표시되는 정보로, 코어의 속도를 이야기함
    • 기가헤르츠의 숫자가 클수록 빠름
  • 컴퓨터의 속도는 클럭과 코어 개수, 그리고 스레드의 개수로 결정됨

 

 

3. 메모리


  • 데이터를 임시 또는 영구적으로 보관할 수 있는 공간을 기억 장치 또는 메모리라고 함
  • 주 기억 장치 (휘발성)
  • 보조 기억 장치 (비휘발성)
  • 기억 장치 속도: 캐시 -> 메인 메모리 -> 보조 기억 장치 순으로 빠름

 

 

4. 입출력장치


  • Input/Output
  • 컴퓨터와 외부를 연결해 주는 소통의 통로
  • 입력 장치
    • 키보드, 마우스, 터치패드, 트랙볼, 펜 태블릿 등
    • 웹캠, 스캐너, 마이크, 지문 인식 장치 등
  • 출력 장치
    • 모니터, 사운드 카드, 스피커, 프린터
    • 터치 스크린, 복합 프린터
    • 네트워크 카드, 모뎀

 

 

5. 프로세스, 스레드


  • 프로세스
    • 프로그램이 메인 메모리로 올라와 실행되고 있는 상태
    • 프로그램은 하나의 프로세스로 실행될 수도, 여러 프로세스에 걸쳐 실행될 수도 있음
    • 여러 프로세스를 함께 처리하는 방법
      1. 병렬 처리 방법 (여러 작업을 동시에 실행하는 방법)
      2. 병행 처리 방법 (하나의 코어가 여러 프로세스를 돌아가면서 조금씩 처리)
    • 컨텍스트 스위칭: 진행 순서를 바꾸는 것
    • 멀티 프로세싱: 여러 개의 프로세스를 함께 진행하는 것
  • 스레드
    • 한 프로세스 안에 하나 이상 진행될 수 있는 일의 단위
    • 멀티 스레딩: 여러 스레드가 함께 실행되는 것
  • 프로세스와 스레드의 차이
    • 메인 메모리를 어떻게 함께 사용하는가임

 

 

 

04-2 바이트는 뭐고 자료형은 왜 쓰나요?

 

1. 비트와 바이트


  • 비트(bit)
    • 2진수(binary digit)의 약자
    • 컴퓨터가 다루는 데이터의 최소 단위이며 0 또는 1이라는 2개의 값을 가짐
    • 바이너리 파일: 컴퓨터가 읽을 수 있는 이진(바이너리) 숫자 형식으로 작성된 파일
    • 불리언(boolean, 불): true, false
  • 바이트(byte)
    • 8bit
    • 0~255까지 총 256가지의 값을 자길 수 있음

 

 

2. 자료형


자료형 비트 바이트
byte 8 1
short 16 2
int 32 4
long 64 8
float 32 4
double 64 8
boolean 1 1
char 16 2

 

 

 

3. 문자 인코딩, 유니코드


  • 문자열 셋: 사용자가 입력한 문자나 기호들을 컴퓨터가 이용할 수 있는 숫자로 만든 것 (아스키코드도 문자열 셋의 일부)
  • 문자 인코딩: 문자열 셋을 통해 사람이 입력하는 문자를 그에 해당하는 숫자로 변환하는 것
  • 아스키 코드(ASCII code): 1963년 미국에서 만듦. 0~127까지의 7비트 공간 안에 대문자와 소문자 알파벳, 스페이스와 탭, 각종 부호 값들이 지정되어 있음
  • 유니코드(Unicode): 하나(Uni)의 표 안에 한글은 물론 한자와 히라가나를 비롯한 세계 각국의 문자뿐만 아니라 고대 문자와 이모티콘까지 거의 모든 문자를 포함하고 있음

 

04-3 프로그래밍 언어 분류

 

1. 컴파일 언어, 인터프리터 언어


  • 컴파일 언어: 배포되기 전 다른 형태로 변환
    • 컴파일: 코드를 실행하기 전에 소스 코드를 기계어나 다른 코드로 먼저 '번역'하는 것
    • 컴파일러: 소스 코드를 다른 언어나 형태로 번역해 주는 프로그램
  • 인터프리터 언어: 작성된 그대로 실행됨
    • 컴파일 과정을 거치지 않고 바로 배포됨
    • 실행할 컴퓨터에는 소스 코드를 바로바로 통역해 주는 프로그램인 인터프리터가 설치되어 있음

 

 

2. 절차지향, 객체지향 프로그래밍


  • 절차지향 프로그래밍: 소스 코드를 위에서부터 차례대로 읽는 방법임
    • 소스 코드의 순서가 굉장히 중요하며, 프로그램 전체가 유기적으로 연결되어 있음
    • 장점: 실행 속도가 빠름
    • 단점
      1. 모든 구성 요소가 유기적으로 연결되어 있기 때문에 사소한 문제 하나만 생겨도 시스템 전체가 돌아가지 않음
      2. 실행 순서가 정해져 있기 때문에 소스 코드의 순서가 바뀌면 결과가 달라질 수 있음
    • 데이터 중심
  • 객체지향 프로그래밍: 코드를 작성할 때 구성 요소를 객체라는 단위로 묶어서 이들의 조합으로 프로그램을 만드는 것
    • 장점: 유지 보수가 쉽고 생산성도 좋음
    • 단점
      1. 모든 객체의 역할과 기능을 이해해야 하기 때문에 설계에 많은 시간이 걸림
      2. 처리 속도가 절차지향보다 느림
      3. 객체지향 언어는 대체로 난이도가 높은 편
    • 기능 중심
  • 클래스: 객체의 설계도
    • 스펙을 정의하는 명세서
  • 상속: 공유되는 스펙 물려주기
    • 상위 클래스의 기능을 하위 클래스가 물려받아 기존 클래스에 기능을 추가하거나 재정의하는 것

 

 

3. 함수형 프로그래밍


  • 변수 사용을 최소화함으로써 스파게티 코드의 오류를 줄이는 프로그래밍
const people = ['홍길동', '전우치', '임꺽정', '각시탈', '붉은매']
people.forEach(
  (person) => console.log(person)
)

 

  • 함수(function): 특정한 기능을 하는 소스 코드를 따로 빼서 묶어 놓은 것. 함수를 사용하면 코드를 기능별로 구분해서 코드 분석이 편리해지고, 같은 코드를 여러 번 사용하는 코드 중복을 줄일 수 있음
  • 스칼라, 하스켈, 클로저, F# 등

 

 

4. 매니지드 언어, 언매니지드 언어


  • 매니지드 언어: 메모리를 프로그래밍 언어가 직접 관리
    • 자바, 파이썬
  • 언매니지드 언어: 개발자가 직접 관리
    • C, C++, 어셈블리어

 

 


기본 숙제(필수)


Ch.04(04-3) 확인 문제 풀고 인증하기 (p.308~309)

 

 

04-3 확인 문제

1. 다음 중 틀린 것을 고르세요

  1. 컴파일 언어는 인터프리터 언어에 비해 프로그램 실행이 빠릅니다.
  2. 인터프리터 언어는 자료형에 있어 컴파일 언어보다 자유롭습니다.
  3. 객체지향은 절차지향과 상반되는 개념입니다.
  4. 함수형으로 프로그래밍하면 변수 사용을 최소화할 수 있습니다.
  5. 자바로 작성한 프로그램은 컴퓨터마다 다르게 컴파일할 필요가 없습니다.

 

2. 다음 중 문장에 들어갈 알맞은 단어를 보기에서 찾아 작성해 보세요.

1. 스레드 2. 상속

 

  • 함수형 프로그래밍을 사용하면 (스레드)(이)가 많이 사용되는 환경에서 변수 문제로부터 안전한 코드를 작성할 수 있습니다.
  • 객체지향 프로그래밍에서는 (상속)(을)를 사용해서, 기본이 되는 부모 클래스로부터 추가 속성이나 기능이 있는 자식 클래스를 파생할 수 있습니다.

 

3. 다음 중 프로그래밍 언어와 가장 연관이 깊은 개념을 이어 보세요.

  1. 자바 - ㄷ. JVM
  2. C언어 - ㄱ.포인터
  3. 스칼라 - ㄴ. 함수형 프로그래밍
  4. 자바스크립트 - ㄹ.인터프리터 언어

4. 다음 중 A, B, C, D에 알맞은 언어를 보기에서 찾아 작성해 보세요.

1. 자바 / 2. 자바스크립트 / 3. C언어 / 4. C++

 

 

  1. C언어
  2. C++
  3. 자바
  4. 자바스크립트

 

 

 

5주 차 후기


아는 용어이지만, 그 의미까지는 세세하게 알 수 없는 것에 대해 배우는 시간이었다.

개인적으로 컴퓨터 하드웨어에 대한 궁금증이 생겨, 따로 책을 찾아서 봐야겠다는 생각도 했다.

그리고 프로그래밍 언어에 관한 것은 알고 있는 것들을 다시 복기하며 확인할 수 있었다.

5주 차도 끝.

6주 차가 멀게만 보였었는데, 벌써 5주 차다.

다음 주 6주 차도 잘 마무리하겠다는 다짐과 함께 끝.

 

 

 

한빛미디어 <혼자 공부하는 얄팍한 코딩 지식> 책 참고

 

 

 

 

 

300x250