한글 프로그래밍 언어 약속 alpha 버전 기능 명세

a: 다른 언어에 해당하는 이름
b: 아직 구현되지 않았습니다.

목표

약속은 한글을 사용하는 사람들 누구나 쉽게 프로그래밍을 배울 수 있게 하기 위해 만들어진 언어입니다. 처음 프로그래밍을 접하는 사람들이 실수하기 쉬운 표현들을 최소화하고 누구나 알아보기 쉬운 코드를 만들 수 있게 하는 것이 목표입니다.

약속에선 기존 Python 언어처럼 들여쓰기를 중심으로 한 단락 구분을 사용하고 있습니다.

값과 계산

약속에서 사용할 수 있는 형태의 값들을 다음과 같습니다.

변수의 사용

값에는 이름을 붙여 사용할 수 있습니다. 이름을 붙이기 위해선 :을 사용합니다.

(값 보여주기 라는 표현을 사용하여 값의 내용을 확인할 수 있습니다.)

코드:

:3
삼 보여주기

결과:

3

계산의 결과값을 다시 이름을 붙여줄 수 있습니다.

반지름:10
원주율:3.14159265358979
구의부피:4/3*원주율*반지름*반지름*반지름

이전의 값으로부터 변화를 표현하는 경우 이전을 이용할 수 있습니다.

# 누군가로부터 천 원을 받아 잔고가 1000이 늘어난 경우
잔고:이전 잔고 + 1000

배열, 범위

배열에 들어있는 값은 몇 번째인지를 이용하여 아래처럼 사용할 수 있습니다. 코드:

피보나치:[1, 1, 2, 3, 5, 8, 13]
#세 번째 값을 보여줍니다.
피보나치[3] 보여주기
# 네 번째 값부터 여섯 번째 값까지 따옵니다.
피보나치[4~6] 보여주기

결과:

2
[3, 5, 8]

프로그램을 작성하다보면 특정 범위를 표현하는 경우가 많은데 그 경우 시작~끝 표현을 사용할 수 있습니다. 범위 표현은 반복문과 합쳐져 사용되는 경우가 많습니다 반복 항목의 내용을 참고해주세요.

코드:

1~5 보여주기

결과:

[1, 2, 3, 4, 5]

조건문

만약 ~ 이면/아니면 표현을 이용하여 특정 명령을 실행할지 말지를 결정할 수 있습니다. 실행하는 명령은 만약을 기준으로 들여쓰기를 해서 구분합니다. 여러 조건을 그리고/이고또는/이거나를 이용하여 결합할 수 있습니다.

만약 1 = 2 이면
    "왜죠?" 보여주기
아니면
    # 1은 2가 아니므로 아래 명령이 실행됩니다.
    "정상입니다." 보여주기

만약 ("짜장" 좋아함) 이고 ("짬뽕" 좋아함) 이면
    "짬짜면" 시키기

반복문

반복을 이용하여 특정 명령을 여러 번 실행할 수 있습니다

코드:

출력한횟수:0
반복
    "다시는 교실에서 비행기를 날리지 않겠습니다." 보여주기
    출력한횟수:이전 출력한횟수 + 1
    만약 출력한횟수 >= 500 이면
        반복 그만

결과: (500줄의 같은 내용이 표시됩니다)

다시는 교실에서 비행기를 날리지 않겠습니다.
다시는 교실에서 비행기를 날리지 않겠습니다.
다시는 교실에서 비행기를 날리지 않겠습니다.
...

배열이나 범위와 합쳐서 배열에 속한 값 하나하나마다 반복해서 명령을 실행할 수 있습니다.

코드:

반복 1~500  출력한횟수 마다
    "다시는 교실에서 비행기를 날리지 않겠습니다." 보여주기

결과: (생략, 위와 같은 500줄의 출력이 나옵니다.)

코드:

무지개색:["빨강". "주황". "노랑". "초록". "파랑". "남색". "보라"]
반복 무지개색 마다
    # 아래 문장이 무지개색에 속한 색 마다 한번씩 실행됩니다.
    색 보여주기

결과:

빨강
주황
노랑
초록
파랑
남색
보라

약속 정의와 사용 (a함수)

위의 기본적인 언어 기능을 조합하여 특정 일을 하는 약속을 만들어 사용할 수 있습니다. 같은(또는 비슷한) 일을 여러번 수행해야할 때 이를 약속을 이용하여 표현하면 실수를 줄이고 의도를 좀더 명확히 표현할 수 있습니다.

약속의 형태는 변하는 부분과 변하지 않는 부분으로 이루어져있습니다. 변하지 않는 부분은 따옴표를 이용하여 문자열의 형태로, 변하는 부분은 변수의 형태로 작성합니다.

변하지 않는 부분만은 이용한 예제 코드:

# 안녕 세계하기 라는 약속을 정의합니다.
약속 "안녕 세계하기"
    "안녕 세계" 보여주기

# 정의된 약속은 따옴표없이 아래와 같이 사용하여 부를 수 있습니다.
안녕 세계하기

결과:

안녕 세계

변하는 부분이 있는 경우의 예제 코드:

# 약속을 불렀을 때 결과값을 결과 변수를 이용하여 지정할 수 있습니다.
약속 "키""몸무게" 몸무게"의 비만도"
    결과: 몸무게 // 키

비만도:1.77 몸무게 68의 비만도
비만도 보여주기

결과:

21.705129432793896

조사를 사용하기 위해 변하지않는 부분에 /를 이용할 수 있습니다. 코드:

약속 과일"을/를 먹기"
    과일+" 먹음" 보여주기

사과:"사과":"감"

# 처음 호출할 때 과일은 "사과" 값이 되고
# 두번째 호출에서 과일은 "감" 값이 됩니다.
사과를 먹기
감을 먹기

결과:

사과 먹음
감 먹음

눈치채셨겠지만, 변하는 부분과 변하지 않는 부분을 붙여서 정의하면 약속을 부를 때도 붙여서 부를 수 있습니다.

약속을 빌려와 사용하기 (a모듈)

트위터.yak이라는 파일에 아래와 같은 약속의 정의가 있다고 합시다.

# 트위터.yak
약속 아이디"로/으로" 내용 "트윗하기"
    # 트윗 올리는 구현이 무심하게 이어짐
    # ...

다른 파일에서 트위터.yak에 있는 내용을 가져와 사용하려고 하면,

# 시작.yak

# 트위터 모듈에 있는 약속을 부르려면
@트위터 "YaksokLang"으로 "약속 언어를 이용하여 쓰는 트윗입니다" 트윗하기

# 또는 훔쳐와서 내 약속인 것처럼 사용하기
트위터 훔쳐오기
"YaksokLang"으로 "약속 언어를 이용하여 쓰는 트윗입니다" 트윗하기

묶음 (a클래스, b)

차후 작성할 예정입니다.