0. 서론
모던 자바스크립트 Deep Dive 스터디 2회독 회고
0. 서론 [들어가며...] 2023년 4월 1일 제로베이스 부트캠프 14기로 시작하였지만, 기본기가 너무 부족함을 느껴 기수유예를 통해 19기로 다시한번 시작하게 되었다. 19기의 공식 일정은 9.1일 - 2월29
adeveloperstory.tistory.com
모던 자바스크립트 deep dive 2회독 후에 회고록으로 글을 하나 썼는데, 글에서 위와같이 작성했던 기억이 납니다.
그리고 동료 개발자 준비생? 분에게 자바스크립트에 대해서 질문을 해달라고 했는데,
변수는 무엇이고, 변수가 없다면? 이라는 질문을 받았습니다.
저의 대답은 대충 다음과 같았습니다.
변수는 값을 저장하기 위한 메모리 공간의 주소에 붙인 이름이고,
변수가 없다면, 값을 사용하려고 할때마다, 메모리 주소에 직접 접근해야 하고 ....
그러면 개발자가 코드를 작성함에 있어서 가독성... 어쩌고 저쩌고...
스스로 생각해 봤을때, 어떻게 대답은 한 것 같지만, 너무 정리가 안된 느낌이 들었다고 할까요?
그래서 딥다이브 책 4장. 변수에 대해서 다시 한번 정독을 하고,
변수에 대해 다시 질문이 들어왔을 때 깔끔하게 정돈된 대답하고자 블로그를 작성해 봅니다.
이번 블로그 에서는 다음 질문에 대한 답들을 먼저 적어보려고 합니다.
1. 변수란 무엇이고, 왜 필요한가요?
2. 변수가 없다면?
답들을 적은 후에, 책의 내용에 기반해 추가 설명하는 형식으로 글을 작성해 보겠습니다.
❓ 변수란 무엇이고 왜 필요한가요? [ feat. 변수가 없다면? ]
변수란 프로그래밍 언어에서 데이터를 관리하기 위한 핵심 개념으로
"하나의 값을 저장하기 위해 확보한 메모리 공간 자체 또는 그 메모리 공간을 식별하기 위해 붙인 이름"
을 말합니다.
변수 이름을 식별자 라고도 합니다.
식별자는 어떤 값을 구별해서 식별할 수 있는 고유한 이름을 말합니다.
변수가 없다면,
메모리 주소를 통해 값에 직접 접근해야 하는데,
이는 치명적 오류를 발생시킬 가능성이 매우 높은 위험한 일입니다.
따라서 자바스크립트는 개발자의 직접적인 메모리 제어를 허용하지 않습니다.
또한 만약 개발자의 직접적이 메모리 제어를 허용하더라도 값이 저장될 메모리 주소는 코드가 실행될 때 메모리의 상황에 따라 임의로 결정되기 때문에, 문제가 생길 수 있습니다.
변수가 왜 필요한지에 대한 답변은 변수가 없다면?
이라는 질문에 답을 한 것으로 생각합니다.
✅ 사전 상식
여기서부터는 위 대답에 대한 근거이자, 모던 자바스크립트 deep dive 책을 참고한 내용입니다.
다음은 자바스크립트 코드이다.
10 + 20
1. 컴퓨터는 CPU를 사용해 연산하고, 메모리를 사용해 데이터를 기억한다.
2. 메모리(memory) 는 데이터를 저장할 수 있는 메모리 셀(memory cell)의 집합체다.
메모리 셀 하나의 크기는 1바이트(8비트)이며, 컴퓨터는 메모리 셀의 크기, 즉 1바이트 단위로 데이터를 저장하거나 읽어 들입니다.
3. 각 셀은 고유의 메모리 주소(memory address)를 갖는다.
4. 메모리 주소는 메모리 공간의 위치를 나타내며, 0부터 메모리의 크기만큼 정수로 표현된다.
5. 컴퓨터는 모든 데이터를 2진수로 처리한다.
👉 따라서 메모리에 저장되는 데이터는 데이터의 종류(숫자, 텍스트, 이미지, 동영상 등)와 상관없이 모두 2진수로 저장된다.
(위 그림에서는 메모리에 저장된 숫자 값을 편의상 10진수로 표기한 것)
1. 변수가 없다면?
변수가 없다면 메모리 주소를 통해 값에 직접 접근해야 하는데, 이는 치명적 오류를 발생시킬 가능성이 매우 높은 위험한 일입니다.
따라서 자바스크립트는 개발자의 직접적인 메모리 제어를 허용하지 않습니다.
만약 자바스크립트가 개발자의 직접적인 메모리 제어를 허용하더라도 문제가 있습니다.
👉 값이 저장될 메모리 주소는 코드가 실행될 떄 메모리의 상황에 따라 임의로 결정된다는 것입니다.
따라서 동일한 컴퓨터에서 동일한 코드를 실행해도 코드가 실행될 때마다 값이 저장될 메모리 주소는 변경됩니다.
1. 변수(variable)란 무엇이고, 왜 필요한가요? [feat. 식별자]
🟥 변수는 프로그래밍 언어에서 데이터를 관리하기 위한 핵심 개념입니다.
변수는 " 하나의 값을 저장하기 위해 확보한 메모리 공간 자체 또는 그 메모리 공간을 식별하기 위해 붙인 이름 "을 말합니다.
변수는 프로그래밍 언어에서 값을 저장하고 참조하는 메커니즘으로, 값의 위치를 가리키는 상징적인 이름입니다.
상징적 이름인 변수는 프로그래밍 언어의 컴파일러 또는 인터프리터에 의해 값이 저장된 메모리 공간의 주소로 치환되어 실행됩니다.
따라서 개발자가 직접 메모리 주소를 통해 값을 저장하고 참조할 필요가 없고, 변수를 통해 안전하게 값에 접근할 수 있습니다.
🛑 [식별자]
변수 이름을 식별자(identifier) 라고도 합니다.
1. 식별자는 어떤 값을 구별해서 식별할 수 있는 고유한 이름을 말합니다.
2. 식별자는 값이 아니라 메모리 주소를 기억하고 있습니다.
3. 메모리 상에 존재하는 어떤 값을 식별할 수 있는 이름은 모두 식별자라고 부릅니다.
🎉 마무리
변수란 무엇이고 왜 필요한가요? [ feat. 변수가 없다면?]
이라는 질문에 대해 답을 하는 글을 한번 작성해 봤습니다.
사실 정말 기본적인 내용이기 때문에, 정말 가볍게 생각하고 넘어갈 수 있다고 생각합니다.
하지만, 이런 기본적인 내용을 대충 넘어가게 된다면,
훗날 더 좋은 개발자가 되기 위해서 발목을 잡을 수 도 있다고 생각합니다.
따라서 이번 기회에, 위 질문에 대해서 어떠한 근거를 통해 자신만의 의견을 생각해두는것이 도움이 되지 않을까? 라고 질문을 던져보며 글을 마무리합니다.
<Reference>
모던 자바스크립트 deep dive
'개발 지식' 카테고리의 다른 글
[npm , yarn] 비교하기 (0) | 2023.07.10 |
---|---|
windows, vscode로 javascript 실행하는 단축키 변경하기 (0) | 2023.04.21 |