[[컴퓨터공학|컴퓨터 과학 & 공학
Computer Science & Engineering
]]- [ 펼치기 · 접기 ]
- ||<tablebgcolor=#fff,#1c1d1f><tablecolor=#373a3c,#ddd><colbgcolor=#0066DC><colcolor=white> 기반 학문 ||수학(해석학 · 이산수학 · 수리논리학 · 선형대수학 · 미적분학 · 미분방정식 · 대수학(환론 · 범주론) · 정수론) · 이론 컴퓨터 과학 · 암호학 · 전자공학 · 언어학(형태론 · 통사론 · 의미론 · 화용론 · 음운론) · 인지과학 ||
하드웨어 구성 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 | |
[1] | |
<colbgcolor=#ffffff,#1c1d1f><colcolor=#000> 개발 | Crystal Team |
전 개발자 | Ary Borenszweig Juan Wajnerman Brian Cardiff |
최근 버전 | 1.15.1 |
최초 발표 | 2011년 6월 19일[2] |
컴파일러 | LLVM |
라이선스 | Apache License 2.0 [3] |
지원 플랫폼 | Linux, macOS, Windows[4] |
확장자 | .cr |
| | | |
[clearfix]
1. 개요
- Hello, world! 출력 코드 예시 【 펼치기 · 접기 】
puts "Hello, World!"
크리스탈(Crystal)은 프로그래밍 언어의 하나로, C의 성능과 Ruby의 간결함을 동시에 원하는 개발자를 위한 LLVM 컴파일러를 이용한 컴파일 언어이다. Python과 같은 고급(High-Level)언어에 속한다. 기본적인 실행 방법은
crystal build app.cr
./app
를 통해 한번에 컴파일과 실행을 할 수 있다. 하지만 여전히 바이너리를 생성한 후 실행하는 방식이다. 기본적으로 Linux, macOS를 공식적으로 우선 지원하며, Windows에서는 실험적 지원으로 WSL이나 크로스 컴파일[5]이 필요하다.
2. 장점
- Ruby와 유사한 문법으로 간결하고 직관적인 문법을 제공하여 배우거나 공부하기 쉽다.
- 정적 타입 시스템(타입 추론 지원)이므로, 컴파일 타임에 타입을 검사하여 버그를 줄이고 성능을 최적화한다. 하지만 타입을 명시하지 않아도 추론이 가능하다.
- LLVM을 이용하여 네이티브 바이너리를 생성한 뒤 컴파일되므로 런타임 오버헤드가 줄었다.
- GC 지원으로 자동적으로 메모리를 관리된다.
- 동시성(Fibers)를 지원하여 경량 스레드를 활용하여 고성능 네트워크 프로그래밍이 가능하다.
- 컴파일 타임 메타프로그래밍으로 코드 생성을 자동화할 수 있다.
3. 단점
- Windows의 지원 미흡이므로, Windows 운영체제를 이용하는 개발자의 단점이 있다.
- Python, Java, JavaScript처럼 방대한 라이브러리 생태계를 갖추지 못했다. 주로 머신러닝, 데이터 과학 관련 라이브러리가 부족하다.
- 현재 Crystal에서 다중 스레드 지원 제한으로 인해 속도가 상당히 느리다.
- 정적 타입과 LLVM 최적화 과정으로 인해 컴파일 속도가 상당히 느리다.
- Crystal을 통해 적극적으로 개발하는 대기업이 없어서, 장기적인 발전이 불확실하다. 주로 개인이나 소규모 팀이 주로 사용한다.