Обласно-специфичан језик (ОСЈ) је рачунарски језик специјализован за одређену област примене. Ово је у супротности са језиком опште намене (ОНЈ), који се широко примењује на различитим областима, и недостају му специјализоване функције за одређену област. Постоји широк избор ОСЈа, почев од широко коришћених језика заједничких области, као што су HTML за веб странице, до језика који су се користли само од стране једаног или неколико делова софтвера, као што су Емакс Лисп за ГНУ Емакс и ИXЕмакс. ДСЛови може бити даље деле подподељени према врсти језика и укључују обласно специфичне језике за обележаваље, обласно специфичне језике моделовања (уопштеније, спецификациске језике), и облсно-специфичне програмске језике. Наменски рачунарски језици су увек постојали у рачунарском добу, али термин "обласно-специфичан језик" је постао више популаран због пораста областно-специфичног моделовања. Једноставнији ОСЈци, посебно они који се користе од стране једне апликације, неформално се понекад називају мини језицима.

Линија између језика опште намене и обласно-специфичних језика није увек оштра, како језик може имати специјализоване функције за одређену област, али се примењју шире, или обрнуто могу у принципу бити у стању шире примене, али  сеу пракси користе пре свега за специфичану област. На пример, Перл је првобитно развијен као језик текстуалне прераде и језик лепљења, за исту област као АВК и  омотачке скрипте, али је од тада постао програмски језик опште намене. Насупрот томе, ПостСкрипт је језик са Тјуринговом потпуношћу, и, у принципу, може се користити за било који задатак, али се у пракси је уско користи као странично описни језик.

Употреба Дизајн и употреба одговарајућих ОСЈа је кључни део обласног инжењеринга, користећи језик који одговара области при руци - ово се може састојати од коришћења постојећих ОСЈ или НЈ, или развоја новог OSJ. Језиčko-оријентисано програмирање сматра да је стварање специјално-наменског језика за изражавање проблема стандардни део процеса решавања проблема. Креирање обласно-специфичног језика (са софтвером да га подржава), у односу на поновно коришћење постојећег језика, може бити корисно ако језик дозвољава да се одређена врста проблема или решења изрази јасније него што би постојећи језик дозволо и да се тип проблема, који је у питању, поново појављује довољно често. Прагматично, ОСЈ може бити специјализован за одређену област проблема, посебану технику репрезентације проблема, одређену технику решења, или други аспект области.

Преглед Обласно-специфичан језик је посебно створен за решавање проблема у одређеној области и није намењен да буде у стању да реши проблеме изван ње (мада то може да буде технички могуће). Насупрот томе, опште-наменски језици су створени да реше проблеме у многим областима. Домен може бити пословни простор. Неки примери пословних простора обухватају: обласно-специфични језик за полисе животног осигурања развијених интерно у великим осигуравајућим предузећима обласно-специфични језик за симулације борби обласно-специфични језик за обрачун плате обласно-специфични језик за наплату Обласно-специфичан језик је негде између малог програмског језика и скриптног језика, и често се користи на начин аналогно библиотеци програмирања. Границе између ових појмова су прилично мутне, слично као границе између скриптних језика и језика опште намене.

У дизајну и имплементацији обласно-специфични језици су језици (или често, изјавне синтаксе или граматике) са врло специфичним циљевима у дизајну и имплементацији. Домен специфичне језик може бити један од визуелних диаграмираних језика, као што су они које су створили Генерични Еклипс Моделинг Систем, програмске апстракције, као што су Еклипс Моделинг Фрејмворк, или текстуални језици. На пример, корисност командне линија греп има регуларну излазну синтаксу која одговара шаблонима у линија текста. Сед дефинише синтаксу за усклађивање и замену регуларних израза. Често, ови се сићушни језици могу користити заједно унутар љуске да обављају сложеније програмске задатке.

Линија између обласно-специфичних језика и cкриптних језика је донекле нејасна, али обласно-специфични језици често немају функције ниског нивоа за фајлсистем приступа, међупроцеску контролу, и остале функције које карактеришу комплетних програмске језике, скриптне или друге. Многи обласно-специфични језици се не преводе на бајт-код или извршни код, већ на разне врсте медијских објеката:Графуиз изводи у ПостСкрипт, ГИФ, ЈПЕГ, итд, где Цсаунд преводи на аудио фајлове, и зраковно-праћено обласно-специфичан језик као ПОВ преводи на графичке фајлове. Рачунарски језик као SQL представља занимљив случај: може се сматрати за обласно-специфични језик, јер је специфичан за одређену областн (у случају SQLа, приступ и управљање релационим базама података), и често се позива из друге апликације, али SQL има више кључних речи и функција него многи скрипт језици, и често сена њега мисли као језика самаог по себи, можда због распрострањености манипулације базом података у програмирању и количине савлађивања потребног да се буде експерт у језику.

Даље помућење ове линије, многи обласни-специфични језици имају изложени АПИ, и може му се приступити са другим програмским језицима без прекидања тока извршења или позивом на посебан процес, и на тај начин може да функционише као програмских библиотека.

Програмски алати Неки обласни-специфични језици су се проширили током времена да укључују комплетне програмске алате, што додатно компликује питање да ли је језик обласно-специфичан или не. Добар пример је функционални језик XSLT, специјално дизајниран за претварање једног XML графика у други, који је повећан од његовог оснивања да дозволи (посебно у верзији 2.0) за различите облике фајлсистем интеракције, манипулацију низовима и датумом, а куцање података.

У моделима-вођеном инжењерству многи примери обласно-специфичнх језика могу се наћи као ОКЈ, језик за украшавање модела са тврдњама или КУВТ, обласно-специфичан језик трансформације. Међутим језици као што су УМЛ су обично језици опште намене моделирања.

Да резимирамо, аналогија може бити од користи: веома мали језик је као нож, који се може користити на хиљаде различитих начина, од резања хране до сече шуме. Обласно-специфичан језик је као електрична бушилица: то је моћно средство са широким спектром примене, али у специфичном контексту, то јест, прави рупе у стварима. Опште наменски Језик је комплетан радни сто, са различитим алата намењених за обављање разних задатака. Обласно-специфични језици треба да се користи од стране програмера који, гледајући њихове тренутни радни сто, схватају да им треба боља бушилица, и сматрају да је одређени обласно-специфични језик омогућава управо то.

Теме обласно-специфичног језика

Модели коришћења Постоји неколико начина употребе обласно-специфичних језика: обрада са самосталним алатима, позваним преко директне операције корисника, често на командној линији или са Мејкфајла (нпр греп за регуларно подударање израза, сед, лекс, јац, скуп алата Графуиз, итд) обласно-специфични језици који се реализују коришћењем макроа система програмског језика, а које се претварају или проширују у општенаменском језику у времену компилирања или читања Уграђени (или интерни) обласно-специфични језици, реализовани као библиотеке које експлоатишу синтаксу свог језика домаћина опште намене или подскупе истих, додајући обласно-специфичне елементе језика (типови података, рутине, методе, макрое итд). (нпр Уграђени SQL, LINQ) обласно-специфични језици који се позивају (у току рада) из програма писаних на језицима опште намене као што су C или Перл, да обављју одређену функцију, често враћају резултате пословања у "домаћина" програмског језика за даљу обраду; генерално, интерпретатор или виртуелна машина за обласно-специфичан језик је уграђена у апликацију домаћина (нпр форматиране ниске, регуларна излазна машина) обласно-специфични језици који су уграђени у корисничке апликације (на пример, макро језици са табелама) и који се (1) користе за извршавање кода који је написан од стране корисника апликације, (2) динамички генеришу од стране апликације, или (3) обоје. Многи обласно-специфични језици се могу користити на више начина. ОСЈ код уграђен у језик домаћина може имати посебну синтаксну подршку, као што су регуларни изрази у сед, АВК, Перл или ЈаваСкрипт, или могу да прођу као ниске.

Дизајн циљеви Усвајање обласно-специфичног језичког приступа за софтверско инжењерство укључује и ризике и могућности. Добро дизајниран обласно-специфичан језик успева да пронађе одговарајућу равнотежу између њих.

Обласно-специфични језици имају важне циљеве дизајна који контрирају онима опште наменских језика: обласно-специфични језици су мање свеобухватни. обласно-специфични језици су много израженији у својој области. обласно-специфични језици треба испољавају минимална сувишност према следећој субјективној дефиницији. Сувишност програма се дефинише као просечног броја текстуалних уметака, брисања или замена неопходне да се правилно спроведе једна самостална промена у захтевима. За језик, то је просечно преко програма у области проблема. Ова мера је корисна, јер, што је мања, мања је вероватноћа да се грешке могу увести од стране непотпуног спровођења промена.

Идиоми У програмирању, идиоми су методе наметнуте од стране програмера да рукују заједничким развојним задацима, нпр: Обезбеђују да се подаци чувају пре него што је прозор затворен. Пре извођења скупих тестова, обављају јефтине тестове који могу искључити потребу за скупим тестовима. Уређују код кад год се командне линије параметара промене, јер оне утичу на понашање програма. опште наменски програмски језици ретко подржавају такве идиома, али обласно-специфични језици могу да их описују, нпр: Скрипта може аутоматски сачувати податке. Паметно упрегнуће теста може научити шта су добри тестови. обласно-специфични језик може да параметерише улаз командне линије.

Примери Примери обласно-специфичних језика укључују HTML, Лого за цртање попут оловком, Верилог и ВХДЛ језици описа хардвера, МАТЛАБ и ГНУ Октава за програмирање матрице, Математика, Мајпл и Максим за симболичку математику, Спецификациски и описни језик за реактивне и дистрибуиране системе, табеларне формуле и макрое, SQL за испитивања релационе базе података, Yacc граматика за креирање парсера, регуларни израз за прецизирање лексичке анализе, Генерични Еклипс Моделинг Систем за креирање језика диаграмирања, Цсаунд за звук и музичку синтезу, и језик уноса Графуиз и ГрГен, софтверски пакети који се користе за распоред графикона и преписивање графикона.

Језик стварања игара ГМЛ скритни језик користи ГејмМејкер: Студио је  обласно специфичан језик усмерен на програмере почетнике како би лако могли да науче програмирање. Док језик служи као спој више језика, укључујући Делфи, C++, и Бејсик, постоји недостатак објеката, типове података, и других карактеристика пуноправног програмског језика. Многи од уграђених функција се сандбоксирају ради лакше преносивости. Језик првенствено служи да би га свако лако научио и направио игру.

Јуникс скипте омотача Јуникс скрипте омотача дају добар пример како обласно специфичан језик ради за организацију података. Они могу да манипулишу подацима у фајловима или корисничким улазима на много различитих начина. Обласне апстракције и ознаке обухватају токове (као што су стдин и стдаут) и операција на токовима (као што су преусмеравање и цеви). Ове апстракције комбинују да се направи снажан језик који це да се бави током и организациом података.

Језик се састоји од једноставног интерфејса (скрипте) за рад и контролу процеса који обављају мале задатке. Ови задаци представљају идиоме организовања података у жељеном формату, табеле, графикони, слике и сл

Ови задаци се састоје од једноставних механизама контроле токова и манипулације нискама који покривају доста заједничких употреба, као што су претраживање и замена ниски у фајловима, или бројање појављивања ниски (фреквенционо бројање).