[[프로그래밍 언어|'''프로그래밍 언어 {{{#!wiki style="font-family: Times New Roman, serif; display: inline;"]] | ||||||||
{{{#!wiki style="min-height: calc(1.5em + 5px); margin: 0 -10px -5px" {{{#!wiki style="display: inline-table; min-width: 40%; min-height: calc(1.5em + 5px)" {{{#!folding [ 목록 펼치기 · 접기 ] {{{#!wiki style="margin: -5px -1px" | <colbgcolor=royalblue><colcolor=#fff> ※ 나무위키에 등재된 프로그래밍 언어 목록 | |||||||
A | ActionScript · Ada · Agda · ALGOL · APL · awk | |||||||
B | BASIC · Befunge · Brainfuck | |||||||
C | C · C# · C++ · Carbon · Chef · Clojure · COBOL · CoffeeScript · Coq · Crystal | |||||||
D | D · Dart | |||||||
E | Elixir · Elm · emojicode · Erlang · ETA | |||||||
F | F# · Forth · Fortran | |||||||
G | GNU Octave · Go · Groovy | |||||||
H | Haskell · HolyC · HQ9+ · HRON | |||||||
I | ||||||||
J | Java · JavaScript · Julia | |||||||
K | Kotlin · Krait | |||||||
L | Lean · LISP · Lua | |||||||
M | Malbolge · MATLAB · Max · Mojo · Moonlight | |||||||
N | Nim · Nix | |||||||
O | Oberon · Objective-C · OCaml · Ook! | |||||||
P | Pascal · Perl · PHP · Processing · Prolog · Python | |||||||
Q | Q# | |||||||
R | R · Racket · Raku · ReasonML · Ruby · Rust | |||||||
S | Scala · Scheme · Scratch · sed · Shakespeare · Shell Script · Smalltalk · Swift | |||||||
T | TypeScript | |||||||
U | Udon | |||||||
V | Visual Basic · Visual Basic .NET · Visual Basic for Applications · vvvv | |||||||
W | Wave · Whitespace | |||||||
X | ||||||||
Y | ||||||||
Z | ZenScript · Zig | |||||||
한글 | 누리 · 씨앗 · 아희 · 약속 · 엄랭 · 엔트리 · 창조 | }}}}}}}}}{{{#!wiki style="display: inline-table; min-width: 40%; min-height: calc(1.5em + 5px)" {{{#!folding [ 순위 펼치기 · 접기 ] {{{#!wiki style="margin: -5px -1px -10px" | {{{#!wiki style="min-height: calc(1.5em + 5px); margin: 0 -10px -5px" {{{#!wiki style="display: inline-table; min-width: 25%; min-height: calc(1.5em + 5px)" {{{#!folding [ IEEE Spectrum 2024 ] {{{#!wiki style="margin: -5px -1px" | <tablewidth=100%><tablebgcolor=transparent><colbgcolor=#11a500><colcolor=#fff> 스펙트럼 부문 상위 10개 프로그래밍 언어 | <colbgcolor=#ff1100><colcolor=#fff> 직업 부문 상위 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++ | }}}}}}}}}{{{#!wiki style="display: inline-table; min-width: 25%; min-height: calc(1.5em + 5px)" {{{#!folding [ Stack Overflow 2024 ] {{{#!wiki style="margin: -5px -1px" | <colbgcolor=#ffa500><colcolor=#fff> 2024년 Stackoverflow 설문조사 상위 25개 프로그래밍 언어 | |||
1 | JavaScript | <colbgcolor=#ffa500><colcolor=#fff> 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 | }}}}}}}}}{{{#!wiki style="display: inline-table; min-width: 25%; min-height: calc(1.5em + 5px)" {{{#!folding [ TIOBE 2025 ] {{{#!wiki style="margin: -5px -1px" | <colbgcolor=#2777c2><colcolor=#fff> 2025년 2월 TIOBE 검색어 점유율 상위 20개 프로그래밍 언어 | |||||
1 | Python | <colbgcolor=#2777c2><colcolor=#fff> 11 | Fortran | |||||
2 | C++ | 12 | Scratch | |||||
3 | Java | 13 | Rust | |||||
4 | C | 14 | PHP | |||||
5 | C# | 15 | R | |||||
6 | JavaScript | 16 | MATLAB | |||||
7 | SQL | 17 | Assembly language | |||||
8 | Go | 18 | COBOL | |||||
9 | Delphi / Object Pascal | 19 | Ruby | |||||
10 | Visual Basic | 20 | Prolog | }}}}}}}}}{{{#!wiki style="display: inline-table; min-width: 25%; min-height: calc(1.5em + 5px)" {{{#!folding [ PYPL 2025 ] {{{#!wiki style="margin: -5px -1px -10px" | <colbgcolor=green><colcolor=#fff> 2025년 3월 PYPL 검색어 점유율 상위 20개 프로그래밍 언어 | |||
1 | Python | <colbgcolor=green><colcolor=#fff> 11 | Swift | |||||
2 | Java | 12 | Go | |||||
3 | JavaScript | 13 | Kotlin | |||||
4 | C/C++ | 14 | MATLAB | |||||
5 | C# | 15 | Ada | |||||
6 | R | 16 | Dart | |||||
7 | PHP | 17 | Ruby | |||||
8 | Rust | 18 | Lua | |||||
9 | TypeScript | 19 | PowerShell | |||||
10 | Objective-C | 20 | VBA | }}}}}}}}}}}} | }}}}}}}}}}}} | |||
분류:프로그래밍 언어 · 프로그래밍 언어 목록 · 언어별 예제 · 틀:프로그래밍 언어 문법 |
#lang racket (println 'Hello, world!')
라켓 Racket | |
| |
개발자 | Matthias Felleison Mattew Flatt Robby Findler Shriram Krishnamurthi |
최초 공개 | 1995년 1월 28일 ([age(1995-01-28)]년 전) |
최신 버전 | 8.14 (2024년 8월 19일) |
|
1. 개요
라켓(Racket)은 리스프/스킴 계열 언어 중 하나인 범용 프로그래밍 언어이다. 라켓은 프로그래밍 언어 생성, 구현, 및 디자인에 최적화 된 언어이다. 라켓은 스크립팅, GUI 애플리케이션을 포함한 범용 애플리케이션 프로그래밍, 교육용 및 연구용 언어로 많이 쓰인다. 이 언어를 만든 사람 중 하나인 Robby Findler는 이걸 써서 강의에 쓰는 슬라이드를 만든다.패키지를 설치하려면 다음과 같이 명령어
raco
를 이용한다.[1]raco pkg install <pkg-name>
2. 역사
1990년대 중반에 미국 라이스 대학교의 교수 Matthias Felleison과 박사학위 학생들이었던 Matthew Flatt, Robby Findler, 및 Shriram Krishnamurthi가 교육용 언어로 쓰기 위해 Scheme을 기반으로 한 새 언어를 개발하기로 한다. 그리고 이 언어를 위한 전용 IDE인 DrRacket을 개발하게 된다. 처음 개발을 시작하고 만든 언어의 이름은 PLT Racket이었으나 2010년 6월에 현재 언어인 Racket으로 변경되었다.3. 특징
- 라켓이 다른 LISP 계열 언어와 비교해서 다른 점은 특유의 유연한 매크로와 확장성이라고 할 수 있다. 이렇게 만들어진 모듈들은 라켓 기본 언어의 문법을 오버라이드 하게 된다. 일단 모듈은 그 자체가 한 언어로 볼 수 있으므로 그걸 #lang ____ 이런 형식으로 가져와서 쓰게 될 경우 언어 자체를 바꿔버리는 게 가능하다. 극단적인 예시로, 이를 이용하여 라켓에서 파이썬 돌리게 해주는 모듈도 있다![2]
- 라켓은 확장자로
.rkt
를 사용한다.
4. 예제
문법 자체는 커먼 리스프와 스킴 등을 크게 벗어나지 않는다. 모든 언어는 일단 헬로월드부터 출력한다.(print "Hello World\\n")
커먼 리스프에서의 함수를 정의하는 키워드인 defun
대신 define
을 쓴다. 피보나치 숫자를 리턴하는 재귀함수를 구현하면 아래와 같다.(define fib (n)
(cond
[(< n 2) 1]
[else (+ (fib (- n 1)) (fib (- n 2)))]))
5. DrRacket
- 라켓 언어 전용 IDE로 처음엔 C++로 구현되었으나 버전 5.0부터는 라켓으로 다시 쓰여졌다.
- 윈도, macOS, Linux 등 거의 모든 플랫폼을 지원한다.
- 익숙해지면 꽤 쓸만하다. 특히 이 IDE의 가장 편한 점 중 하나는 괄호를 자동으로 닫아준다는 것이다. 스킴 계열 언어에서는 대괄호, 중괄호, 소괄호 모두가 쓰이는데 그게 여러 개 쌓일 경우 불가능하다. 이렇게 써놓으니까 무슨 소린지 잘 모르겠지만 일단 써보면 안다.(...) 대괄호, 중괄호, 소괄호를 섞어 사용했을 경우, 나중에 소괄호를 연타해도 알아서 중, 대괄호로 바꿔준다. 쓰다 보면 은근 편하다.
6. 여담
- 프로그래밍 언어론 교재 Essentials of Programming Languages 서문에 R5RS 호환되는 Scheme이면 실습이 가능하다고 안내되어 있으나 라켓의
eopl
패키지를 이용하면 실습을 진행하기 수월하다.[3]
7. 관련 문서
8. 외부 링크
[1] https://docs.racket-lang.org/pkg/getting-started.html[2] https://github.com/pedropramos/PyonR[3] https://docs.racket-lang.org/eopl/index.html