프로그램 (Program)

책의 이 파트에서는 프로그래밍 기술을 향상시킬 것입니다. 프로그램은 모든 데이터 과학 작업을 위해 필요한 교차적인 기술입니다. 데이터 과학을 수행하려면 반드시 컴퓨터를 사용해야 합니다. 머릿속으로만 할 수 없으며, 연필과 종이로도 할 수 없습니다.

프로그램(가져오기, 정리, 변형, 시각화, 모델링, 소통, 즉 모든 것)이  파란색으로 강조된 데이터 과학 프로세스 모델 다이어그램.
Figure 1: 프로그래밍은 다른 모든 구성 요소들이 헤엄치는 물과 같습니다.

프로그래밍은 코드를 생성하며, 코드는 소통의 도구입니다. 명백하게 코드는 컴퓨터에게 무엇을 하기를 원하는지 알려줍니다. 하지만 코드는 다른 사람들에게도 그 의미를 전달합니다. 수행하는 모든 프로젝트는 근본적으로 협력적이기 때문에 코드를 소통의 수단으로 생각하는 것이 중요합니다. 다른 사람들과 함께 작업하지 않더라도, 여러분은 분명히 미래의 자신과 함께 작업하게 될 것입니다! 명확한 코드를 작성하는 것은 다른 사람들(미래의 자신 포함)이 여러분이 왜 그런 방식으로 분석을 처리했는지 이해할 수 있게 하므로 중요합니다. 즉, 프로그래밍을 더 잘하게 된다는 것은 소통을 더 잘하게 된다는 것을 의미하기도 합니다. 시간이 흐르면서 여러분의 코드가 작성하기 쉬워질 뿐만 아니라 다른 사람들이 읽기에도 쉬워지기를 바랍니다.

이어지는 세 장에서 프로그래밍 기술을 향상시키기 위한 기술들을 배우게 됩니다:

  1. 복사해서 붙여넣기는 강력한 도구이지만, 두 번 이상 하는 것은 피해야 합니다. 코드에서 자신을 반복하는 것은 오류와 불일치를 쉽게 초래할 수 있기 때문에 위험합니다. 대신 25  함수 (Functions) 에서는 반복되는 tidyverse 코드를 추출하여 쉽게 재사용할 수 있게 해주는 함수(functions) 를 작성하는 방법을 배웁니다.

  2. 함수는 반복되는 코드를 추출하지만, 종종 서로 다른 입력에 대해 동일한 작업을 반복해야 할 때가 있습니다. 유사한 작업을 반복해서 수행할 수 있게 해주는 반복(iteration) 도구가 필요합니다. 이러한 도구에는 26  반복 에서 배울 for 루프와 함수형 프로그래밍이 포함됩니다.

  3. 다른 사람들이 작성한 코드를 더 많이 읽다 보면, tidyverse를 사용하지 않는 코드를 더 많이 보게 될 것입니다. 27  기본 R 필드 가이드 에서는 야생에서 보게 될 가장 중요한 기본(base) R 함수 중 일부를 배웁니다.

이 장들의 목표는 데이터 과학을 위해 필요한 프로그래밍의 최소한을 가르치는 것입니다. 여기서의 내용을 마스터했다면, 프로그래밍 기술에 계속 투자하는 것을 강력히 추천합니다. 도움이 될 만한 두 권의 책을 썼습니다. Garrett Grolemund가 쓴 Hands on Programming with R은 프로그래밍 언어로서의 R에 대한 입문서이며, R이 첫 번째 프로그래밍 언어라면 시작하기에 훌륭한 장소입니다. Hadley Wickham이 쓴 Advanced R은 프로그래밍 언어인 R의 세부 사항을 깊이 파고듭니다. 기존 프로그래밍 경험이 있다면 시작하기에 훌륭한 장소이며, 이 장들의 아이디어를 내면화한 후의 훌륭한 다음 단계입니다.