Semenalidery.com

IT Новости из мира ПК
2 просмотров
Рейтинг статьи
1 звезда2 звезды3 звезды4 звезды5 звезд
Загрузка...

Инструментарий технологии программирования

Инструментарий технологии программирования

Состав и назначение инструментария технологии программирования

Промышленная технология производства программ– стремление к сокращению строка трудовых и материальных программ на производство и эксплуатацию, обеспечения гарантии уровня качества.

ПрограммтехникаSoftware Engineering – это техника разработки, отладки, верификации и внедрения программного обеспечения.

Инструментарий технологии программирования – программные продукты поддержки обеспечения технологии программирования. В рамках этих направлений сформировались следующий группы программных продуктов:

  1. Локальные средства (обеспечивающие выполнение отдельных работ по созданию программ)
  2. Инструментальные среды разработки программ, обеспечивающие выполнение комплекса взаимосвязанных работ по созданию программ.
  3. КС – технологии.

CASE – Computer Aided System Engineering

Представляет методы анализа проектирования и создания программных систем. Предназначен для процессов разработки и реализации информационных систем.

  1. Встроенные в систему реакции
  2. Независимые от системы реакции

Массовое применение затруднено из-за высокой стоимости к оборудованию рабочего места разработчика.

CASE – технологии – программный комплекс, автоматизирующий весь процесс анализа, проектирования разработки, сопровождения сложных программных систем.

Встроенные в систему реакции – все решения по проектированию и реализации призваны к выбранной системе СУБД.

Независимая от системы реакция – все решения по проекту ориентированы на унификацию начальных этапов жизненного цикла и средств их документирования.

Основное достоинство: поддержка коллективной работы над проектом за счет возможной работы в локальной сети разработчика, экспорт и импорт любых фрагментов проекта, организация управления проектом.

Некоторые CASE-технологии ориентированы только на системы проектирования и предоставляют специальные графические средства для изображения различных видов моделей.

DFD – data flow diagrams (идет совместно с данными);

ERD – entity relationship diagram (Является частью исследуемой области);

STD – state transition (учитывает событие и реакцию на них систем обработки данных);

Средства для создания приложений: включают языки и системы программирования, а также инструментальную среду пользователя.

Языки программирования – формализованный язык для описания задач алгоритма решения задачи пользователя на компьютере.

Средства для создания приложений – совокупность языков и систем программирования, а также различные программные комплексы для отладки и поддержки создаваемой программы.

Можно классифицировать языки программирования, если: за признак классификации взять синтаксис образования его конструкции.

  1. Машинный– воспринимается аппаратной частью компьютера;
  2. Машинно-ориентированный– отражает структуру конкретного типа компьютера;
  3. Алгоритмические языки– независимые от архитектуры компьютера;
  4. Процедурные ориентированные языки– где имеется возможность описания программы как совокупности процедур (подпрограмм);
  5. Проблемноориентированные– для решения задач определенного класса;
  6. Интегрированные– могут делать все.

Системы программ включают: компилятор, интегрированную среду обработчика, отладчик, средства оптимизации кода программ, набор библиотек (возможно с исходными текстами программ), редактор связи, сервисные средства (утилиты для работы с текстовыми библиотеками), помощь, документатор исходного кода программ (система поддержки управления программ комплекса).

Система поддержки – достаточно новый класс. Предназначен для отслеживания изменений выполненных разработчиком программ, поддержки версий программ с автоматической разноской изменений и получения статистики о ходе работы проекта.

Инструментальные средства пользователя: представлена специальными средствами, встроенными в пакеты прикладных программ (ППП), такими как:

  1. Библиотечных функций, процедур, объектов, методы обработки;
  2. Макрокоманды;
  3. Языковые макросы;
  4. Программные модули вставки;
  5. Конструкторы экранных форм и отчетов;

Генераторы приложений, языки запросов высокого уровня, языки манипулирования данными, конструкторов меню и т.д.

ИНСТРУМЕНТАРИЙ ТЕХНОЛОГИИ ПРОГРАММИРОВАНИЯ

Инструментарий технологии программирования обеспечивает процесс разработки программ и включает специализированные программные продукты, которые являются инструментальными средствами разработчика. Программные продукты данного класса поддерживают все технологические этапы процесса проектирования, программирования (кодирования), отладки и тестирования создаваемых программ. Пользователями технологии программирования выступают системные и прикладные программисты.

Инструментарий технологии программирования— совокупность программ и программных комплексов, обеспечивающих технологию разработки, отладки и внедрения создаваемых программ.

Рисунок 1 — Классификация инструментария программирования

Выделяют следующие группы инструментальных средств технологии программирования:

— средства для создания приложений, включающие:

ü локальные средства, обеспечивающие выполнение отдельных работ по созданию программ;

ü интегрированные среды разработчиков программ, обеспечивающие выполнение комплекса взаимосвязанных работ по созданию программ;

CASE-технология (Computer-Aided System Engineering), представляющая методы анализа, проектирования и создания программных систем и предназначенная для автоматизации процессов разработки и реализации информационных систем.

Рассмотрим средства для создания приложений более подробно.

Локальные средства разработки программ наиболее представительны на рынке программных продуктов и состоят из языков и систем программирования, а также инструментальной среды пользователя.

Язык программирования— формализованный язык для описания алгоритма решения задачи на компьютере.

Системы программирования — это комплекс инструментальных программных средств, предназначенный для работы с программами на одном из языков программирования. Системы программирования предоставляют сервисные возможности программистам для разработки их собственных компьютерных программ.

Инструментальная среда пользователяпредставлена специальными средствами, встроенными в пакеты прикладных программ, такими как:

— библиотека функций, процедур, объектов и методов обработки;

— конструкторы экранных форм и отчетов;

— языки запросов высокого уровня;

— языки манипулирования данными;

— конструкторы меню и многое другое.

Интегрированные программные среды разработчиков —дальнейшее развитие локальных средств разработки программ, они объединяют набор средств, для комплексного их применения на всех технологических этапах создания программ. Основное назначение инструментария данного вида — повышение производительности труда программистов, автоматизация создания кодов программ, обеспечивающих интерфейс пользователя графического типа, разработка приложений для архитектуры клиент-сервер, запросов и отчетов.

ЯЗЫКИ ПРОГРАММИРОВАНИЯ

Одной из самых революционных идей, приведших к созданию автоматических цифровых вычислительных машин, была высказанная в 20-х годах XIX века мысль о предварительной записи порядка действий машины для последующей автоматической реализации вычислений — программе. И, хотя запись программы на перфокартах технически не имеет ничего общего с современными приемами хранения программ в ЭВМ, принцип здесь один. С этого момента начинается история программирования.

Читать еще:  Ошибка critical process died

Революционным моментом в истории языков программирования стало появление системы кодирования машинных команд с помощью специальных символов, предложенной Джоном Моучли.

Языки программирования служат разным целям, и их выбор определяется удобностью пользователя, пригодностью для данного компьютера и данной задачи.

В настоящее время известно несколько сотен языков программирования, которые используют пользователи при разработке своих заданий. Появление новых типов ЭВМ, например ПЭВМ, и новых областей их применения способствует появлению следующих поколений языковых средств, в большей степени отвечающих требованиям потребителей.

Вместе с тем число интенсивно применяемых языков программирования относительно невелико.

Язык программирования это искусственный язык с ограниченным числом слов, значения которых строго и однозначно фиксированы транслятором и подчинены строгим правилам записи команд, задающих алгоритм в форме, понятной для исполнителя (например, компьютера). Каждый язык программирования, как и «естественный» язык, имеет алфавит, словарный запас, свои грамматику и синтаксис, а также семантику.

Язык программирования служат средством передачи информации, средством записи текстов исходных программ. Поэтому в состав программ общего ПО он не входят.

Алфавит— фиксированный для данного языка набор основных символов, допускаемых для составления текста программы на этом языке.

Синтаксис— система правил, определяющих допустимые конструкции языка программирования из букв алфавита.

Семантика— система правил однозначного толкования отдельных языковых конструкций, позволяющих воспроизвести процесс обработки данных.

При описании языка и его применении используют понятия языка. Понятиеподразумевает некоторую синтаксическую конструкцию и определяемые ею, свойства программных объектов или процесса обработки данных, например, операторы, идентификаторы, переменные, функции и процедуры, модули и т.д.

Важнейшими характеристиками языка являются трудоемкость программирования и качество получаемого программного продукта. Качество программ определяется длиной программ (количеством машинных команд или емкостью памяти, необходимой для хранения программ), а также временем выполнения этих программ. Для языков различного уровня эти характеристики взаимосвязаны. Чем меньше детализация, тем выше уровень языка, тем меньше трудоемкость программирования, но тем сложнее средства САП (трансляторы, средства отладки и др.), привлекаемые для получения машинных программ, тем ниже качество генерируемых программных продуктов.

Выделяют следующие уровни языков программирования:

— машинно-ориентированные (языки ассемблера);

— машинно-независимые (языки высокого уровня).

Машинные языки

Машинный язык — это совокупность машинных команд, которая отличается количеством адресов в команде, назначением информации, задаваемой в адресах, набором операций, которые может выполнять машина и др. Каждый компьютер имеет свой машинный язык.

Машинный код —последовательность чисел, которые представляются как совокупность двух цифр: 0 и 1.

При программировании на машинном языке программист может держать под своим контролем каждую команду и каждую ячейку памяти, использовать все возможности имеющихся машинных операций.

Но процесс написания программы на машинном языке очень трудоемкий и утомительный. Программа получается громоздкой, труднообозримой, ее трудно отлаживать, изменять и развивать. Применение машинных языков требует знания специфики представления и преобразования информации в ЭВМ.

Поэтому в случае, когда нужно иметь эффективную программу, в максимальной степени учитывающую специфику конкретного компьютера, вместо машинных языков используют близкие к ним машинно-ориентированные языки (ассемблеры).

Механическое удерживание земляных масс: Механическое удерживание земляных масс на склоне обеспечивают контрфорсными сооружениями различных конструкций.

Папиллярные узоры пальцев рук — маркер спортивных способностей: дерматоглифические признаки формируются на 3-5 месяце беременности, не изменяются в течение жизни.

Общие условия выбора системы дренажа: Система дренажа выбирается в зависимости от характера защищаемого.

X Международная студенческая научная конференция Студенческий научный форум — 2018

ИНСТРУМЕНТАРИЙ ТЕХНОЛОГИИ ПРОГРАММИРОВАНИЯ

При создании ПО, как и при создании любого другого вида продукции, предназначенного для решения поставленных задач, разработчику необходимы определенные инструменты. Технологии программирования предоставляют инструментарий для разработки приложений. Иными словами, технология программирования – это различные технологии разработки программ для компьютеров, которые будут использоваться людьми для решения различных задач на компьютерах. Технологии программирования включают себя как сами языки программирования, так и средства для их разработки.

База данных — представленная в объективной форме совокупность самостоятельных материалов (статей, расчётов, нормативных актов, судебных решений и иных подобных материалов), систематизированных таким образом, чтобы эти материалы могли быть найдены и обработаны с помощью электронной вычислительной машины (ЭВМ).

Многие специалисты указывают на распространённую ошибку, состоящую в некорректном использовании термина «база данных» вместо термина «система управления базами данных», и указывают на необходимость различения этих понятий.

ОПИСАНИЕ ПРЕДМЕТНОЙ ОБЛАСТИ

В технологии программирования основное внимание уделяется изучению процессов разработки ПС (технологических процессов) и порядку их прохождения: методы и инструменты разработки ПС участвуют в этих процессах, их применении и формировании технологических процессов. В разработке программного обеспечения различные методы и инструменты для разработки ПС изучаются с точки зрения достижения определенных целей. Эти методы могут использоваться в различных технологических процессах [1].

Рассмотрим несколько аспектов развития технологии программирования:

«Стихийное» программирование — это отсутствие четко сформулированных технологий программирования. Этот период охватывает 60-е годы XX века. Разработка технологии должна изменить язык компьютера ассемблерами, а затем алгоритмическими языками. Также была заменена повторное использование подпрограмм. Разработка «снизу в верх» использовалась спонтанно, подход, в котором были разработаны и внедрены первоначально относительно простые подпрограммы, из которых они позже пытались построить сложную программу. За это время начался кризис программирования. Это было выражено в том, что фирмы превысили все предельные сроки завершения программных проектов и их стоимость. В результате многие проекты еще не завершены.

Структурный подход к программированию. Этот период охватывает 60-70-е годы XX века. Структурный подход был набором технологических методов. Этот подход основан на принципе разложения сложных частей с целью их последующей реализации в виде отдельных подпрограмм. Структурный подход представляется в виде иерархии подзадач простейшей структуры. Алгоритм представлялся «сверху вниз» и подразумевал реализацию общей идеи, обеспечивающей разработку интерфейсов подпрограмм. Были введены ограничения на разработку алгоритмов, рекомендованы формальные модели для их описания, а также специальный метод разработки алгоритмов — метод пошаговой детализации. Поддержка принципов структурного программирования была заложена в основу языков процедурного программирования (PL / 1, Algol-68, Pascal, C).

Читать еще:  Ошибка openal32 dll

Объектный подход. Сформирован с середины 80-х и до конца 90-х годов XX века. Объектно-ориентированное программирование или ООП определяется технологией создания сложного программного обеспечения на основе представления программы в виде объектов, каждый из которых является экземпляром определенного класса. Классы, в свою очередь, образуют иерархию с наследованием свойств. Основным преимуществом ООП по сравнению со структурным подходом является более естественное разложение программного обеспечения, что значительно упрощает разработку программы.

Компонентный подход и CASE-технологии (с середины 90-х годов 20-го века до нашего времени). Этот подход включает в себя создание программного обеспечения из отдельных компонентов — физически отдельных частей программного обеспечения, которые взаимодействуют друг с другом посредством стандартизованных двоичных интерфейсов. В отличие от обычных объектов объекты компонента могут быть собраны в динамически называемые библиотеки или исполняемые файлы, распределенные в двоичной форме (без исходного кода) и используемые на любом языке программирования, который поддерживает соответствующую технологию. В настоящее время рынок компонентов поддерживается в Интернете, массовой рекламе и публикациях. Принципы компонентного подхода были разработаны Microsoft, начиная с технологии OLE (Object Linking and Embedding), которая использовалась в более ранних версиях Windows для создания составных документов. Его разработкой стало появление COM-технологии (Component Object Model), а затем ее распределенной версии (DCOM), на основе которой были разработаны различные технологии [2].

Инструментарий по технологиям программирования обеспечивают процесс разработки программы и включают специализированное программное обеспечение, которое является средством разработки. Программное обеспечение этого процесса находится на всех технологических этапах процесса проектирования, программирования, отладки и тестирования. Пользователи этого класса программного обеспечения являются системными и прикладными программами.

Выделяют две группы программных продуктов:

Инструменты для создания приложений.

Средства для создания информационных систем (CASE-технологии).

Средства для создания приложений

Средства для создания приложений делятся на локальные и интегрированные средства, рисунок 1.

Рисунок 1. Инструментарий технологии программирования

Локальные инструменты делятся на языки и системы программирования, а также на среду инструментов пользователя.

Язык программирования — формализованный язык для описания алгоритма решения проблемы на компьютере. Они делятся на классы [1]:

машинные языки — языки программирования, воспринимаемые аппаратным обеспечением компьютера (машинные коды);

машинно-ориентированные языки — языки программирования, которые отражают структуру конкретного типа компьютера (сборщиков);

алгоритмические языки — компьютерно-независимые языки программирования для отражения структуры алгоритма (Pascal, BASIC, FORTRAN);

процессно-ориентированные языки — языки программирования, где есть возможность описать программу как набор процедур (подпрограмм);

проблемно-ориентированные языки — предназначены для решения задач определенного класса (Lisp, Simula);

интегрированные системы программирования.

Под системой программирования понимается набор языков программирования и виртуальная машина, которая обеспечивает выполнение программ, написанных на этом языке [1].

Система программирования, помимо переводчика, включает в себя текстовый редактор, компоновщик, стандартную библиотеку программ, отладчик, средства визуальной автоматизации для программирования. Примерами таких систем являются Delphi, Visual Basic, Visual C ++, Visual FoxPro [3]. Инструментальная среда пользователя представлена специальными средствами, встроенными в пакеты прикладных программ, такими как:

библиотека функций, процедур, объектов и методов обра­ботки;

клавишные и языковые макросы;

конструкторы экранных форм и отчетов;

языки запросов высокого уровня;

конструкторы меню и многое другое.

Средства для создания информационных систем (CASE-технологии)

CASE (Computer Aided Software/System Engineering) — в дословном переводе – разработка программного обеспечения информационных систем с помощью компьютера.

CASE-технология — программный комплекс, автоматизирующий весь технологический процесс анализа, проектирования, разработки и сопровождения сложных программных систем.

Средства CASE-технологии делятся на две группы:

встроенные в систему реализации — все решения по проектированию и реализации привязаны к выбранной системе управления базами данных (СУБД);

независимые от системы реализации — все решения по проектированию ориентированы на унификацию (приведение к единообразию, к единой форме или системе) начальных этапов жизненного цикла и средств их документирования, обеспечивают большую гибкость в выборе средств реализации.

Основное достоинство CASE-технологии — поддержка коллективной работы над проектом за счет возможности работы в локальной сети разработчиков, экспорта/импорта любых фрагментов проекта, организационного управления проектом [2].

Информационная система – взаимосвязанная совокупность средств, методов и персонала, используемых для хранения, обработки и выдачи информации в интересах достижения поставленной цели.

2. РАЗРАБОТКА КОНЦЕПТУАЛЬНОЙ МОДЕЛИ БАЗЫ ДАННЫХ

База данных предназначена для хранения информации о классификации инструментария технологии программирования, который делится на две основные группы: средства для разработки приложений и CASE-технологии. Как уже известно (рисунок 1) средства для разработки приложений делятся на локальные средства и интегрированные среды. Локальные средства, в текущей базе данных, будут включать в себя языки программирования и инструментальную среду пользователя. Так как инструментальная среда по своей сути является интегрированной средой программирования, учитывать её в модели текущей базы данных не будем.

CASE-технологии являются автоматизированными средами разработки различных приложений. Само проектирование баз данных можно отнести к одной из функций CASE-технологий. Данный раздел разделим на две группы: название программного обеспечения и язык программирования, который позволяет взаимодействовать с данной средой.

Построим ER диаграмму, описывающую нашу модель базы данных (рисунок 2).

3. ЛОГИЧЕСКОЕ ПРОЕКТИРОВАНИЕ БАЗЫ ДАННЫХ

Для разработки заданной базы данных выбрана СУБД Microsoft Access 2016.

С учетом типов данных и ограничений, принятых в MS Access, опишем требования к таблицам (таблица 1-3).

Читать еще:  Не удалось восстановить айфон ошибка 4013

Таблица 1 – Требования к таблице “Язык программирования

Инструментарий технологии программирования

Инструментарий технологии программирования —это совокупность программ и программных комплексов, обеспечивающих технологию разработки, отладки и внедрения создаваемых программных продуктов.

Пользователями технологии программирования являются системные и прикладные программисты.

Средства для создания приложений – совокупность языков и систем программирования, а также различные программные комплексы для отладки и поддержки создаваемых программ.

Программный комплекс — набор взаимодействующих программ: согласованных по функциям и форматам; имеющих единообразные, точно определенные интерфейсы; и составляющих полное средство для решения больших задач.

Средства для создания приложений включают:

· локальные средства, обеспечивающие выполнение отдельных работ по созданию программ;

· интегрированные среды разработчиков программ, обеспечивающие выполнение комплекса взаимосвязанных работ по созданию программ. Основное назначение инструментария данного вида — повыше­ние производительности труда программистов, автоматизация со­здания кодов программ, обеспечивающих интерфейс пользовате­ля графического типа, разработка приложений для архитектуры клиент-сервер, запросов и отчетов.

Локальные средства разработки программ наиболее представи­тельны на рынке программных продуктов и состоят из языков и систем программирования, а также инструментальной среды пользователя.

Языки программирования делятся на языки низкого уровня (близкие к машинному языку) и языки высокого уровня (близкие к человеческим языкам). К языкам низкого уровня принадлежат ассемблеры, а высокого — Pascal, Basic, C/C++, языки баз данных и т.д.

Программа, подготовленная на языке программирования высокого уровня, проходит этап трансляции.

Трансляторы бывают двух типов: интерпретаторы, компиляторы.

Интерпретатор читает один оператор программы, анализирует его и сразу выполняет, после чего переходит к обработке следующего оператора.

Компилятор сначала читает, анализирует и переводит на машинный код всю программу и только после завершения всей трансляции эта программа выполняется.

В систему программирования, кроме транслятора, входит текстовый редактор, компоновщик, библиотека стандартных программ, отладчик, визуальные средства автоматизации программирования. Примерами таких систем являются Delphi, Visual Basic, Visual C++, Visual FoxPro и др.

Инструментальная среда пользователя представлена специаль­ными средствами, встроенными в пакеты прикладных программ, такими как:

— библиотека функций, процедур, объектов и методов обра­ботки;

— клавишные и языковые макросы;

— конструкторы экранных форм и отчетов;

— языки запросов высокого уровня;

— конструкторы меню и многое другое.

CASE (Computer Aided Software/System Engineering) — в дословном переводе – разработка программного обеспечения информационных систем с помощью компьютера.

CASE-технология — программный комплекс, автоматизирующий весь технологический процесс анализа, проектирования, разработки и сопровождения сложных программных систем.

Средства CASE-технологии делятся на две группы:

• встроенные в систему реализации — все решения по проектированию и реализации привязаны к выбранной системе управления базами данных (СУБД);

• независимые от системы реализации — все решения по проектированию ориентированы на унификацию (приведение к единообразию, к единой форме или системе) начальных этапов жизненного цикла и средств их документирования, обеспечивают большую гибкость в выборе средств реализации.

Основное достоинство CASE-технологии — поддержка коллективной работы над проектом за счет возможности работы в локальной сети разработчиков, экспорта/импорта любых фрагментов проекта, организационного управления проектом.

Информационная система — взаимосвязанная совокупность средств, методов и персонала, используемых для хранения, обработки и выдачи информации в интересах достижения поставленной цели.

Инструментарий технологии программирования

Инструментарий технологии программирования обеспечивает процесс разработки программ и включает специализированные программные продукты, которые являются инструментальными средствами разработчика. Программные продукты данного класса поддерживают все технологические этапы процесса проектирования, программирования (кодирования), отладки и тестирования создаваемых программ. Пользователями технологии программирования являются системные и прикладные программисты.

Средства для создания приложений – совокупность языков и систем программирования, инструментальные среды пользователя, а также различные программные компоненты для отладки и поддержки создаваемых программ.

Язык программирования – это формализованный язык для описания алгоритма решения задач на компьютере. Языки программирования можно условно разделить на следующие классы:

  • машинные языки – это языки, воспринимаемые аппаратной частью компьютера (машинные коды);
  • машинно-ориентированные языки, отражающие структуру конкретного типа компьютера (ассемблер);
  • процедурно-ориентированные языки – это языки, в которых имеется возможность описания программы как совокупности процедур, или подпрограмм (Си, Паскаль и др.);
  • проблемно-ориентированные языки, предназначенные для решения задач определенного класса (ЛИСП, ПРОЛОГ).

Другой классификацией языков является их деление на языки, ориентированные на реализацию основ структурного программирования, основанного на модульной структуре программного продукта и типовых управляющих структурах алгоритмов обработки данных различных программных модулей, и объектно-ориентированные языки, поддерживающие понятие объектов, их свойств и методов обработки.

Системы программирования включают: компилятор (транслятор); интегрированную среду разработки программ (не всегда); отладчик; средства оптимизации кода программ; набор библиотек; редактор связей; сервисные средства (утилиты) (для работы с библиотеками, текстовыми и двоичными файлами); справочные системы; систему поддержки и управления продуктами программного комплекса.

Компилятор транслирует всю программу без ее выполнения. Трансляторы (интерпретаторы) выполняют пооперационную обработку и выполнение программы.

Отладчики (debugger) – специальные программы, предназначенные трассировки и анализа выполнения других программ. Трассировка – это обеспечение выполнения в пооператорном варианте.

Инструментальная среда пользователя – это специальные средства, встроенные в пакеты прикладных программ, такие, как: библиотека функций, процедур, объектов и методов обработки; макрокоманды; клавишные макросы; языковые макросы; конструкторы экранных форм и объектов; генераторы приложений; языки запросов высокого уровня; конструкторы меню и др.

Интегрированные среды разработки программ объединяют набор средств для их комплексного применения на технологических этапах создания программы.

Статьи к прочтению:

Технологии программирования и С++11 ( осень 2016, лекция 01)

Похожие статьи:

Технологией программирования называют совокупность методов и средств, используемых в процессе разработки программного обеспечения. Как любая другая…

Реализация технологического процесса материального производства осуществляется с помощью различных технических средств, к которым относятся:…

Ссылка на основную публикацию
Adblock
detector