상세 컨텐츠

본문 제목

[CS전공 지식]프로그래밍 언어의 원리

CS전공 지식

by 본투비곰손 2023. 6. 23. 23:03

본문

728x90


CPU에 따라 명령의 값이 다르다.

기계어의 프로그램

10을 임의의 공간에 저장

  • 0x140010
    • 0x14 :명령
    • 00 : 주소
    • 10 : 값

명령이 다른것 뿐만 아니라 명령에 따라 뒤에 나오는 내용도 의미가 달라진다.

두값을 더하는 명령(주소1에 저장된 값과 주소2에 저장된 값을 더함)

  • 0x190001
    • 0x19 : 명령
    • 00 : 주소 1
    • 01 : 주소 2
    • 더해진 값은 CPU내부 공간에 저장

기계어와 어셈블리어

  • 기계어
    • 기계어인 0x140010 를 실행하기위해서는 16진수를 알고 있어야한다.
  • 어셈블리어
    • 기계어의 단점을 보완하기 위해 다음과 같이 인간이 이해할 수 있는 어셈블리어를 사용한다. )Move M (0), #10)
    • 명령어에 숫자가 아닌 의미를 부여한다.
    • 명령어가 실행되는 하부 구조를 신경 쓰지 않는다.
  • 프로그래밍의 속성
    • 모든것을 알고 작업하지 않는다.
    • 초보자 입장에서 하부구조를 아는 것은 상부구조를 쉽게 이해하기 위해서임
    • 컴퓨터 구조를 당연하게 느끼기 위함
    • 사용 형태에 따라 저수준(Low Level)과 고수준(High Level)으로 나뉜다.

Low Level과 High Level

기계어 - Low Level < 어셈블리어 - High Level < C언어 - High Level

C언어는 어셈블리어로 변환 되었다가 기계어로 변환 된다.

고수준으로 발전되는 이유 - 시간을 어디에 사용할 것인가에 초점을 맞춤, 고수준일수록 하부 단계를 몰라도 된다. (저수준을 이해한다면 보다 넓게 이해할 수있다.)

C#언어는 C언어를 포함하는 관계를 가진다. 따라서 C언어를 알아야 C#으로 프로그래밍이 가능하다.

개발환경

  • 개발환경의 설치가 중요해짐
  • 설치가 일반 프로그램 보다 쉽지 않음
  • 고수준으로 접근하기 위해 필요한 작업

C언어와 변수

  • C언어

프로그램을 작성한다는 의미에서 에셈블리와 동일

  • 변수

임의의 공간에 이름(변수)을 정하여 저장

int number; 이라는 것은 메모리 공간을 하나 생성해달라고 운영체제에 요청하는 작업으로 선언(declare)한다고 이야기 한다.

어셈블리어는 메모리의 주소를 사용하지만 C언어는 변수 이름을 사용

 

변수의 의미

  • 변수를 선언하여 메모리를 사용함
  • 메모리의 주소가 아닌 변수의 이름을 사용하여 우리가 생각하는 데이터 중심으로 프로그램을 작성
  • 프로그래밍적 접근 방법으로 작성하고, 메모리적 접근방법으로 분석한다.

접근 방법

  • 프로그래밍적 접근 방법
    • 코드의 의미를 살펴가면서 프로그램을 작성
  • 메모리적 접근 방법
    • 실제 메모리의 값을 따져가면서 프로그램을 작성, 분석

컴파일의 이유

  • 컴파일
    • C언어가 어셈블리어로 변환 되었다가 기계어로 변환 되는 과정을 컴파일이라고 한다.
    • 가장 큰 이유는 변수가 존재하기 때문이다.
    • 변수가 존재하며 실제의 어느 장소의 메모리를 사용할 지를 정해지지 않음
    • 직접 컴파일을 하는 것이 아니라 버튼을 누르면 실행되는 동작이다.
    • 고수준으로 발전할수록 컴퓨터의 자원보다 개발 환경의 편의성이 더 중요해짐
    • 오버헤드 : 기능의 추가로 더 많은 성능을 필요로함

C언어 프로그램

컴파일 시 변수가 어떤 메모리를 사용하는지에 대한 표(테이블)가 필요함

메모리의 종류

스택(Stack) - 빠르게 사용하는 쌓이는 메모리의 종류

  • 아래에서 위로 쌓인다.
  • 쌓였다가 사용이 끝나면 사라짐

힙(Heap) - 큰 자료를 관리하기 위한 메모리

  • 데이터를 늘어 놓고 사용
  • 크기가 큰 데이터에 사용

스태틱(Static) - 공통으로 공유하는 메모리

  • 정적인 데이터라는 의미
  • 데이터를 공유하여 사용

데이터를 종류에 따라 최대 속도와 최적의 상황으로 사용하기 위함

기본 자료로 사용되는 변수의 메모리는 스택으로 동작한다.

힙(Heap) 메모리

클래스나 큰 크기의 데이터에 사용

레퍼런스 (참조) : 바로가기와 동일

변수가 참조를 가지고 있다. = “변수가 실제 데이터를 가리킨다.” 라는 의미

 

함수

반복되는 동작을 코드로 표현

반복되는 동작을 원하는 대로 사용

복잡한 동작을 함수로 대체하여 사용 가능

 
순서
임시               30 30  
z           null 30 30    
y         20 20 20 20    
x       10 10 10 10 10    
result     null null null null null null null 30
b   20 20 20 20 20 20 20 20 20
a 10 10 10 10 10 10 10 10 10 10

함수의 메모리와 delegate

함수 전체를 함수의 저장 공간에 저장 가능

함수를 저장하는 이유

  • 나중에 다른 곳에서 함수를 사용하기 위함
  • delegate - 대리자
  • 대리자를 두고 함수를 대리자가 호출하도록 하는 기능
  • delegate가 없어도 사용이 가능
  • 프로그래밍을 효율적으로 하기 위한 기능
  • 상황에 따라 다른 동작이 실행 가능
728x90

'CS전공 지식' 카테고리의 다른 글

[CS전공 지식]기본적인 컴퓨터의 구조  (0) 2023.06.23

관련글 더보기