Что такое парадигма программирования простыми словами

Парадигмы программирования — парадигмы жизни

Введение

Парадигма программирования

Ну что же, приступим. Скорее всего, многим данное словосочетание покажется пугающим, но, на самом же деле, здесь нет ничего сложного. Что же такое “Парадигма программирования”? Возьмем определение из википедии: “Парадигма программирования – это совокупность идей и понятий, определяющих стиль написания компьютерных программ (подход к программированию). Это способ концептуализации, определяющий организацию вычислений и структурирование работы, выполняемой компьютером”.

Если говорить самым простым языком, то парадигма программирования – это подход к написанию кода. Читатели без опыта программирования, вероятнее всего, зададутся вопросами: “А что это за такие подходы? То есть, например, ты пишешь код сначала левой рукой, потом правой? Или же ты пишешь код час, а потом полчаса отдыхаешь? Что это за подходы?!”. На самом же деле, подходы подразумевают под собой совсем другое и далеки от примеров, описанных до этого.

Чтобы понять, что это такое, давайте рассмотрим два основных подхода, то есть две основные парадигмы: Объектно-ориентированное программирование (ООП) и Функциональное программирование (ФП). ООП основано на том, что все можно представить в виде объектов, у которых могут быть какие-то характеристики (поля) и они могут выполнять какие-то действия (методы/функции). ФП же основано на описание процессов (функций), а не объектов. Понимаю, пока не понятно, поэтому давайте разберем простейший пример. Представим, что нам нужно как-то складывать и вычитать два числа (a и b). На картинке ниже представлен код, реализующий это в ООП и ФП (код был специально упрощен, чтобы сделать упор именно на разнице двух подходов). Вы сразу можете заметить функции “sum” (сложение) и “subtract” (вычитание), которые мы хотели реализовать.

— Так, ну функции я вижу, а почему в ООП есть еще “class Calculator”, что это значит?

Как уже было сказано выше, ООП основано на том, что все можно представить в виде объектов: например, есть объект “Вселенная”, она состоит из галактик (объект “Галактика”), та, в свою очередь, состоит из планет (объект “Планета”), на каждой планете могут быть люди (объект “Человек”) и так далее. Возьмем, например, объект “Человек”, его характеристиками (полями) могут быть: цвет кожи, пол, рост, возраст (что-то еще). И также он может выполнять следующие действия (методы/функции): бегать, кушать, работать и так далее. Вы легко можете спроецировать такой подход (парадигму) на жизнь, представить все вокруг с помощью объектов и вы поймете, что любое действие (метод/функция) связано с каким-либо объектом, оно не может существовать само по себе, кто-то должен его выполнять. Именно по этой причине наши действия (методы/функции) “sum” и “subtract” находятся внутри объекта “Calculator” (Калькулятор).

— Интересно! Про ООП я понял, а почему в ФП все функции ни к чему не привязаны, находятся сами по себе?

Помните я говорил, что ФП основано на процессах (функциях)? Давайте опять попробуем спроецировать это на нашу жизнь. Например, возьмем процесс (функцию) создания вселенной, галактики, планеты, человека, процесс (функцию) сложения, вычитания и т.д. Сам процесс (функция) никому не принадлежит — он общий, пользоваться может кто угодно, но при этом каждый процесс (функция) имеет определенные условия, в зависимости от которых получается тот или иной результат. Рассмотрим простой пример из жизни, процесс “Приготовление ужина”: данный процесс может осуществить кто угодно, даже ваш кот или собака, но так как опыта у них нет, то, вероятнее всего, ужин просто не будет приготовлен. То есть получается, что воспользоваться могут все, но результат будет разный.

— Фух, ну теперь понятно, что такое парадигма программирования. Ну все-таки остался вопрос: почему где-то используется одна парадигма, а где-то другая?

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

Заключение

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

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

Источник

Парадигмы программирования: определение, виды и их особенности

Парадигмы программирования

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

Основные парадигмы программирования

Парадигма объектно-ориентированного программирования

Объектно-ориентированному программированию свойственны такие принципы, как:

Парадигма функционального программирования

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

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

Программы, написанные по такой модели, обычно легче тестировать и читать, если сравнивать с ООП.

Процедурная парадигма программирования

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

Парадигма декларативного программирования

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

Логическая парадигма программирования

Такой вид программирования используется языками Prolog и Planner.

Заключение

Источник

Что такое парадигмы программирования и зачем они нужны

Знакомство с новыми парадигмами программирования может перевернуть вашу точку зрения на написание кода. Рассказываем, что это такое.

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

Императивная парадигма программирования

В императивной (англ. imperative — приказ) парадигме разработчик пишет для компьютера инструкции, которым тот следует. Инструкции могут быть следующие:

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

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

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

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

Декларативная парадигма программирования

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

К декларативной парадигме относятся функциональное и логическое программирование.

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

Примеры использования парадигм

Допустим, у нас есть массив следующих чисел:

Нам может понадобиться получить из этого массива все числа, которые больше 3, но меньше 100.

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

Программист не думает о том, как программа будет искать эти числа, он просто пишет, какой результат ему нужен.

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

То есть в декларативном программировании разработчик говорит, что ему нужно. А в императивном — как это можно получить.

Давайте рассмотрим это на примере двух реальных языков:

C# (императивный) SQL (декларативный)
int[] N = new int[] < 5, 1, 3, 9, 12, 583, 998, 7538, 72, 53, 71, 85, 7, 2, 9 >;

List nums = new List ();

for(int i = 0; i 3 && N[i] 3 AND num Зачем это нужно

У вас мог появиться вполне логичный вопрос:

Зачем использовать императивное программирование, если декларативное позволяет писать гораздо меньше кода?

Есть несколько причин.

Во-первых, декларативное программирование — это обёртка для императивного. Компьютер не может вот так просто понять, чего хочет программист, поэтому для него нужно написать конкретные инструкции, что и в каком порядке делать.

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

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

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

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

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

Заключение

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

Освоить этот язык, особенности ООП, а также ознакомиться с функциональной разработкой вы можете на курсе «Профессия C#-разработчик».

Источник

Парадигмы программирования

3.1. Введение. Общие сведения о парадигмах

Общие сведения о парадигмах программирования

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

В процессе своего развития эти парадигмы «мутировали», «отпочковывались», «объединялись» (так, язык Си объединил в себе процедурную и структурированную парадигму). В результате этих » мутаций » по состоянию на 01.06.2008 года оформились следующие парадигмы программирования :

Эти три совершенно разные по подходу парадигмы составляют основу современного программирования. Хотя в настоящее время наиболее «модной» является объектно-ориентированная парадигма, остальные парадигмы также используются на практике и изучаются в ВУЗах. Их мы и рассмотрим ниже.

Кроме деления языков программирования по парадигмам, существует также деление языков на » императивные » и «декларативные».

Императивными называются такие языки программирования, в которых описываются в основном «инструкции» по пошаговому выполнению алгоритмов. Все внимание в них отводится лишь реализации этой последовательности действий, а данным и их структуре отводится второстепенная роль. Примером такого рода языков может служить языки создания драйверов устройств: Assembler и C++. При использовании этих языков мы не знаем, какие данные будет отправлять/получать устройство, но зато мы знаем, какие действия нужно осуществить над данными.

Декларативные языки лучше всего использовать в случаях, когда «данные управляют программой»: при написании экспертных систем, при конструировании трансляторов с языков программирования, для большинства задач искусственного интеллекта. Именно там их использование приведет к наибольшей эффективности.

3.2. Процедурная парадигма

3.2.1. История возникновения парадигмы

«Истоки» процедурной парадигмы программирования лежат в далеких 50-х годах прошлого века. После появления ЭВМ с архитектурой «фон Неймана» появилась возможность компьютеру «самому», без участия человека, проводить сложные вычисления. Эти годы и стали переломными в становлении профессии «программист». Чтобы произвести сложные вычисления, нужно сначала написать сложный алгоритм. Поскольку сложный алгоритм трудно реализовать в ЭВМ так же, как на калькуляторе, появилась необходимость в «записи» алгоритмов на более «понятном» человеку языке, чем язык машинных кодов ЭВМ. Так, вначале появился язык ассемблера, представляющий машинные коды в » удобочитаемом » виде.

Таким образом, возникла «процедурная парадигма», гласящая:

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

Эта парадигма проста не только в «написании» алгоритма, но и его отладке: нужно убедиться в «работоспособности» каждого из модулей, что намного проще, чем отладка всего алгоритма целиком.

3.2.2. Языки, поддерживающие парадигму

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

3.2.3. Представление программ и реализация вычислений

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

3.2.3.1. Quick Basic

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

3.2.3.2. C/C++

На языке Си и, частично, С++, существуют следующие правила оформления программ:

Подробнее о других аспектах программирования на C/C++ смотри: [31, 51, 92,78]

3.2.3.3. Perl

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

Источник

Парадигмы программирования: что это такое и в чём различия

Когда программист начинает изучать свой первый язык — знакомится с его синтаксисом, пробует запускать простые команды, — он, как правило, не задумывается о том, в какой парадигме программирования работает. Только позже приходит осознание, что даже в пределах одного языка можно создавать разные в структурном плане программы. Выбрать ту парадигму, которая нравится, удаётся не всегда: во многом это зависит от актуальной ситуации в программировании, его тенденций, и, конечно, от языка.

Что такое парадигма программирования? Если в двух словах, то это набор принципов и методик по созданию кода. Они нужны, чтобы упорядочить программу и сделать её структурированной, удобной и понятной другим программистам, работающим в той же парадигме. Важно, чтобы и для вычислительной машины программа была ясной, подготовленной к быстрому и точному исполнению. Разберём основные парадигмы программирования.

Объектно-ориентированное программирование

Наиболее распространённая на данный момент парадигма. Это подвид императивного программирования — оно основано на последовательных вызовах команд, изменяющих данные, с которыми работает программа. Таким образом она оперирует объектами, и это удобно для многих приложений.

Новичков зачастую пугает аббревиатура ООП, но освоить парадигму объектно-ориентированного программирования не так сложно, как кажется. В своё время эта идея оказалась вирусной: создавать объекты, принадлежащие классам, а также использовать методы в качестве действий, которые может выполнить объект или которые можно произвести над ним. Много специалистов по Computer Science придерживаются такого подхода. Большое преимущество здесь в том, что программисту, использующему ООП, легко разобраться, что происходит в программе. Достаточно посмотреть, какие действия производит каждый из объектов.

Легче всего использовать ООП в Python, посложнее — в C++. Но если в этих языках у программиста ещё есть возможность увильнуть от ООП (например, для Python вполне подходит функциональное программирование), то в Java и C# всегда необходимо создавать классы, одних функций недостаточно.

Функциональное программирование

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

Между последователями разных парадигм, оказавшимися в одной ветке комментариев, всегда разгорается бесконечный холивар с обвинениями в «ООП/ФП головного мозга». Но бывают и программисты, готовые применить любой из подходов в зависимости от проекта.

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

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

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

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

Процедурное программирование

Этот подход — разновидность императивной парадигмы программирования. Процедурами здесь называют команды, которые применяются в определённом порядке и последовательно меняют состояние памяти. После применения всех команд программа выдаёт результат.

Процедурное программирование применяется не только в классических языках вроде C и Pascal, но и в самых современных. Например, в Go, где помимо процедурного подхода можно применить и ООП, но с ограниченной функциональностью.

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

Метапрограммирование

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

Обобщённое программирование

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

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

Логическое программирование

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

Возможность применить эту парадигму заложена в языке Prolog — он позволяет вводить предложения в виде фактов и набора правил. Разработку Prolog начали ещё в 1970 году, и целью было понять естественный язык. Логика используется как средство формализовать его семантику. Если располагать фактической информацией о предметной области, можно автоматизировать выдачу информации по схеме «вопрос — ответ».

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

Если вы хотите ближе познакомиться с разными языками, приглашаем вас на бесплатный вебинар «Основы программирования». На нём вы погрузитесь в основы профессии и определитесь, по какому пути хотите развиваться в мире разработки.

Когда программист начинает изучать свой первый язык — знакомится с его синтаксисом, пробует запускать простые команды, — он, как правило, не задумывается о том, в какой парадигме программирования работает. Только позже приходит осознание, что даже в пределах одного языка можно создавать разные в структурном плане программы. Выбрать ту парадигму, которая нравится, удаётся не всегда: во многом это зависит от актуальной ситуации в программировании, его тенденций, и, конечно, от языка.

Что такое парадигма программирования? Если в двух словах, то это набор принципов и методик по созданию кода. Они нужны, чтобы упорядочить программу и сделать её структурированной, удобной и понятной другим программистам, работающим в той же парадигме. Важно, чтобы и для вычислительной машины программа была ясной, подготовленной к быстрому и точному исполнению. Разберём основные парадигмы программирования.

Объектно-ориентированное программирование

Наиболее распространённая на данный момент парадигма. Это подвид императивного программирования — оно основано на последовательных вызовах команд, изменяющих данные, с которыми работает программа. Таким образом она оперирует объектами, и это удобно для многих приложений.

Новичков зачастую пугает аббревиатура ООП, но освоить парадигму объектно-ориентированного программирования не так сложно, как кажется. В своё время эта идея оказалась вирусной: создавать объекты, принадлежащие классам, а также использовать методы в качестве действий, которые может выполнить объект или которые можно произвести над ним. Много специалистов по Computer Science придерживаются такого подхода. Большое преимущество здесь в том, что программисту, использующему ООП, легко разобраться, что происходит в программе. Достаточно посмотреть, какие действия производит каждый из объектов.

Легче всего использовать ООП в Python, посложнее — в C++. Но если в этих языках у программиста ещё есть возможность увильнуть от ООП (например, для Python вполне подходит функциональное программирование), то в Java и C# всегда необходимо создавать классы, одних функций недостаточно.

Функциональное программирование

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

Между последователями разных парадигм, оказавшимися в одной ветке комментариев, всегда разгорается бесконечный холивар с обвинениями в «ООП/ФП головного мозга». Но бывают и программисты, готовые применить любой из подходов в зависимости от проекта.

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

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

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

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

Процедурное программирование

Этот подход — разновидность императивной парадигмы программирования. Процедурами здесь называют команды, которые применяются в определённом порядке и последовательно меняют состояние памяти. После применения всех команд программа выдаёт результат.

Процедурное программирование применяется не только в классических языках вроде C и Pascal, но и в самых современных. Например, в Go, где помимо процедурного подхода можно применить и ООП, но с ограниченной функциональностью.

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

Метапрограммирование

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

Обобщённое программирование

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

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

Логическое программирование

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

Возможность применить эту парадигму заложена в языке Prolog — он позволяет вводить предложения в виде фактов и набора правил. Разработку Prolog начали ещё в 1970 году, и целью было понять естественный язык. Логика используется как средство формализовать его семантику. Если располагать фактической информацией о предметной области, можно автоматизировать выдачу информации по схеме «вопрос — ответ».

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

Если вы хотите ближе познакомиться с разными языками, приглашаем вас на бесплатный вебинар «Основы программирования». На нём вы погрузитесь в основы профессии и определитесь, по какому пути хотите развиваться в мире разработки.

Источник

Понравилась статья? Поделиться с друзьями:

Не пропустите наши новые статьи:

  • что такое парадигма в программировании
  • Что такое парагон программа
  • что такое папка пользователя windows 10
  • что такое папка в виндовс
  • Что такое папка windows

  • Операционные системы и программное обеспечение
    0 0 голоса
    Рейтинг статьи
    Подписаться
    Уведомить о
    guest
    0 комментариев
    Старые
    Новые Популярные
    Межтекстовые Отзывы
    Посмотреть все комментарии