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