๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ

๋นˆ ๊ตฌ๋ฉ ์ฑ„์šฐ๊ธฐ

[ํ”„๋กœ๊ทธ๋ž˜๋ฐ] ์˜์—ญ ํŠนํ™” ์–ธ์–ด, Domain Specific Language

์ถœ์ฒ˜

https://devfoxstar.github.io/development/dsl/

 

๋„๋ฉ”์ธ ํŠนํ™” ์–ธ์–ด (DSL - Domain Specific Language)

์ •์˜ DSL - Domain Specific Language…

devfoxstar.github.io

https://ko.wikipedia.org/wiki/%EB%8F%84%EB%A9%94%EC%9D%B8_%ED%8A%B9%ED%99%94_%EC%96%B8%EC%96%B4

 

๋„๋ฉ”์ธ ํŠนํ™” ์–ธ์–ด - ์œ„ํ‚ค๋ฐฑ๊ณผ, ์šฐ๋ฆฌ ๋ชจ๋‘์˜ ๋ฐฑ๊ณผ์‚ฌ์ „

์œ„ํ‚ค๋ฐฑ๊ณผ, ์šฐ๋ฆฌ ๋ชจ๋‘์˜ ๋ฐฑ๊ณผ์‚ฌ์ „. ๋„๋ฉ”์ธ ํŠนํ™” ์–ธ์–ด(Domain-specific language)๋Š” ํŠน์ •ํ•œ ๋„๋ฉ”์ธ์„ ์ ์šฉํ•˜๋Š”๋ฐ ํŠนํ™”๋œ ์ปดํ“จํ„ฐ ์–ธ์–ด์ด๋‹ค. ์ด๋Š” ์–ด๋Š ๋„๋ฉ”์ธ์—์„œ๋‚˜ ์ ์šฉ ๊ฐ€๋Šฅํ•œ ๋ฒ”์šฉ ์–ธ์–ด(General-purpose langu

ko.wikipedia.org

 

 


์˜์—ญ ํŠนํ™” ์–ธ์–ด, ๋„๋ฉ”์ธ ํŠนํ™” ์–ธ์–ด, Domain Specific Language

ํŠน์ • ๋„๋ฉ”์ธ(๋ฌธ์ œ ์˜์—ญ, ์‘์šฉ ๋ถ„์•ผ)์— ํŠนํ™”๋œ ์ปดํ“จํ„ฐ ์–ธ์–ด. 

 

ํŠน์ง•

1. ํŠน์ • ๋„๋ฉ”์ธ์— ์ตœ์ ํ™”

DSL์€ ํŠน์ •ํ•œ ๋ฌธ์ œ ์˜์—ญ(์˜ˆ: ์›น ๊ฐœ๋ฐœ, ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์ฒ˜๋ฆฌ, ํ…์ŠคํŠธ ์ฒ˜๋ฆฌ ๋“ฑ)์— ์ดˆ์ ์„ ๋งž์ถ˜๋‹ค. ๊ทธ ๋„๋ฉ”์ธ ์™ธ์˜ ๋ฒ”์šฉ์ ์ธ ์‚ฌ์šฉ์—๋Š” ์ ํ•ฉํ•˜์ง€ ์•Š์„ ์ˆ˜ ์žˆ๋‹ค.

2. ๋†’์€ ์ถ”์ƒํ™” ์ˆ˜์ค€

๊ทธ ๋„๋ฉ”์ธ์— ํŠนํ™”๋œ ๊ฐœ๋…์ด๋‚˜ ์ž‘์—…์„ ๊ฐ„๋‹จํ•˜๊ฒŒ ํ‘œํ˜„ํ•  ์ˆ˜ ์žˆ๋‹ค. ์ด๋ฅผ ํ†ตํ•ด ๊ฐœ๋ฐœ์ž๋Š” ๋ณต์žกํ•œ ์ž‘์—…์œผ๋ฅด ๊ฐ„๋‹จํ•˜๊ฒŒ ์ฒ˜๋ฆฌํ•  ์ˆ˜ ์žˆ๋‹ค.

3. ์‚ฌ์šฉ์ž ์นœํ™”์ 

๋„๋ฉ”์ธ ์ „๋ฌธ๊ฐ€๋“ค์ด ์‰ฝ๊ฒŒ ์ดํ•ดํ•˜๊ณ  ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋„๋ก ์„ค๊ณ„๋˜๊ธฐ ๋•Œ๋ฌธ์—, ๋น„๊ฐœ๋ฐœ์ž๋„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ๊ฒฝ์šฐ๊ฐ€ ์žˆ๋‹ค. ์ฝ”๋“œ๊ฐ€ ๋„๋ฉ”์ธ์— ๋งž๋Š” ์ž์—ฐ์Šค๋Ÿฌ์šด ์–ธ์–ด๋กœ ํ‘œํ˜„๋œ๋‹ค.

 

์˜ˆ์‹œ

1. SQL

๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์งˆ์˜๋ฅผ ์œ„ํ•œ DSL. ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์™€ ์ƒํ˜ธ์ž‘์šฉํ•˜๋Š”๋ฐ ์ตœ์ ํ™”๋˜์–ด ์žˆ๋‹ค.

2. HTML

์›น ํŽ˜์ด์ง€์˜ ๊ตฌ์กฐ๋ฅผ ์ •์˜ํ•˜๋Š” ๋งˆํฌ์—… ์–ธ์–ด. ์›น ๊ฐœ๋ฐœ ๋„๋ฉ”์ธ์— ํŠนํ™”๋œ ์–ธ์–ด.

 

๐Ÿค” ๋งˆํฌ์—… ์–ธ์–ด๋ž€?

ํ…์ŠคํŠธ์— ํŠน๋ณ„ํ•œ ํƒœ๊ทธ๋‚˜ ํ‘œ๊ธฐ๋ฒ•์„ ์‚ฌ์šฉํ•ด ๋ฌธ์„œ๋‚˜ ๋ฐ์ดํ„ฐ์˜ ๊ตฌ์กฐ๋ฅผ ์ •์˜ํ•˜๊ณ , ๊ทธ ๊ตฌ์กฐ๋ฅผ ํ†ตํ•ด ํ…์ŠคํŠธ๊ฐ€ ์–ด๋–ป๊ฒŒ ํ‘œํ˜„๋ ์ง€ ๋˜๋Š” ์–ด๋–ป๊ฒŒ ํ•ด์„๋˜์ง€ ๋‚˜ํƒ€๋‚ด๋Š” ์–ธ์–ด.

  • ๋งˆํฌ์—… ์–ธ์–ด์˜ ํŠน์ •
    • ํƒœ๊ทธ ๊ธฐ๋ฐ˜ : ํ…์ŠคํŠธ ์ฃผ์œ„์— ํƒœ๊ทธ๋ฅผ ์‚ฌ์šฉํ•ด ๋ฌธ์„œ์˜ ๊ตฌ์กฐ๋‚˜ ์˜๋ฏธ๋ฅผ ์ •์˜ํ•œ๋‹ค. ํƒœ๊ทธ๋Š” ๋ณดํ†ต ์—ด๊ณ  ๋‹ซ๋Š” ํ˜•์‹์œผ๋กœ ์“ฐ์ด๊ณ , ํƒœ๊ทธ ์‚ฌ์ด์— ๋“ค์–ด๊ฐ„ ํ…์ŠคํŠธ๊ฐ€ ์–ด๋–ค ์˜๋ฏธ๋ฅผ ๊ฐ€์ง€๋Š”์ง€๋ฅผ ์ง€์ •ํ•œ๋‹ค.
    • ๋ฐ์ดํ„ฐ์˜ ๊ตฌ์กฐํ™” : ๋ฌธ์„œ์˜ ๋‚ด์šฉ์ด๋‚˜ ๋ฐ์ดํ„ฐ์˜ ์˜๋ฏธ๋ฅผ ๊ตฌ์กฐํ™”ํ•ด, ์ปดํ“จํ„ฐ๋‚˜ ์‚ฌ๋žŒ์ด ๋ฌธ์„œ๋ฅผ ๋” ์ž˜ ์ดํ•ดํ•  ์ˆ˜ ์žˆ๊ฒŒ ํ•œ๋‹ค.
  • ๋Œ€ํ‘œ์ ์ธ ๋งˆํฌ์—… ์–ธ์–ด
    • HTML (HyperText MarkUp Language) : ์›น ํŽ˜์ด์ง€์˜ ๊ตฌ์กฐ์™€ ์ฝ˜ํ…์ธ ๋ฅผ ์ •์˜ํ•˜๋Š” ๋ฐ ์‚ฌ์šฉ๋˜๋ฉฐ, ๋ธŒ๋ผ์šฐ์ €๊ฐ€ ์›น ํŽ˜์ด์ง€๋ฅผ ๋ Œ๋”๋งํ•˜๋Š” ๋ฐฉ์‹์— ์˜ํ–ฅ์„ ์ค€๋‹ค.
    • XML (eXtensible MarkUp Language) : ๋ฐ์ดํ„ฐ๋ฅผ ์ €์žฅํ•˜๊ณ  ์ „๋‹ฌํ•˜๊ธฐ ์œ„ํ•œ ๋งˆํฌ์—… ์–ธ์–ด. ๋‹ค์–‘ํ•œ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์—์„œ ๋ฐ์ดํ„ฐ๋ฅผ ๊ตํ™˜ํ•˜๋Š” ๋ฐ ์ž์ฃผ ์‚ฌ์šฉ๋œ๋‹ค.
    • Markdown: ๊ฐ„๋‹จํ•œ ์„œ์‹ ์ง€์ • ๋งˆํฌ์—… ์–ธ์–ด. ๋ธ”๋กœ๊ทธ๋‚˜ ๋ฌธ์„œ์—์„œ ๊ฐ„๋‹จํ•œ ํ…์ŠคํŠธ ํ˜•์‹ ์ง€์ •(์ œ๋ชฉ, ๋ฆฌ์ŠคํŠธ, ๋งํฌ ๋“ฑ)์„ ์‰ฝ๊ฒŒ ์ž‘์„ฑํ•  ์ˆ˜ ์žˆ๋‹ค.

3. ์ •๊ทœ ํ‘œํ˜„์‹ Regualr Expressions

๋ฌธ์ž์—ด ํŒจํ„ด ๋งค์นญ์— ํŠนํ™”๋œ ์–ธ์–ด. ํ…์ŠคํŠธ ์ฒ˜๋ฆฌ์— ์ž์ฃผ ์‚ฌ์šฉ๋œ๋‹ค.

4. Gradle

๋นŒ๋“œ ์Šคํฌ๋ฆฝํŠธ๋ฅผ ์ž‘์„ฑํ•˜๊ธฐ ์œ„ํ•œ ๋„๋ฉ”์ธ ํŠนํ™” ์–ธ์–ด. ๋นŒ๋“œ ์ž๋™ํ™”๋ฅผ ๋•๋Š”๋‹ค.

 


์˜์—ญ์ด ํŠนํ™”๋˜์ง€ ์•Š์€ ์–ธ์–ด๋„ ์žˆ๋‹ค.

๋ฒ”์šฉ ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์–ธ์–ด GPL General Purpose Language

์–ด๋Š ๋„๋ฉ”์ธ์—์„œ๋‚˜ ์ ์šฉ ๊ฐ€๋Šฅํ•œ ๋ฒ”์šฉ ์–ธ์–ด

 

ํŠน์ง•

1. ๋‹ค์–‘ํ•œ ์šฉ๋„

ํŠน์ •ํ•œ ๋„๋ฉ”์ธ์— ํ•œ์ •๋˜์ง€ ์•Š๊ณ , ๊ฒŒ์ž„ ๊ฐœ๋ฐœ, ์›น ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜, ์‹œ์Šคํ…œ ํ”„๋กœ๊ทธ๋ž˜๋ฐ, ๋ฐ์ดํ„ฐ ๋ถ„์„ ๋“ฑ ๋‹ค์–‘ํ•œ ๋ชฉ์ ์— ์‚ฌ์šฉ๋  ์ˆ˜ ์žˆ๋‹ค.

2. ์œ ์—ฐ์„ฑ

์—ฌ๋Ÿฌ ์ƒํ™ฉ์— ๋งž๊ฒŒ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋„๋ก ์„ค๊ฒŒ๋˜์–ด ์žˆ์–ด์„œ, ์‚ฌ์šฉ์ž๊ฐ€ ์›ํ•˜๋Š” ๋ฐฉ์‹์œผ๋กœ ํ™•์žฅํ•˜๊ฑฐ๋‚˜ ์กฐ์ •ํ•  ์ˆ˜ ์žˆ๋Š” ๊ธฐ๋Šฅ์ด ํ’๋ถ€ํ•˜๋‹ค.

3. ๋งŽ์€ ํ‘œ์ค€ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ

๋Œ€๋ถ€๋ถ„์˜ ๋ฒ”์šฉ ์–ธ์–ด๋Š” ๋‹ค์–‘ํ•œ ๊ธฐ๋Šฅ์„ ์ œ๊ณตํ•˜๋Š” ํ‘œ์ค€ ๋ผ์ž‰๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ๊ฐ–์ถ”๊ณ  ์žˆ์–ด, ๋„คํŠธ์›Œํฌ ํ†ต์‹ , ํŒŒ์ผ ์ž…์ถœ๋ ฅ, ์Šค๋ ˆ๋“œ ์ฒ˜๋ฆฌ ๋“ฑ ๋‹ค์–‘ํ•œ ์ž‘์—…์„ ์ง€์›ํ•œ๋‹ค.

 

์˜ˆ์‹œ

1. Python

์›น ๊ฐœ๋ฐœ, ๋ฐ์ดํ„ฐ ๊ณผํ•™, ์ธ๊ณต์ง€๋Šฅ, ์‹œ์Šคํ…œ ์ž๋™ํ™” ๋“ฑ ๋‹ค์–‘ํ•œ ๋ถ„์•ผ์—์„œ ์‚ฌ์šฉ๋˜๋Š” ๋Œ€ํ‘œ์ ์ธ ๋ฒ”์šฉ ์–ธ์–ด

2. Java

๋ชจ๋ฐ”์ผ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜(Android), ์›น ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜, ์„œ๋ฒ„ ๊ฐœ๋ฐœ ๋“ฑ ๋‹ค์–‘ํ•œ ๋ถ„์•ผ์—์„œ ์‚ฌ์šฉ๋œ๋‹ค.

3. C++

์‹œ์Šคํ…œ  ํ”„๋กœ๊ทธ๋ž˜๋ฐ, ๊ฒŒ์ž„ ๊ฐœ๋ฐœ, ์ž„๋ฒ ๋””๋“œ ์‹œ์Šคํ…œ ๋“ฑ ๋งค์šฐ ๋‹ค์–‘ํ•œ ์˜์—ญ์—์„œ ์‚ฌ์šฉ๋œ๋‹ค.