Skip to content

Dalbit Yaksok v4 → v5 변경 사항

Dalbit Yaksok v5.0.0(Release Candidate)는 언어의 패러다임을 확장하는 대규모 기능 업데이트입니다. 가장 큰 변화는 클래스(Class) 시스템의 도입으로, 이제 객체 지향 프로그래밍(OOP)이 가능해졌습니다. 또한 **점 표기법(Dot Syntax)**을 통한 메서드 체이닝과 튜플(Tuple), 람다(Lambda) 등 현대적인 언어 기능들이 대거 추가되었습니다.


✨ 새로운 기능 (New Features)

1. 클래스 (Class) 도입

객체를 정의하고 생성할 수 있는 클래스 문법이 추가되었습니다.

yaksok
클래스, 사람
    약속, __준비__ (이름, 나이)
        자신.이름 = 이름
        자신.나이 = 나이

    약속, 인사하기
        (자신.이름 + "입니다.") 보여주기

# 인스턴스 생성
철수 = 새 사람("철수", 20)
철수.인사하기
  • 클래스, 이름: 클래스 선언
  • __준비__: 생성자(Constructor) 함수
  • 자신: 인스턴스 자신을 가리키는 키워드 (this와 유사)
  • 새 클래스명(...): 인스턴스 생성 (new와 유사)
  • 상속: 클래스, 학생(사람) 형태로 상속 가능

2. 점 표기법 (Dot Syntax) 및 메서드 체이닝

기존의 조사 기반 호출(목록 에 값 추가) 외에도, 점(.)을 이용한 메서드 호출이 가능해졌습니다.

yaksok
# 기존 문법
목록 = [3, 1, 2]
목록 정렬하기

# 신규 점 표기법
목록 = [3, 1, 2]
목록.정렬()

이로 인해 메서드 체이닝이 가능해졌습니다.

yaksok
# 정렬하고 첫 번째 값 가져오기
값 = [3, 1, 2].정렬().첫번째

3. 튜플 (Tuple) 및 구조 분해 (Destructuring)

불변 리스트인 튜플이 추가되었으며, 값을 한 번에 여러 변수에 할당하는 구조 분해가 지원됩니다.

yaksok
# 튜플 생성
좌표 = (10, 20)

# 구조 분해 할당 (함수 인자 등에서)
약속, (x, y) 합치기
    x + y 반환하기

(10, 20) 합치기 보여주기

4. 람다 함수 (Lambda)

이름 없는 함수를 간단하게 정의할 수 있는 문법이 추가되었습니다. 주로 거르기(filter)변환(map) 등과 함께 사용됩니다.

yaksok
# 람다 문법: 람다 매개변수: 식
더하기 = 람다 x: x + 1

# 리스트 필터링 예시
숫자들 = [1, 2, 3, 4, 5]
짝수들 = 숫자들.거르기(람다 수: 수 % 2 == 0)

5. 🌐 웹 브라우저 지원 (실험적)

Dalbit Yaksok이 이제 웹 브라우저에서 직접 실행될 수 있습니다! HTML 파일에 <script type="dalbit-yaksok"> 태그를 사용하여 브라우저에서 바로 약속 코드를 작성하고 실행할 수 있습니다.

기본 사용법

html
<!doctype html>
<html lang="ko">
    <head>
        <meta charset="UTF-8" />
        <title>Dalbit Yaksok Web Demo</title>
    </head>
    <body>
        <div id="app"></div>
        <script type="module" src="./dalbit-yaksok-loader.js"></script>
        
        <script type="dalbit-yaksok">
            제목 "나의 할 일 목록" 그리기
            
            입력상자 = 박스 그리기
            할일입력 = 문자 입력칸 "새로운 할 일" 그리기
            추가버튼 = 버튼 "추가하기" 그리기
            
            입력상자에 할일입력 넣기
            입력상자에 추가버튼 넣기
            
            목록상자 = 박스 그리기
            
            추가버튼.눌렀을 때
                할일내용 = 텍스트 할일입력.값 그리기
                목록상자에 할일내용 넣기
                할일입력 비우기
                
                할일내용.눌렀을 때
                    할일내용 지우기
        </script>
    </body>
</html>

지원되는 웹 기능

웹 확장(Web Extension)을 통해 다양한 DOM 조작 기능을 제공합니다:

UI 요소 생성:

  • 제목 "내용" 그리기 - H1 제목 생성
  • 문자 입력칸 "질문" 그리기 - 텍스트 입력 필드
  • 숫자 입력칸 "질문" 그리기 - 숫자 입력 필드
  • 버튼 "내용" 그리기 - 버튼 생성
  • 텍스트 "내용" 그리기 - 텍스트 요소 생성
  • 박스 그리기 - 컨테이너 div 생성

DOM 조작:

  • (부모)에 (자식) 넣기 - 요소를 다른 요소 안에 추가
  • (개체)에 (내용) 보여주기 - 요소의 텍스트 변경
  • (개체) 비우기 - 입력 필드 값 지우기
  • (개체) 지우기 - 요소를 DOM에서 제거

이벤트 처리:

  • (개체).눌렀을 때 - 클릭 이벤트 핸들러
  • (입력칸).값 - 입력 필드의 현재 값 접근

이제 v5는 단순히 언어 기능의 확장을 넘어, 실행 플랫폼을 웹 브라우저로 확장하여 인터랙티브 웹 애플리케이션까지 만들 수 있게 되었습니다.

5. 🌐 웹 브라우저 지원 (실험적)

Dalbit Yaksok이 이제 웹 브라우저에서 직접 실행될 수 있습니다! HTML 파일에 <script type="dalbit-yaksok"> 태그를 사용하여 브라우저에서 바로 약속 코드를 작성하고 실행할 수 있습니다.

기본 사용법

html
<!doctype html>
<html lang="ko">
    <head>
        <meta charset="UTF-8" />
        <title>Dalbit Yaksok Web Demo</title>
    </head>
    <body>
        <div id="app"></div>
        <script type="module" src="./dalbit-yaksok-loader.js"></script>
        
        <script type="dalbit-yaksok">
            제목 "나의 할 일 목록" 그리기
            
            입력상자 = 박스 그리기
            할일입력 = 문자 입력칸 "새로운 할 일" 그리기
            추가버튼 = 버튼 "추가하기" 그리기
            
            입력상자에 할일입력 넣기
            입력상자에 추가버튼 넣기
            
            목록상자 = 박스 그리기
            
            추가버튼.눌렀을 때
                할일내용 = 텍스트 할일입력.값 그리기
                목록상자에 할일내용 넣기
                할일입력 비우기
                
                할일내용.눌렀을 때
                    할일내용 지우기
        </script>
    </body>
</html>

지원되는 웹 기능

웹 확장(Web Extension)을 통해 다양한 DOM 조작 기능을 제공합니다:

UI 요소 생성:

  • 제목 "내용" 그리기 - H1 제목 생성
  • 문자 입력칸 "질문" 그리기 - 텍스트 입력 필드
  • 숫자 입력칸 "질문" 그리기 - 숫자 입력 필드
  • 버튼 "내용" 그리기 - 버튼 생성
  • 텍스트 "내용" 그리기 - 텍스트 요소 생성
  • 박스 그리기 - 컨테이너 div 생성

DOM 조작:

  • (부모)에 (자식) 넣기 - 요소를 다른 요소 안에 추가
  • (개체)에 (내용) 보여주기 - 요소의 텍스트 변경
  • (개체) 비우기 - 입력 필드 값 지우기
  • (개체) 지우기 - 요소를 DOM에서 제거

이벤트 처리:

  • (개체).눌렀을 때 - 클릭 이벤트 핸들러
  • (입력칸).값 - 입력 필드의 현재 값 접근

이제 v5는 단순히 언어 기능의 확장을 넘어, 실행 플랫폼을 웹 브라우저로 확장하여 인터랙티브 웹 애플리케이션까지 만들 수 있게 되었습니다.


🛠️ 표준 라이브러리 확장

점 표기법 도입과 함께 표준 라이브러리가 대폭 강화되었습니다.

  • 리스트/문자열 공통: .길이, .자르기(시작, 끝)
  • 리스트: .정렬(), .합치기(다른리스트), .거르기(함수), .각각(함수)
  • 수학: 반올림, 올림, 내림 문법이 ~에서 대신 **~까지**로 변경되었습니다. (정밀도 지정 가능)

🚨 마이그레이션 가이드

1. 수학 함수 문법 변경 (에서까지)

반올림, 올림, 내림 함수를 사용할 때 조사가 변경되었습니다.

v4 (구버전)

yaksok
3.14159를 2째자리 에서 반올림

v5 (신버전)

yaksok
3.14159를 2째자리 까지 반올림

2. 함수/메서드 호출 우선순위

점 표기법이 추가되면서, 조사 기반 호출과 점 표기법을 혼용할 때의 우선순위가 명확해졌습니다. 가급적 하나의 스타일로 통일하는 것을 권장합니다.


💡 요약

v5는 약속 언어를 객체 지향 프로그래밍이 가능한 현대적인 언어로 진화시킨 버전입니다.

  • 클래스로 데이터와 기능을 묶어 관리하세요.
  • 점 표기법으로 코드를 더 간결하게 작성하세요.
  • 람다고차 함수(거르기 등)로 데이터 처리를 효율적으로 하세요.
  • 웹 브라우저에서 직접 실행되는 달빛약속을 경험해보세요!