Просмотр исходного кода

Merge branch 'master' of u21geras/ISRPO_Geras into master

ypv 1 год назад
Родитель
Сommit
798e115666

+ 64 - 0
Лекции/API/API.md

@@ -0,0 +1,64 @@
+# API
+
+API — это способ обмена информацией между сайтами, программами и приложениями. Можно также сказать, что это набор правил, по которым осуществляется такой обмен.
+
+Пользователями программ и сайтов могут быть не только люди, их также используют другие сайты и приложения. Они могут обмениваться данными между собой без участия человека. Это удобно, когда позаимствовать готовое решение проще, чем создавать с нуля собственное.
+
+Чтобы на сайте или в приложении отображалась актуальная погода, можно подключить API сервиса Яндекс.Погода:
+
+![PHOTO](https://blog.skillfactory.ru/wp-content/uploads/2023/02/image1-1-2-1.png)
+
+## Как устроен интерфейс
+
+Интерфейс приложения — это система, которую должен освоить пользователь, чтобы заставить работать внутренний механизм. Если нажать определенную кнопку на приборной панели автомобиля, стекло окна начнет опускаться. Ни пассажир, ни водитель не смогут увидеть механизм, который опускает стекло, они увидят только конечный результат. Точно так же, нажимая на кнопку в интерфейсе приложения, мы не видим механизмы, которые открывают нужную нам страницу.
+
+Именно по такому принципу API помогает разработчикам настроить взаимодействие между своей и сторонней программой, не задумываясь о деталях их устройства. Можно не знать, как организован backend сайта Центробанка, но вывести на своем сервисе курсы валют через его API. Так, например, на странице для разработчиков «Знакомство с API ВКонтакте» сказано: «Вам не нужно знать в подробностях, как устроена база, из каких таблиц и полей каких типов она состоит, — достаточно того, что API-запрос об этом “знает”».
+
+## API-документация
+Настройка взаимодействия между двумя сервисами — это своеобразный договор, в котором прописаны условия сотрудничества. В API-документации каждого сервиса указаны условия, на которых сторонние сайты или приложения могут использовать его функционал. Например, та же социальная сеть ВКонтакте предоставляет разработчикам возможность использовать id пользователей, видеозаписи, документы, карточки товаров на сторонних сервисах.
+
+Для корректной работы с API в документации прописывают конкретные операции и методы, с помощью которых можно их выполнить:
+
+- video.add — метод для добавления видео из плеера ВКонтакте;
+- likes.delete — метод для удаления отметки «Нравится»;
+- users.get — метод для получения информации о пользователе.
+
+Методы поделены на группы в соответствии с разделом контента: photos, videos, docs, likes и другие. Полный список методов можно найти на специальной странице API-документации ВКонтакте.
+
+По условиям документации, чтобы выполнить каждое действие с помощью методов, нужно оформить запрос по определенным правилам. Например, для ВКонтакте нужно указать:
+
+- https:// — протокол соединения, он всегда будет один и тот же;
+- api.vk.com/method — адрес API-сервиса; в зависимости от сервиса он будет меняться, но у ВКонтакте адрес API выглядит именно так;
+- users.get — название конкретного метода API ВКонтакте;
+- user_id=210700286 — id конкретного пользователя, данные о котором необходимо получить.
+
+В ответ на запрос сервер возвращает JSON-объект с запрошенными данными, он будет выглядеть так:
+
+- {«response»:[{«id»:210700286,»first_name»:»Lindsey»,»last_name»:»Stirling»}]}
+
+Если разложить ответ на составляющие, то:
+
+- в поле id будет все тот же идентификационный номер аккаунта;
+- в поле first_name — строка с именем пользователя;
+- в поле last_name — строка с фамилией пользователя.
+
+Метод получения информации о пользователе используют, например, сайты с возможностью авторизации через аккаунт ВКонтакте. Так сайт может привязать окошко своего сообщества в этой соцсети, показать пользователю, кто из друзей в нем уже состоит, предложить поделиться страницей в профиле или поставить «Нравится» прямо на странице сайта.
+
+## Почему API стал популярен
+
+Так как с помощью API разработчики получают возможность использовать готовые инструменты в своих сервисах, этот метод дает сразу два стратегических преимущества:
+
+- экономит время на разработку;
+- снижает стоимость разработки.
+
+На каком языке написана программа, для API не имеет значения. Интерфейс — это универсальный переходник, который работает со всеми типами устройств, операционными системами и языками программирования.
+
+##Какие еще функции входят в API
+
+API не накладывает строгих ограничений на возможный набор функций — можно добавить в интерфейс любой функционал, который будет полезен пользователям или сторонним компаниям. Главное, чтобы каждая функция имела строгую структуру:
+
+- операцию, которую можно выполнить с помощью API;
+- данные, которые должен запросить пользователь;
+- данные, которые получит пользователь на выходе (контент или сообщение об ошибке).
+
+Разработчики предоставляют платный доступ к своим API. Например, у 2GIS можно запросить доступ к картам, у Яндекс.Маркета — сведения о товарах, у HeadHunter — возможность размещать виджеты вакансий на своем сайте. Через API социальных сетей, таких как Twitter, Facebook, ВКонтакте, на многих сайтах реализована система авторизации.

+ 111 - 0
Лекции/Algorithm/Algorithm_Gerasimenko.md

@@ -0,0 +1,111 @@
+# Алгоритм
+
+Алгоритм — это четкая последовательность действий, выполнение которой дает какой-то заранее известный результат. Простыми словами, это набор инструкций для конкретной задачи. Известнее всего этот термин в информатике и компьютерных науках, где под ним понимают инструкции для решения задачи эффективным способом.
+
+Сейчас под этим словом понимают любые последовательности действий, которые можно четко описать и разделить на простые шаги и которые приводят к достижению какой-то цели. Например, пойти на кухню, налить воду и положить в нее пакетик чая — это алгоритм для выполнения задачи «Заварить чай».
+
+Алгоритмы в информатике — инструкции для компьютеров, набор шагов, который описывается программным кодом. Существуют конкретные алгоритмы для тех или иных действий, причем некоторые из них довольно сложные. Одна из целей использования алгоритмов — делать код эффективнее и оптимизировать его.
+
+## Кто пользуется алгоритмами
+
+В общем смысле — абсолютно все живые и некоторые неживые существа, потому что любую последовательность действий, ведущую к цели, можно считать алгоритмом. Поиск еды животным — алгоритм, движения робота тоже описываются алгоритмом.
+
+В узком смысле, в котором понятие используется в компьютерных науках, алгоритмами пользуются разработчики, некоторые инженеры и аналитики, а также специалисты по машинному обучению, тестировщики и многие другие. Это одно из ключевых понятий в IT.
+
+## Для чего нужны алгоритмы
+
+Алгоритмы в информатике нужны для эффективного решения различных задач, в том числе тех, выполнение которых «в лоб» имеет высокую сложность или вовсе невозможно. На практике существуют алгоритмы практически для чего угодно: сортировки, прохождения по структурам данных, поиска элементов, фильтрации информации, математических операций и так далее.
+
+Например, отсортировать массив можно в ходе полного перебора — это самое очевидное решение. А можно воспользоваться алгоритмом быстрой сортировки: он сложнее и не так очевиден, зато намного быстрее работает и не так сильно нагружает мощности компьютера. Строго говоря, полный перебор — это тоже алгоритм, но очень простой.
+
+Существуют алгоритмически неразрешимые задачи, для решения которых нет и не может существовать алгоритма. Но большинство задач в IT разрешимы алгоритмически, и алгоритмы активно используются в работе с ними.
+
+Алгоритмы применяются во всех направлениях IT и во многих других отраслях. Инструкции для автоматизированного станка или линии производства — алгоритмы, рецепт блюда — тоже.
+
+##Алгоритмизация
+
+Алгоритмизация — это процесс разработки и описания последовательности шагов, которые необходимо выполнить для решения определенной задачи или достижения конкретной цели. Алгоритмизация является ключевым этапом при программировании и разработке программного обеспечения.
+
+При алгоритмизации задачи создаются четкие инструкции, которые компьютер может понять и выполнять. Алгоритмы могут быть записаны в виде текстового описания, блок-схемы, псевдокода или других формализованных представлений. Они служат основой для написания кода программы, который позволяет компьютеру автоматически решать задачи в соответствии с предварительно разработанными инструкциями.
+
+Алгоритмизация играет важную роль в информатике и программировании, так как хорошо разработанные алгоритмы обеспечивают эффективное и корректное выполнение задач, а также упрощают процесс отладки и поддержки программного кода.
+
+## Основные свойства алгоритмов
+
+- Дискретность. Алгоритм — не единая неделимая структура, он состоит из отдельных маленьких шагов, или действий. Эти действия идут в определенном порядке, одно начинается после завершения другого.
+
+- Результативность. Выполнение алгоритма должно привести к какому-либо результату и не оставлять неопределенности. Результат может в том числе оказаться неудачным — например, алгоритм может сообщить, что решения нет, — но он должен быть.
+
+- Детерминированность. На каждом шаге не должно возникать разночтений и разногласий, инструкции должны быть четко определены.
+
+- Массовость. Алгоритм обычно можно экстраполировать на похожие задачи с другими исходными данными — достаточно поменять изначальные условия. Например, стандартный алгоритм по решению квадратного уравнения останется неизменным вне зависимости от того, какие числа будут использоваться в этом уравнении.
+
+- Понятность. Алгоритм должен включать только действия, известные и понятные исполнителю.
+
+- Конечность. Алгоритмы конечны, они должны завершаться и выдавать результат, в некоторых определениях — за заранее известное число шагов.
+
+## Какими бывают алгоритмы
+
+Несмотря на слово «последовательность», алгоритм не всегда описывает действия в жестко заданном порядке. Особенно это актуально сейчас, с распространением асинхронности в программировании. В алгоритмах есть место для условий, циклов и других нелинейных конструкций.
+
+- Линейные. Это самый простой тип алгоритма: действия идут друг за другом, каждое начинается после того, как закончится предыдущее. Они не переставляются местами, не повторяются, выполняются при любых условиях.
+
+- Ветвящиеся. В этом типе алгоритма появляется ветвление: какие-то действия выполняются, только если верны некоторые условия. Например, если число меньше нуля, то его нужно удалить из структуры данных. Можно добавлять и вторую ветку: что делать, если условие неверно — например, число больше нуля или равно ему. Условий может быть несколько, они могут комбинироваться друг с другом.
+
+- Циклические. Такие алгоритмы выполняются в цикле. Когда какой-то блок действий заканчивается, эти действия начинаются снова и повторяются некоторое количество раз. Цикл может включать в себя одно действие или последовательность, а количество повторений может быть фиксированным или зависеть от условия: например, повторять этот блок кода, пока в структуре данных не останется пустых ячеек. В некоторых случаях цикл может быть бесконечным.
+
+- Рекурсивные. Рекурсия — это явление, когда какой-то алгоритм вызывает сам себя, но с другими входными данными. Это не цикл: данные другие, но «экземпляров» работающих программ несколько, а не одна. Известный пример рекурсивного алгоритма — расчет чисел Фибоначчи.
+
+Рекурсия позволяет изящно решать некоторые задачи, но с ней надо быть осторожнее: такие алгоритмы могут сильно нагружать ресурсы системы и работать медленнее других.
+
+- Вероятностные. Такие алгоритмы упоминаются реже, но это довольно интересный тип: работа алгоритма зависит не только от входных данных, но и от случайных величин. К ним, например, относятся известные алгоритмы Лас-Вегас и Монте-Карло.
+
+- Основные и вспомогательные. Это еще один вид классификации. Основной алгоритм решает непосредственную задачу, вспомогательный решает подзадачу и может использоваться внутри основного — для этого там просто указываются его название и входные данные. Пример вспомогательного алгоритма — любая программная функция.
+
+## Графическое изображение алгоритмов
+
+Алгоритмы могут записывать текстом, кодом, псевдокодом или графически — в виде блок-схем. Это специальные схемы, состоящие из геометрических фигур, которые описывают те или иные действия. Например, начальная и конечная точка на схеме — соответственно, начало и конец алгоритма, параллелограмм — ввод или вывод данных, ромб — условие. Простые действия обозначаются прямоугольниками, а соединяются фигуры с помощью стрелок — они показывают последовательности и циклы.
+
+![photo](https://blog.skillfactory.ru/wp-content/uploads/2022/07/algoritm-blok-shema-647x1024.png)
+
+В схемах подписаны конкретные действия, условия, количество повторений циклов и другие детали. Это позволяет нагляднее воспринимать алгоритмы.
+
+## Сложность алгоритма
+
+Понятие «сложность» — одно из ключевых в изучении алгоритмов. Оно означает не то, насколько трудно понять тот или иной метод, а ресурсы, затраченные на вычисление. Если сложность высокая, алгоритм будет выполняться медленнее и, возможно, тратить больше аппаратных ресурсов; такого желательно избегать.
+
+Сложность обычно описывают большой буквой O. После нее в скобках указывается значение, от которого зависит время выполнения. Это обозначение из математики, которое описывает поведение разных функций.
+
+Какой бывает сложность. Полностью разбирать математическую O-нотацию, как ее называют, мы не будем — просто перечислим основные обозначения сложности в теории алгоритмов.
+
+-  O(1) означает, что алгоритм выполняется за фиксированное константное время. Это самые эффективные алгоритмы.
+ - O(n) — это сложность линейных алгоритмов. n здесь и дальше обозначает размер входных данных: чем больше n, тем дольше выполняется алгоритм.
+ - O(n²) тоже означает, что чем больше n, тем выше сложность. Но зависимость тут не линейная, а квадратичная, то есть скорость возрастает намного быстрее. Это неэффективные алгоритмы, например с вложенными циклами.
+ - O(log n) — более эффективный алгоритм. Скорость его выполнения рассчитывается логарифмически, то есть зависит от логарифма n.
+ - O(√n) — алгоритм, скорость которого зависит от квадратного корня из n. Он менее эффективен, чем логарифмический, но эффективнее линейного.
+Существуют также O(n³), O(nn) и другие малоэффективные алгоритмы с высокими степенями. Их сложность растет очень быстро, и их лучше не использовать.
+
+Графическое описание сложности. Лучше разобраться в сложности в O-нотации поможет график. Он показывает, как изменяется время выполнения алгоритма в зависимости от размера входных данных. Чем более пологую линию дает график, тем эффективнее алгоритм.
+
+O-нотацию используют, чтобы оценить, эффективно ли использовать ту или иную последовательность действий. Если данные большие или их много, стараются искать более эффективные алгоритмы, чтобы ускорить работу программы.
+
+## Использование алгоритмов в IT
+
+Мы приведем несколько примеров использования разных алгоритмов в отраслях программирования. На самом деле их намного больше — мы взяли только часть, чтобы помочь вам понять практическую значимость алгоритмов.
+
+Разработка ПО и сайтов. Алгоритмы используются для парсинга, то есть «разбора» структур с данными, таких как JSON. Парсинг — одна из базовых задач, например в вебе. Также алгоритмы нужны при отрисовке динамических структур, выводе оповещений, настройке поведения приложения и многом другом.
+
+Работа с данными. Очень активно алгоритмы применяются при работе с базами данных, файлами, где хранится информация, структурами вроде массивов или списков. Данных может быть очень много, и выбор правильного алгоритма позволяет ускорить работу с ними. Алгоритмы решают задачи сортировки, изменения и удаления нужных элементов, добавления новых данных. С их помощью наполняют и проходят по таким структурам, как деревья и графы. 
+
+Отдельное значение алгоритмы имеют в Big Data и анализе данных: там они позволяют обработать огромное количество информации, в том числе сырой, и не потратить на это слишком много ресурсов.
+
+Поисковые задачи. Алгоритмы поиска — отдельная сложная отрасль. Их выделяют в отдельную группу, в которой сейчас десятки разных алгоритмов. Поиск важен в науке о данных, в методах искусственного интеллекта, в аналитике и многом другом. Самый очевидный пример — поисковые системы вроде Google или Яндекса. Кстати, подробности об используемых алгоритмах поисковики обычно держат в секрете.
+
+Машинное обучение. В машинном обучении и искусственном интеллекте подход к алгоритмам немного другой. Если обычная программа действует по заданному порядку действий, то «умная машина» — нейросеть или обученная модель — формирует алгоритм для себя сама в ходе обучения. Разработчик же описывает модель и обучает ее: задает ей начальные данные и показывает примеры того, как должен выглядеть конечный результат. В ходе обучения модель сама продумывает для себя алгоритм достижения этого результата.
+
+Такие ИИ-алгоритмы могут быть еще мощнее обычных и используются для решения задач, которые разработчик не в силах разбить на простые действия сознательно. Например, для распознавания предметов нужно задействовать огромное количество процессов в нервной системе: человек просто физически не способен описать их все, чтобы повторить программно.
+
+В ходе создания и обучения модели разработчик тоже может задействовать алгоритмы. Например, алгоритм распространения ошибки позволяет обучать нейросети. 
+
+# Литература 
+https://blog.skillfactory.ru/glossary/algoritm/

+ 76 - 0
Лекции/Firewall/Firewall_Gerasimenko.md

@@ -0,0 +1,76 @@
+# Файервол
+
+Файервол (от английского firewall, «огненная / противопожарная стена») — это программа, которая защищает компьютер от атак из Cети. Ее также называют брандмауэром и межсетевым экраном, потому что система как бы экранирует вредоносные действия из интернета. Если она видит подозрительный трафик, то блокирует его.
+
+Брандмауэр — немецкое слово, файервол — английское, но они означают одно и то же. Это программный комплекс, который фильтрует данные, приходящие из сети. У него есть свои правила — инструкции, по которым он решает, пропустить пакет информации или заблокировать.
+
+Программа-брандмауэр может быть частью антивируса, встроенным ПО роутера или операционной системы персонального компьютера.
+
+Файерволы бывают и аппаратными — тогда это отдельные устройства, которые устанавливаются в сеть целиком, а не на конкретный компьютер. Такие брандмауэры ставят в корпоративных сетях или для других промышленных целей, для личного использования они практически не применяются.
+
+## Для чего нужен файервол
+
+Основная функция брандмауэра — защищать компьютер от атак. Межсетевое экранирование помогает сразу отфильтровать пакеты информации, которые могли бы прислать злоумышленники, хакеры или кто-либо еще. В результате эти данные не попадут на компьютер и не нанесут вреда — от доступа к персональной информации до поломки операционной системы.
+
+Кроме того, брандмауэр мешает злоумышленникам сканировать внутреннюю сеть и получать к ней доступ, а периодически может использоваться для разграничения прав доступа.
+
+В домашних компьютерах файервол защищает пользователей от вирусов, которые они могут подхватить при серфинге веб-сайтов. В корпоративных и системных сетях брандмауэры защищают сетевую инфраструктуру всей компании — например, от несанкционированного доступа. Там это более мощные и сложные системы. Некоторые из них, к примеру, могут распознавать и блокировать DDoS-атаки, обнаруживать подмену трафика и другие манипуляции злоумышленников.
+
+## Что делает файервол
+
+Межсетевой экран устанавливается на границе между внешней сетью — интернетом — и внутренней. Внутренняя сеть может состоять даже из одного компьютера, а может представлять собой несколько локально соединенных устройств.
+
+Находясь на границе, файервол определяет, какой именно трафик из внешней сети можно пустить во внутреннюю. Трафик — это любая информация из интернета: она представляется в виде пакетов данных.
+
+Данные, которые пропустили во внутреннюю сеть, можно скачать, просмотреть в браузере или сделать с ними что-либо еще. Информация, которую брандмауэр не пропустил, блокируется. Пользователь не имеет к ней доступа, потому что она может быть вредоносной. Но зато во внутреннюю сеть такие данные не попадают, так что не могут нанести вреда.
+
+Еще файервол может отслеживать попытки приложений выйти в сеть или внести изменения в систему. Поэтому он показывает предупреждения, когда пользователь устанавливает стороннюю программу или запускает приложение с выходом в интернет.
+
+## Два режима работы
+
+Можно условно выделить два режима работы файервола:
+- разрешать все, запрещать только подозрительный трафик;
+- запрещать все, разрешать только данные из «белого списка».
+
+В первом случае интернетом можно пользоваться как обычно, но если брандмауэр увидит подозрительные данные, он их заблокирует и выдаст пользователю сообщение об этом. Еще он может показать предупреждение, например, если человек собрался установить скачанную из сети программу без указанного источника. Предупреждение не значит, что программа обязательно вредоносная — файервол перестраховывается.
+
+Во втором случае интернетом нельзя пользоваться в привычном понимании. Можно заходить только на определенный список сайтов, которые внесли в брандмауэр в качестве исключений. Только от них компьютер сможет принимать информацию. Обычно так делают в корпоративных или учебных сетях, чтобы ограничить нецелевое использование интернета.
+
+Еще можно совсем отключить файервол. Но лучше этого не делать.
+
+## Как файервол фильтрует данные
+
+Технология, по которой брандмауэр отличает нормальный трафик от вредоносного, может различаться. Точной классификации нет, но можно выделить несколько типов файерволов.
+
+- Пакетные фильтры смотрят на заголовок пакета информации и по нему определяют, стоит доверять ему или нет. Они проверяют IP-адреса, используемые порты источника и получателя, протоколы и так далее. Этот тип реализован в большинстве «домашних» брандмауэров.
+- Сеансовые шлюзы работают по протоколу SOCKS. Это значит, что они создают прокси — шлюз между внешней и внутренней сетью. Трафик в результате идет через прокси-сервер, а напрямую сети не взаимодействуют. Внутри шлюза информация фильтруется — то, что не относится к уже установленному соединению, блокируется.
+- Посредники прикладного уровня работают на уровне, в котором пользователь непосредственно общаются с сетью. Это, например, файерволы веб-приложений, которые защищают их от атак. По принципу работы они похожи на сеансовые шлюзы, но в отличие от них умеют проверять содержимое пакетов — не только заголовки. Минус их использования — они медленнее и «тяжелее» других.
+
+Еще есть инспекторы состояния — сложные системы, чаще всего корпоративные, которые сочетают в себе возможности всех трех перечисленных технологий.
+
+## Почему не стоит отключать файервол
+
+Когда-то, в 2000-х годах, брандмауэры часто работали неправильно и блокировали даже безопасный трафик. На это были причины: множество вирусов, более слабая информационная безопасность, чем сейчас. Поэтому некоторые пользователи того времени привыкли отключать файервол, прежде чем пользоваться интернетом.
+
+Сейчас делать так не стоит. Межсетевой экран служит защитой от вредоносной активности и снижает риск подхватить вирус или «троян», стать жертвой хакеров или иных злоумышленников. При этом большую часть времени его работа совершенно незаметна: современные файерволы не «ругаются» на все подряд, а блокируют что-то в исключительных случаях.
+
+Поэтому не стоит снижать собственную безопасность и отключать файервол. Это касается и обычных пользователей, и компаний. Если брандмауэр работает как-то не так – его всегда можно настроить через операционную систему или антивирус.
+
+## Как настроить файервол
+
+Межсетевой экран на персональном компьютере можно настроить в параметрах безопасности системы. В зависимости от ОС они могут называться по-разному. К примеру, в Windows 10 есть меню «Безопасность Windows», а там — пункт «Брандмауэр и безопасность сети».
+
+Если вы пользуетесь сторонним брандмауэром, например, из антивируса, то настраивается он изнутри антивирусной программы.
+
+В настройках обычно можно указать, какой режим работы использовать, насколько жестко проверять трафик, показывать ли предупреждения, если приложение пытается что-то сделать. Продвинутые пользователи могут прописать свои правила для блокировки или пропуска информации.
+
+В корпоративных сетях файерволы могут быть мощными системами, в том числе аппаратными. Их настройки и возможности куда шире, но это дорогостоящие сложные комплексы — с ними работают профессиональные системные администраторы и сетевые инженеры.
+
+## Можно ли использовать несколько файерволов
+
+Практически во всех популярных операционных системах есть свои брандмауэры, и создатели этих ОС не рекомендуют их отключать. Но собственные файерволы есть и, к примеру, в антивирусах. А несколько брандмауэров, запущенных одновременно — не лучшее решение: они могут конфликтовать друг с другом и дополнительно нагружать компьютер.
+
+Поэтому рекомендуется внимательно проверять настройки при установке антивируса и избегать одновременного запуска. Современные программы могут спрашивать, какой файервол хочет использовать пользователь: выбирать системный или антивирусный — решает сам человек.
+
+# Литература
+https://blog.skillfactory.ru/glossary/firewall/

+ 61 - 0
Лекции/Macross/Macros.md

@@ -0,0 +1,61 @@
+# Макрос
+
+Макрос, или макрокоманда — это небольшая программа, которая выполняет заданный набор действий в офисном документе. Чаще всего макросами пользуются в Microsoft Office Excel для работы с таблицами. Создать и запустить их можно внутри Excel.
+
+Макрос — подобие скрипта: небольшой программы, четко заточенной под определенные действия, чаще всего не имеющей графического интерфейса. Программу можно представить как большую и обширную команду, заданную системе. Поэтому второе название макроса — макрокоманда.
+
+## Кто пользуется макросами в работе
+Макросами желательно уметь пользоваться всем, кто активно работает с Excel. Это экономисты, разные категории менеджеров, аналитики и специалисты по маркетингу или рекламе. Им приходится обрабатывать табличные данные, иногда в больших количествах.
+
+Умение работать с макросами — не всегда обязательное условие для получения работы, но крайне желательно и может быть полезно в любом случае, если вы часто сталкиваетесь с Excel-таблицами.
+
+## Для чего нужны макросы
+
+Макросы помогают:
+- упростить и ускорить работу с документами;
+- автоматизировать рутину и сконцентрироваться на интеллектуальных задачах;
+- избежать человеческих ошибок в ряде задач, таких как, например, форматирование данных в таблице;
+- быстро находить нужную информацию среди большого объема данных;
+- объединять работу в нескольких продуктах Microsoft Office, потому что один макрос может работать с разными программами офисного пакета;
+- создавать дополнительные функции, которых нет в программе изначально, но которые могут понадобиться пользователю.
+
+## Как это работает
+Работа с макросами выглядит так: сначала пользователь создает набор команд с помощью инструментов внутри Excel, потом запускает выполнение одной кнопкой. В результате то, что вручную пришлось бы делать несколько минут, выполняется автоматически и не требует усилий со стороны человека. Так автоматизируют рутинные процессы.
+
+Сохранить макрос можно локально — для конкретного документа, или глобально — для всех документов.
+
+Когда макрос запускают, Excel выполняет его код — совершает действия, которые в нем описаны. Это похоже на написание и запуск программы при разработке скриптов, но для создания макросов не обязательно уметь программировать.
+
+Запускать макрос можно сколько угодно раз, и он каждый раз будет выполнять заложенные в нем действия.
+
+## VBA: язык для макросов
+«Изнутри» макрос — код на языке программирования VBA, который принадлежит Microsoft. Аббревиатура расшифровывается как Visual Basic Application. Язык основан на Visual Basic, но адаптирован для использования внутри офисного пакета. Код описывает команды, которые нужно выполнить.
+
+![photo](https://blog.skillfactory.ru/wp-content/uploads/2023/02/image002-2197637.gif)
+
+VBA встроен в Excel и другие программы Microsoft Office. Это значит, что они распознают язык и могут выполнять написанные на нем команды, если те поступят в программу. Писать на нем можно изнутри офисного пакета в окне Visual Basic — оно открывается через меню.
+
+Пользователь, досконально знающий VBA, может создавать сложные макросы. Но разбираться в языке и уметь программировать для решения большинства задач не нужно. Создать макрос можно без написания кода вручную.
+
+## Ограничения в использовании макрорекордера
+
+Запись макроса – мощный, но не всемогущий инструмент. У нее есть ряд ограничений. С ее помощью нельзя:
+
+- создавать сложные конструкции, например условные, когда какое-то действие выполняется, только если справедливо некоторое условие, или циклы;
+- придумывать команды, которых нет в Excel изначально, и писать их с нуля;
+- выполнять действия, при которых не нужно выбирать ячейку таблицы — макрорекордер работает только с ячейками, а например, открыть другой лист не сможет.
+
+Но все перечисленное можно сделать вручную с помощью VBA. Более того: код пишется на Visual Basic, и «понимать» его может не только Excel — практически все программы офисного пакета. Поэтому макрос, написанный самостоятельно, может взаимодействовать поочередно с несколькими программами, например загружать в Excel данные из Access. Возможность работы «за пределами» Excel специфична для кода, написанного вручную.
+
+![photos](https://blog.skillfactory.ru/wp-content/uploads/2023/02/image007-8895532.png)
+
+## Что лучше: писать код или записывать действия
+
+ Макрорекордер чуть менее функционален; но есть еще одна деталь. Макрорекордер избыточен. Это значит, что при автоматической записи в макрос добавляется много лишнего, «мусорного» кода, и программы не оптимизированы. Потому они могут выполняться чуть медленнее, чем написанные вручную, и их тяжелее читать другим пользователям.
+
+Это не значит, что от записи действий нужно отказываться. Нет, запись макросов — хороший способ сэкономить время на их создании. Но если вы знаете, что с вашей макрокомандой потом будет работать другой человек, или хотите выполнить какое-то сложное ресурсоемкое действие, лучше воспользоваться ручной записью.
+
+В начале работы с макросами пользователь обычно не знаком с VBA или знаком, но слабо. Поэтому использование макрорекордера на этом этапе вполне оправдано и закономерно, помогает разобраться с тем, как работают макросы. Умение писать код на VBA приходит со временем, если человек постепенно учится.
+
+
+

+ 60 - 11
Лекции/PHP/PHP.md

@@ -1,22 +1,71 @@
-# PHP 
+# PHP
 
-**Инструментарий. Выбор IDE**
-PHP относится к группе так называемых "интерпретируемых" или "скриптовых" языков. Это означает, что файл с командами PHP хранится на сервере просто как текстовый файл, а специальная программа-интерпретатор выполняет его ("интерпретирует") каждый раз, когда пользователь запросил страницу, связанную с этим скриптом.
+PHP (Hypertext PreProcessor, «препроцессор гипертекста») — это скриптовый язык программирования. Имеет открытый исходный код. Изначально создавался для разработки веб-приложений, но в процессе обновлений стал языком общего назначения.
 
-На самом деле всё обстоит несколько сложнее: интерпретатор сначала производит синтаксический анализ всех задействованных файлов, потом проводит компиляцию исходных текстов, и только после этого выполняет скомпилированный код. Под компиляцией в PHP понимается перевод срипта из текстового представления в внутренний формат интерпретатора.
+![photo](https://blog.skillfactory.ru/wp-content/uploads/2023/02/php.png)
 
-Неоспоримое достоинство PHP (как и любого скриптового языка) - возможность быстрого исправления ошибок кода "на лету". Т.е. программисту не нужно устанавливать и запускать специальный редактор типа Visual Studio и перекомпилировать весь исходный код. Достаточно подключиться к серверу, открыть файл скрипта в обычном блокноте и исправить ошибку.
+## Где и для чего используется PHP
+Язык программирования PHP спроектировал датский программист Расмус Лердорф в 1995 году как инструмент для создания интерактивных и динамических веб-сайтов. Расшифровывается как «Hypertext Preprocessor» (гипертекстовый предобработчик). Сейчас PHP активно используют веб-разработчики для создания сайтов и веб-приложений. Это наименее конкурентный язык для работы. Его использует большинство сервисов, и, скорее всего, ситуация не изменится в ближайшие 10 лет. Поэтому специалисты очень востребованы.
 
-В принципе, любой, даже очень сложный сайт можно сделать в стандартном блокноте. Только это займёт очень много времени и сил. Специально для Web-разработчиков созданы специальные программы-редакторы, существенно ускоряющие процесс разработки. Выбор конкретной программы - дело привычек и вкуса. мы рассмотрим наиболее значимые на сегодняшний день продукты: PHP Designer, Delphi for PHP и Zend Studio
+Основная область применения — разработка скриптов, которые работают на стороне сервера. Также можно создавать скрипты командной строки и GUI-приложения (приложения с графическим интерфейсом пользователя).
 
-**PHP Designer** - программа наиболее лёгкая в освоении, но и наиболее бедная по функциям. В программу заложена подсветка синтаксиса всех основных web-языков, легко ставится и настраивается. Наверное, лучший вариант для разработки одностраницных скриптов. Из недостатков можно отметить очень слабую поддержку многофайловых проектов, отсутствие средств для работы с базами данных, слабая поддержка контекстной справки и автодополнения.
+PHP используется в проектах разных масштабов: от браузерной игры и социальной сети до крупных веб-приложений в интернете, таких как Facebook, ВКонтакте, Google, W3C, Yahoo, NASA. На PHP написаны многие системы управления контентом (CMS), например Drupal, WordPress, Joomla. Также он использовался при разработке популярных фреймворков для создания сайтов, например Yii2, Laravel, Symfony.
 
-**Delphi for PHP** ([http://www.codegear.com/](http://www.codegear.com/products/delphi/php)) - более комплексное решение, предоставляемое компанией CodeGear. Главное отличие от всех остальных продуктов - возможность графического проектирования интерфейсов с описанием событий. Это значит, что разработчику при проектировании достаточно мышкой "бросить" на форму кнопку, привязать к ней список команд и кнопка будет работать без дополнительных усилий! Все необходимые функции будут добавлены стандартными библиотеками, входящими в состав Delphi for PHP. Серьёзных недостатков у Delphi for PHP не отмечено, программа удобная в работе, с понятным и настраиваемым интерфейсом, есть встроенный веб-сервер для отладки скриптов. Огорчает только слишком сильная привязанность к собственным классам и библиотекам.
+## Свойства PHP
+PHP — язык с динамической типизацией. Это означает, что переменная не определяется жестко и заранее (если число, то int, если строка — string). Динамическая типизация позволяет присваивать одной и той же переменной несколько значений: она может быть массивом, строкой, числом, объектом и т. д. Динамическая типизация удобная и гибкая, но приводит к потреблению большого количества оперативной памяти и уменьшает скорость работы.
 
-И, наконец, **Zend Studio** ([http://www.zend.com](http://www.zend.com/)). Авторы этой IDE - разработчики PHP и всевозможных средств для работы с ним. Zend Studio одинаково хорошо подходит как для разработки одностраничных скриптов, так и для разработки сложных порталов с сотнями файлов кода. Подсветка синтаксиса большинства Web-языков, возможность локальной и удалённой отладки скриптов, удобное автодополнение, возможность работы с базами данных и множество других преимуществ. Огорчает только одно - стоимость годовой лицензии почти 400 у.е.
+Также PHP — интерпретируемый язык. Это означает, что код, который написан на PHP, не компилируется (преобразуется в машинный), а выполняется строка за строкой с помощью программы-интерпретатора, которая читает каждую из них и выполняет то, что там указано.
 
-К сожалению, для начинающих разработчиков, все перечисленные программы - платные. Однако есть много достойных бесплатных вариантов, вполне достаточных для освоения основ. Например - **PHP Expert Editor** - мощный и бесплатный редактор с подсветкой синтаксиса, подстановкой функций и переменных, встроенными шаблонами скриптов, настраиваемыми ярлыками, плагинами и многим другим. По запросу "бесплатный редактор PHP" Гугл и Яндекс выдают более полумиллиона ссылок, так что программу можно найти на любой вкус.
+Возможности
+Вот некоторые из ключевых возможностей PHP:
 
-Итак, выбор за вами. Для начала вполне достаточно **PHP Expert Editor** или **Notepad++**. Ведь всё, что нам понадобится в первых уроках - удобный текстовый редактор c подсветкой синтаксиса. Несколько позже, когда вы привыкнете к языку и особенностям работы, можно будет задуматься о приобретении более мощной среды разработки.
+- Динамические веб-страницы: PHP позволяет создавать динамические веб-страницы, которые могут адаптироваться к пользовательскому вводу и предоставлять интерактивные функции.
+- Обработка форм: PHP легко интегрируется с HTML-формами, что делает его идеальным для обработки данных, отправляемых с веб-страниц.
+- Работа с базами данных: PHP имеет широкую поддержку для множества систем управления базами данных (например, MySQL, PostgreSQL, SQLite), что делает его отличным выбором для создания веб-приложений с базами данных.
+- Работа с файлами: PHP предоставляет функции для чтения, записи и обработки файлов на сервере, что полезно для управления содержимым сайта.
+- Создание сессий: PHP может создавать и управлять сессиями пользователей, что полезно для отслеживания состояния пользователя между запросами.
+- Работа с изображениями: PHP позволяет манипулировать изображениями, изменять их размеры, форматы и многое другое.
+- Создание API: PHP может использоваться для создания веб-сервисов и API, что делает его полезным для разработки клиент-серверных приложений.
+- Интеграция с другими технологиями: PHP может легко интегрироваться с другими технологиями, такими как HTML, CSS, JavaScript, что позволяет создавать полноценные веб-приложения.
+- Множество библиотек и фреймворков: Существует множество библиотек и фреймворков на PHP, которые упрощают разработку и предоставляют готовые решения для различных задач.
+- Кросс-платформенность: PHP поддерживается на различных операционных системах (Windows, Linux, macOS) и работает с различными веб-серверами (Apache, Nginx).
 
+## Чем PHP отличается от других языков программирования
 
+CSS- и НТМL-файлы, как и файлы изображений, сервер отправляет сразу клиенту (браузеру), независимо от содержания. В отличие от них PHP-файлы содержат код, который интерпретируется на сервере. Клиент (браузер) получает не сам PHP-код, а результат его исполнения, который, как правило, является чистым CSS и HTML. Пользователь не может увидеть исходный код программы. Это хорошо с точки зрения безопасности, так как в этом случае трудно понять логику сайта.
+
+PHP хранит состояние, созданное в текущий момент времени. В отличие от классических компилируемых языков программирования, которые работают все время от запуска до остановки программы, PHP-скрипт начинает выполняться с момента обращения веб-сервера и заканчивает (забывает все, что знал), когда возвращает сгенерированный пакет данных обратно веб-серверу.
+
+## Версии PHP и их различия
+- PHP 3.0. Первая версия, напоминающая современный интерпретатор, вышла в 1997 году. Главное преимущество — возможность расширения ядра и добавления дополнительных модулей сторонними разработчиками. В версии 3.0 появилась поддержка ООП-синтаксиса. Также был усилен и сам синтаксис языка.
+
+- PHP 4.0. Появилась в 2000 году и получила обновленный движок Zend Engine (название сложилось из имен его создателей — владельцев Zend Technologies). Значительно улучшилась производительность. Версия стала поддерживать больше серверов и HTTP-сессий. Обработка вводимой пользователем информации стала безопаснее. Были созданы несколько новых языковых конструкций.
+
+- PHP 5.0. Вышла в 2004 году. Появлению предшествовали серия пререлизов и долгая разработка. Язык управляется обновленным ядром Zend Engine 2.0 с принципиально новой объектной моделью и прочими дополнениями.
+
+- PHP 7.0. Вышла в 2015 году. Увеличилась производительность: появилась возможность обрабатывать больший объем трафика теми же ресурсами веб-сервера. В новой версии стало доступно указывать тип возвращаемых из функции данных, добавился контроль передаваемых типов для данных и новые операторы.
+
+- PHP 8.0. Это последний вариант, который был выпущен в конце 2020 года. Язык получил поддержку union-типов (структур данных или значений, которые могут иметь несколько различных представлений), аннотации (атрибуты), а также компиляцию байт-кода в машинный код во время работы программы (JIT-компиляцию). Microsoft решили не поддерживать версию 8.0 для Windows, поэтому теперь эту работу проводят участники из сообщества, заинтересованные в работе PHP на операционной системе.
+
+## Плюсы и минусы
+PHP, как и любой язык программирования, имеет свои преимущества и недостатки:
+
+Плюсы
+
+- Для PHP есть множество баз данных, фреймворков и библиотек.
+- Язык бесплатный, код находится в открытом доступе.
+- Язык гибкий и предоставляет много свободы.
+- PHP совместим практически со всеми современными серверами.
+- Простой синтаксис.
+- PHP подходит новичкам, ему легко научиться и практиковать полученные знания можно почти сразу.
+- Язык имеет простую систему объектов и классов
+
+Минусы
+
+- Для работы с PHP желательно знание HTML и CSS.
+- Из-за простоты и гибкости PHP сложно поддерживать. Написать плохой код очень легко, найти ошибку — тяжело.
+- PHP — не очень производительный язык. Его конкурент JavaScript быстрее.
+- Из-за смеси PHP и HTML на многостраничных сайтах может быть затруднительно найти необходимую часть кода.
+- В названиях функций стандартной библиотеки отсутствует четкая система: одни имеют сокращения и подчеркивания, другие — нет. Иногда в названиях функций для работы со строками встречаются обозначения str, а иногда их не бывает. 
+
+Для устранения недостатков PHP многие разработчики используют фреймворки, такие как Laravel, Symfony или Yii, которые предоставляют инструменты и структуру для более структурированной и безопасной разработки.

+ 71 - 0
Лекции/VisualBasic/Visual Basic.md

@@ -0,0 +1,71 @@
+# Visual Basic
+
+Visual Basic — компьютерный язык (точнее, семейство языков), созданный и развиваемый корпорацией Microsoft, а также интегрированная среды разработки. Является дальнейшим развитием языка QuickBasic (также разработанного Microsoft), от которого унаследовал общую концепцию, стиль и синтаксис. 
+Однако, развитие Visual Basic пошло в сторону процедурного, объектного, компонентного и событийного программирования. Язык активно используется как для разработки Windows-приложений, так и для создания ПО для других платформ. Visual Basic можно скачать и использовать как отдельно, так и в составе Microsoft Visual Studio. 
+
+## История развития
+История Visual Basic началась в 1991 году, когда на основе синтаксиса QuickBasic компания Microsoft выпустила первую версию нового языка для своей операционной системы Windows. Новшеством, выделяющим новинку, стала связь с графическим интерфейсом, ранее реализованная программистом Аланом Купером в прототипе Tripod. Но именно в Visual Basic 1.0 эта реализация достигла нужного уровня. В том же году вышла версия языка для операционной системы MS-DOS с конвертором кода для Windows.
+
+Первые версии языка были не слишком популярны, потому что по своему синтаксису и возможностям практически не отличались от QBasic, за исключением связки с графическим интерфейсом. Второй билд был дополнен функцией подсветки синтаксиса, среда разработки стала проще и понятнее. 
+
+Популярность Visual Basic начала расти с выходом версии 3.0 (1993 год). В нее были внесены существенные изменения — в частности, появилась возможность взаимодействовать с базами данных Access, а графический интерфейс переработали так, что работать с языком стало просто даже людям, не имеющим навыков в программировании. 
+
+В 1995 году вышла версия 4.0, одновременно с релизом Windows 95 — первой по-настоящему популярной версией этой операционной системы. Эта связка сделала Visual Basic действительно востребованным языком среди программистов. Среди ее ключевых отличий — возможность разработки как 32-, так и 16-разрядных приложений для Windows, а также появление полноценного компилятора, существенно увеличивающего скорость выполнения программ. 
+
+Начиная с версии 7.0, выпущенной в 2002 году, Microsoft резко изменила концепцию Visual Basic. Фактически, это уже был новый язык, хотя и позиционирующийся как логическое развитие предыдущего. Новая версия получила название Visual Basic.NET, она не имела обратной совместимости с предыдущими релизами. Ключевым отличием стало то, что код теперь стал полностью управляться фреймворком NET Framework Common Language Runtime. 
+
+## Версии языка Visual Basic
+Таким образом, в семействе языков Microsoft Visual Basic можно выделить несколько основных версий.
+
+- Visual Basic Classic (классический). 
+Это первая версия языка, главные отличия которого заключались в основанных на QBasic общей концепции и синтаксисе, а также жесткая привязка к своей среде разработки и операционной системе. Иначе говоря, программировать на нем можно было только в собственной IDE и ОС Windows. Среда разработки предлагала пользователю широкий набор инструментов, таких как встроенный отладчик, функция просмотра переменных и структур в режиме реального времени, всплывающие подсказки, подсветка синтаксиса и т.д. Из-за этого программировать на классическом Visual Basic вне IDE (например, в обычном текстовом редакторе) было просто невозможно. Эта версия перестала развиваться в 2002 году, когда ее сменил Visual Basic .NET.
+
+- Visual Basic for Applications (VBA).
+Фактически, это тот же самый Classic, только немного упрощенный и адаптированный под разработку макросов и прикладного ПО для конкретных приложений. Язык программирования VBA встроен в структуру офисного пакета Microsoft Office (Word, Excel и т.д.), а также программных продуктов от других разработчиков — например, AutoCAD, CorelDraw, SolidWorks. Основанный на стандарте Microsoft COM (Component Object Model), он может задействовать все имеющиеся в ОС Windows COM-компоненты и ActiveX. Иными словами, можно исключительно с помощью средств, например, CorelDraw и языка VBA создавать приложения для Microsoft Office.  
+
+- Visual Basic Scripting Edition (VBScript). 
+Тоже урезанная версия классического Visual Basic, но направленная на разработку скриптов для приложений, использующих технологию Active Scripting. VBS применяется, например, для написания клиентских сценариев в Internet Explorer и серверного кода в веб-приложениях, автоматизации административных функций в ОС семейства Windows и т.д.
+
+- Visual Basic.NET. 
+- Версия, появившаяся в 2002 году и представлявшая собой другой язык, в котором старые методы, применявшиеся в классическом Visual Basic, использовать уже было нельзя. Его основное отличие — тесная интеграция с платформой .NET Framework, выпущенной в то же время. В этой версии акцент смещен с индивидуальных особенностей самого языка на возможности фреймворка. Концептуально Visual Basic.NET. развивался в сторону объектно-ориентированности, он стал поддерживать полиморфизм, статическую типизацию, наследование и перезагрузку операторов. Благодаря этому с помощью него стало возможным создание действительно крупных программных продуктов, которые одновременно были гибкими и масштабируемыми. Несмотря на популярность и очевидные достоинства Visual Basic.NET., компания Microsoft прекратила его поддержку в 2020 году в пользу другого своего языка C#. «Вижуал Бэйсик» продолжает поставляться в комплексе с новыми версиями платформы .NET, однако обновлений для него не планируется. 
+
+## Описание Visual Basic
+
+Язык программирования «Вижуал Бэйсик» относится к категории императивных. Написанные на нем программы представляют собой строгую последовательность команд (приказов — отсюда и название «императивный»), причем каждая последующая использует данные, полученные при исполнении предыдущей. Кроме того, Visual Basic объединяет в себе элементы сразу нескольких парадигм (методологий) программирования:
+
+- Процедурной — можно разбивать задачу на более мелкие и группировать последовательно выполняемые операторы кода в подпрограммы для их решения;
+- Объектно-ориентированной — программу на Visual Basic можно представить как совокупность взаимодействующих друг с другом объектов, каждому из которых присвоен определенный класс, образующий определенную иерархию;
+- Компонентно-ориентированной — она представляет программу как совокупность отдельных независимых языковых конструкций (модулей или компонентов) исходного кода, предназначенных для повторного использования;
+- Событийно-ориентированной — в Visual Basic имеются встроенные обработчики событий, таких как использование программистом клавиатуры и мыши, сообщений, поступающих от других приложений, активности операционной системы и т.д.
+
+Главной особенностью Visual Basic, отличающей его от большинства языков, стало применение в программировании графического интерфейса. Фактически, пользователь мог создать свое приложение как конструктор, используя готовые визуальные компоненты (например, кнопки управления, поля и т. д.), расставляя их в нужном порядке методом drag and drop (перетащи и брось). Так как эти компоненты имеют свои атрибуты и обработчики событий, они будут реагировать на действия пользователя при исполнении программы. Это дает возможность разрабатывать реально работающие (хоть и ограниченные по функционалу) приложения даже человеку, не имеющему никакого опыта в программировании.  
+
+## Преимущества Visual Basic
+Простота. Язык программирования Visual Basic унаследовал от своего прародителя QuickBasic простой синтаксис, который доступен для изучения новичкам в программировании. Поэтому для многих программистов именно с этого языка начинается знакомство с разработкой программ и веб-приложений. Кроме того, в нем прекрасно реализована концепция визуального проектирования, которая также снижает порог вхождения.
+
+- Высокая скорость разработки. Благодаря графическому интерфейсу на Visual Basic можно быстрее разрабатывать приложения. Особенно это касается программных продуктов для операционной системы MS Windows, в которую уже интегрированы многие нужные инструменты и библиотеки. С разработкой приложений для других платформ дело обстоит сложнее, их пользователям нужно скачивать и устанавливать эти компоненты отдельно. 
+
+- Мощная поддержка. Visual Basic долгое время был одним из основных продуктов компании Microsoft — одной из самых богатых и влиятельных IT-корпораций мира. Поэтому он до сих пор имеет значительную коммерческую и техническую поддержку (хотя проект прекратил развитие еще 2 года назад), информационное сопровождение в виде многочисленных учебников, инструкций, видеоуроков, справочных материалов и т. д. Это упрощает программистам поиск решений для возникающих перед ними задач.
+
+- Защита от ошибок. В Visual Basic используются указатели и доступ к памяти. Это делает написанные на нем приложения более стабильными. Кроме того, за счет постоянной автоматической компиляции программы по ходу ее написания в P-код (абстрактный машинный код для виртуальных машин) есть возможность быстро найти ошибку, не перезапуская приложение. Наличие удобного редактора с функциями автоматической подстановки, подсветки синтаксиса также повышают надежность работы конечного продукта.
+
+- Сильная типизация. В классическом Visual Basic была реализована строгая система типов. Это исключало возникновение многих неочевидных ошибок, которые свойственны языкам со слабой типизацией. С другой стороны, это же и в некоторой степени ограничивало возможности Visual Basic как императивного языка.
+
+## Недостатки Visual Basic
+- Ограниченная кроссплатформенность. На Visual Basic можно писать программы только под операционные системы Microsoft Windows и Apple MacOS. Хотя усилиями энтузиастов были разработаны некоторые способы, допускающие разработку приложений на VB для других платформ, особого распространения они не получили ввиду своей сложности.
+
+- Строгая привязка к среде программирования. Писать код на Visual Basic можно только с помощью поставляемых вместе с ним инструментов. С одной стороны, интегрированная среды разработки дает широкие возможности программисту. С другой — язык нельзя использовать вне ее, например, в обычном текстовом редакторе. В частности, это не позволяет писать на нем код многим программистам-пользователям операционных систем Linux. 
+
+- Медленная работа программ. Практически все функции языка реализованы посредством библиотеки времени исполнения. Она выполняет множество необязательных действий для проверки и преобразования типов, что существенно замедляет работу приложений. У небольших приложений этот недостаток практически незаметен за счет избыточности ресурсов современных компьютеров, но при выполнении больших и многопоточных программ становится ощутимым. 
+
+## Применение Visual Basic
+Язык программирования Visual Basic создавался корпорацией Microsoft прежде всего как инструмент разработки продуктов для своей операционной системы Windows. Эта привязка сохранилась на протяжении всего срока развития и поддержки VB, за что неоднократно подвергалась критике. Однако, в рамках своей экосистемы он позволяет разрабатывать самые разные программные продукты:
+
+- плагины и макросы для приложений Microsoft Office, CorelDraw, AutoCAD и некоторых других профессиональных программных продуктов;
+- графические интерфейсы приложений, чему очень способствуют встроенные в язык инструменты визуальной разработки;
+- консольные приложения, запускаемые с помощью командной строки — например, файловые менеджеры, веб-браузеры, текстовые редакторы и т.д.;
+- игры — как правило, текстовые (вроде «О, счастливчик!») или несложные графические программы из-за того, что реализовать на Visual Studio полноценные проекты с развитой графикой и физикой очень сложно; 
+- специализированные приложения для выполнения математических, научных и статистических расчетов;
+- серверные и веб-приложения и другие программные продукты. 
+
+Еще одной сферой, где Visual Basic популярен до сих пор, остается обучение программированию. Благодаря тому, что небольшое приложение на нем можно создать, практически не прописывая код, с помощью исключительно визуальных инструментов, это сильно снижало порог вхождения пользователя. При этом язык (точнее, его среда разработки) наглядно демонстрирует принцип работы компьютерной программы, взаимодействие ее компонентов и т. д.