+ | ||
---|---|---|
파룸 마테소인 | 뤼미에르 공화국 | 라네쥬교 피네트어 |
“ 다른건 모르겠고, APL 보단 쉽고 빠르게
” — 라이카 제 0법칙
개요
RAIKA는 라이카 쿠사노 개발자가 만든 프로그래밍 언어이다. 언어를 만든 이유는 단순히, APL 구조가 너무 귀찮아서라고 한다.
그래서 그런지, APL처럼 법칙을 만들었는데, 단 하나이다. "다른건 모르겠고, APL 보단 쉽고 빠르게" 진짜로 이거다. 대놓고 APL 까는셈[3]
언어 이름 유래
본인 이름에서 따온 단순한 경우이긴한데... 사실 원래 이름은 라카쿠노였다. 근데 컴파일러 베타 버전을 출시하기 전에 제 0법칙 위반이라면서, 그냥 자기 이름으로 바꿨다.
장점
간단하다, 말도 안되게 엄청 간결한데[4] 성능은 APL이랑 비슷하거나 아주 조금 더 빠른 수준, 그리고 메모리 관리는 알아서 해준다. GC가 매우 잘 만들어져있는 편
단점
컴파일 시간이 길다. APL에 비하여 3~5배 정도 소요된다. 그리고 아직까지는 메모리 보안이 좀 취약하다. GC 자체에 취약점이 있는데, 아무래도 고치기 어려워하는 듯 하다. 이게 문제인 점은 GC를 끌 수도 없어서[5] 신뢰성이 중요한 곳에선 아직까진 APL과 범용해서 사용한다.
문법
- 출력문
view(값 및 문자열)
- 입력문[6]
a fmt = read(메세지)
- 쿼리문자[7]
$"<VALUE>"
- 조건문
if (조건) { ...코드 }
- 반복문
repeat { ...코드 } repeat if (조건) { ...코드 } repeat 아이템 in 배열 { ...코드 } // 반복문 종료 end
- 포맷 강제 입력문
// 최소 인자 제한 a fmt(min 2) = read(메세지) // 최대 인자 제한 a fmt(max 2) = read(메세지) // 숫자 입력만 (int, float) a fmt(only N) = read(메세지) // 문자 입력만 (char)[8] a fmt(only C) = read(메세지) // 문자열 입력만 (str)[9] a fmt(only S) = read(메세지) // 사용자 지정 형식[10][11] a fmt(structure NCN) = read(메세지)
- 변수 선언 및 대입[12]
a create b = 1 c = "Fasia!" d = 3.14 e = false
- 타입 명시 변수 선언
a int b int = 1 c str = "Fasia!" d real = 3.14 e bool = false f char = "A"
- 배열 명시[13]
a int[] b int[] = [0, 1, 2, 3, 4, 5] c str[] = ["a", "b", "c", "d", "e", "f"] d real[] = [1.1, 1.2, 1.3, 1.4, 1.5, 1.6 e bool[] = [true, false, true, false, true, false] f char[] = ["f", "a", "s", "i", "a', "!"]
- 배열 크기 명시
a int[6] b int[6] = [0, 1, 2, 3, 4, 5] c str[6] = ["a", "b", "c", "d", "e", "f"] d real[6] = [1.1, 1.2, 1.3, 1.4, 1.5, 1.6 e bool[6] = [true, false, true, false, true, false] f char[6] = ["f", "a", "s", "i", "a', "!"]
예제
- 반복문 예제
repeat { view("Fasia!") } repeat (true) { view("Fasia!") } array int[5] = [1, 2, 3, 4, 5] repeat item in array { view(item) }
- 입력 값 해석 예시
// 입력 받기 input fmt input = read(">> ") // 전체 입력 보여주기 (str) view(input) // 공백으로 구분하여 배열로 보여주기 view(input:) // 배열 응용 (무조건 str 반환) view(input:0) // 타입 명시 반환 view(input <- int) view(input:0 <- int)
- 두 수를 입력 받는 더하기 예제
numbers fmt(structure NN) numbers = read("두 수를 입력하세요 : ") first int = numbers:0 <- int second int = numbers:1 <- int result int = first + second view($"<first> + <second> = <result>")
각주
- ↑ 2024년 12월 26일 18시 14분 56초 기준. 미디어위키 표현식의 한계에 의해서 이 값은 정확하게 나타나기 힘들다. 정확한 값을 얻기 위해서는 사트/표준#Python 구현에서 설명하는 방법을 통하는 것이 바람직하다.
- ↑ 디스코드 서버에는 차단된 사람이 아니라면 누구나 들어올 수 있습니다.
- ↑ 근데 또 APL 기반으로 컴파일러를 만들었다. 100%까진 아니고 한 80% 나머진, CSM과 Flang이 사용되었다.
- ↑ 타입 명시가 문법 표준으로 강제되어서, 사실상 의미가 없어졌다. 하지만, 매개 전달자가 거의 사라진건 좋은셈
- ↑ 프로그램에 강제로 내장 된다.
- ↑ 입력받아 값을 넣을 변수는 무조건 fmt 형식이여야한다.
- ↑ 문자열에 변수나 값을 출력하기 위한 방법
- ↑ 숫자도 문자 취급된다.
- ↑ 숫자도 문자열 취급된다.
- ↑ 아래는 '숫자 문자 숫자' 형식이다.
- ↑ 이걸 사용하면, 인자 제한을 따로 안 써도된다.
- ↑ 타입 명시 필수 아님 : 명시 안 할시 auto로 컴파일 단계에서 작동으로 타입 적용
- ↑ 크기 명시가 없으면, 동적 배열로 생성 됨