DSL (Domain Specific Language)과 GPL (General Purpose Language)
이 글은 today-i-learn 시리즈의 19번째 기록입니다. (총 40개)
DSL (Domain Specific Language)
특정 도메인(영역)의 문제를 해결하기 위해 최적화된 ‘전용 언어’ 🌟악보를 그릴 때 오선에 표기하는 음표들과 비슷한 개념(음악이라는 영역에서는 표준어보다 훨씬 빠르고 정확하게 소통 가능)
- 특징: 범용 언어(GPL)보다 표현력이 높고, 해당 분야의 전문가라면 프로그래밍 지식이 적어도 이해하기 쉬움.
- 장점:
- 가독성이 좋고 생산성이 높음. (예: SQL 한 줄이면 끝날 DB 조회를 C++로 짜려면 수십 줄이 필요함)
- 복잡한 내부 로직을 몰라도 해당 도메인의 지식만 있으면 코드를 짤 수 있게 해준다.
| 도구 | DSL 예시 | 목적 |
| ————- | ————————– | ———– |
| Appsheet | [연관 업체].[업체명] | 노코드 앱 로직 구현 |
| Excel | =IF(A1>0, "양수", "음수") | 스프레드시트 수식 |
| Jekyll/Liquid | `` | 템플릿 렌더링 |
| SQL | SELECT * FROM users | DB 조회 |
SQL도 따지면 DB 전용 DSL이고,
Liquid도 Jekyll 전용 DSL.
직접 만들 수도 있음 — ChordSheet의 커스텀 파일 포맷도 일종의 DSL.
GPL (General Purpose Language)
다양한 분야에서 범용적으로 사용할 수 있는 ‘범용 언어’
- 특징: 실행 로직, 메모리 관리, 입출력 등 컴퓨터의 전반적인 기능을 수행할 수 있음.
- 예시: Python, C++, Java, Kotlin, Swift, Go 등.
- 확장성:
- JavaScript: 초기엔 웹 브라우저 조작 전용(Scripting)에 가까웠으나, 생태계가 확장되며 현재는 서버, 앱, AI 등 모든 분야에서 쓰임.
- Python: 데이터 분석 DSL처럼 쓰일 때도 있지만, 태생은 GPL임.
Series: today-i-learn
1
|
C++ 자료형(Data Type)
2
|
MD5 vs pHash
3
|
C++에서 함수의 선언과 정의
4
|
Tkinter padx, pady
5
|
메모리와 포인터 변수
6
|
Call by Value, Call by Reference, Call by Pointer 비교
7
|
const
8
|
Gemfile — Jekyll 프로젝트의 의존성 파일
9
|
kramdown-parser-gfm — Jekyll의 GFM 파서
10
|
파서(Parser)
11
|
AHU vs OHU
12
|
I might try it vs I'll try it 뉘앙스 차이
13
|
SESSION_EXPIRE_AT_BROWSER_CLOSE=True
14
|
configuration key
15
|
Git stash vs discard
16
|
subprocess.Popen으로 Windows 탐색기에 명령어를 전달
17
|
Post 잔디 분석하기
18
|
Google Sheets Sync 최적화
19
|
DSL (Domain Specific Language)과 GPL (General Purpose Language)
읽는 중
20
|
마크다운 표 그리는 방법
21
|
쿼리 파라미터(Query Parameter). 기존 QR코드 재활용
22
|
Django 보안 취약점 점검 및 수정
23
|
OOP Object-Oriented Programming 객체 지향 프로그래밍
24
|
Fernet 대칭 암호화
25
|
Jekyll 코드블록 안의 Liquid 태그
26
|
Flutter 앱 개발 — DB부터 상태관리까지
27
|
insertOnConflictUpdate vs DoUpdate(target)
28
|
세션 필터
29
|
아코디언(Accordiaon) UI를 펼친상태로 만들기
30
|
input의 step
31
|
Flutter 에서 퍼즐 셀 구현
32
|
Flutter 앱 개발 TIL
33
|
Word Cloud
34
|
Google Sheets를 데이터 버스로(with AppSheet)
35
|
Django 모델 텍스트 필드 자동 수집 패턴
36
|
localStorage로 섹션 토글 상태 유지
37
|
순차 ID 생성(`select_for_update()` + `max()` 조합)
38
|
역참조 검색과 distinct()
39
|
Android 파일 공유 MIME 타입
40
|
AssetManifest — Flutter 빌드 타임 asset 목록 런타임 조회