[프로그래밍 이야기 5] 점 두 개(..)가 가져온 혁명: Smalltalk의 유산과 Dart Cascade 연산자
Smalltalk의 유산과 Dart Cascade 연산자 소프트웨어 외주 개발 결과물이나 아웃소싱 코드를 검수하다 보면, Dart 언어로 작성된 프로젝트에서 독특하면서도 우아한 문법을 자주 마주치게 됩니다. 바로 점 두 개를 연달아 사용하는 **Cascade 연산자( .. )**입니다. 처음에는 단순히 코드 길이를 줄여주는 문법 정도로 보입니다. 하지만 이 작은 연산자 속에는 객체지향 언어가 지난 수십 년 동안 고민해 온 메시지 전달(Message Passing) , 객체 조작 방식 , 그리고 API 설계 철학 이 녹아 있습니다. 1부. Smalltalk에서 시작된 Cascade Cascade 연산자의 기원을 따라가려면 객체지향 프로그래밍의 조상인 Smalltalk 까지 거슬러 올라가야 합니다. Smalltalk에서 객체는 함수를 호출(Call)하는 대상이 아니라 메시지를 전달(Message Passing)받는 존재 였습니다. 동일한 객체에게 여러 메시지를 보낼 때는 객체 이름을 반복하지 않고 세미콜론( ; ) 하나만으로 계속 이어갈 수 있었습니다. person := Person new. person name: 'Alice'; age: 30; printInfo. 객체는 한 번만 등장하고 이후의 모든 메시지는 같은 수신자에게 전달됩니다. 지금 봐도 상당히 세련된 문법입니다. 무엇보다 메서드를 추가하거나 삭제할 때도 마지막 줄에 한 줄만 더 붙이면 되므로 코드 수정이 매우 자연스럽습니다. 2부. Objective-C가 이어받은 메시징 철학 Smalltalk의 영향을 가장 크게 받은 언어 가운데 하나가 Objective-C 입니다. Objective-C는 C 언어 위에 Smalltalk의 메시지 전달 철학을 접목하면서 유명한 대괄호 문법을 도입했습니다. Person *person = [[Person alloc] init]; [person setName:@"Alice"]; [person setAge:30]; ...