![Обласно-специфичан језик Обласно-специфичан језик](/modules/owlapps_apps/img/nopic.jpg)
Обласно-специфичан језик (ОСЈ) је рачунарски језик специјализован за одређену област примене. Ово је у супротности са језиком опште намене (ОНЈ), који се широко примењује на различитим областима, и недостају му специјализоване функције за одређену област. Постоји широк избор ОСЈа, почев од широко коришћених језика заједничких области, као што су HTML за веб странице, до језика који су се користли само од стране једаног или неколико делова софтвера, као што су Емакс Лисп за ГНУ Емакс и ИXЕмакс. ДСЛови може бити даље деле подподељени према врсти језика и укључују обласно специфичне језике за обележаваље, обласно специфичне језике моделовања (уопштеније, спецификациске језике), и облсно-специфичне програмске језике. Наменски рачунарски језици су увек постојали у рачунарском добу, али термин "обласно-специфичан језик" је постао више популаран због пораста областно-специфичног моделовања. Једноставнији ОСЈци, посебно они који се користе од стране једне апликације, неформално се понекад називају мини језицима.
Линија између језика опште намене и обласно-специфичних језика није увек оштра, како језик може имати специјализоване функције за одређену област, али се примењју шире, или обрнуто могу у принципу бити у стању шире примене, али сеу пракси користе пре свега за специфичану област. На пример, Перл је првобитно развијен као језик текстуалне прераде и језик лепљења, за исту област као АВК и омотачке скрипте, али је од тада постао програмски језик опште намене. Насупрот томе, ПостСкрипт је језик са Тјуринговом потпуношћу, и, у принципу, може се користити за било који задатак, али се у пракси је уско користи као странично описни језик.
Дизајн и употреба одговарајућих ОСЈа је кључни део обласног инжењеринга, користећи језик који одговара области при руци - ово се може састојати од коришћења постојећих ОСЈ или НЈ, или развоја новог OSJ. Језиčko-оријентисано програмирање сматра да је стварање специјално-наменског језика за изражавање проблема стандардни део процеса решавања проблема. Креирање обласно-специфичног језика (са софтвером да га подржава), у односу на поновно коришћење постојећег језика, може бити корисно ако језик дозвољава да се одређена врста проблема или решења изрази јасније него што би постојећи језик дозволо и да се тип проблема, који је у питању, поново појављује довољно често. Прагматично, ОСЈ може бити специјализован за одређену област проблема, посебану технику репрезентације проблема, одређену технику решења, или други аспект области.
Обласно-специфичан језик је посебно створен за решавање проблема у одређеној области и није намењен да буде у стању да реши проблеме изван ње (мада то може да буде технички могуће). Насупрот томе, опште-наменски језици су створени да реше проблеме у многим областима. Домен може бити пословни простор. Неки примери пословних простора обухватају:
Обласно-специфичан језик је негде између малог програмског језика и скриптног језика, и често се користи на начин аналогно библиотеци програмирања. Границе између ових појмова су прилично мутне, слично као границе између скриптних језика и језика опште намене.
обласно-специфични језици су језици (или често, изјавне синтаксе или граматике) са врло специфичним циљевима у дизајну и имплементацији. Домен специфичне језик може бити један од визуелних диаграмираних језика, као што су они које су створили Генерични Еклипс Моделинг Систем, програмске апстракције, као што су Еклипс Моделинг Фрејмворк, или текстуални језици. На пример, корисност командне линија греп има регуларну излазну синтаксу која одговара шаблонима у линија текста. Сед дефинише синтаксу за усклађивање и замену регуларних израза. Често, ови се сићушни језици могу користити заједно унутар љуске да обављају сложеније програмске задатке.
Линија између обласно-специфичних језика и cкриптних језика је донекле нејасна, али обласно-специфични језици често немају функције ниског нивоа за фајлсистем приступа, међупроцеску контролу, и остале функције које карактеришу комплетних програмске језике, скриптне или друге. Многи обласно-специфични језици се не преводе на бајт-код или извршни код, већ на разне врсте медијских објеката:Графуиз изводи у ПостСкрипт, ГИФ, ЈПЕГ, итд, где Цсаунд преводи на аудио фајлове, и зраковно-праћено обласно-специфичан језик као ПОВ преводи на графичке фајлове. Рачунарски језик као SQL представља занимљив случај: може се сматрати за обласно-специфични језик, јер је специфичан за одређену областн (у случају SQLа, приступ и управљање релационим базама података), и често се позива из друге апликације, али SQL има више кључних речи и функција него многи скрипт језици, и често сена њега мисли као језика самаог по себи, можда због распрострањености манипулације базом података у програмирању и количине савлађивања потребног да се буде експерт у језику.
Даље помућење ове линије, многи обласни-специфични језици имају изложени АПИ, и може му се приступити са другим програмским језицима без прекидања тока извршења или позивом на посебан процес, и на тај начин може да функционише као програмских библиотека.
Неки обласни-специфични језици су се проширили током времена да укључују комплетне програмске алате, што додатно компликује питање да ли је језик обласно-специфичан или не. Добар пример је функционални језик XSLT, специјално дизајниран за претварање једног XML графика у други, који је повећан од његовог оснивања да дозволи (посебно у верзији 2.0) за различите облике фајлсистем интеракције, манипулацију низовима и датумом, а куцање података.
У моделима-вођеном инжењерству многи примери обласно-специфичнх језика могу се наћи као ОКЈ, језик за украшавање модела са тврдњама или КУВТ, обласно-специфичан језик трансформације. Међутим језици као што су УМЛ су обично језици опште намене моделирања.
Да резимирамо, аналогија може бити од користи: веома мали језик је као нож, који се може користити на хиљаде различитих начина, од резања хране до сече шуме. Обласно-специфичан језик је као електрична бушилица: то је моћно средство са широким спектром примене, али у специфичном контексту, то јест, прави рупе у стварима. Опште наменски Језик је комплетан радни сто, са различитим алата намењених за обављање разних задатака. Обласно-специфични језици треба да се користи од стране програмера који, гледајући њихове тренутни радни сто, схватају да им треба боља бушилица, и сматрају да је одређени обласно-специфични језик омогућава управо то.
Постоји неколико начина употребе обласно-специфичних језика:
Многи обласно-специфични језици се могу користити на више начина. ОСЈ код уграђен у језик домаћина може имати посебну синтаксну подршку, као што су регуларни изрази у сед, АВК, Перл или ЈаваСкрипт, или могу да прођу као ниске.
Усвајање обласно-специфичног језичког приступа за софтверско инжењерство укључује и ризике и могућности. Добро дизајниран обласно-специфичан језик успева да пронађе одговарајућу равнотежу између њих.
Обласно-специфични језици имају важне циљеве дизајна који контрирају онима опште наменских језика:
Сувишност програма се дефинише као просечног броја текстуалних уметака, брисања или замена неопходне да се правилно спроведе једна самостална промена у захтевима. За језик, то је просечно преко програма у области проблема. Ова мера је корисна, јер, што је мања, мања је вероватноћа да се грешке могу увести од стране непотпуног спровођења промена.
У програмирању, идиоми су методе наметнуте од стране програмера да рукују заједничким развојним задацима, нпр:
опште наменски програмски језици ретко подржавају такве идиома, али обласно-специфични језици могу да их описују, нпр:
Примери обласно-специфичних језика укључују HTML, Лого за цртање попут оловком, Верилог и ВХДЛ језици описа хардвера, МАТЛАБ и ГНУ Октава за програмирање матрице, Математика, Мајпл и Максим за симболичку математику, Спецификациски и описни језик за реактивне и дистрибуиране системе, табеларне формуле и макрое, SQL за испитивања релационе базе података, Yacc граматика за креирање парсера, регуларни израз за прецизирање лексичке анализе, Генерични Еклипс Моделинг Систем за креирање језика диаграмирања, Цсаунд за звук и музичку синтезу, и језик уноса Графуиз и ГрГен, софтверски пакети који се користе за распоред графикона и преписивање графикона.
ГМЛ скритни језик користи ГејмМејкер: Студио је обласно специфичан језик усмерен на програмере почетнике како би лако могли да науче програмирање. Док језик служи као спој више језика, укључујући Делфи, C++, и Бејсик, постоји недостатак објеката, типове података, и других карактеристика пуноправног програмског језика. Многи од уграђених функција се сандбоксирају ради лакше преносивости. Језик првенствено служи да би га свако лако научио и направио игру.
Јуникс скрипте омотача дају добар пример како обласно специфичан језик ради за организацију података. Они могу да манипулишу подацима у фајловима или корисничким улазима на много различитих начина. Обласне апстракције и ознаке обухватају токове (као што су стдин и стдаут) и операција на токовима (као што су преусмеравање и цеви). Ове апстракције комбинују да се направи снажан језик који це да се бави током и организациом података.
Језик се састоји од једноставног интерфејса (скрипте) за рад и контролу процеса који обављају мале задатке. Ови задаци представљају идиоме организовања података у жељеном формату, табеле, графикони, слике и сл
Ови задаци се састоје од једноставних механизама контроле токова и манипулације нискама који покривају доста заједничких употреба, као што су претраживање и замена ниски у фајловима, или бројање појављивања ниски (фреквенционо бројање).
Иако су Јуникс скриптинг језици Тјуринг потпуни, они се разликују од језика опште намене.
У пракси, скриптни језици се користе за ткање заједничких малих Јуникс алата као што су АВК (нпр ГАВК), Лс сорт or Вц.
Кодфјужон повезани скриптни језик је још један пример обласно специфичног језика за подацима вођене сајтове. Овај скриптни језик се користи заједно оплету језици и услуге као што су Јава, . НЕТ, C ++, СМС, имеил, имејл сервери, џттп, фтп, размене, именичке услуге, и фајл системи за употребу на веб страницама.
Колдфјужон Маржа језик (КФМЈ) обухвата скуп ознака које се могу користити у Колдфјужон странама да комуницира са изворима података, манипулише подацима и прикажете излаз. КФМЈ означена синтакса је слична HTML елементарној синтакси.
Ерланг Отворена Телеком Платформа је првобитно дизајнирана за употребу унутар Ериксона као обласно*специфичаног језика. Сам језик нуди платформу библиотека за креирање коначних стања машина, генерички сервери и менаџерима случаја који омогућавају инжењеру да брзо развија апликације или подржава библиотеке, које су приказане у индустријској одредници да надмашују друге језике намењене мешовитим сетовима домена, као што су C и C ++. Језик је сада званично отвореног порекла и може се преузети са њиховог сајта.
ФилтерМајстер је програмско окружење, са програмским језику ом који се заснива на C, за одређену сврху стварања Фотошоп-компатибилне филтерне додатке за обраду слике; ФилтерМајстер ради као Фотошоп додатак себи и може учитати и извршавати скрипте, или саставити и изводити их као независне додатаке. Иако ФилтерМајстер језик репродукује значајан део C језика и функције библиотека, он садржи само оне карактеристике које могу бити коришћене у контексту Фотошоп додатака и додаје бројне специфичности корисних само у овој конкретној области.
Функција Шаблона Медијавики је уграђени обласно-специфични језик чија је основна сврха да подрже стварање стварање шаблона и укључивање страница(укључивање позивањем) од МедијаВики страница у друге МедијаВики странице.
Детаљан опис тог обласно-специфичног језика може се наћи на одговарајућем чланаку на Wikimedia Foundation's Meta-Wiki.
Било је велико интересовање у обласно специфичне језике за побољшање продуктивности и квалитета софтверског инжењеринга. Обласно-пецифичан језик могао да обезбеди снажан сет алата за ефикасно софтверско инжењерствао. Такви инструменти почињу да праве свој пут у развоју критичних софтверских система.
Софтвер за смањење трошкова алата је пример овога. Приручник је пакет услужних програма, укључујући спецификацијски едитор за креирање спецификацију захтева, и графички прегледач зависности да прикаже променљивост зависности, контролор доследности да ухвати нестале ствари у Добро формирана формула у спецификацији, контролор модела и доказивач теорема да провери својства програма у односу на спецификацију, и инвариантни генератор који аутоматски конструише инварианте на основу захтева.
Новији развој је језичко оријентисано програмирање, интегрисана методологија софтверског инжењеринга углавном заснована на стварању, оптимизацији, и коришћењу обласно-специфичних језика.
Као допуна језичко-оријентисаном програмирању, као и свим другим облицима обласно-специфичних језика, метакомпилатори су класа за писање преводилачких алата. Метакомпилатор није само користан за генерисање парсера и генератора кода за обласно-специфичне језике, али метакомпилатор сам по себи саставља обласно-специфични метајезик посебно дизајниран за области метапрограмирања.
Поред обласно-специфичних језика расчланивања, метакомпилатори су корисни за генерисање широког спектара софтверског инжењерства и анализу алата. Методологија Мета-компајлера се често налазе у системима програмске трансформације.
Метакомпилатори који су играли значајну улогу у рачунарској науци и рачунарској индустрији укључују Мета-II и његов потомак ДрвоМета.
Унриал и Унриал Турнамент представио је језик који се зове УнриалСкрипт. То је омогућило бржи развој модификације у односу на конкурентски Куеик (користећи ид тек 2 engine). Ид Тек машина користи стандардни C код значи, C се морао научити и правилно применити, док је УнриалСкрипт оптимизован за лакоћу коришћења и ефикасност. Слично томе, развој нових игара увео је своје специфичне језике, једна од чешћих примера тога је Луа за скриптовање.
Разни Системи Пословних Правила су развијени за аутоматизацију политичких и пословних правила која се користе у владиној и приватној индустрији. ИЛОГ Оракл Аутоматизација политике, ДТРулс, Друлс и остали пружају подршку за ОСЈ са циљем да подржи различите области проблема. ДТРулс иде толико далеко да дефинише интерфејс за коришћење вишеструких ОСЈа у склопу сета правила.
Сврха Система Пословних Правила је да дефинише представљање пословне логике на људски читљив начин. Ово омогућава да и стручњаци за одговарајуће области и програмери раде са и разумеју исто представљање пословне логике. Већина Правила Система обезбеђују и такав приступ поједностављивању контролне структуре за пословну логику (на пример, коришћење декларативних правила или Табела Одлука) заједно са алтернативама програмске синтаксе у корист ОСЈа.
Статистички моделари су развили обласно-специфични језике као што су Багс, Јагс и Стен. Ови језици пружају синтаксу за описивање Бајесовог модела, и створити метод за његово решавање користећи симулацију.
Генерисано објектно руковање и услуге засноване на интерфејс Описном Језику за обласно-специфични језик као што је ЈаваСцрипт за веб апликације, HTML за документацију, C++ за код високих перформанси, итд. Ово се ради са укрштеним језичким оквирима као што су Апаћи Трифт или Гугл Протокол Буффери .
Други истакнути примери обласно-специфичних језика су:
Неке од предности:
Неке од мана:
Owlapps.net - since 2012 - Les chouettes applications du hibou