← 블로그 목록

프로그래밍 학습은 순차 실행에서 추상화와 고차 함수로 사고의 폭이 넓어지는 과정이다

프로그래밍 실력은 명령어 양보다 문제를 다루는 추상 수준이 결정한다. SICP와 How to Design Programs 같은 고전이 반복해서 강조하는 흐름을 따라, 순차 실행에서 분기와 반복, 함수와 자료구조, 추상화, 고차 함수까지 사고가 넓어지는 다섯 단계와 각 단계에서 어디가 막히기 쉬운지, 막힘이 왜 더 높은 사고로 넘어가는 신호가 되는지 정리한다.

프로그래밍 학습은 순차 실행에서 추상화와 고차 함수로 사고의 폭이 넓어지는 과정이다

프로그래밍 학습은 순차 실행에서 추상화와 고차 함수로 사고의 폭이 넓어지는 과정이다

프로그래밍을 처음 배울 때는 문법이 가장 커 보인다. 세미콜론을 어디에 붙이는지, 반복문을 어떻게 쓰는지, 함수는 어떻게 정의하는지가 전부처럼 느껴진다. 하지만 시간이 지나면 진짜 차이는 문법량보다 어느 수준에서 문제를 보느냐에서 생긴다.

고전 교재들이 반복해서 강조하는 것도 이 점이다. 프로그래밍 학습은 명령어를 외우는 과정이 아니라, 점점 더 높은 추상 수준에서 문제를 표현하는 과정에 가깝다.

순차 실행: 컴퓨터가 한 줄씩 읽는다는 사실을 이해한다

가장 처음에는 위에서 아래로 실행된다는 감각이 중요하다. 변수 대입, 입력, 출력, 순서가 왜 중요한지 알게 되는 단계다. 이 단계는 단순해 보이지만, 나중에 디버깅의 기본이 된다.

분기와 반복: 같은 코드를 다르게, 여러 번 실행한다

조건문과 반복문을 배우면 프로그램이 조금씩 반응하기 시작한다. 여기서부터는 단순한 순서 나열이 아니라, 상태와 조건을 다루는 사고가 필요해진다.

함수와 자료구조: 문제를 잘게 나누고 묶는 법을 배운다

함수는 긴 코드를 여러 작은 작업으로 나누게 해 주고, 자료구조는 많은 값을 하나의 구조로 다루게 해 준다. 이 단계에 오면 코드는 몇 줄 작성에서 어떻게 조직할 것인가의 문제로 넘어간다.

추상화: 공통점을 뽑아내며 더 큰 문제를 다룬다

여기서부터 프로그래밍이 달라진다. 여러 함수의 공통 패턴을 묶고, 세부 구현을 감춘 인터페이스를 만들며, 문제를 더 높은 수준에서 표현하기 시작한다. 추상화가 없으면 코드는 늘어나지만 사고는 넓어지지 않는다.

고차 함수: 함수를 값처럼 다루며 조합의 힘을 배운다

고차 함수는 함수를 인자로 받거나 반환하는 함수다. 이 개념은 처음에는 어렵지만, 배우고 나면 반복 패턴을 훨씬 짧고 강하게 표현할 수 있게 된다. 중요한 것은 문법보다 관점이다. 코드를 직접 나열하는 대신, 행동의 틀을 먼저 만들고 그 안에 함수를 넣는 사고가 가능해진다.

마치며

프로그래밍의 성장은 단순한 난이도 상승이 아니다. 순차 실행에서 시작해, 조건과 반복을 배우고, 함수를 나누고, 추상화를 익히고, 고차 함수로 조합의 힘을 이해하는 과정이다.

그래서 어느 단계에서 막히는지는 자연스러운 일이다. 막혔다는 뜻은 대개 더 높은 수준의 사고로 넘어가는 중이라는 뜻이기도 하다.

참고 자료

← 목록으로
Related

함께 읽으면 좋은 글

기술 서적프로그래밍학습
기술 서적이 실망스러운 이유는 정보보다 설치와 홍보가 앞설 때가 많기 때문이다

실망스러운 기술 책의 공통점은 설치 화면과 홍보 문장은 길고 개념 설명과 실전 맥락은 약하다는 점이다. 좋은 책은 공식 문서를 반복하지 않고 문서를 이해할 수 있게 도와주며, 첫 50페이지 안에 실제 문제 해결이 등장한다. 책을 고를 때는 제목의 무게보다 예제의 깊이와 개념 밀도를 먼저 봐야 한다.

프로그래밍개발 서적C++
영어 장벽 때문에 미뤘던 개발 고전도 한국어판이 있으면 읽기 시작하기 훨씬 쉬워진다

개발 고전이 자주 미뤄지는 큰 이유 중 하나는 두께도 오래된 점도 아닌 영어 장벽이다. 『The C++ Programming Language』, 『실용주의 프로그래머』, 조엘 스폴스키의 에세이처럼 한국어판으로 읽을 수 있는 책들을 예로 들어, 문법보다 판단과 태도, 작업 방식 전체를 다루는 책을 어떻게 바이블이 아닌 관점 보정 도구로 읽을 수 있는지 정리한다.

Python코루틴Stackless Python
Stackless Python은 파이썬에 경량 태스크릿과 채널을 더한 구현이다

Stackless Python은 코루틴이 들어간 파이썬이라는 짧은 설명만으로는 부족하다. 태스크릿, 채널, 스케줄러를 통해 매우 가벼운 실행 단위를 다루는 별도 구현이며, PEP 342와 PEP 492가 정착시킨 오늘날의 `async`/`await`와는 다른 계보로 동시성을 메시지 전달과 작은 실행 주체의 협력으로 보게 만드는 관점을 보여 준다는 점을 정리한다.