티스토리 뷰
그 외/WIP: 게으른게 죄다..
[PL][WIP] Names, Variables, Binding의 개념, Scope, Referencing Environment, Named Constant
SweetDev 2021. 10. 17. 15:36이번 포스팅에서는 Chapter 5에 나오는 내용들을 다뤄보려고 한다!
변수의 6가지 속성
1) names
2) address
3) value
4) type
5) lifetime
6) scope
1) names
- 대소문자를 가리는가? (Case Sensitivity)
- C 기반 언어들에서는 대소문자를 가리는데, Readability & Writability 가 안좋아 진다.
- 특수어
- keyword: 특정 문맥에서만 특수 의미를 가짐. ( ex: 변수 이름 )
- reserved word: 사용자 정의 이름으로 사용 불가능 ( ex: int, float, ... )
- 예약어가 너무 많은 언어는 쓰기 힘들다 ( ex: COBOL의 length, bottom, count 등 )
- 길이
- 너무 짧으면 함축적일수가 없다!
- C99: 길이 제한이 없지만 처음 63개까지만 의미를 갖는다. 그 이후의 글자들은 구분의 기능을 못 갖는다.
- C++: 제한이 없긴 하지만 구현자는 제한 있음 (?)
- C#, Java: 아예 제한 없음
- 너무 짧으면 함축적일수가 없다!
- 특수 문자
- PHP: 모든 변수는 $로 시작한다.
- Perl: string은 $, array는 @, hash는 %로 시작한다.
- Ruby: 지역변수는 밑줄이나 소문자, class는 @@, instance는 @, 전역변수는 $로 시작한다.
- 익명 변수도 존재한다. (ex: heap-dynamic var)
Concept of Binding
Binding Time
Static, Dynamic Binding
- Static: 실행 시간 전에 binding되고, 프로그램 실행 내내 변동이 없을 때. ( ex: static 변수)
- Dynamic: 실행 시간에 binding되고, 프로그램 실행 도중 변동 가능 할 때. (ex: 지역 변수)
Static, Dynamic Type Binding
변수들의 lifetime에 의한 분류
- Static Variable ( 정적 변수)
- 실행 전에 memory에 할당 되고, 같은 메모리에 실행 내내 할당되어 있음
- ex) C, C++ 의 static 변수
- Stack-Dynamic Variable
- 실행이 선언과 연관된 코드에 도달했을 때 memory에 할당 된다.
- ex) C언어의 일반 변수
- Explicit Heap-Dynamic Variable
- 포인터로 할당, 해제된다.
- Implicit Heap-Dynamic Variable
- 변수에 값이 할당될 때만! (선언 때는 X)
이름 상수
float pi = 3.141592f;
const 붙여서 이름 상수로 쓸 수 있다.
'그 외 > WIP: 게으른게 죄다..' 카테고리의 다른 글
[ML][WIP] Radial Basis Function ( RBF ) (0) | 2021.11.11 |
---|---|
[WIP] 압축 원리 (1) | 2021.10.07 |
[MachineLearning][WIP] PyTorch Visdom 사용하기 (0) | 2021.09.27 |
[Graphics][WIP] Euler Angle, Quaterninons (0) | 2021.09.24 |
[MachineLearning] 미니콘다(miniconda) 설치하기, 명령어 (2) | 2021.09.23 |