프로그래밍 사이트 선정 프로그래밍 언어 순위 목록 | ||||
{{{#!wiki style="margin: 0 -10px -5px; word-break: keep-all" {{{#!wiki style="display: inline-table; min-width: 25%; min-height: 2em;" {{{#!folding [ IEEE Spectrum 2024 ] {{{#!wiki style="margin: -5px 0" |
<rowcolor=#fff> 스펙트럼 부문 상위 10개 프로그래밍 언어 | 직업 부문 상위 10개 프로그래밍 언어 | ||
1 | Python | 1 | SQL | |
2 | Java | 2 | Python | |
3 | JavaScript | 3 | Java | |
4 | C++ | 4 | TypeScript | |
5 | TypeScript | 5 | SAS | |
6 | SQL | 6 | JavaScript | |
7 | C# | 7 | C# | |
8 | Go | 8 | HTML | |
9 | C | 9 | Shell | |
10 | HTML | 10 | C++ |
}}}
}}}
- [ Stack Overflow 2024 ]
- ||<tablewidth=100%><width=9999><-4><bgcolor=#FFA500><tablebgcolor=#fff,#222> 2024년 Stackoverflow 설문조사 기준 인기 상위 25개 프로그래밍 언어 ||
1 JavaScript 14 Rust 2 HTML, CSS 15 Kotlin 3 Python 16 Lua 4 SQL 17 Dart 5 TypeScript 18 어셈블리어 6 Bash 19 Ruby 7 Java 20 Swift 8 C# 21 R 9 C++ 22 Visual Basic 10 C 23 MATLAB 11 PHP 24 VBA 12 PowerShell 25 Groovy 13 Go
- [ TIOBE 2024 ]
- ||<tablewidth=100%><width=9999><-4><bgcolor=deepskyblue><tablebgcolor=#fff,#222> 2024년 8월 기준 검색어 점유율 상위 20개 프로그래밍 언어 ||
1 Python 11 MATLAB 2 C++ 12 Delphi / Object Pascal 3 C 13 PHP 4 Java 14 Rust 5 C# 15 Ruby 6 JavaScript 16 Swift 7 SQL 17 Assembly language 8 Visual Basic 18 Kotlin 9 Go 19 R 10 Fortran 20 Scratch {{{#!wiki style="margin: 0 -10px -5px; min-height: calc(1.5em + 5px);"
{{{#!folding [ 21위 ~ 50위 펼치기 · 접기 ]
{{{#!wiki style="margin: -5px -1px -11px"21 COBOL 36 Scala 22 Classic Visual Basic 37 Transact-SQL 23 LISP 38 PL/SQL 24 Prolog 39 ABAP 25 Perl 40 Solidity 26 (Visual) FoxPro 41 GAMS 27 SAS 42 PowerShell 28 Haskell 43 TypeScript 29 Dart 44 Logo 30 Ada 45 Wolfram 31 D 46 Awk 32 Julia 47 RPG 33 Objective-C 48 ML 34 VBScript 49 Bash 35 Lua 50 Elixir
- [ PYPL 2024 ]
- ||<tablewidth=100%><width=9999><-4><bgcolor=green><tablebgcolor=#fff,#222> 2024년 8월 기준 검색어 점유율 상위 20개 프로그래밍 언어 ||
1 Python 11 Objective-C 2 Java 12 Go 3 JavaScript 13 Kotlin 4 C# 14 MATLAB 5 C/ C++ 15 PowerShell 6 R 16 VBA 7 PHP 17 Dart 8 TypeScript 18 Ruby 9 Swift 19 Ada 10 Rust 20 Lua
}}} ||
프로그래밍 언어 목록 · 분류 · 문법 |
R | |
[clearfix]
1. 개요
> hello <- "Hello, world!"
> hello
"Hello, world!"
R은 1992년 뉴질랜드에 위치한 오클랜드 대학교에서 개발된 통계(statistics) 및 그래프 작업을 위한 인터프리터 프로그래밍 언어이다. R이 가지는 특이 사항 중 하나로, color를 colour라고 쓰는 것 또한 인정된다. 영국식 영어를 사용하는 뉴질랜드에서 개발돼서 얻은 특징인 듯하다.
2. 다른 프로그래밍 언어 및 통계 솔루션과 비교
SPSS, STATA, SAS 등 유사 소프트웨어들이 있으며 요즘엔 Python도 많이 쓴다. SPSS는 통계학용이라는 목적만 같을 뿐 실제로 사용해 보면 나머지 언어들과는 좀 다르다. STATA는 R에 비해 프로그래밍 자유도가 낮다는 등의 단점이 있지만, 대신 계량 경제학(특히 실증 미시 경제학)에 특화되고 상대적으로 배우기 쉽다는 장점이 있다. SAS는 유료 통계 분석 언어 중에 가장 유명한 언어이다.[1] 위의 언어들 중 그나마 R에 가장 가깝다고 할 수 있다. Python은 앞의 언어들보다는 좀 더 일반적이고 범용성이 큰 언어이다. 통계나 수치 해석을 위한 라이브러리를 동원해 통계 분석용으로 쓸 수 있다.[2]3. 특징
- 변수들이 저장되는 환경이라는 데이터 타입이 있다.
-
변수를 선언 및 할당하면 해당 변수가
.GlobalEnv
라는 환경에 생성된다. - 기본적으로 함수의 매개 변수로 받는 값은 함수 내부에서 값을 변경하더라도 외부에 반영되지 않는다. 이러한 이유로 일반적으로 함수를 정의하게 되면 순수 함수가 되어 Side Effect를 줄일 수 있다.
- 함수를 입력받거나 반환할 수 있어 함수형 프로그래밍을 하기에 용이하다.
-
assign()
함수를 이용하여 동적으로 원하는 환경에 변수를 생성해 낼 수 있으며 이를 이용하여 객체 지향 프로그래밍을 구현해낼 수도 있다. - Java, C, PHP 등 다른 프로그래밍 언어와 연결이 용이하고, 윈도우, 맥 OS, 리눅스 및 유닉스 등의 컴퓨터 운영 체계를 지원한다.
4. 장점
- GPL로 배포되고 있어 무료로 사용할 수 있다. SPSS, MATLAB과 같은 상용 프로그램을 구입하지 않아도 된다.
- R에서 사용할 수 있는 수많은 통계 관련 패키지[3]가 개발되어 있어서 인터넷을 통해 이 패키지들을 설치하는 식으로 무수한 기능 확장이 가능하다. 애초에 통계학자들이 만들어 낸 언어이며 통계 전문 언어 중 가장 보편적이기 때문에 내가 사용하고 싶은 모든 통계 기법이 이미 어딘가에 패키지 형태로 구현되어 있다고 봐도 된다. CRAN 패키지 사이트에서 찾아볼 수 있다.[4]
- 그래픽 관련 패키지를 설치하면 간단하게 다양한 그래프를 활용할 수 있으며[5] 구글이나 네이버 지도를 불러오거나 이를 활용해 GIS 용도로 쓰는 것도 가능하다.
- 데이터 클리닝 관련 패키지도 다양하게 지원하기 때문에 데이터를 상황에 맞게 자유자재로 다루기가 수월하다.
- reticulate 패키지를 이용하여 Python 의 라이브러리들을 쉽게 활용할 수 있다.
- 웹 애플리케이션 개발 프레임워크인 Shiny의 고도화로 통계 또는 머신 러닝 모델을 웹과 연동할 수 있다.
- 데이터 마이닝, 빅 데이터 프로세싱, 기계 학습 등에 유용하다.
- 리스크, 재무, 마케팅 담당자 채용 시 R 능통자를 우대하기도 한다.
- 밑의 단점 단락에 멀티코어 프로세싱을 지원하지 않는다고 쓰여 있지만, Microsoft R Open을 사용하면 인텔 MKL 라이브러리를 이용해 멀티코어 프로세싱을 사용할 수 있다. 심지어 작업을 자동으로 서로 다른 코어에 할당하기 때문에 따로 코드를 작성할 필요도 없다! 하지만 R 유저들은 CRAN 대신 MRAN을 사용하는 것을 꺼리는 듯하다. MRAN은 2022년 7월 1일자로 배포를 종료했다.[6] 인텔 CPU가 아닌 경우에는 시스템 환경 변수에 MKL_DEBUG_CPU_TYPE을 넣고 값을 5로 설정하면 된다고 한다.[7]
- 기본적으로 함수를 통해 외부의 값을 바꾸는 것이 힘들기 때문에 부작용이 없는 코드를 작성하기에 유용하며[8] 함수도 값처럼 쓸 수 있어 함수형 프로그래밍을 하기에도 좋다.
- reticulate 패키지를 이용해 파이썬 패키지를 불러와, R과 함께 병행하여 이용할 수 있다.
5. 단점
-
난이도
어렵다. 물론 이것은 컴퓨터 공학자가 아니라 일반인 입장에서 어렵다는 것이다. 해외의 프로그래머 커뮤니티를 둘러봐도 R의 난이도에 대한 악명을 쉽게 찾아볼 수 있다. 이 악명이 나온 이유가 있다. R이 원래 통계 프로그래밍 언어인 S를 그대로 배껴서 만들었기 때문이다.[9] 문제는 통계학자들도 R 언어를 배워야 하는데, 다양하게 만들고 분석할 수 있는 장점과 프로그래밍을 알아야 한다는 단점을 가지게 되었다. 즉, R은 프로그래밍 언어이다. 이를 위해서는 기본적인 프로그래밍에 대한 이해도가 있어야 한다. 컴퓨터의 작동 원리를 알아야 하는 것이다.[10] 통계 분석 프로그램으로 유명한 SAS, STATA, Minitab에 비하면 월등히 어려워서 한동안은 대학에서도 취급하지 않았고, 일부 저널에서는 받아주지도 않았다. 2000년대 중후반에 코딩이 중요해지면서, R의 인기가 올라갔다. 인기가 올라간 이유 중 가장 큰 이유는 '공짜'라는 것이다. 통계 분석하는 함수들이 기본적으로 들어가 있으면서, 무료로 프로그래밍이 가능하기에 현재 많은 통계 분석 프로그램 유일하게 SAS의 명성을 따라잡을 수 있는 언어가 되었다. 이에 따라 R의 인기를 견제하고자 하는 SAS 또한 자사 프로그램을 대학에 무료 배포를 시작했다.[11] 나이 지긋하신 교수님들은 본인들이 대학원 시절에는 SAS를 통해 배웠기 때문에 그 교수님들 수업을 들으면 SAS를 어느 정도 알아야 이해를 할 수 있는 수업을 하는 경우가 많다.[12] 반대로 비교적 최근에 임용된 교수님들은 데이터 분석에서 R 또는 Python을 훨씬 더 많이 사용한다. -
프로그래밍 언어로서의 설계
R은 입문자가 배우기에도 쉽지 않은 반면에, 정작 프로그래밍에 숙련된 사람에게도 당혹스러운 측면이 많다. 이는 R의 설계 자체가 일관적으로 통합되지 않았기 때문이다. 예컨대 객체 지향 프로그래밍을 위한 기본 클래스 종류만 해도 S3 클래스, S4 클래스로 나뉘어 있으며, 최근에는 R6 패키지를 이용한 R6 클래스가 대두되고 있다.[13] 이러한 환경에 익숙하지 않은 사람은 객체 지향 프로그래밍을 어떤 클래스로 구현할지부터 막막할 수 있다. 대개 다른 프로그래밍 언어에서는 상위 객체에 접근하는 리터럴로 사용되는 '.'을 변수 이름에 버젓히 사용할 정도로[14] 다른 객체 지향 프로그래밍 언어와 차이도 크다. -
메모리
큰 데이터 집합을 이용할 때 문제가 발생할 수 있다. 데이터를 물리적 메모리에 저장해야 하기 때문이다. 데이터뿐만 아니라, 분석할 때 사용하는 모든 '패키지'를 메모리에 저장하면서 사용하기 때문에 큰 메모리가 필요하다. 예로 들면, 몇 기가바이트급의 데이터를 분석한다면, 패키지에 데이터를 램에 저장한다고 생각하면, 기본 맥북처럼 4GB 램인 컴퓨터는 분석도 제대로 못 한다. 때문에 효율이 중시되는 프로젝트에서는 먼저 R로 구현한 후 그걸 C 등의 일반 프로그래밍 언어로 포팅하는 경우가 많다. 다른 경우는 복잡한 데이터 작업은 C 또는 Fortran(포트란)에서 작업시키고 결과만 가져오는 방식을 사용하기도 한다. 다만, 컴퓨터에 장착되는 메모리 용량이 증가함에 따라 이 문제는 점점 개선되고 있다.[15] -
정보 보호 기능 없음
과거에는 R을 백엔드 서버로 사용하여 계산을 수행하는 것도 불가능했으나, 아마존닷컴 웹 서비스 클라우드 플랫폼에서 가상 컨테이너를 사용하는 등의 기술이 개발되면서 보안 문제는 개선됐다. -
유니코드 삽입 불가
프로그램 자체의 한국어 기능을 제공하지 않는다. 다른 프로그램들마냥 한국어 주석을 생각 없이 넣었다가는 코드를 잘 짜놓고도 오류를 뽑아대는 모습을 볼 수 있을 것이다. 특히 함수나 for문 등 연속적인 작업이 이루어지는 코드 내부에 한글로 이루어진 주석을 꽉꽉 채워 넣거나 하지는 말도록 하자.
6. 통합 개발 환경(IDE)
6.1. R스튜디오
통합 개발 환경(IDE)으로 RStudio가 가장 무난하다. R 본체가 설치되어 있어야 작동하며, 훨씬 편리한 인터페이스를 제공하는 것이 강점이다.유튜브에 RStudio를 설치하는 방법을 소개하는 영상이 있다.[16]
한글 등 폭넓은 인코딩 및 설정을 지원하므로 안정적이다. 단, 윈도우의 경우 폴더 경로나 파일 이름에 한글이 들어가면 제대로 작동하지 않을 수 있으니 주의해야 한다. 특히 사용자 계정 이름이 한글일 경우 기본 폴더 경로 자체에 한글이 들어가게 되므로 제대로 실행되지 않을 수 있다. 이 경우 관리자 권한으로 실행시키면 된다. 당연히 리눅스 등 유닉스 계열은 상관없다.[17]
RStudio에서 최근에는 Stan, C++, JAVA 등의 코딩도 할 수 있도록 지원하고 있기 때문에 범용성이 커졌다.
글로벌 프로젝트답게 File 메뉴나 Tools 메뉴에서 여러 인코딩을 지원하거나 선택 후 바로 열어보기(open)기능이 강화됐다.
심지어는 내부 윈도우의 글자 크기도 별도의 조절이 가능하다.
6.2. 기타 IDE 및 에디터
그 외의 IDE나 에디터들에는 다음이 있다. 보통 R에 대한 문법 검사와 코드 색상을 지원하는 플러그인 형태로 제공된다.- ConTEXT
- Eclipse (StatET)
- Emacs (Emacs Speaks Statistics)
- LyX (modules for knitr and Sweave)
- vim
- jEdit
- Kate
- Revolution R Enterprise DevelopR (part of Revolution R Enterprise)
- Sublime Text
- TextMate
- Atom
- WinEdt (R Package RWinEdt)
- Tinn-R
- Notepad++
- IntelliJ IDEA
- Visual Studio
- Visual Studio Code [18]
- Architect
- RKWard
- DataSpell [19]
- Jamovi
7. 시각화 패키지
데이터를 그래프 등 보기 좋게 시각화해 주는 패키지 목록은 다음과 같다.- ggplot2
- ggvis
- googleVis
- rCharts
- ggiraphExtra
- plotly
- wordcloud
8. 튜토리얼
- R Cookbook: 요리 레시피 형태로 각 문제마다 해결 방법들을 나열해 놓은 책이다. 출판도 되어있지만 온라인 웹 페이지 형식으로도 제공되고, PDF도 다운받을 수 있다. 데이터 시각화(visualization) 기능을 위한 R Graphics Cookbook 역시 PDF로 다운받을 수 있다.
9. 관련 문서
- 통계학
- 데이터 마이닝
- 빅 데이터 프로세싱
- 알고리즘 트레이딩: 미국 금융업이나 미국 학계에서는 R로 하는 알고리즘 트레이딩을 가르친다. 해당 서적이 한국에 번역도 됐다.[20]
- ADP, ADsP
- 빅데이터분석기사
10. 외부 링크
[1]
공대에서 매트랩의 위상을 떠올리면 이와 얼추 비슷하다.
[2]
예컨대, R의 하지만
대학원생이 있다면...
[13]
R6 패키지는 S3, S4 클래스보다 더 일반적인 객체 지향 프로그램을 하기 위해 개발되었다. Perl의 Moose와 비슷한 측면이 있다.
[14]
R에서는 '.'을 변수 이름으로 사용하는 대신 '$'이 접근자로 쓰인다.
[15]
물론 개선된다기보단 문제시되지 않는 쪽으로 변하는 중이라는 것이다.
[16]
R 진짜 설치하기 싫은 사람만 보세요유튜브
[17]
디폴트는 UTF-8이므로 MS 윈도우에서 작성된 파일을 불러올 경우 CP949 등의 인코딩 불러오기를 해주면 된다.
[18]
R와
|Browser Preview를 VSCode에 설치하고
httpgd를 쓰면 RStudio 못지않은 환경에서 작업할 수 있다.
[19]
다만 애플 실리콘 베이스의 맥북들에서 'R Wrapper Terminated'라는 문구와 함께 R은 실행이 되지 않는다는 보고가 있다.
[20]
R로 하는 퀀트 트레이딩네이버 쇼핑
data.frame
을 본떠서 설계한 DataFrame
이라는 데이터 구조를 기반으로 만들어진
Pandas 패키지를 사용한다.
[3]
추가 기능이라고 볼 수 있다. R의 내장 함수를 사용하는 게 아니라 자신이 직접 함수를 만들어야 한다거나, 외부 언어나 자료를 끌어온다거나, 복잡한 프로그래밍을 해야 할 때가 있다. 이런 작업을 사전에 마친 사람이 자신이 만든 소스를 공개하는 것이라고 보면 된다. 평범한 R 사용자들은 이러한 소스를 받아서 쓴다.
[4]
2018년
4월 22일 현재 12,500여 개의 패키지가 있다.
[5]
대표적으로
ggplot2 패키지가 있다. 사용이 쉽고 굉장히 미려하다.
[6]
Microsoft R Application Network retirement
[7]
R 속도 상승 in Windows 10워드프레스
[8]
물론 assign
함수를 이용하면 외부의 값을 자유자재로 바꿀 수 있기는 하다.
[9]
R를 S의 구현체 중 하나로 보기도 한다.
[10]
기본적으로 컴퓨터는 계산기이다.
[11]
담배 회사에서 손해(?)를 보면서도 담배를 훔치는 청소년을 잡지 말라는 것처럼, 대학 시절부터 무료로 SAS를 사용하면서 SAS에 익숙해져야 사회 나가서도 SAS를 찾기 때문. 회사에서 SAS를 쓰려면 정말 비싸게 주고 라이선스를 구매해야 한다.
[12]
특히 실험 계획법이나 회귀 분석과 같은 선형 모형 수업. 이제 정년을 앞둔 사람 입장에서 이미 수업에서 사용되는 예제들의 코드가 만들어져 있어서 Run 한 번만 누르면 되는데, 굳이 새로운 언어를 배워서 코드를 바꿀 사람은 거의 없기 때문.