이 글은 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 목록 런타임 조회