카테고리 없음

[혼공얄코]5주차-강지윤

•갱갱갱• 2025. 2. 14. 17:46

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

  개발자는 궁극적으로 컴퓨터에게 일을 시키는 사람

  CPU : 다른 컴퓨터의 구성 요소와 정보를 주고받음, 사실상 컴퓨터에서 이뤄지는 모든 일을 관할, 두뇌처럼 정보 처리해서 움직임

  코어, 스레드, 클럭 : 성능은 cpu에 의해 결정된다고 해도 과언이 아님
                    로봇의 수 : 코어 -> cpu 중에서도 가장 핵심이 되는 부품, 여러 개의 코어를 탑재하는 방식을 택함
                    로봇의 분신술 : 스레드 -> cpu의 스레드가 소프트웨어상의 스레드와용어 같음, 2코어 4스레드 사양은 4코어 이다.
                    로봇의 손 빠르기 : 클럭 -> 코어의 속도는 기가헤르츠의 숫자가 클수록 빠름

  메모리 : 어떤 일을 하기 위해 데이터를 임시 또는 영구적으로 보관하는 공간
                                주 기억 장치-> 메인 메모리.   ,   보조 기억 장치-> 하드 디스크, C 드라이브
              보조 기억 장치의 용량이 크면 파일과 프로그램을 많이 저장, 용량이 크면 클수록 좋음
              CPU는 캐시를 사용함을써 자주 사용하는 데이터를 요리 탁자에 손을 뻗을 필요도 없이 바로바로 사용

   입출력 장치 : 앞서 다룬 CPU, 메모리와 함께 컴퓨터. 하드웨어를 구성하는 주요 요소 중 하나
           입력 장치 : 키보드 마우스
           출력 장치 : 모니터

  프로세스, 스레드
           프로그램이 실행 중인 상태, 프로세스 : 메인 메모리로 올라와 실행되고 있는 상태를 프로세스
         Q. 두대의 로봇이 일하는 푸드 트럭에 햄버거와 치킨버거, 새우버거, 그리고 치즈버거 주문이 한꺼번에 들어왔다. 한번에 제공하기 위해 어떻게 해결해야할까?
                  1. 병렬 처리 방법 : 동시에 실행하는 방법
                  2. 병행 처리 방벙 : 하나의 코어가 여러 프로세스를 돌아가면서 조금씩 처리하는 것
               치킨버거, 새우버거, 치즈버거로 진행 순서를 바꾸는 것을 컨텍스트 스위칭, 여러 개의 프로세스를 함께 진행하는 것을 멀티 프로세싱

        프로세스를 또 나눈 단위, 스레드 : 서여러 작업이 동시에 진행, 한 프로세스 안에 하나 이상 진행될 수 있는 단위를 스레드, 여러 스레드가 함께 실행되는 것을 멀티 스레딩

       프로세스와 스레드의 차이 : 동시에 진행되는 프로세스가 많아지면 메인 메모리는 그 배수만큼 필요
                                                스레드는 서로의 공간을 구분하지 않음, 프로세스와는 달리 자리를 옮겨 다닐 필요가 없기 때문에 컨텍스트 스위칭에 드는 부담이 덜함
                                       주의할 점 = 같은 메모리 공간을 여러 스레드가 사용하기 때문에 발생할 수 있는 오류에 대비해서 프로그래밍해야 한다는 것






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

    컴퓨터는 숫자 0과 1 만 이해할 수 있다는 사실
  
         비트와 바이트 : 비트는 2진수의 약자 최소 단위, ‘로그인 상태 유지’라는 내용 앞에 있는 체크 박스는 로그인 시 입력하는 ID와 비번을 브라우저에 쿠키 저장 여부 정하는 용도
                           선택지를 가질 수 있는 값은 불리언 자료형이라 함

        자료형 : 프로그래밍 언어는 코드를 작성할 때 이름을 가진 데이터에 자료형을 명시
                     컴퓨터 프로그램이나 시스템 소프트웨어에서 사용 중인 데이터 형태

       문자 인코딩, 유니코드 : 사용자가 입력한 문자나 기호들을 컴퓨터가 이용할 수 있는 숫자로 만든 것을 문자열 셋 이라 함
                                           사람이 입력하는 문자를 그에 해당하는 숫자로 변환하는 것을 문자 인코딩
                                           야스키 코드는 대문자와 소문자 알파벳, 스페이스와 탭, 각종 부호 값들이 지정





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

  개발자로 커리어를 시작하면 회사의 개발 환경이나 본인의 선택에 따라 하나 이상의 프로그래밍 언어를 주요 언어로 선택해서 프로그래밍함
    
   컴파일 언어, 인터프리터 언어 : 프로그래밍 언어는 배포되기 전 다른 형태로 변환되는 컴파일 언어, 작성된 그대로 실행되는 인터프리터 언어
                                                 소스 코드를 컴파일한다는 것은 실행하기 전에 기계어나 다른 코드로 먼저 ‘번역’하는 것
                                                 소스 코드를 다른 언어나 형태로 번역해 주는 프로그램을 컴파일러
                                                 컴파일 언어의 소스 코드가 전부 기계어로만 번역되는 것은 아님, 자바는 컴파일러에 의해 자바 바이트코드로 번역
                                                 자바스크립트라는 다른 언어로 컴파일, 타입스크립트는 자바스크립트가 가진 여러 한계점 보안해서 안정적이고 오류 발견 쉽도록 만든 언어
                                                인터프리터 언어로 작성한 프로그램은 컴파일과정을 미리 거치지 않고 바로 배포

                   컴파일 언어와 인터프리터 언어 비교하기 : 컴파일언어처럼 서류를 미리 번역해 두는 것은 사전 작업에 시간이 소요된다는 단점
                                                                                  통역은 한 문장마다 통역사를 거쳐야 하기 때문에 실제 현장에서는 번역보다 통역이 느림
                                                                                  번역과 통역의 장단점은 컴파일 언어와 인터프리터 언어에 그대로 적용
                                                                                  개발자들이 코딩할 때 사용하는 프로그램인 통합 개발 환경으로 단점들 보안
                                                                                  자료형을 고정하는 이유는 프로그램의 모든 자료형이 컴파일 중에 결정되므로 컴파일러가 자료형을 먼저 검증할 수 있기 때문
                                                                                  인터프리터 언어는 런타임 시 자료형이 부여-> 자료형이 고정된 것은 정적타임
                                                                                                                                                       인터프리터 언어처럼 자료형이 고정되지 안은 것을 동적 타입

  절차지향, 객체지향 프로그래밍 : 절차지향 언어와 객체지향 언어
                                     절차지향 프로그래밍 : 물이 위에서 아래로 흐르는 것처럼 소스코드를 위에서부터 차례대로 읽는 방법, 실행 속도가 빠르다는 장점
                                                                       단점 1. 모든 구성 요소가 유기적으로 연결되어 있기 때문에 사소한 문제 하나만 생겨도 시스템 전체 안 돌아감
                                                                              2. 실행 순서가 정해져 있기 때문에 소스 코드의 순서가 바뀌면 결과가 달라질 수 있음

                                    객체지향 프로그래밍 : 장문의 글을 쓸 때 처음부터 차례대로 써 내려가는 것이 아니라 글을 쓴 후 이를 엮어서 하나의 글이 되게 하는 것과 같음
                                                                     프로그램을 그저 데이터와 처리 방법으로 나누는 것이 아니라, 프로그램을 다수의 객체로 만들고 이 객체끼리 서로 상호작용하는 방법
                                                                     각 객체의 역할이 나누어져 있고, 사용하고자 하는 부분에서 각각의 객체가 따로 작동
                                                                     단점 1. 모든 객체의 역할과 기능을 이해해야 하기 때문에 설계에 많은 시간이 걸림
                                                                            2. 처리 속도가 절차지향보다 느림
                                                                            3. 객체지향 언어는 대체로 난도가 높은 편
                                  객체의 설계도:클래스 : 반복적으로 사용되는 요소를 객체로 만들면 코드의 중복을 줄일 수 있음
                                                                    스펙을 정의하는 명세서를 클래스
                                 공유되는 스펙 물려주기:상속 : 객체지향 프로그래밍에서는 Button이 가진 기본 속성을 ‘물려받고’, 위에 각 버튼만의 기능을 추가방법으로 중복을 줄인 코드 작성
                                                                              상속은 객체지향 프로그래밍에서 핵심적인 요소 중 하나로 실제 개발에서도 매우 유용, 객체지향->간결 유연 높은 안정성

함수형 프로그래밍 : 한 프로그램에 두 방식을 모두 적용할 수 있음, 변수 사용을 최소화함으로써 스파게티 코드의 오류를 줄이는 프로그래밍
                               변수는 프로그램에서 개발자 메인 메모리 공간에 올려놓은 값
                               자바스크립트 코드에는 index란 변수가 사용됨, 자바스크립트를 비롯한 대다수 주요 언어들도 자체 기능을 라이브러리 통해 함수형 프로그래밍을 구현

매니지드 언어, 언매니지드 언어 : 메모리를 프로그래밍 언어가 직접 관리하면 매니지드 언어, 개발자가 직접 관리하면 언매니지드 언어
                                                   메모리 관리란 메인 메모리, 더 이상 사용되지 않는 데이터는 바로 치워서 요리 탁자의 공간을 확보
                                                  C와 C++, 어셈블리어는 몇 안 되는 언매니지드 언어










확인문제