※ 변수 학습 순서

1. Value Type
하드웨어 & 프로그래밍 언어 등장 배경 → 변수 등장 배경 → 변수 본질과 데이터 → 컴파일러 → 기본 자료형 개념

2. Ref. Type
빌드, 실행(메모리) →  변수, 클래스, 속성, 기능, 객체, 프로그래밍 본질 →  함수 →  스택 메모리, 소스 코드 실행 순서 →  코드 블록(스텍 프레임) 개념 → 메서드 참조 매개변수 → 복합 자료형 등장 배경 → 힙 메모리 →  

프로그래밍과 효율

.① 프로그래밍 언어가 등장한 이유

  • 초기 컴퓨터 프로그래밍은 0과 1로 개발했다.
  • 소프트웨어 개발을 효율적이고 편리하게 하기 위해서 등장했다.

①.② C# 추가 기능으로 프로그래밍 기술을 바라보는 관점

  • 모든 프로그래밍 언어는 쉽고 효율적인 방향으로 발전되고 있다.
  • 모든 프로그래밍 언어에 새로운 기능들이 추가되는 이유는 왜일까?

 변수

.변수는 왜 사용할까?

  • 변수도 개발의 효율과 편리를 위해서 등장한 기술이다.

. 선언Declare과 초기화Initialization은 무엇인가?

  • 선언
    변수 이름으로 식별 가능한 메모리 공간을 준비한다. 
  • 초기화
    선언으로 만들어진 메모리 공간에 값을 할당하는 것이다.
  • C#은 선언 후 초기화 작업을 강제한다. C, C++과 다르다.

. 값 형식 접근과 컴파일

  • 개발자의 관점 (사람)

  • 컴파일 후 실행 관점 (컴퓨터)
    변수 개념이 필요 없다.

  • 변수에서 주소 그리고 값으로 이어지는 과정은 개발자 관점에서 프로그래밍에 필요한 개념이다.
    기계어와 바이너리 실행 관점에서 메모리 주소가 값을 찾아가는 과정을 심플하다.

참조 형식 변수

.① 실행

.② OOP

  • 변수, 클래스, 속성, 기능, 객체, 프로그래밍 본질
  • 현실에서 답을 찾아야 한다.

. 메서드

  • 메서드와 함수, 매개변수와 실인수, 용어 문제
  • 반환, return 0;

.④ 소스 코드 실행 순서

.⑤ 코드 블럭(Stack Frame) 특징

  • 함수
    함수의 매개변수, 반환 주소값, 지역 변수 등이 저장
  • 지역변수, 매개변수 같은 컴파일 타임에 크기가 결정되는 메모리를 올리는 공간이다.
    ≒ 메모리 할당에 필요한 크기가 고정적이다.

참조 형식 접근과 컴파일

  • 개발자의 관점 (사람)

  • 컴파일러 관점 (컴퓨터)

. 참고, C언어

  • 스텍과 힙, 정적 메모리와 동적메모리

.⑤ 데이터, 비지니스 로직

  • 개발자의 관점 (사람)
    데이터란? 로직이란? 변수란?
    상수와 열거형, 클래스
  • 데이터의 유일성