최근 수정 시각 : 2025-04-15 17:39:38

Crystal(프로그래밍 언어)


[[프로그래밍 언어|'''프로그래밍 언어
{{{#!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> ※ 나무위키에 등재된 프로그래밍 언어 목록
AActionScript · Ada · Agda · ALGOL · APL · awk
BBASIC · Befunge · Brainfuck
CC · C# · C++ · Carbon · Chef · Clojure · COBOL · CoffeeScript · Coq · Crystal
DD · Dart
EElixir · Elm · emojicode · Erlang · ETA
FF# · Forth · Fortran
GGNU Octave · Go · Groovy
HHaskell · HolyC · HQ9+ · HRON
I
JJava · JavaScript · Julia
KKotlin · Krait
LLean · LISP · Lua
MMalbolge · MATLAB · Max · Mojo · Moonlight
NNim · Nix
OOberon · Objective-C · OCaml · Ook!
PPascal · Perl · PHP · Processing · Prolog · Python
QQ#
RR · Racket · Raku · ReasonML · Ruby · Rust
SScala · Scheme · Scratch · sed · Shakespeare · Shell Script · Smalltalk · Swift
TTypeScript
UUdon
VVisual Basic · Visual Basic .NET · Visual Basic for Applications · vvvv
WWave · Whitespace
X
Y
ZZenScript · 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 }}}}}}}}}}}} }}}}}}}}}}}}
분류:프로그래밍 언어 · 프로그래밍 언어 목록 · 언어별 예제 · 틀:프로그래밍 언어 문법
크리스탈
Crystal
파일:B Crystal logo.svg파일:Crystal_language_logo_color_inverted.svg
<colbgcolor=#ffffff,#1c1d1f><colcolor=#000,#fff> 개발 Crystal Team
전 개발자 Ary Borenszweig
Juan Wajnerman
Brian Cardiff
안정 버전 v1.15.1
최초 발표 2011년 6월 19일[1]
컴파일러 LLVM
라이선스 Apache License 2.0
지원 플랫폼 Linux, macOS, Windows[2]
확장자 .cr
파일:홈페이지 아이콘.svg | 파일:GitHub 아이콘.svg파일:GitHub 아이콘 화이트.svg | | 파일:유튜브 아이콘.svg
1. 개요2. 특징
2.1. 장점2.2. 단점
3. 기타

1. 개요

#!syntax ruby
puts "Hello, World!"

C 수준의 성능과 Ruby의 간결함을 동시에 만족시키기 위해 위한 LLVM 기반 고급(High-Level) 컴파일 프로그래밍 언어.

2. 특징

2.1. 장점

  • Ruby와 유사한, 간결하고 직관적인 문법을 제공해 사람에 따라 타 언어보다 배우기 쉽게 느껴질 수 있다.[3] 특히 이미 루비에 익숙하거나 루비 개발자라면 더욱 쉽게 익힐 수 있다.
  • 순수 동적 타입 언어인 루비와 다르게 정적(static) 타입 시스템을 사용한다. 다시 말해 컴파일 타임에 모든 타입을 검사하여 버그를 잡아낼 수 있다. 타입 추론 역시 지원하기에 타입을 명시하지 않아도 추론이 가능하다.
    • 타입 시스템에서 제네릭을 사용 가능하다. 클래스를 선언할 때 (T, V) 식으로 타입 변수를 선언하는 식. 상속 특수화 타입도 지원한다.
  • LLVM을 이용하여 네이티브 바이너리 형태로 컴파일되므로 런타임 오버헤드가 줄고 실행 속도가 빠르다.
  • GC 지원으로 프로그래머가 메모리 할당을 관리할 필요가 없다.
  • Go와 비슷하게 Fiber 형태의 경량 스레드를 지원하며 이를 활용해 고성능 네트워크 프로그래밍을 쉽게 할 수 있다.[4]
  • 컴파일 타임 메타프로그래밍으로 코드 생성을 자동화할 수 있다.

2.2. 단점

  • 공식적으로 Linux, macOS를 우선 지원하다 보니 결과적으로 Windows의 지원이 미흡하다. 이렇다보니 윈도우만 이용하는 개발자의 경우 큰 걸림돌이 될 수 있다.
    • 현재 Windows에서 사용하기 위해서는 실험적 지원으로 WSL이나 크로스 컴파일[5]이 필요하다.
  • Python, Java, JavaScript처럼 방대한 라이브러리 생태계를 갖추지 못했다. 주로 머신러닝, 데이터 과학 관련 라이브러리가 부족하다.
  • 정적 타입과 LLVM 최적화 과정, 다중 스레드 지원 제한으로 인해 컴파일 속도가 상당히 느리다. 빌드시 --no-debug 옵션을 넣는 등의 유사 해결책들이 있으나 완전히 문제를 해결하지는 못한다. Ruby처럼 JIT 도입 논의가 아예 없는 것은 아니나 현재 상용 수준으로 쓸만한 구현체는 없는 실정.

3. 기타

  • {{{crystal app.cr
}}}위와 같은 명령어를 통해 한번에 컴파일과 실행을 할 수 있다. 물론 내부적으로는 LLVM JIT을 통한 구현은 아니고 여전히 바이너리를 생성한 후 실행하는 방식이다.
[1] 알파 버전 공개[2] 실험적 지원[3] 물론 Ruby의 syntax가 개발자에 따라 호불호가 꽤 크게 갈리는 편임은 감안할 필요가 있다.[4] Crystal’s concurrency model is already modeled after Go’s. #[5] 보통적으로 Mingw-w64를 통해 Windows 네이티브 실행 파일을 만들지만, 일부 기능이 제한된다.