R vs 파이썬?
안녕하세요, 판다타입니다.
2023년 첫 포스트네요. 2023년으로 저는 5년차 개발자가 되었습니다. 학부를 빼면, 2018년에 회사(거의 대학원;;)에서 처음 업무로 개발을 시작하고 (1년 정도 쉬었으니) 이제 5년차! 하지만 제대로 배우면서 한 건 지난 2년간이니, 부진정5년차, 또는 3년차 개발자라고 해도 무방할 정도의 실력일까... 가끔 자신감이 줄기도 하면서ㅋㅋㅋ
아무튼 저는 지난 5년간 거의 파이썬(Python)으로 개발을 했고, 가끔 필요에 따라 C++이나 R 등을 사용하기도 했습니다. 특히 R은 대학원 수업 때 많이 썼는데요, 제가 전공한 생물정보학(bioinformatics)의 주요 언어 중 하나이기 때문입니다. R을 학부 때 통계학 수업 때 한 번, 4년 뒤 대학원에서 한 번, 그리고 3년 뒤, 지금 R을 다시 공부하게 되었습니다. 저번 포스트 - 통계학 공부 후기에서 말씀드린대로, 머신러닝/AI보다는 통계/통계학습 쪽에 관심이 생겨서인데요, 이론을 어느정도 갈무리하고 실습을 하자니, 파이썬 통계 패키지 statsmodels 등의 사용성이 썩 와닿지 않아서... 통계학 전공자들이 주로 쓰는 R은 그럼 얼마나 통계 개발에 좋을지 궁금해서 공부 중입니다.
다음은, 제가 생각한 파이썬에 비한 R의 장단점입니다. 저도 이제야 주니어를 벗어나고 있고, R을 실무에 활용한 경험도 많지 않다보니, 정확하지 않은 정보가 있을수도 있으니 양해해주세요, 댓글로 정정해주시는 것도 너무 감사할 것 같습니다.
R의 장점 (vs 파이썬)
- 통계검정이 압도적으로 쉽다. 파이썬의 대표적인 통계 패키지 statsmodels는 통계검정이 메인이 아닙니다. 통계공부를 하다가 감마분포검정같은걸 하나 해보려고 하면 한참 헤맵니다. statsmodels의 메인은 linear regression인데, 파이썬으로 한 세 줄 써야하는걸 R은 기본 라이브러리에서 lm 함수 하나로 끝내버립니다.
- 그래픽/플로팅이 깔끔하다. 파이썬의 matplotlib - seaborn으로 이어지는 그래픽 라이브러리도 꽤나 편합니다. 하지만 R은 기본 라이브러리만으로 그래픽이 seaborn 수준으로 나옵니다. seaborn이 matplotlib 위에 구현되어, 둘 사이 인터페이스를 익혀야하는 것에 비해, 내장 라이브러리만으로 코드도 훨씬 깔끔하게 짤 수 있습니다. ggplot 같은 추가 라이브러리를 쓰면 훨씬 그래프를 직관적이고 쉽게 만들 수 있습니다.
- Posit의 Rstudio. 화룡점정입니다. vscode가 필요가 없습니다. vscode와 개발인생을 함께 해왔는데, R은 R 언어 생태계 전체를 Posit이라는 회사가 책임지고 있는데, 이게 나쁘지 않다 못해 엄청 좋습니다. R studio라는 걸출한 IDE, tidyverse라는 데이터분석 파이프라인, shiny라는 웹 패키지, 그리고 이 모든 것에 대한 온라인 무료 설명서 R bookdown까지... 친절한 오픈소스 회사가 능력까지 있으면 어떻게 하나의 언어 생태계를 책임지고 가꿔나갈 수 있는지에 대한 좋은 예시인 것 같습니다. 안타깝게도 최근 Posit으로 이름을 바꾸면서 파이썬으로 진출하려고 하는게 초심이 걱정되만... 아무튼 Posit과 수석 과학자 Hadley Wickham은 신입니다... Hadley Wickham에 대해서는 이 링크를 보시면 됩니다.
- tidyverse의 tidy한 통합 분석 파이프라인. 데이터 분석 전체를 하나의 회사에서 만든 라이브러리만으로 거의 해결 가능합니다. 서로 인터페이스가 아주 잘 맞물려있구요, numpy - pandas (- scipy )- scikit-learn - tensorflow/keras/pytorch - matplotlib - seaborn... 파이썬 개발자들은 배워야 하는 라이브러리가 너무 많은데, 이들이 동일한 numpy 기반 위에서 잘 연결되어있지만 확실히 좀 느슨한 인터페이스가 불편할 때가 많았죠... R은 비교적 그런 걱정이 덜합니다. 데이터를 하나의 tsv/RDB 데이터프레임으로 간주해서 전처리부터 시각화까지 끌고갈 수 있다는게, 써보니까 참 좋더라구요. 아, 추가로 파이썬에는 없는 파이프라이닝 문법도 참 편합니다.
- shiny의 프론트엔드 작성 기법. 저는 회사에서 flask/fastapi로 웹앱개발을 살짝 했는데요, 항상 아쉬운게, html/css를 고치다보면 내가 개발자인지 디자이너인지 헷갈릴 때가 있습니다. html은 프로그래밍 언어가 아닙니다!! 짤방이 늘 생각나죠. 옆의 웹개발팀을 보면, react.js는 html/css를 최소로 쓰고 거의 js만으로 모든 걸 해결할 수 있더라구요. 찾아보니 파이썬에도 그런 문법을 가진 웹 라이브러리, 예를 들면 dash/plotly 등이 있지만, 개발이 너무 더딥니다. 반면 R의 shiny는 react나 flutter처럼 하나의 R언어만으로 모든 컴포넌트를 붙이고 프론트엔드를 완성할 수 있더라구요. 너무 좋습니다 posit 짱짱...
R의 단점 (vs 파이썬)
- tidyness에 대한 집착... 데이터 전처리가 쉽지만은 않다. tidyverse에서 얘기하는 tidyness, 즉 데이터의 깔끔한 tsv 형태, 또는 SQL에서 말하는 정규화된 DB의 형태를 저도 참 좋아합니다만, 그 tidy data를 만들기 위해 우리는 결국 손에 구정물을 묻혀야만 한다는걸 데이터 엔지니어링을 해본 사람들은 압니다. 하지만 R은 string 처리 등이 파이썬만큼 쉽지는 않기 때문에, 그 tidy data까지 가는 길이 조금 어렵지 않나, 하는 생각입니다. 데이터 분석가들은 tidy data 혹은 less tidy data부터 시작하니 좋겠지만, 데이터 엔지니어들은 NOT tidy data에서 tidy data를 만들기 좀 힘들어보이더라구요.
- 프로그래밍 언어론 자체의 반영이 아쉽다. S3니 S4니 OOP 개념이 물론 있고, hashmap 등의 라이브러리가 있지만, 결국 R은 dataframe을 만드는 앞뒤로 모든 처리가 이루어지기 때문에, 객체나 자료구조, 메모리, 알고리즘 등에 대한 추상화가 너무 이루어져 깊이 있는 프로그램 구현이 어렵습니다. 병렬 처리도 물론 어렵고... 파이썬도 GIL덕분에 기막히게 병렬 처리가 잘 안되지만 R은 좀더 어려워보입니다. 에러처리 방식도 trycatch 등의 문법이 try: catch: 로 간단히 처리되는 파이썬에 비해 직관적이지 않고...
- 머신러닝/딥러닝 라이브러리가 빈약하다. 다 할 수는 있습니다. R에도 다 있습니다. 다만 통일되어있지 않습니다. 앞서 R이 tidyverse 덕에 파이썬에 비해 데이터분석에서 앞서는 면이 있다고 말씀드렸는데요, 데이터분석을 넘어서 ML/DL쪽으로 가면 파이썬이 scikit-learn/tensorflow/keras/pytorch의 통합된 모델 덕분에 R보다 훨씬 편해보입니다. R도 tidymodels라는 통합 머신러닝 라이브러리를 만들어가고 있고, tensorflow/keras도 R을 지원하긴 하지만, 아무래도 파이썬의 사기적인 ML/DL 모델링 능력을 따라가긴 쉽지 않아 보입니다.
- Posit이 망한다면...? 네, 뭐 망하기야 하겠습니까만ㅋㅋ 최근에 R studio라는 이름이었던 회사가 Posit이라는 회사로 사명을 바꾸면서, 이름만 바뀐게 아니라 파이썬 지원을 시작했다는 점에서 R 언어도 결국 파이썬으로 대체되어가는 것인가..라는 걱정이 있습니다. 그런 때가 온다면 파이썬으로 넘어가면 되는거 아냐? 싶지만, 여태껏 R로 썼던 프로그램을 다 파이썬으로 다시 써야 하고, R 언어 자체에 대한 애정도 있고...
요약
결론을 내보자면, R은 통계 최적화, R studio/tidyverse/shiny의 통합개발에 장점이 있고, 파이썬은 ML/DL 최적화, 저수준 프로그래밍 가능이라는 장점이 있습니다. 장기적으로 R이 파이썬에 먹힐 수도 있겠죠, 확실히 파이썬 사용자는 계속 늘고 있는데, R은 학계에서만 주로 사용하다보니... 하지만 필요에 따라 적합한 언어를 쓸 줄 아는 개발자가 좋은 개발자니, 나중에 어떻게될지 모르더라도 둘 모두 내 것처럼 사용할 수 있도록 열심히 공부해야겠습니다.
'개발 > R' 카테고리의 다른 글
R 프로그래밍 언어 공부를 위한 무료 ebook 링크 모음 (0) | 2023.02.07 |
---|
댓글