Otwórz sobie drzwi do kariery programisty     |        Wybierz swoją ścieżkę kariery w IT!     |       Zacznij naukę z 30% rabatem

1 dni 20 godzin
close
Cart icon
User menu icon
User icon
Skontaktuj się z nami:
+48 888-916-333
Lightbulb icon
Jak to działa?
FAQ icon
FAQ
Contact icon
Kontakt
Terms of service icon
Regulamin zakupów
Privacy policy icon
Polityka prywatności
Zdjęcie główne artykułu.

Co to jest DSL (język dziedzinowy)

Na ścieżce twojej programistycznej przygody możesz natrafić na takie określenie jak język dziedzinowy. W języku angielskim znane to jest jako Domain Specific Language (DSL).

W tym artykule spróbujemy wyjaśnić tą interesującą koncepcję. Podamy jednocześnie kilka przykładów języków klasyfikowanych jako języki dziedzinowe.

Dwie główne grupy języków

Języki programowania możemy podzielić z grubsza na dwie główne grupy:

  • Języki ogólnego zastosowania
  • Języki dziedzinowe, specyficzne dla określonej dziedziny.

W przypadku języków ogólnego zastosowania mamy do czynienia z językami, które są uniwersalne. Możesz za ich pomocą tworzyć różnego rodzaju oprogramowanie. Przykłady takich języków możemy mnożyć bez końca: Python, Java, JavaScript, C++, C# itd. To języki, które od razu przychodzą na myśl w momencie gdy mówimy o programowaniu.

Z kolei języki dziedzinowe, jak sama nazwa sugeruje, są wyspecjalizowane. Służą do pracy z określoną dziedziną i zazwyczaj nie nadają się do tworzenia szeroko pojętego, ogólnego oprogramowania.

Granice pomiędzy tymi dwiema grupami są dość płynne. Czasami możesz napotkać język ogólnego zastosowania, który jest używany głównie w jednej wybranej dziedzinie.

Można też znaleźć przykłady języków typu DSL, które mają zastosowania wykraczające poza jeden obszar. Szerze mówiąc, nie jest to aż tak istotne. Praktyka jest dużo ważniejsza od akademickich definicji.

HTML

HTML to język do budowania stron internetowych. Można by powiedzieć, że HTML jest przykładem języka dziedzinowego. Dlaczego?

Bo używamy go głównie do budowania stron czyli właśnie w jednej, określonej dziedzinie. Za pomocą HTML ciężko jest stworzyć zaawansowaną grę 3D czy aplikację desktopową. Jest on językiem o ściśle określonych zastosowaniach.

Można by argumentować, że za pomocą współczesnego HTML tworzy się niemal wszystko. Jest w tym sporo prawdy. Są niezliczone przykłady gier, aplikacji mobilnych oraz innych programów opartych na HTML. Tutaj musisz jednak pamiętać o jednej kluczowej rzeczy.

Te wszystkie projekty zostały zbudowane w oparciu o kombinację HTML oraz JavaScript. Sam HTML by nie wystarczył do zbudowania funkcjonalnej aplikacji bo nie ma takich możliwości. Wszystkie funkcjonalne elementy zbudowane są więc za pomocą języka ogólnego zastosowania jakim jest JavaScript. HTML służy jedynie do budowania treści oraz struktury bo do tego został stworzony.

SQL

SQL jest kolejnym przykładem języka dziedzinowego. Za jego pomocą piszemy zapytania do bazy danych. Czyli działamy w jednej, określonej dziedzinie.

Nie możemy za pomocą SQL zbudować kompletnej aplikacji. Możemy za to wykorzystać jego specjalistyczne możliwości do pisania zapytań, do pracy z bazą danych. SQL robi więc jedną, konkretną rzecz. Jest używany w jednej, konkretnej dziedzinie.

Inne przykłady

SQL oraz HTML to przykłady bardzo popularnych języków dziedzinowych. Oczywiście nie jedyne.

Można by argumentować, że CSS jest takim językiem. Używamy go do pisania stylów dla stron internetowych. Czyli mamy do czynienia ze specjalistycznym językiem, który służy do pisania jednej konkretnej rzeczy.

Mamy też różne wyspecjalizowane języki jak np. Gawk używany do przetwarzania tekstu w terminalu. Albo Make używany do opisywania procesu budowania plików aplikacji. Takie przykłady można by mnożyć niemal bez końca. Praktycznie każda dziedzina ma swoje, nieraz bardzo niszowe, języki dziedzinowe. To bardzo szeroki temat.

Tak jak pisaliśmy wcześniej, czasami granice pomiędzy językami ogólnego zastosowania a językami dziedzinowymi (DSL) są bardzo płynne.

Najważniejsze jest to, żeby zdać sobie sprawę z samej koncepcji języka dziedzinowego. Czyli takiego, który z natury ma zastosowania ograniczone do jednej konkretnej dziedziny.