Dsl что это за программа
Предметно-ориентированный язык или предметно-специфичный язык (англ. Domain Specific language, DSL — «язык, специфичный для предметной области») — язык программирования, специализированный для конкретной области применения (в противоположность языку общего назначения, применимому к широкому спектру областей и не учитывающему особенности конкретных сфер знаний). Является ключевым понятием языково-ориентированного программирования.
DSL — ветвь модельного движения, которая связана с понятием предметно-специфичного языка, обеспечивающего применяемый экспертами метод описания для получения предметно-специфичной группы описаний. DSL объединяет (концептуальную) метамодель и (графическую и/или текстовую) нотацию. Это отличается от MDA, в которой предписываются нотации и метамодели, основанные только на MOF/UML. Тем самым программисты должны обеспечивать отдельную интерактивную среду разработки (IDE, interactive development environment) для каждого DSL, а затем эксперты-непрограммисты будут использовать эти предметно-специфичные IDE для моделирования их систем.
Семейство технологий DSL
DSL и САПР
Все САПР могут быть рассмотрены как наборы таких IDE для инженерных предметно-специфичных языков (например, диаграмм PID-моделированием. Предметно-специфические языки современных САПР легко выигрывают. Но потом мы все равно должны объединить все эти несовместимые между собой модели на разных DSL в одну связанную модель завода.
Связанность наборов DSL
Есть две возможности предоставить такую связанность для зоопарка различных DSL:
- Онтологическое совмещение (mapping) метамоделей различных DSL, и тем самым совмещение моделей в датацентрическом репозитории моделей.
- Использование языковых рабочих мест (language workbenches).
Онтологическое совмещение
Онтологическое совмещение сегодня используется всеми основными поставщиками САПР, хотя при этом используются разные «верхние» (upper) онтологии и предметные таксономии:
- ISO 15926 для непрерывных производств,
- ISO 18269/PSL для (в том числе бизнес) процессов,
- ISO 16739/BIM для строительства и т.д.
Это хорошая возможность справиться с зоопарком устаревших систем, которые поддерживают «старые добрые предметно-специфичные языки инженерного моделирования». Онтологическое совмещение — относительно недавнее движение (начавшееся с работ 1994г. по созданию модели данных перерабатывающих производств Shell[1]), его корни лежат в моделировании данных при разработке программных средств. Те, кто воспринял этот онтологический подход, двигаются сегодня к применению уже готовых инструментов семантического веба[2] и вдобавок к исключительно моделированию данных и интеграции данных начинают эксперименты по логическому выводу (reasoning), таким образом обеспечивая «исполнение» («executing») онтологических моделей. Интересно, что UML не слишком распространен в онтологических кругах, а OMG озабочена совмещением (mapping) метамоделей MDA/MOF и разработанных вне OMG «верхних» и «средних» онтологий (http://www.omg.org/ontology). Нужно заметить, что большинство онтологов (или модельеров данных) вышли из программистов, программных аналитиков и архитекторов баз данных, т.е. из областей, которые де факто сейчас часть программной инженерии, а не системной инженерии.
Языковые рабочие места
Языковые рабочие места — это новые IDE, специально посвященные созданию связанных наборов DSL (http://martinfowler.com/articles/languageWorkbench.html). Эту парадигму для разработки программных средств пробуют сейчас не слишком много разработчиков (http://martinfowler.com/bliki/IntentionalSoftware.html). Разработка «языконезависимого интерпретатора/компилятора» и «языконезависимого (в т.ч. графического) редактора» является очень сложной задачей. Зато перспективы очень заманчивы: каждый эксперт-непрограммист может получить собственный кастомизированный (инженерный, финансовый, управленческий и т.д.) DSL, и все эти DSL, адресующие множество различных интересов заинтересованных сторон, будут работать совместно.
Более того, эти отдельные обеспечивающие разделение интересов (separation of concerns) описания далее могут обрабатываться различными способами и для различных нужд:
- проверяться на непротиворечивость,
- транслироваться на выходные языки, используемые затем заводскими обрабатывающими инструментальными центрами,
- транслироваться в исполняемые имитационные модели и т.д.
Благодаря свободе выбора языков, это может быть лучше, чем MDA/UML (или MDA/SysML), и так же предотвращать потерю связности общей модели. Сейчас это движение исключительно программистов, системные инженеры не знают об этом DSL-тренде в целом и тренде разработки языковых рабочих мест в частности.
Системная инженерия может, как обычно, ждать 10 лет до заимствования из программной инженерии этих новых подходов к моделированию, или начинать экспериментировать с новыми технологиями немедленно. Моделеориентированная системная инженерия не должна быть синонимом SysML-ориентированной системной инженерии. SysML — это только отправной пункт для моделеориентированной системной инженерии, а не пункт назначения.
Примеры DSL
- TeX/LaTeX для подготовки (компьютерной вёрстки) текстовых документов;
- Perl для манипулирования текстами;
- SQL для СУБД;
- Tcl/Tk для графического интерфейса пользователя;
- HTML и SGML для разметки документов;
- Verilog и VHDL для описания аппаратного обеспечения;
- Mathematica и Maple для символьных вычислений;
- AutoLisp для компьютерного моделирования (САПР);
- Prolog для задач, сформулированных в терминах исчисления предикатов;
- ML и Haskell для задач, сформулированных в терминах функций (Haskell временами определяется как DSL для денотационной семантики).
Источник: sewiki.ru
Что такое DSL-файл?
Расширение файла DSL включает в себя пять основных типов файлов и его можно открыть с помощью ABBYY Lingvo Dictionary (разработчик — ABBYY). В общей сложности с этим форматом связано всего пять программное (-ых) обеспечение (-я). Чаще всего они имеют тип формата Lingvo Dictionary Data File. Основная часть файлов DSL относится к Data Files, однако они также могут относится к Settings Files или Video Files.
Просматривать файлы DSL можно с помощью операционных систем Windows, Mac и iOS. Они обычно находятся на настольных компьютерах (и ряде мобильных устройств) и позволяют просматривать и иногда редактировать эти файлы. Рейтинг популярности расширения файла DSL составляет «Низкий», что означает, что эти файлы, как правило, не встречаются в большинстве файловых хранилищ пользователя.
Однако следует учитывать, что существует намного больше информации, которую следует знать о файлах DSL; далее представлены лишь савые важные детали в отношении этих типов файлов. Если у вас возникли проблемы с открытием этих файлов, или вы хотите получить более подробную информацию, ознакомьтесь с подробной информацией, представленной ниже.
Источник: www.solvusoft.com
Сделать сложное простым: что такое DSL, или зачем вам новый язык программирования
Здравствуйте, меня зовут Владимир Кожаев, я фрилансер-разработчик инструментальных средств (звучит почти как анонимный алкоголик). Этой статьёй я открываю цикл материалов, посвящённый разработке парсеров, трансляторов, компиляторов и тому подобных инструментов, облегчающих жизнь.
Действительно, зачем это нужен ещё один язык программирования? Понятно, он может быть нужен в каких-то НИИ при университетах, но обыкновенному бизнесу — какой толк от этой заумной мути? Вообще к чему столько разных языков, почему бы не использовать один единственный? Давайте разберёмся.
Почему бы не пользоваться одним языком
Жил да был в Великобритании выдающийся математик, логик, криптограф, и звали его Алан Тьюринг. В числе других открытий он придумал машину имени себя. Опуская подробности, скажем, что с помощью этой машины можно реализовать всё то же, что и с помощью любых средств программирования более высокого уровня. То есть любую программу на любом языке можно переписать с помощью этого достаточно простого средства. Тем более на любом языке типа Java или PHP можно реализовать эту самую машину.
Как следствие, существует критерий полноты по Тьюрингу-Чёрчу. Язык называется полным, если на нём можно реализовать машину Тьюринга. Все популярные языки программирования общего назначения (Java, C#, PHP, Python, Scala, JavaScript и так далее) являются полными. Что же это означает? Все популярные языки эквивалентны!
Ну вот, смотрите: мы знаем, что все программы можно выполнить с помощью машины. Машину же, которая выполняет, можно написать что на PHP, что на C++. Получается, одну и ту же программу, записав её на языке машины Тьюринга, можно выполнить везде. А мы знаем, что так можно записать вообще любую программу.
На практике это означает, что программу на языке, скажем, JavaScript, поднатужившись, можно переписать на С++. Обратное тоже справедливо. Да, имеют значение библиотеки и фреймворки, но саму логику можно без проблем перенести с одного языка на другой.
Зачем тогда разные языки нужны, почему бы не пользоваться одним? В знаменитом романе Семюэля Дилэни «Вавилон 17» описан человек с выключенной частью мозга. Вместо этого он обучен искусственному языку, близкому по синтаксису к записям математических выражений. Он замечательно подходит для быстрого решения логических задач, компактен и удобен, но ограничен.
Например, отсутствовали слова «я» и «ты». Поэтому парадоксы, такие как «Севильский цирюльник», мозг ограниченный «Вавилоном 17», сожжет или заставит обратиться к отключенной части. То есть языковые конструкции во многом определяют способ мышления.
Рассмотрим язык математики более подробно. Вот, например, описание доказательства теорем методом математической индукции:
Расшифровывается это так. Допустим, что:
- Установлено, что P1 верно. (Это утверждение называется базой индукции)
- Для любого n доказано, что если верно Pn, то верно Pn+1. (Это утверждение называется индукционным переходом)
Тогда все утверждения нашей последовательности верны. Обратите внимание: вместо нескольких строк текста имеем лишь одну строку со строгим определением, понятным любому математику.
Что же такое DSL
То есть, если человек знает свою работу, учить DSL не надо — достаточно взглянуть один раз, и всё понятно (см. пример с математикой). Также хороший DSL не требует больших знаний в теории и практике программирования. Во многих, например, нет циклов. В некоторых — условных операторов (типа «if»).
Часто язык является не полным по Тьюрингу, то есть написать любую программу с его помощью нельзя. Опять же, вспомним язык математики или кванторов. Он используется лишь для описания теорем или для их автоматического доказательства. Писать web-сервисы с его помощью было бы затруднительно.
Примеры использования DSL
DSL используются очень по-разному. Рассмотрим несколько из них и постараемся понять, в каком же случае следует их использовать.
Резак лазера
Положим, вы — инженер кораблестроитель и хотите вырезать большущую деталь для корпуса судна. Раньше это делалось так: на плотном картоне или фанере вычерчивали детальки, вырезали, прикладывали к листу стали, и люди, которых называли кернильщиками, ползали по листу и набивали по контуру выкройки впадинки. Дальше газорезчик шёл по контуру и вырезал.
Представляете, что будет, если резчик с утра перебрал? А можно сделать это автоматически, чтобы робот считывал чертёж и сам ехал по листу, вырезая нужную деталь? Да, можно! Однако проблема в том, что траекторию его передвижения нужно как-то задать. Мол, поедь туда, опусти резак и дальше двигайся эдаким манером. Для этого нам нужны следующие команды:
- Двигаться из точки А в точку Б с выключенным резаком (помним, что прямая — кратчайшие расстояние между двумя точками).
- Двигаться с включенным резаком уже по заданной кривой (частный случай кривой — прямая). Для простоты ограничимся, собственно, отрезком прямой линии и участком окружности с заданным радиусом и центром. Поскольку положение резака задано предыдущими движениями, указать нужно лишь точку остановки. Для отрезка прямой — это конец отрезка. Для участка окружности — угол поворота и центр окружности.
Таким образом, в наиболее простом случае нам нужны только три команды:
MoveTo(x, y) LineTo(x,y) AngleTo(centerX,centerY, angle)
Как видите, язык очень простой, но с его помощью можно вырезать деталь любой сложности. Для программирования с его помощью достаточно навыков на уровне уверенного использования ПК. Добавив к этому языку переменные, условные операторы, циклы и процедуры, получим очень мощное средство. Как бонус — исследование кода методом белого ящика.
К примеру, можно проверить, не вылезает ли наш резак за пределы листа металла.
Алгоритмический трейдинг
Каждый хочет купить дешевле и продать дороже — вроде бы понятно. Но как определить правильное время для сделки, если завтра цена может вырасти или упасть? Решение принимается с помощью фундаментального (новости, анализ экономических и политических событий) и технического (экстраполяция стоимости ресурса на основании предыдущих данных). Признаки, по которым судят о поведении цены, теоретически не доказаны и не точны. То есть какая то связь с реальностью усматривается, но обычно берут несколько признаков и принимают решение о закрытии или открытии сделки, когда сигнал о покупке либо продаже подают все используемые индикаторы.
Кривая цены меняется очень быстро. Данные, полученные 15 минут назад, как правило, интересны только для историков. Деньги на бирже крутятся большие, так что потерять несколько сот миллионов долларов за минуту можно запросто. Поэтому человеческий фактор хорошо бы свести к минимуму.
Но как это сделать, если общей теории поведения цены не существует и стратегии торговли трейдер выбирает их с помощью интуиции? Один из способов уберечься от ошибки — создать специальный язык с минимумом «шума». Оставить в языке только необходимое, безжалостно избавясь от возможностей, которые нам не нужны. Что же нужно для трейдинга?
- Понятно, что цена снега в Антарктиде и на экваторе, мягко говоря, отличается. То есть необходимо указать биржу, цены на которой мы исследуем.
- Нужно указать стратегию, с помощью которой мы будем торговать (их есть много разных).
- Для стратегии нужно указать параметры, специфические для каждой, и временной интервал, в течение которого происходит работа.
- Стратегии запускаются на серверах, каждый из которых работает с заданной биржей. Нужно задать время, в течение которого они работают, поскольку доступ к бирже бывает и платным.
Давайте посмотрим, как будет выглядеть эта стратегия на языке Java. Допустим, мы хотим получить сигналы о покупке/продаже валют на серверах трех бирж с помощью стратегий: «фибоначчи», «скользящее среднее», «преобразование Гильберта». Для простоты будем считать, что время измеряется в тиках, название биржи, на которой работает сервер, задается просто строкой, и торгуем мы валютами — меняем доллары, евро или ещё что-нибудь на украинскую гривню и обратно.
На первый взгляд, код выглядит хорошо, но, если приглядеться, в нём полно ошибок.
Во первых, время работы стратегий меньше, чем время, в течение которого работает сервер. Во вторых, мы запускаем только один сервер, вместо трёх. Так что с этим кодом материальные потери не заставят себя долго ждать.
С другой стороны, трейдинг — это постоянный стресс и гонка. Работать нужно действительно быстро, но без ошибок. Как же быть?
Давайте посмотрим, как мог бы выглядеть текст программы, представленной выше, записанный на действительно удобном языке.
Сверху маркер начала программы, дальше идёт список серверов. У каждого сервера один раз задается название биржи, с которой происходит работа, и время его работы. Дальше идёт список стратегий, каждая с специфическими параметрами.
Преимущества предложенного примера очевидны. Во первых, текст стал лаконичным: сервера указываются ровно один раз. Стратегии — в непосредственной близости от сервера, на котором запускаются. Во вторых, мы избавляемся от ненужных подробностей. Трейдеру вовсе и не нужно знать, что такое Thread или что итоговая программа будет написана на языке Java.
Разработка игровой логики
Ошибка: робот погибает при попадании в него гранаты (именно от попадания, а не от взрыва). Д — дизайнер, П — программист.
Д: программисты всё сломали! почему так получается?!
П: естественно, так получается! потому, что у гранаты масса 100 кг! зачем вы это сделали?
Д: да?! а чтобы граната в воде тонула!
П: а почему она с нормальной массой не тонет?
Д: а потому что у воды плотность большая! (прим.: больше, чем у ртути)
П: а почему плотность такая большая?!
Д: а чтобы ящики деревянные плавали!
П: а почему они иначе не плавают?!
Д: а потому что у них масса 50 кг!
П: а зачем такая масса?!
Д: а иначе они некрасиво разваливаются!
Допустим, вы — геймдизайнер, и вам нужно создать сценарий для поведения робота. В начале стрелять, когда кончатся патроны — бежать. Программисты это, конечно, без проблем сделают. Но в определённый момент нужно изменить поведение — сделать так, чтобы робот в начале бежал и только когда догоняют — стрелял. А ещё — прятался за холмик или делал забавный финт ушами.
Программист, конечно, снова сделает, но потратит время. При последующих переделках придётся опять его тревожить, и так без конца.
Более того, игры сейчас выходят на множестве разных платформ. Выпустили под Windows, и надо выходить на Vii, на планшетах, на smart TV и так далее. Каждый релиз приводит к переписыванию кода, который уже работает и оттестирован, хотя логика действий персонажей не меняется при переходе от устройству к устройству. Можно, конечно, использовать кроссплатформенные средства.
Такие как Unity, или Haxe, но, как правило, проблема в том, что кроссплатформа работает одинаково плохо на всех устройствах. То есть хотелось бы сделать так, чтобы разрабатывать заново нужно было только специфические для конкретной платформы вещи, оставив логику без изменений.
Можно ещё использовать для логики скриптовые языки, однако даже они слишком сложны для того, чтобы использовать их без изучения. Там много подробностей, нужных для программиста, но лишних для конструкций: «Если произошло это — сделай то».
Что же делать, учить дизайнера программированию? Но это две довольно разные и в каком-то смысле противоположные специальности. Хотелось бы сделать так, чтобы дизайнер достаточно простым способом без помощи программиста мог поменять поведение персонажей.
Конечный автомат
Представим игровую логику в виде состояний персонажа и переходов между ними. К примеру, у робота может быть три состояния: «бежать к игроку», «стрелять» и «искать патроны», когда они кончились. Действия происходят при входе в состояние, выходе из него, переходе от одного состояния в другое и когда состояние между через определенный метод времени не изменилось. Можно описать состояния и переходы с помощью JSON, или XML и потом воспользоваться шаблоном проектирования «машина состояний», как это описано в банде четырёх. XML для описания представлен ниже:
Но XML очень не удобен для программирования. Покажем, как это описать с помощью DSL-языка.
Как видите, описание стало гораздо более лаконичным и удобочитаемым. Появилась подсветка синтаксиса. Скажу вам по секрету, автокомплит и подсветка ошибок тоже есть.
Таким образом, можно отделять игровую логику от платформозависимых вещей: графики, ввода-вывода, управления и даже от того, как методы «стрелять», «бежать» и «кричать» реализованы на практике. Последнее является частным случаем декларативного программирования: вместо того, чтобы реализовывать детальный алгоритм, мы описываем конечный результат. Вместо того, чтобы говорить компьютеру как делать, мы говорим что.
Выводы
Все рассмотренные DSL:
- Небольшие и не требуют изучения. Это справедливо и в общем: язык предметной области с большим порогом входа — плохой.
- Позволяют оперировать терминами предметной области, без деталей программной реализации. Говорят ЧТО делать, а не КАК.
- Избавляют специалиста от необходимости получать высокую квалификацию в программировании.
DSL применяется, когда необходимо записать достаточно сложную логику и избавить специалиста в определённом домене от необходимости изучать программирование, а программиста — разбираться в предмете. Обратно, если для реализации задачи не нужно обладать квалификацией помимо собственно программирования, DSL вам не нужен.
Вторая статья будет посвящена графическим языкам программирования, последующие — способам реализовать DSL и применениям их в разных, иногда неожиданных областях.
Похожие статьи:
1 вересня співзасновник Monobank Дмитро Дубілет повідомив про запуск нового бізнесу в Україні під назвою Navkolo. Його місія — надавати.
Описание: JavaScript — универсальный скриптовый язык, весьма гибкий и мощный. JavaScript находит широкое применение как язык описания.
Опціони — практика видачі акцій компанії співробітникам, що поширена на Заході. В Україні це трапляється рідко: лише.
Компания MEIZU, в дополнение к своим музыкальным смартфонам, представила в России новую гарнитуру MEIZU HD50 – накладные.
В выпуске: разбираемся с Marzipan, хейтим fastlane, учимся использовать SPM для iOS приложений. Статьи A Best in Class iOS AppУ каждого.
Источник: gs-studio.com
Что такое DSL (Digital Subscriber Line) и как это работает
Цифровая абонентская линия (DSL) — это технология высокоскоростного Интернета, которая позволяет передавать цифровые данные по проводам телефонной сети. DSL не мешает телефонной линии; одна и та же линия может использоваться как для Интернет, так и для обычных телефонных служб. Скорость загрузки DSL колеблется между 384 Кбит/с и 20 Мбит/с.
Самой популярной реализацией DSL сегодня является Асимметричная цифровая абонентская линия (ADSL). Это асимметрично, потому что скорость загрузки и загрузки не одинакова (не синхронизирована). Загрузка обычно происходит намного медленнее, чем загрузка, поскольку она обычно не так необходима, как высокая скорость загрузки.
Следует отметить, что расстояние, на которое данные должны перемещаться, несколько снижает скорость загрузки и загрузки. Современный ADSL может обрабатывать 24 Мбит / с на 2-километровом участке провода. Однако, когда провод имеет длину более 2 километров (или что-то большее, чем 1,25 мили), передача данных уменьшается.
Именно из-за этого, в то время как ADSL может иметь большую скорость загрузки, чем дальше человек от поставщика услуг, тем меньше вероятность того, что он получит. Поэтому поставщики услуг склонны рекламировать низкий бал, но потребитель может получить больше. Все зависит от расстояния, которое должна пройти информация по медным проводам.
DSL разделяет частоты, используемые в одиночной телефонной линии, на две основные полосы. Высокочастотный диапазон используется для отправки данных ISP, а низкочастотная полоса используется для отправки речевых данных. Благодаря этой технологии мы можем наслаждаться доступом в Интернет, одновременно пользуясь телефоном. DSL можно легко установить и работать вместе с любым существующим оборудованием для вашей стандартной телефонной линии.
Обычный DSL
Обычная DSL — это стандартная форма DSL, которая требует передачи существующей наземной линии передачи данных и голоса. В обычной DSL клиенты обычно объединяют телефон и Интернет вместе и имеют доступ одновременно. Голосовые сигналы передаются по проводам на гораздо более низкой частоте, чем сигналы данных, и, таким образом, позволяют передавать данные, не мешая речевым сигналам по той же линии.
Naked DSL
В naked DSL клиенты не обязаны иметь существующую стационарную связь, имеющую доступ к Интернету. Это позволяет клиентам отказаться от дополнительных сборов, связанных с стационарными телефонами, и переключиться в первую очередь на их план сотового телефона. Было много споров по поводу naked DSL, но неизбежно, многие провайдеры телефонов были вынуждены предложить его в рамках своих упакованных планов.
Настройка DSL
Для DSL-сервиса необходим DSL-модем (известный как DSL-приемопередатчик) для подключения к телефонной линии или разъему. Затем DSL-модем подключается к компьютеру. В конце телефонной линии телефонная линия подключается к цифровому мультиплексору доступа к абонентской линии (DSLAM). DSLAM — это в основном сетевое устройство, которое подключает несколько линий DSL к высокоскоростному интернет-магистрали.
DSL-модем, DSLAM и компьютер должны быть синхронизированы друг с другом, чтобы служба DSL работала должным образом. Процесс синхронизации выглядит следующим образом:
- Когда модем DSL включен, он проходит самотестирование.
- Затем DSL-модем проверяет свое соединение с компьютером через порт Ethernet или USB.
- Затем DSL-модем пытается синхронизировать с DSLAM.
Процесс синхронизации обычно длится несколько секунд. В модемах DSL есть индикатор, обозначенный как DSL или LINK. Если процесс синхронизации будет успешным, зеленый индикатор останется включенным.
Технологии DSL
Было много версий DSL, поскольку за эти годы это было многократно обновлено. Ниже приведен полный список версий и типов DSL, которые стали доступны для общественности.
Цифровая абонентская линия ISDN
Цифровая абонентская линия ISDN была одной из первых форм DSL и использовала технологию, известную как ISDN для передачи сигналов.
Цифровая абонентская линия с высокой скоростью передачи данных
Цифровая абонентская линия с высокой скоростью передачи данных была первым устройством DSL, которое использовало витые медные кабели для передачи сигналов в высокочастотном спектре.
Симметричная цифровая абонентская линия
В Symmetric Digital Subscriber Line одинаковое количество данных загружается и загружается в любой момент времени.
Симметричная высокоскоростная цифровая абонентская линия
Симметричная высокоскоростная цифровая абонентская линия была создана для более быстрой замены Symmetric Digital Subscriber Line.
Асимметричная цифровая абонентская линия
В Асимметричной цифровой абонентской линии загружается больше информации, чем загружается в любой момент времени.
Асимметричная цифровая абонентская линия 2
Асимметричная цифровая абонентская линия 2 обеспечивала качество, которого не хватало предшественнику.
Асимметричная цифровая абонентская линия 2 Plus
Асимметричная цифровая абонентская линия 2 Plus увеличила скорость передачи данных DSL на 200%.
Асимметричная цифровая абонентская линия Plus Plus
Асимметричная цифровая абонентская линия Plus Plus была создана в Японии и увеличила скорость передачи данных DSL до 50 мегабит в секунду и увеличила спектр, используемый для 3,75 мегагерц.
Адаптивная цифровая абонентская линия
Адаптивная цифровая абонентская линия используется для снижения скорости при увеличении диапазона и производительности сигнала.
Высокоскоростная цифровая абонентская линия
Высокоскоростная цифровая абонентская линия была просто более быстрой версией предыдущих моделей.
Высокоскоростная цифровая абонентская линия 2
Высокоскоростная цифровая абонентская линия 2 была изобретена для замены уже увеличенных скоростей высокоскоростной цифровой абонентской линии.
Etherloop
Etherloop — это технология, позволяющая использовать кабель Ethernet для передачи данных и голоса по телефонной линии.
Uni-DSL
Uni-DSL — это система, внедренная Texas Instruments, которая работает со всеми формами DMT, который представляет собой метод разделения частот на высокие и низкие сигналы, позволяющий передавать данные и голос по одному и тому же проводу одновременно.
Гигабитная цифровая абонентская линия
Гигабитная цифровая абонентская линия предлагает скорости, которые раньше никогда не видели в сообществе DSL, способных передавать данные со скоростью примерно 128 Мбит / с.
Универсальная цифровая абонентская линия с высокой скоростью передачи данных
Универсальная цифровая абонентская линия с высоким битрейтом — это новейшая версия DSL и является примером волоконно-оптической технологии. Цифровая абонентская линия универсальной высокой скорости передачи данных обеспечивает чрезвычайно быструю скорость и надежное обслуживание при правильной установке.
ADSL (асинхронный DSL)
ADSL (асимметричный DSL) — это тип DSL, где пропускная способность по восходящему и нисходящему каналам назначается различной пропускной способностью. Типичные конфигурации сегодня — 2 Мбайт ниже по течению и 128 КБ вверх по течению.
Downstream — это данные, которые вы загружаете по сети в локальные системы. Upstream — это данные, которые вы отправляете из своих локальных систем по всей сети.
IDSL (ISDN через DSL)
IDSL (ISDN через DSL) является стандартом 144Kb для DSL. IDSL используется, когда другие типы DSL недоступны. IDSL работает медленно и относительно дорого, но иногда это может быть наилучшим вариантом.
RADSL (адаптируемая скорость DSL)
RADSL (Rate Adaptive DSL) — это асимметричный DSL-вариант, который может регулировать скорость DSL-соединения в зависимости от расстояния от центрального офиса (CO) и качества соединения.
SDSL (симметричный DSL)
SDSL (однолинейная DSL) — это тип DSL, в котором восходящий и нисходящий каналы настроены на одну и ту же полосу пропускания. SDSL обычно работает на скорости 1,5 Мбит / с вверх и вниз по течению.
VDSL (очень высокая скорость передачи DSL)
VDSL (очень высокая скорость передачи данных DSL) — это асимметричная версия DSL, которая работает на очень высоких скоростях, но только на расстоянии до 1000 футов от центрального офиса (CO).
DSL Lite
DSL Lite — это асимметричный вариант DSL, который размещает разделитель DSL в центральном офисе telco, а не в помещении клиента.
G.SHDSL (однопарная высокоскоростная DSL)
G.SHDSL (однопарная высокоскоростная цифровая абонентская линия) представляет собой вариант SDSL, который определен стандартом МСЭ G.991. Он работает на симметричных скоростях от 192 Кбит / с до 2304 Кбит / с по одной линии и 384 Кбит / с — 4608 Кбит / с по двум парам.
Европейцы относятся к G.SHDSL как «SDSL», вызывая путаницу с существующим оборудованием SDSL.
DSL-фильтры
В большинстве домов есть две пары проводов от местной телефонной компании. Если в доме используется только одна телефонная линия, DSL можно установить на вторую пару.
Если в доме используются обе телефонные линии, DSL должен использовать одну проводную пару с голосовым трафиком. Это делается с использованием фильтра DSL.
Фильтр DSL представляет собой небольшую коробку, прикрепленную к проводной паре, чтобы разделить ее на две отдельные пары проводов — одну для голосового трафика, а другую для трафика DSL.
Насколько публикация полезна?
Нажмите на звезду, чтобы оценить!
Средняя оценка / 5. Количество оценок:
Оценок пока нет. Поставьте оценку первым.
Источник: ip-calculator.ru
Dsl что это за программа
Текстовые метки: DSL, языки программирования, inner DSL , outer DSL , кодирование , проектирование , language workbench
Раздел: Компьютер — Программирование — Теория программирования
Запись: xintrea/mytetra_syncro/master/base/1410440389qaorhjm9ya/text.html на raw.github.com
Введение в DSL. Проблематика проектирования и кодирования
На протяжении нескольких десятилетий стоит задача поиска повторяемого, предсказуемого процесса или методологии, которая бы улучшила продуктивность, качество и надежность разработки. Одни пытались систематизировать и формализовать этот, по-видимому, непредсказуемый процесс. Другие применяли к нему методы управления проектами и методы программной инженерии. Третьи считали, что без постоянного контроля со стороны заказчика разработка ПО выходит из-под контроля, что влечет за собой увеличение временных и финансовых затрат.
Информатика как научная дисциплина предлагает и использует на базе методов структурного программирования технологию надежной разработки программного обеспечения, используя тестирование программ и их верификацию на основе методов доказательного программирования для систематического анализа правильности алгоритмов и разработки программ без алгоритмических ошибок.
Данная методология направлена на решение задач на ЭВМ, аналогичной технологии разработки алгоритмов и программ, используемой на олимпиадах по программированию отечественными студентами и программистами с использованием тестирования и структурного псевдокода для документирования программ в корпорации IBM с 70-х годов.
Методология структурного проектирования программного обеспечения может использоваться с применением различных языков и средств программирования для разработки надежных программ любого назначения.
Однако при использовании классического подхода к разработке возникают проблемы, описанные под хабракатом:
- Недостаток прозрачности. В любой момент времени сложно сказать, в каком состоянии находится проект и каков процент его завершения. Данная проблема возникает при недостаточном планировании структуры (или архитектуры) будущего программного продукта, что чаще всего является следствием отсутствия достаточного финансирования проекта либо низкой квалификации разработчиков.
- Недостаток контроля. Без точной оценки процесса разработки срываются графики выполнения работ и превышаются установленные бюджеты. Сложно оценить объем выполненной и оставшейся работы. Данная проблема возникает на этапе, когда проект, завершённый более, чем на половину, продолжает разрабатываться после дополнительного финансирования без оценки степени завершённости проекта.
- Недостаток мониторинга. Проблемы, связанные с невозможностью наблюдения за ходом развития проекта, не позволяют контролировать ход разработки в реальном времени. С помощью инструментальных средств менеджеры проектов принимают решения на основе данных, поступающих в реальном времени. Данная проблема возникает в условиях, когда стоимость обучения менеджмента владению инструментальными средствами сравнима со стоимостью разработки самой программы.
- Неконтролируемые изменения. У заказчика постоянно возникают новые идеи относительно разрабатываемого программного обеспечения. Влияние изменений может сильно изменить архитектуру разрабатываемого проекта, поэтому важно оценивать предлагаемые изменения и реализовывать только одобренные, контролируя этот процесс с помощью программных средств. Данная проблема возникает вследствие нежелания конечного потребителя использовать те или иные программные среды. Например, когда при создании клиент-серверной системы потребитель предъявляет требования не только к операционной системе на компьютерах-клиентах, но и на компьютере-сервере.
- Недостаточная надежность. Самый сложный процесс — поиск и исправление ошибок в программах на ЭВМ. Поскольку число ошибок в программах заранее неизвестно, то заранее неизвестна и продолжительность отладки программ и отсутствие гарантий отсутствия ошибок в программах. Следует отметить, что привлечение доказательного подхода к проектированию ПО позволяет обнаружить ошибки в программе до её выполнения. Профессор Вирт при разработке Паскаля и Оберона за счет строгости их синтаксиса добился математической доказуемости завершаемости и правильности программ, написанной на этих языках. Особенно крупный вклад в дисциплину программирования внёс Дональд Кнут. Его четырёхтомник «Искусство программирования» является необходимой для каждого серьезного программиста книгой.
- Отсутствие гарантий качества и надежности программ из-за невозможности обеспечить отсутствие ошибок в программных продуктах вплоть до формальной сдачи программ заказчикам.
Для решения рассмотренных выше проблем предлагается ввести следующие нововведения:
- Систематическое многократное использование. Наиболее важным подходом является выделение семейств продуктов, составляющие которых варьируются. На основе этих семейств разрабатываются линейки продуктов. Продукты, разработанные как компоненты семейств, повторно используют требования, архитектуру, каркасы, компоненты, тексты и т.д.
- Автоматизация сборки. Облегчает сборку независимо разработанных компонентов. При автоматизации сборки появляется еще ряд нововведений:
- независимые от платформ протоколы;
- автоописание (снижает архитектурные несоответствия на основании контракта и спецификации);
- отложенная инкапсуляция (снижает уровень архитектурных несоответствий за счет вплетения адаптаций в опубликованные компоненты);
- разработка, управляемая архитектурой (на основе архитектуры ПО можно делать предложения о его эксплуатационных качествах).
Технологии моделирования знаний о предметной области
Application Programming Interface (API) — группа системных сервисов, ориентированных на решение общих задач.
Компонентные технологии – набор программных модулей с стандартизированным интерфейсом, ориентированных на решение общих задач.
Архитектурные паттерны — проектные решения, описывающие архитектуру программной системы на основе некоторой концепции.
Шаблоны GoF — проектные решения, которые описывают аспекты реализации программной системы для решения определенных задач программирования.
Языки на основе XML — структурированное описание некоторых данных и механизмов преобразования.
SQL — язык структурированных запросов к СУБД.
Онтология — представление любой области знаний или части реального мира, который используется для семантического анализа текстов.
Предметно-ориентированный язык (DSL) моделирует концепции, выявленные в конкретном домене. Хорошо спроектированный DSL — мощный язык моделирования, который имеет более высокую степень однозначности, чем язык моделирования общего назначения.
DSL — язык программирования, специально разработанный для решения определённого круга задач, в отличие от языков программирования общего назначения. Существует три основных типа DSL:
- внутренний DSL (internal DSL);
- внешний DSL (external DSL) — это DSL, который написан на языке, отличающемся от основного языка программного приложения;
- интегрированная среда разработки DSL (Language Workbench).
Три основных типа DSL
Внешний DSL использует отдельные от основного синтаксиса конструкции, близкие к естественному языку. Требует наличия внешнего компилятора, интерпретатора или постпроцессора, в связи с чем исполняется на этапе компиляции, в отличие от внутреннего DSL.
Внешний DSL часто использует специальные языки, но во многих общих случаях используются теги, которые берутся из синтаксиса других языков, например, XML, как общей альтернативы. Традиционно в Unix-системах используется стиль «небольших языков» (little languages). Одними из первых примеров внешнего DSL были регулярные выражения, SQL, awk и XML, которые использовались в системах подобных Struts и Hibernate.
Наибольший плюс внешних DSL состоит в том, что их можно писать так, как пожелает разработчик. Другими словами, можно выразить предметную область в простейшей и доступной для чтения и редактирования форме. Формат такого DSL будет ограничен лишь умением создавать транслятор, который сможет считать конфигурационный файл и выдать некоторое выполняемый код на основном языке приложения. Отсюда же следует и основной недостаток внешних DSL — необходимость в создании непосредственно транслятора.
Внутренний DSL использует часть синтаксических конструкций общего языка программирования для выражения на языке, близком к естественному, отдельных аспектов приложения. Для выполнения не требует стороннего компилятора, исполняется при исполнении основного программного кода на общем языке программирования. Внутренний DSL используется некоторыми общими программными языками для расширения возможностей программ, но при этом создается существенно ограниченное подмножество конструкций для управления программой. Классическим примером применения внутренних DSL является Lisp и Ruby.
Интегрированная среда разработки (Integrated Development Environment — IDE) – это инструмент для создания DSL. Он предоставляет возможности редактора и генератора для определения абстрактного синтаксиса языка, подобно современным IDE по разработке программ.
В целом, DSL, дополненные технологией метапрограммирования, являются эффективным средством автоматизации разработки ПО и в настоящий момент находит широкое применение в информационных технологиях.
Обобщенный алгоритм разработки нового DSL состоит в следующем:
- Определить синтаксис в терминах языка реализации
- Использовать паттерны DSL для реализации нового DSL
- Использовать средства метапрограммирования для реализации DSL в рамках исходного языка
Использование DSL имеет также ряд преимуществ:
- на этапе проектирования дает возможность создания решений в терминах предметной области, благодаря чему специалисты в данной предметной области могут создавать и модифицировать DSL программы.
- при проектировании в похожей предметной области можно использовать готовый DSL;
- решение проблемы домена с помощью DSL происходит на соответствующем уровне абстракции. Это позволяет экспертам в предметной области понимать и верифицировать DSL-программы;
- программы, написанные с использованием DSL лаконичны. Написание DSL с использованием терминов предметной области дает возможность в дальнейшем читать программу достаточно легко;
- происходит повышение надежности, эффективности и качества сопровождения. Поскольку на уровне модели операции осуществлять легче, они более эффективны и подвержены меньшему количеству ошибок, чем те же операции на уровне кода;
- DSL позволяет на уровне абстракции, соответствующему домену, проводить оптимизацию и валидацию;
- описание домена на одном уровне абстракции можно потом преобразовать в более низкий уровень с подробной детализацией. Таким образом можно дополнять модель на разных этапах разработки.
К недостаткам использования относят следующее:
- стоимость проектирования, реализации и сопровождения достаточно велика;
- необходимость обучения пользователей;
- область действия DSL определить довольно трудно;
- сложность сохранения равновесия между конструкциями, использующимися в DSL и конструкциями языка программирования общего назначения.
Спасибо тем, кто дочитал до конца, хотелось бы услышать ваше мнение по поводу проблематики проектирования в целом и языков описания предметных областей в частности как одного из вариантов решения возникающих трудностей.
- Умение видеть абстракции
- Закон Амдала — о росте вычислительной производительности при использовании нескольких ядер
- Примеры задач, в которых имеет смысл использовать DSL
- Философически о DSL-ях
- Введение в DSL. Проблематика проектирования и кодирования
- Что такое релейшен и скоуп (Relation и Scopes) применительно к объектам данных
- Где должна находиться бизнес-логика в парадигме MVC?
- Теория совместного редактирования текста в облаке
- Совместное редактирование в МойОфис
- Перечень книг в свободном доступе по программированию на русском языке
- Вопросы, задаваемые на собеседованиях по программированию
- Как оценить стоимость разработки программы по количеству строк кода
- Практика разбора математических выражений: прямая польская запись
- Разбор математических выражений. Обратная польская нотация
- Программы – не стихи, их надо проектировать, а не писать. (Об автоматном программировании)
Источник: webhamster.ru