아이디어 도출프로젝트/졸업 프로젝트2022. 3. 27. 17:18
Table of Contents
한글로 된 언어 ‘ㄱ언어’를 개선하고 발전시키기 위한 아이디어를 도출함.
1. 하나의 기능에 여러 예약어 대응
- 영어로 된 기존의 프로그래밍 언어는 if, else, while 등 명확한 단 하나의 예약어만을 갖음.
- 이에 반해 한글은 하나의 단어에도 다양한 조사가 사용될 수 있기 때문에 예약어를 하나로 지정하는 것이 애매함.
- 따라서 하나의 기능에 해당하는 예약어를 여러 종류를 두어 보다 더 자유롭고 자연스럽게 코드를 작성할 수 있도록 함.
- 아래의 예시는 같은 기능을 수행하는 서로 다른 코드들의 예시를 나타냄.
만약에 [변수]가 [값] 이면
~~~
---
만약 [변수]가 [값] 이라면
~~~
---
만약 [변수]이 [값] 라면
~~~
변수 <- 3 >= 2
만약 [변수]가 사실이면
~~~
---
만약 [변수]가 참이면
~~~
---
만약 [변수]가 맞다면
~~~
2. 문장을 작성하듯이 코딩
- 프로그래밍에 익숙하지 않은 사용자들이 처음부터 프로그래밍 언어의 구조에 맞춰 코드를 작성하는 것이 어려울 수 있다고 생각함.
- 문법 자체를 배우는데 시간을 할애하는 대신 컴퓨팅적이고 논리적인 사고를 기르는데 더 집중할 수 있도록 문법을 아예 배제하고 글을 작성하듯이 코딩을 할 수 있도록 컴파일러를 설계.
사람은 생일을 갖는다. 진수는 사람이고 생일은 4월 30일이다.
오늘은 4월 20일이다. 진수의 생일이 오늘보다 빠르면 진수의 생일을 출력한다.
- 위 예시는 아래의 수도 코드와 동일한 기능을 수행함.
class 사람 {
날짜 생일;
public 사람(_생일) {
생일 = _생일;
}
public void 생일비교(날짜 오늘) {
if 생일 < 오늘
print 생일;
}
진수 = new 사람(날짜);
날짜 오늘 = 2022/04/20
생일비교(오늘);
3. 문자열 출력 시 조사 (은/는, 이/가 등) 자동 선택
- 한국어는 명사뒤에 은_는, 이_가 등 다양한 조사가 사용되며 변경될 가능성이 있는 문자열 변수를 출력할 때 조사를 확정해서 출력문을 작성할 수 없음.
- 따라서 개발되는 언어에 문자열에 따라 적절한 조사를 자동으로 출력해주는 기능을 내장하여 개발 시 편의성을 제공함.
- 조사를 자동으로 대입해주는 기능은 서식 문자의 형태로 제공할 수 있음.
과일 = "사과"
출력 "[과일]%은 맛있다." // "사과는 맛있다."
출력 "[과일]%는 맛있다." // "사과는 맛있다."
사람1 = "세희"
사람2 = "영표"
출력 "[사람1]%이 [사람2]%을 부른다." // "세희가 영표를 부른다."
4. 출력문 서식 문자 한글로 대체
- 변수의 출력을 위해 사용하는 서식 문자를 한글로 대체하여 직관적으로 코드를 작성할 수 있도록 함.
- 예를 들어 c언어의 %d는 %정수로, %f는 %실수 등으로 변환.
문장 = "ㄱ언어"
출력 ("안녕하세요. %문자열입니다.", 문장)
5. 한글 함수형 언어
- 대부분의 학생들은 명령형 언어를 먼저 배우고 한참 후에 함수형 언어를 접하게 됨.
- 두 언어를 작성하기 위해 필요한 사고에 차이가 있어 새로운 방법으로 코드를 작성하는 것을 어려워 함.
- 이에 프로그래밍을 처음 접할 때 부터 함수형 프로그래밍을 접할 수 있도록 간단한 함수형 프로그래밍 기능을 추가함.
함수
6. 메모리, 포인터 개념 간소화하여 도입
- C언어의 포인터 개념을 한글 프로그래밍 언어에 (간소화하여) 도입함.
- 이를 통해 C언어 학습 시 많이 어려워하는 포인터와 메모리 개념, 나아가서 컴퓨터 구조에 대한 개념을 쉽게 학습할 수 있도록 함.
- 메모리 할당을 수행하면 무조건 연속된 공간을 할당하여 반환하는 것처럼 보이도록 해 명령을 간소화하고 관리가 쉽도록 설계.
저장소 저장1 = 새로운 저장소
저장소 저장2 = 새로운 저장소
참조(저장1) = 10
참조(저장2) = 20
출력 값(저장2 이전) // 10
출력 저장1 다음 == 저장2 // 참
7. 예약어의 의미를 살린 번역
- 대부분 한글 프로그래밍 언어의 주된 개발 목적은 영어에 익숙하지 않은 저학년 등의 컴퓨팅적 사고 능력 향상임.
- 기존의 class, function, variable, constructor 과 같은 어휘를 단순 번역할 경우 결국 기존 프로그래밍 언어를 사용할 때와 같이 영어로 먼저 사고하고 코드만 한국어로 작성하는 낭비가 발생할 가능성이 존재.
- 따라서 해당 예약어를 실제 수행하는 기능에 맞게 번역하여 영어나 프로그래밍 언어를 모르는 사람도 자연스럽게 프로그래밍을 접하고 익힐 수 있도록 함.
- 어떤 단어를 사용해야 직관적이면서도 의미를 해치지 않을지에 대해서는 더 고민 필요.
[틀] 사람
[값] 나이 <- 25
[값] 이름 <- "현상혁"
[기능] 나이변경 ([변수] 새로운나이)
나이 <- 새로운나이
나이 반환
8. 모든 연산자를 한글로 대체할 수 있도록 설계
- 예를 들어 기존 ‘ㄱ언어’는 대입 연산자
=
의 직관성이 떨어진다는 이유로 해당 연산자를<-
로 변경함. - 하지만 이러한 연산자 또한 크게 직관적이라고 와닿지 않으며 오히려 다른 프로그래밍 언어와 혼동될 여지가 있다고 판단함.
- 한글로 코드를 작성한다는 특징을 살려 연산자들을 한글
로도
작성할 수 있도록 언어를 설계하면 좋겠다고 생각함.
// 대입 연산자 예시
[나이]는 25 // int 나이 = 25
[이름]은 "현상혁" // String [이름] = "현상혁"
// 비교 연산자 예시
[가]는 3
[나]는 4
만약 [나]가 [가]보다 크거나 같다면 // [나] >= [가]
출력 [나]
'프로젝트 > 졸업 프로젝트' 카테고리의 다른 글
이해당사자 특정 및 문제 상황 정의하기 (0) | 2022.03.27 |
---|---|
인프런 '블록체인과 솔리디티' - 솔리디티 (0) | 2022.03.27 |
인프런 '블록체인과 솔리디티' - 블록체인 (0) | 2022.03.27 |
도출된 아이디어 덧붙이기 (0) | 2022.03.27 |
문제 정의 (0) | 2022.03.27 |
@gmelon :: gmelon's greenhouse
백엔드 개발을 공부하고 있습니다.