[[프로그래밍 언어|'''프로그래밍 언어 {{{#!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 · AdaT · AgdaTP · ALGOLT · ApexT · APL · awk · AssemblyT | |||||||
B | BASIC | |||||||
C | ||||||||
D | ||||||||
E | Elixir · | |||||||
F | ||||||||
G | GNU Octave · | |||||||
H | ||||||||
I | ||||||||
J | ||||||||
K | ||||||||
L | LeanTP · | |||||||
M | MATLAB · MaxV · MojoT · Moonlight | |||||||
N | ||||||||
O | OberonT · Objective-CT · | |||||||
P | PascalT · Perl · | |||||||
Q | Q#T | |||||||
R | ||||||||
S | SAS · | |||||||
T | ||||||||
U | Udon | |||||||
V | Visual Basic · Visual Basic .NET · Visual Basic for Applications · vvvvV | |||||||
W | Wave | |||||||
X | XSharp | |||||||
Y | ||||||||
Z | ZenScript · | |||||||
한글 | 누리 · 숨V · 씨앗 · 약속 · | |||||||
T: 정적 타입 프로그래밍 언어 · P: 증명 보조 언어 · S: LISP 방언 및 S-표현식 기반 언어 · V: 시각적 프로그래밍 언어 | }}}}}}}}}{{{#!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년 4월 TIOBE 검색어 점유율 상위 20개 프로그래밍 언어 | |||||
1 | Python | <colbgcolor=#2777c2><colcolor=#fff> 11 | Fortran | |||||
2 | C++ | 12 | Scratch | |||||
3 | C | 13 | PHP | |||||
4 | Java | 14 | R | |||||
5 | C# | 15 | Ada | |||||
6 | JavaScript | 16 | MATLAB | |||||
7 | Go | 17 | Assembly language | |||||
8 | Visual Basic | 18 | Rust | |||||
9 | Delphi / Object Pascal | 19 | Perl | |||||
10 | SQL | 20 | COBOL | }}}}}}}}}{{{#!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년 5월 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 | Ruby | |||||
7 | PHP | 17 | Dart | |||||
8 | Rust | 18 | Lua | |||||
9 | TypeScript | 19 | VBA | |||||
10 | Objective-C | 20 | PowerShell | }}}}}}}}}}}} | }}}}}}}}}}}} | |||
실행 방식 · 분류 · 언어 목록(분류:프로그래밍 언어 문법) · 언어별 예제 · 틀:프로그래밍 언어 문법 · 틀:난해한 프로그래밍 언어 |
(princ "Hello, world!")
커먼 리스프 Common Lisp | |
| |
|
1. 개요
- 커먼 리스프(Common Lisp)는 프로그래밍 언어 LISP 방언 중 하나이다.
- 커먼 리스프는 멀티 패러다임 언어이다.
- 커먼 리스프는 lisp-2이다.
2. 목록
- CLISP
- Steel Bank Common Lisp(SBCL)
- Allegro Common Lisp
- LispWorks
- Clozure CL
3. 예제
커먼 리스프에서 리스트의 길이를 확인하는 함수my-length
는 아래와 같이 작성한다.(defun my-length (list)
(if list
(1+ (my-length (cdr list)))
0))
4. 설치
- CLISP
- macOS
- 터미널에서 아래와 같이 입력하면 CLISP를 설치할 수 있다.
{{{brew install clisp
5. 문법
- S-표현식: 해당 문서 참고.
- 전역 변수
- 커먼 리스프에서는 전역 변수를 탑 레벨 정의라고 한다. 명령어
defparameter
를 사용해서 만든다. - 커먼 리스프에서 전역 변수 이름을 지을 때는
*
로 감싼다. 예를 들어*foo*
와 같이 이름을 짓는다.*
두 개로 감싼 것을 귀마개라고 부르기도 한다. 귀마개는 강제 문법은 아니고 그냥 컨벤션이다. 반드시 그래야 하는 것은 아니지만 커먼 리스프에서 전역 변수 이름을 지을 때는 귀마개 쓰기를 권장한다. defvar
로도 전역 변수를 만들 수 있다. 그런데defvar
로 만든 전역 변수는 제일 처음 만든 것으로 고정되고 다시 같은 이름으로 다른 값을 선언할 경우에 변수의 내용이 나중에 선언한 것으로 변경되지 않는다.- 전역 변수를 동적 변수, 특별 변수라 부르기도 한다.
- 전역 함수
- 커먼 리스프에서 함수는 아래와 같이 명령어
defun
으로 만든다.
{{{(defun function_name (arguments)
...)}}} - 커먼 리스프에서는 다른 언어에서와 같이
return
이라는 키워드를 쓰지 않는다. 함수에 적은 표현식의 마지막 평가 결과가 알아서 리턴된다. - 지역 변수
- 커먼 리스프에서는 다음과 같이 명령어
let
으로 지역 변수를 선언한다.
{{{(let (variable declarations)
...body...)}}} - 지역 함수
- 커먼 리스프에서 지역 함수를 선언할 때는 명령어
flet
을 사용한다.
{{{(flet ((function_name (arguments)
...function body...))
...body...)
- 재귀를 하려면 지역 함수 안에서 지역 함수를 호출해야 한다. 이때
flet
으로는 그렇게 하지 못하고 명령어labels
을 써야 한다. - 함수 호출
커먼 리스프에서 함수를 호출할 때 함수 이름을 괄호로 감싼다.
{{{(foo)
- 들여쓰기
- 리스트 함수
cons
car
cdr
list
- 고차 함수
- 커먼 리스프에서 함수를 인자로 넣을 때 연산자
function
을 써야 한다.
{{{(mapcar (function car) '((foo bar) (baz qux)))
커먼 리스프에서 들여쓰기는 신경 쓰지 않아도 된다. 아무 곳에서나 개행해도 되고 몇 칸을 들여쓰기 해도 에러가 나지 않는다.
- 아래와 같이 연산자
function
대신#'
를 써도 된다.
{{{(mapcar #'car '((foo bar) (baz qux)))
- 출력 함수
print
: 개행을 포함하여 문자열을 출력하는 함수이다.prin1
: 개행을 하지 않고 문자열을 출력하는 함수이다.princ
- 커먼 리스프에서 심볼 이름은 대소문자를 구분하지 않는다. 그런데 심볼 이름을 파이프로 감싸면 대소문자를 구분할 수 있다.(
|CaseSensitiveSymbol|
)
6. 코딩 컨벤션
- 전역 변수 이름에 귀마개를 씌운다.(
*foo*
) nil
이나 참값을 리턴하는 함수 이름 뒤에p
를 붙인다.(oddp
) 이런 함수를 predicates라고 한다.