최근 수정 시각 : 2025-02-12 12:07:12

Crystal


파일:다른 뜻 아이콘.svg  
,
,
,
,
,
,
,
,
,
은(는) 여기로 연결됩니다.
다른 뜻에 대한 내용은 아래 문서를
OverRapid의 곡에 대한 내용은 Crystal(OverRapid) 문서
번 문단을
부분을
, 에 대한 내용은 문서
번 문단을
부분을
, 에 대한 내용은 문서
번 문단을
부분을
, 에 대한 내용은 문서
번 문단을
부분을
, 에 대한 내용은 문서
번 문단을
부분을
, 에 대한 내용은 문서
번 문단을
부분을
, 에 대한 내용은 문서
번 문단을
부분을
, 에 대한 내용은 문서
번 문단을
부분을
, 에 대한 내용은 문서
번 문단을
부분을
, 에 대한 내용은 문서
번 문단을
부분을
다른 뜻에 대한 내용은 아래 문서를
참고하십시오.

*
OverRapid의 곡:
Crystal(OverRapid)
문서의 번 문단
문서의 부분
*
:
문서의 번 문단
문서의 부분
*
:
문서의 번 문단
문서의 부분
*
:
문서의 번 문단
문서의 부분
*
:
문서의 번 문단
문서의 부분
*
:
문서의 번 문단
문서의 부분
*
:
문서의 번 문단
문서의 부분
*
:
문서의 번 문단
문서의 부분
*
:
문서의 번 문단
문서의 부분
*
:
문서의 번 문단
문서의 부분


[[컴퓨터공학|컴퓨터 과학 & 공학
Computer Science & Engineering
]]
[ 펼치기 · 접기 ]
||<tablebgcolor=#fff,#1c1d1f><tablecolor=#373a3c,#ddd><colbgcolor=#0066DC><colcolor=white><colkeepall> 기반 학문 ||수학(해석학 · 이산수학 · 수리논리학 · 선형대수학 · 미적분학 · 미분방정식 · 대수학(환론 · 범주론) · 정수론) · 이론 컴퓨터 과학 · 암호학 · 전자공학 · 언어학(형태론 · 통사론 · 의미론 · 화용론 · 음운론) · 인지과학 ||
하드웨어 구성 SoC · CPU · GPU(그래픽 카드 · GPGPU) · ROM · RAM · SSD · HDD · 참조: 틀:컴퓨터 부품
기술 기계어 · 어셈블리어 · C/C++ · C# · Java · Python · 바이오스 · 절차적 프로그래밍 · 객체 지향 프로그래밍 · 해킹 · ROT13 · 일회용 비밀번호 · 사물인터넷 · 와이파이 · GPS · 임베디드 · 인공신경망 · OpenGL · EXIF · 마이크로아키텍처 · ACPI · UEFI · NERF · gRPC · 리버스 엔지니어링 · HCI · UI · UX · 대역폭 · DBMS · NoSQL · 해시(SHA · 브루트 포스 · 레인보우 테이블 · salt · 암호화폐) · RSA 암호화 · 하드웨어 가속
연구

기타
논리 회로(보수기 · 가산기 · 논리 연산 · 불 대수 · 플립플롭) · 정보이론 · 임베디드 시스템 · 운영 체제 · 데이터베이스 · 프로그래밍 언어{컴파일러(어셈블러 · JIT) · 인터프리터 · 유형 이론 · 파싱 · 링커 · 난해한 프로그래밍 언어} · 메타데이터 · 기계학습 · 빅데이터 · 폰노이만 구조 · 양자컴퓨터 · 행위자 모델 · 인코딩(유니코드 · MBCS) · 네트워크 · 컴퓨터 보안 · OCR · 슈퍼컴퓨터 · 튜링 머신 · FPGA · 딥러닝 · 컴퓨터 구조론 · 컴퓨터 비전 · 컴퓨터 그래픽스 · 인공지능 · 시간 복잡도(최적화) · 소프트웨어 개발 방법론 · 디자인 패턴 · 정보처리이론 · 재귀 이론 · 자연어 처리(기계 번역 · 음성인식) · 버전 (버전 관리 시스템 · Git · GitHub · GitLab)

프로그래밍 사이트 선정 프로그래밍 언어 순위 목록
{{{#!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

}}} ||
프로그래밍 언어 목록 · 분류 · 문법
크리스탈
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. 기타

[clearfix]

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 네이티브 실행 파일을 만들지만, 일부 기능이 제한된다.