명령형과 함수형
변수와 대입문 없이도 프로그램을 짤 수 있을까?
화면을 누르면 다음 장으로 넘어갑니다
익숙한 방식
지금까지는 변수 칸을 바꿔 가며 계산했습니다
변수에 값을 넣는 문장이 대입문입니다. 줄이 실행될 때마다 칸 t의 값이 12, 17, 34로 바뀝니다. 이렇게 변수와 대입문으로 짜는 언어가 명령형 언어(imperative language)입니다.
예시 코드입니다. C, 파이썬, Java가 모두 이런 식으로 씁니다.
왜 이런 모양일까
명령형 언어는 컴퓨터 구조를 본떴습니다
1강에서 본 폰 노이만 구조(von Neumann architecture)는 메모리에 든 값을 CPU(계산하는 장치)가 가져와 계산하고, 결과를 다시 메모리에 넣는 구조입니다. 명령형 언어는 이 구조를 그대로 반영했습니다. 그 기계에서 빨리 도는 것이 중요했기 때문에, 가장 큰 관심사는 효율입니다.
칸의 값 17과 34는 앞 장의 예를 이은 것입니다.
다른 방식
같은 계산을 식 하나로 적으면
오른쪽에는 변수 칸이 없습니다. 식의 안쪽부터 값으로 바뀌어 가다가 답 34만 남습니다. 함수형 언어(functional language)는 이렇게 식을 평가해서, 곧 식의 값을 구해서 계산합니다.
두 쪽 모두 예시입니다. 답은 같고 가는 길이 다릅니다.
두 갈래의 바탕
기계에서 출발했나, 수학에서 출발했나
함수형 언어는 수학적 함수(mathematical function)를 바탕으로 설계됐습니다. 이론적 토대가 탄탄하고 쓰는 사람에게 더 친숙하지만, 프로그램을 실행하는 기계의 구조와는 비교적 무관합니다.
이번 강의
함수형 언어 다섯을 차례로 봅니다
2편에서 수학적 함수가 무엇인지 먼저 보고, 언어를 하나씩 봅니다. 9편에서는 명령형 언어에 들어온 함수형 기능을 보고 두 갈래를 견줍니다.
방언은 한 언어에서 갈라져 나온 변종입니다.
다음 편