파룸의달.png+
파룸  마테소인 뤼미에르 공화국 라네쥬교  피네트어

다른건 모르겠고, APL 보단 쉽고 빠르게

 
— 라이카 제 0법칙

개요

RAIKA는 라이카 쿠사노 개발자가 만든 프로그래밍 언어이다. 언어를 만든 이유는 단순히, APL 구조가 너무 귀찮아서라고 한다. 그래서 그런지, APL처럼 법칙을 만들었는데, 단 하나이다. "다른건 모르겠고, APL 보단 쉽고 빠르게" 진짜로 이거다. 대놓고 APL 까는셈[3]
현재 RAIKA는 표준#490이 제일 최신 버전이다.

언어 이름 유래

본인 이름에서 따온 단순한 경우이긴한데... 사실 원래 이름은 라카쿠노였다. 근데 컴파일러 베타 버전을 출시하기 전에 제 0법칙 위반이라면서, 그냥 자기 이름으로 바꿨다.

장점

간단하다, 말도 안되게 엄청 간결한데[4] 성능은 APL이랑 비슷하거나 아주 조금 더 빠른 수준, 그리고 메모리 관리는 알아서 해준다. GC가 매우 잘 만들어져있는 편

단점

컴파일 시간이 길다. APL에 비하여 3~5배 정도 소요된다. 그리고 아직까지는 메모리 보안이 좀 취약하다. GC 자체에 취약점이 있는데, 아무래도 고치기 어려워하는 듯 하다. 이게 문제인 점은 GC를 끌 수도 없어서[5] 신뢰성이 중요한 곳에선 아직까진 APL과 범용해서 사용한다.

문법

  • 출력문
view(값 및 문자열)
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"
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>")

각주

  1. 2024년 5월 18일 09시 24분 21초 기준. 미디어위키 표현식의 한계에 의해서 이 값은 정확하게 나타나기 힘들다. 정확한 값을 얻기 위해서는 사트/표준#Python 구현에서 설명하는 방법을 통하는 것이 바람직하다.
  2. 디스코드 서버에는 차단된 사람이 아니라면 누구나 들어올 수 있습니다.
  3. 근데 또 APL 기반으로 컴파일러를 만들었다. 100%까진 아니고 한 80% 나머진, CSMFlang이 사용되었다.
  4. 타입 명시가 문법 표준으로 강제되어서, 사실상 의미가 없어졌다. 하지만, 매개 전달자가 거의 사라진건 좋은셈
  5. 프로그램에 강제로 내장 된다.
  6. 입력받아 값을 넣을 변수는 무조건 fmt 형식이여야한다.
  7. 문자열에 변수나 값을 출력하기 위한 방법
  8. 숫자도 문자 취급된다.
  9. 숫자도 문자열 취급된다.
  10. 아래는 '숫자 문자 숫자' 형식이다.
  11. 이걸 사용하면, 인자 제한을 따로 안 써도된다.
  12. 타입 명시 필수 아님 : 명시 안 할시 auto로 컴파일 단계에서 작동으로 타입 적용
  13. 크기 명시가 없으면, 동적 배열로 생성 됨