notes
01장. 프로그래밍
모던 JS Deep Dive — 프로그래밍의 기본 개념·문제 해결과 실행 흐름 정리.
참고: 이웅모 《모던 자바스크립트 Deep Dive》 1장
프로젝트를 하면서 이런 날이 많았다.
코드는 돌아가는데, 왜 이렇게 짰는지 설명을 못 하겠는 날.
문법 키워드는 아는데 요구사항이 흐리면 코드도 흐려진다.
그래서 Deep Dive를 다시 펼쳤고, 1장은 자바스크립트 문법 전에 프로그래밍이 뭔지부터 못 박는다.
포인트
“프로그래밍 = 키보드로 코드 치는 것” 정도로만 알고 있었다.
책에서는 프로그래밍을 컴퓨터에게 실행을 요구하는 커뮤니케이션이라고 한다.
이게 무슨 말이냐.
내가 머릿속으로 “볼륨 좀 키워줘~”라고 생각해도 컴퓨터는 뉘앙스를 못 읽는다.
요구를 이해하고, 복잡함을 쪼개고, 자료를 모델링하고, 행위 순서를 배열한다. 그 결과물이 코드다.
문제 해결 = 알고리즘? 꼭 그렇진 않다. 문제 정의가 틀리면 틀린 답을 빨리 구한다.
우선순위는 이해 → 분해 → 모델링 → 절차화 → 구현.
컴퓨팅 사고
사람은 “조금 크게”를 느끼지만 컴퓨터는 “+1” 또는 “60”이 필요하다.
얼굴 인식은 사람에겐 쉽고 기계에겐 어렵다. 난이도 감각이 자주 뒤집힌다.
비유: “맛집 적당히”는 싸움, “강남 도보 10분·1.5만·웨이팅 30분”은 예약. 프로그래밍도 예약 스펙이다.
프로그래밍 언어
기계어를 사람이 직접 쓰면 생산성 붕괴. 인공어로 쓰고 번역기(컴파일러/인터프리터)가 옮긴다.
대리자? 번역기가 대신 기계어로 옮겨 주는 쪽에 가깝다.
구문 vs 의미
const number = 'string';
console.log(number * number); // NaN — 실행 OK, 의미 NG
돌아가니까 머지? → 아니다.
function shouldStop(distanceCm, thresholdCm) {
return distanceCm < thresholdCm;
}
장애물을 평가 가능한 술어로 쪼갠 것.
여기서 잠깐 💁♂️
“나중에 의미는…” — 나중에가 안 온다.
다음 장: 자바스크립트는 왜 생겼고 어떻게 자랐을까.