변수, 값과 참조 개념 관련
※ 변수 학습 순서
1. Value Type
하드웨어 & 프로그래밍 언어 등장 배경 → 변수 등장 배경 → 변수 본질과 데이터 → 컴파일러 → 기본 자료형 개념
2. Ref. Type
빌드, 실행(메모리) → 변수, 클래스, 속성, 기능, 객체, 프로그래밍 본질 → 함수 → 스택 메모리, 소스 코드 실행 순서 → 코드 블록(스텍 프레임) 개념 → 메서드 참조 매개변수 → 복합 자료형 등장 배경 → 힙 메모리 →
① 프로그래밍과 효율
①.① 프로그래밍 언어가 등장한 이유
- 초기 컴퓨터 프로그래밍은 0과 1로 개발했다.
- 소프트웨어 개발을 효율적이고 편리하게 하기 위해서 등장했다.
①.② C# 추가 기능으로 프로그래밍 기술을 바라보는 관점
- 모든 프로그래밍 언어는 쉽고 효율적인 방향으로 발전되고 있다.
- 모든 프로그래밍 언어에 새로운 기능들이 추가되는 이유는 왜일까?
② 변수
②.① 변수는 왜 사용할까?
- 변수도 개발의 효율과 편리를 위해서 등장한 기술이다.
②.② 선언Declare과 초기화Initialization은 무엇인가?
- 선언
변수 이름으로 식별 가능한 메모리 공간을 준비한다. - 초기화
선언으로 만들어진 메모리 공간에 값을 할당하는 것이다. - C#은 선언 후 초기화 작업을 강제한다. C, C++과 다르다.
②.③ 값 형식 접근과 컴파일
- 개발자의 관점 (사람)
- 컴파일 후 실행 관점 (컴퓨터)
변수 개념이 필요 없다.
- 변수에서 주소 그리고 값으로 이어지는 과정은 개발자 관점에서 프로그래밍에 필요한 개념이다.
기계어와 바이너리 실행 관점에서 메모리 주소가 값을 찾아가는 과정을 심플하다.
③ 참조 형식 변수
③.① 실행
③.② OOP
- 변수, 클래스, 속성, 기능, 객체, 프로그래밍 본질
- 현실에서 답을 찾아야 한다.
③.③ 메서드
- 메서드와 함수, 매개변수와 실인수, 용어 문제
- 반환, return 0;
③.④ 소스 코드 실행 순서
③.⑤ 코드 블럭(Stack Frame) 특징
- 함수
함수의 매개변수, 반환 주소값, 지역 변수 등이 저장 - 지역변수, 매개변수 같은 컴파일 타임에 크기가 결정되는 메모리를 올리는 공간이다.
≒ 메모리 할당에 필요한 크기가 고정적이다.
참조 형식 접근과 컴파일
- 개발자의 관점 (사람)
- 컴파일러 관점 (컴퓨터)
②.④ 참고, C언어
- 스텍과 힙, 정적 메모리와 동적메모리
②.⑤ 데이터, 비지니스 로직
- 개발자의 관점 (사람)
데이터란? 로직이란? 변수란?
상수와 열거형, 클래스
- 데이터의 유일성