Skip to content

Instantly share code, notes, and snippets.

@jongpak
Last active September 22, 2023 13:13
Show Gist options
  • Save jongpak/0cd35b01f2ff61f4c89d8352e7139bc2 to your computer and use it in GitHub Desktop.
Save jongpak/0cd35b01f2ff61f4c89d8352e7139bc2 to your computer and use it in GitHub Desktop.
hangul-programming-lang

프로그래밍 언어 '가나다' 설계

설계 목표와 목적

  • 한글 표기를 사용한 실용적인 한글 프로그래밍 언어
    • 한글을 사용하여 프로그래밍 언어에 대한 진입 장벽을 낮춤
    • 자연어보다는 프로그래밍 언어에 가깝게 함
    • 언어 구문 표현은 '한글' 표기법을 차용하되, 논리적인 표현은 '기호' 표기법을 사용하여 한글과 기호사이의 균형을 이룸
  • 간결하고 과하지 않은 제어구조와 언어설계를 지향
    • 절차지향적 설계

문장

  • 문장 구분은 세미콜론(;)으로 합니다

주석 / 설명문

  • // 로 시작
// 이것은 주석입니다
// 코드에 대한 설명을 적습니다

예약어

  • 만약, 아니면
  • , 거짓
  • 돌려줘
  • 반복, 멈춰, 건너뛰어
  • 묶음

자료유형

가변자료형

  • 숫자 (실수형)
  • 문자형
  • 진리형
  • 함수
  • 배열
  • 사전 (배열첨자로 가능한것: 문자)

연산자

  • +, -, *, *, %
  • &&, ||
  • ==, !=, <, >, <=, >=
  • =

변수 선언, 정의

[변수명] = (문자열/숫자/참/거짓)
  • 변수명은 한글 / 영어 / 밑줄(_) / 숫자 조합을 허용합니다
  • 변수명은 숫자로 시작할 수 없습니다
  • 변수명은 숫자만으로 이루어질 수 없습니다
이름 = "박종훈"
오늘날짜_월 = 9
원주율 = 3.141591
비오는날씨인가 = 거짓

사람들 = ["홍길동", "이순신", "김철수"]
사람들나이 = {
    "홍길동": 30,
    "이순신": 32,
    "김철수": 28
}

사람들[0] // "홍길동"
사람들나이."홍길동" // 30

함수 선언과 정의

[함수명] = ([함수파라미터1, 함수파라미터2, ...]) {
    // 함수 본체
    // 돌려줘
}
  • 함수도 변수와 동일하게 취급됩니다
  • 따라서 함수명도 변수명 규칙과 동일합니다
  • 함수의 실행결과는 '돌려줘'로 함수를 호출한 쪽에 값을 돌려줄 수 있습니다.
숫자더해 = (숫자1, 숫자1) {
    돌려줘(숫자1 + 숫자2)
}

결과값 = 숫자더해 (2, 5)   // 5

조건

만약 (조건식) {
    // ...
} 아니면 (조건식) {
    // ...
} 아니면 {
    // ...
}
만약 (동물종류 == "고양이") {
    출력해("고양이는 귀여워")
} 아니면 (동물종류 == "강아지" && 사는곳 == "집밖") {
    출력해("집밖에 사는 강아지")
} 아니면 (동물종류 == "강아지" && 사는곳 == "집안") {
    출력해("집안에 사는 강아지")
} 아니면 {
    출력해("무슨 동물일까?")
}

반복

반복 (조건식) {
    // ...
    // 멈춰
    // 건너뛰어
}
횟수 = 0

// 10번 반복
반복 (횟수 < 10) {
    출력해("횟수는 ${횟수}")
}

횟수 = 0
반복 (참) {
    출력해("무한반복...")

    횟수 = 횟수 + 1
    만약 (횟수 >= 5) {
        멈춰
    }
}

관례

(1) 이름 규칙

  • 변수명은 명사형으로 사용합니다 - (예시) 이름, 오늘날짜
    • 진리형은 '~인가' 와 같이 의문형을 사용합니다
  • 함수명은 명령조로 끝나도록 합니다 - (예시) 출력해, 삭제해, 저장해, 보여줘, 숨겨
  • 임시 변수명은 가나다순 글자를 사용합니다
    • 정말 의미 없는 임시 변수의 경우 가나다순을 사용합니다
    • 자료형의 의미가 중요하다면, 수1, 수2, ... 와 같은 접두어를 사용합니다 (추천 접두어: 수, 문, 값)
수1 = 1
수2 = 1

// 구구단 출력
반복 (수1 =< 9) {
    반복 (수2 =< 9) {
        출력해("${수1} x ${수2} = ${수1 * 수2}")

        수2 = 수2 + 1
    }
    수1 = 수1 + 1
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment