Автор Анна Евкова
Преподаватель который помогает студентам и школьникам в учёбе.

История возникновения интегрированных средств разработки

Содержание:

ВВЕДЕНИЕ

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

1. История возникновения интегрированных средств разработки

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

  1. Подготовка текста исходной кода программы на языке компилятора;
  2. Подача входных данных в виде текста программы на вход компилятора;
  3. Получить от компилятора результаты его работы в виде набора объектных файлов;
  4. Подача набора полученных объектных файлов вместе с необходимыми библиотеками подпрограмм на вход компоновщику;
  5. Получение от компоновщика единого, исполняемого файла программы и дальнейшая подготовка его к выполнению с помощью загрузчика;
  6. Постановка программы на выполнение и при необходимости использование отладчика для проверки правильности выполнения программы.

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

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

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

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

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

2. Современные интегрированные среды разработки

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

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

Создание интегрированных сред разработки стало возможным благодаря бурному развитию персональных компьютеров и появлению развитых средств интерфейса пользователя (сначала текстовых, а потом и графических). Их появление на рынке определило дальнейшие развитие такого рода технических средств. Пожалуй, первой удачной средой такого рода можно признать интегрированную среду программирования Turbo Pascal на основе языка Pascal производства фирмы Borland [1]. Ее широкая популярность определила тот факт, что со временем все разработчики компиляторов обратились к созданию интегрированных средств разработки для своих продуктов.

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

Дальнейшее развитие средств разработки также тесно связано с повсеместным распространением развитых средств графического интерфейса пользователя. Такой интерфейс стал неотъемлемой составной частью многих современных ОС и так называемых графических оболочек. Со временем он стал стандартом де-факто практически во всех современных прикладных программах. Это не могло не сказаться на требованиях, предъявляемых к средствам разработки программного обеспечения. В их состав были сначала включены соответствующие библиотеки, обеспечивающие поддержку развитого графического интерфейса пользователя и взаимодействие с функциями API (Application Program Interface, прикладной программный интерфейс) операционных систем [2]. А затем для работы с ними потребовались дополнительные средства, обеспечивающие разработку внешнего вида интерфейсных модулей. Такая работа была уже более характерна для дизайнера, чем для программиста.

Для описания графических элементов программ потребовались соответствующие языки. На их основе сложилось понятие ресурсов (resources) прикладных программ. Ресурсами прикладной программы будем называть множество данных, обеспечивающих внешний вид интерфейса пользователя этой программы, и не связанных напрямую с логикой выполнения программы. Характерными примерами ресурсов являются: тексты сообщений, выдаваемых программой; цветовая гамма элементов интерфейса; надписи на таких элементах, как кнопки и заголовки окон и т.п.

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

Простая среда разработки включает в себя редактор текста, компилятор и/или интерпретатор, средства автоматизации сборки и отладчик. Когда эти компоненты собраны в единый программный комплекс, говорят об интегрированной среде разработки (Integrated development environment – IDE). Такая среда представлена одной программой, не выходя из которой можно производить весь цикл разработки. В состав комплекса, кроме перечисленных выше компонент, могут входить: средства управления проектами, система управления версиями, разнообразные инструменты для упрощения разработки интерфейса пользователя, стандартные заготовки ("мастера"), упрощающие разработку стандартных задач, и др.

Обычно среда разработки включает в себя: текстовый редактор, компилятор и/или интерпретатор, средства автоматизации сборки и отладчик. Иногда она также содержит средства для интеграции с системами управления версиями и разнообразные инструменты для упрощения конструирования графического интерфейса пользователя. Многие современные среды разработки также включают в себя: браузер классов, инспектор объектов и диаграмму иерархии классов для использования при объектно-ориентированной разработке ПО. Хотя и существуют среды разработки, предназначенные для нескольких языков программирования, такие как Eclipse, NetBeans, Embarcadero RAD Studio или Microsoft Visual Studio, обычно среды разработки предназначается для одного определенного языка программирования – как, например, Visual Basic, Delphi, Dev-C++.

Иногда достаточно использовать только одну интегрированную среду разработки, но для больших проектов в среду разработки включаются разнородные продукты разных фирм, разных версий. Пример такого набора: файловый менеджер, набор вспомогательных утилит и пакетных файлов, С++Builder – как IDE, PLSQL Developer – для работы с СУБД Oracle, Cristal Reports – для создания отчетов, StarTeam – для ведения версий и поддержки коллективной работы.

2.1 Разновидности интегрированных сред разработки

Условно мы можем допустить разделение IDE на “облачные” (онлайн), взаимодействие с которыми происходит посредством веб-браузера и классические, инсталлируемые, поставляемые в программных пакетах (Desktop) или компилируемые, гибридные: поддерживающие работу с несколькими языками программирования и позволяющими вести разработку нетривиальных систем и сервисов.

Примерами существующих онлайн (веб) интегрированных сред разработки являются сервис Kodenvy.

Новое поколение IDE разительно отличается от себя же 2-3-летней давности. Ниже перечислим основные преимущества Kodenvy:

  1. Архитектура предполагает расположение различных сервисов на выделенных серверах, то есть сборка проектов (если это Java) проистекает на отдельном сервере с предустановленными Maven и Ant. Билд артефакты копируются на runtime сервер, сердцем которого стал Docker. Благодаря Docker-у, приложение запускается в изолированном контейнере. Пользователю предоставляется возможность собирать образы из своих Dockerfile-ов. Таким образом, Codenvy не ограничиваются предоставлением виртуалки с определенной ОС. Предустановленные машины собраны на базе Debian Jessie. Поддержка Java.
  2. Codenvy уделяет больше внимания тому языку, на котором, собственно, и написан сам сервис. Package view и список использованных библиотек для дерева проекта, подсветка синтаксиса, полноценный code-assistant, показывающий ошибки и предлагающий варианты их исправления, навигация по коду. Maven и Ant на борту. Автоматическое обновление зависимостей при сохранении build файлов.
  3. Открытый исходный код. Codenvy шагает в объятия Eclipse, а собственный SDK потихоньку перекочевал в проект Eclipse Che.
  4. поддержка Git, удобный Datasource плагин, CodeMirror с его плюшками, Google App Engine плагин, возможность сделать pull request в GitHub репозиторий прямо из воркспейса (новый “бранч”, “форк” и “пулл-реквеcт” делаются автоматически).
  5. Codenvy также уделяют внимание вопросу клонирования окружений, когда в 1 клик можно поделиться проектом вместе с его окружением и настройками. По сути, чтобы попробовать Codenvy вовсе не нужно регистрироваться. Проектом можно поделиться с помощью вот такой кнопки, которую Codenvy называет Factory.

Из недостатков следует отметить следующие аспекты:

  1. Отсутствие поддержки скриптовых языков. Автоматическая компиляция для PHP, Python, Ruby отсутствует. Разработка расширений для этих языков делегирована на сообщество.
  2. Ограничение по ресурсам и времени раннера. Для бесплатных аккаунтов выставлено ограничение в 1 час, после чего Docker контейнер останавливается и удаляется. На данный момент машины не сохраняются, а воссоздаются заново отсутствует синхронизация файлов, то есть изменения, сделанные в runtime никак не отобразятся на дереве проекта.

2.1.1 Интегрированные среды разработки с веб-интерфейсом

Рассмотрим ещё одного представителя “облачных” интегрированных сред разработки, а именно сервис Cloud9.

AWS Cloud9 – это облачная интегрированная среда разработки (IDE), которая позволяет создавать, запускать и отлаживать код на любом компьютере, используя только браузер. IDE Cloud9 предоставляет программное обеспечение и инструменты, необходимые для динамических языков программирования, включая JavaScript, Python, PHP, Ruby, Go и C++. Теперь не нужно тратить время на установку программ и настройку компьютера для разработки. При запуске среды разработки Cloud9 на управляемом инстансе EC2 клиент получает в свое распоряжение интерфейс командной строки AWS с преднастроенной аутентификацией и полный доступ с привилегиями sudo. Кроме того, Cloud9 интегрирован с сервисом AWS CodeStar, что обеспечивает все инструменты для успешного развертывания приложений в AWS.

Полнофункциональный редактор

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

Преимущества Cloud9:

  1. Полноценная поддержка JavaScript, PHP, Python. Здесь следует отметить следующие аспекты, а именно: автодополнение кода, подсветка ошибок, режим отладки, навигация по коду, поиск файлов, функций. Для “скриптовых” языков существует возможность подключения к FTP и SSH серверам. Так, например, можно создать виртуальную машину на сервисах Digital Ocean или Amazon, и подключиться к ним из Cloud 9 “воркспейса”. Таким образом, пользователю предоставляется простой и удобный интерфейс взаимодействия между IDE и продуктовой средой.

2. Исходный код Cloud9 представлен на GitHub. В 2016 году компания-разработчик сервиса Cloud9 поглощена корпорацией Amazon, вскоре после этого среда разработки включена в состав публично-облачной платформы Amazon Web Services. AWS Cloud9 – это облачная интегрированная среда разработки (IDE), которая позволяет создавать, запускать и отлаживать код, используя только браузер. Она включает в себя редактор кода, отладчик и терминал. Cloud9 включает предустановленный набор основных инструментов для популярных языков программирования, включая JavaScript, Python, PHP и другие. Это избавляет от необходимости устанавливать программы или настраивать систему разработки перед запуском новых проектов. Поскольку IDE AWS Cloud9 – облачная среда, над проектами можно работать из дома, офиса или любого другого места: достаточно иметь подключенный к Интернету компьютер. Помимо этого Cloud9 предоставляет эффективный процесс разработки бессерверных приложений, позволяя без труда определять ресурсы, отлаживать код и переключаться между локальным и удаленным исполнением таких приложений. С помощью Cloud9 пользователи могут быстро подключать к среде разработки других членов своей команды, осуществлять парное программирование и в режиме реального времени отслеживать код, добавленный другими.

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

4. Совместное создание кода в режиме реального времени. AWS Cloud9 упрощает совместную работу над кодом. Несколькими щелчками мыши можно подключить коллег к общей среде разработки, чтобы работать над кодом вместе. Во время совместной работы все участники могут в режиме реального времени видеть код, создаваемый другими, и общаться в чате прямо в IDE.

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

6. Терминал прямого доступа. AWS Cloud9 имеет собственный терминал, который предоставляет доступ с привилегиями sudo к управляемому инстансу Amazon EC2, на котором размещена среда разработки, а также интерфейс командной строки AWS с предварительно настроенной аутентификацией. Это упрощает быстрый запуск различных команд и обеспечивает прямой доступ к сервисам AWS.

7. Быстрый запуск новых проектов. AWS Cloud9 упрощает запуск новых проектов. Среда разработки Cloud9 содержит встроенный инструментарий более чем для 40 языков программирования, включая Node.js, JavaScript, Python, PHP, Ruby, Go и C++. Это избавляет от необходимости выполнять установку и настраивать файлы, SDK и подключаемые модули для процессов разработки, позволяя приступить к созданию кода для популярных стеков приложений за считанные минуты. Так как среда Cloud9 является облачной, можно без труда поддерживать несколько параллельных сред разработки для изолирования ресурсов проекта.

Встроенные инструменты для разработки бессерверных приложений AWS Cloud9 позволяет легко создавать бессерверные приложения: в состав среды разработки входит все необходимое для написания и отладки кода таких приложений. Cloud9 включает в себя SDK, инструменты и библиотеки для разработки бессерверных приложений. Кроме того, Cloud9 поддерживает Serverless Application Model (SAM), что позволяет упростить определение ресурсов для бессерверных приложений с помощью шаблонов SAM. Cloud9 также предоставляет возможность локального редактирования и отладки функций AWS Lambda, избавляя от необходимости выгружать код в консоль Lambda для отладки.

Среды разработки AWS Cloud9 можно запускать на управляемом инстансе Amazon EC2 на основе Linux или на любом существующем собственном сервере под управлением Linux. При настройке Cloud9 достаточно выбрать вариант подключения SSH для соединения с сервером Linux, который может находиться где угодно – в облаке AWS, в облаке любого другого провайдера либо в локальной сети.

В состав AWS Cloud9 входит терминал, предоставляющий полный доступ к управляемому инстансу Amazon EC2 с привилегиями sudo. Это дает возможность выполнять различные команды, например отправлять изменения кода в репозитории Git, компилировать код или просматривать вывод командной строки со своих серверов. В терминале установлен интерфейс командной строки AWS с преднастроенной аутентификацией, что позволяет работать с сервисами AWS и управлять ими прямо из командной строки.

2.1.2 Инсталлируемые интегрированные среды разработки

Рассмотрим несколько “Desktop” в “классическом” понимании интегрированных сред разработки. Примером такой среды является Eclipse, которая относится к консолидированным технологиям, годом широкого распространения которой является 2007-й. Система изначально представляла собой полноценную интегрированную среду для разработки программного обеспечения на языке Java. В дальнейшем стали поддерживаться и другие языки. Первые версии были неудобны, поскольку целевой продукт вынуждено включал лишнюю функциональность. Начиная с третьей версии была переработана архитектура всей системы с целью максимального разделения модулей и взаимосвязи между ними [3]. При этом модули Eclipse, образованные из согласованных наборов классов, давали функциональность целых подсистем, таких как подсистемы помощи, обновления продукта, обучения, презентации, многоязыковой поддержки и множество других. Разрабатывая приложение, теперь можно постепенно наращивать функциональность, подключая уже готовые бесплатные компоненты. В терминологии Eclipse эти компоненты называются "подключаемыми модулями" или "плагинами" (Plugins). Такая технология становится типичной для развитых операционных сред. Платформа на основе этой технологии получила название RCP (Reach Client Platform), а приложения, соответственно, названы RCP-приложениями.

Графический интерфейс Eclipse построен с применением графической библиотеки SWT, которая опирается на графику используемой операционной системы. Предусмотрена возможность создания настраиваемых стилей, которые позволяют произвольно менять как внешний вид приложения, так и поведение составляющих его компонентов. Многооконный интерфейс MDI, реализованный в ОС Windows еще в версии 3.1, заменен на альтернативный интерфейс, основанный на закладках. Этот интерфейс похож на интерфейс MS Visual Studio, но имеет и отличия. Режимы работы могут объединяться в одну панель либо размещаться каждый в отдельной панели. Имеется встроенный механизм чередования панелей или механизм "быстрых" панелей, когда они не занимают место на экране, а вызываются кнопками по необходимости.

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

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

Такая, сложная на первый взгляд, организация интерфейса оказывается удобной именно благодаря использованию проекций. Проекцию можно рассматривать как набор визуальных компонент для выполнения конкретно поставленных задач. Например, проекция "Java" содержит необходимый набор для разработки java-приложений, а проекция "CVS" предназначена для оперирования удаленным репозиторием проектов при коллективной разработке. Каждая проекция имеет свой набор меню и панелей инструментов, состав которых можно настраивать и сохранять. Начальный макет проекции определяется разработчиком, но его можно изменять, открывая и закрывая панели и встраивая их в различные места окна рабочей среды.

Основные визуальные компоненты рабочей среды – панели и редакторы.

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

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

Следующим представителем IDE является MS Visual Studio.

Microsoft Visual Studio - это интегрированная среда разработки (IDE) от Microsoft. Он используется для разработки компьютерных программ, а также веб-сайтов, веб-приложений, веб-сервисов и мобильных приложений. Visual Studio использует платформы разработки программного обеспечения Microsoft, такие как Windows API, Windows Forms, Windows Presentation Foundation, Windows Store и Microsoft Silverlight. Он может производить как собственный код, так и управляемый код.

Visual Studio поддерживает 36 различных языков программирования и позволяет редактору кода и отладчику поддерживать (в разной степени) практически любой язык программирования при условии, что существует специальная языковая служба. Встроенные языки включают C, C ++, C ++ / CLI, Visual Basic .NET, C #, F #, JavaScript, TypeScript, XML, XSLT, HTML и CSS. Поддержка других языков, таких как Python, Ruby, Node.js и M среди других, доступна через плагины. Java (и J #) поддерживались в прошлом[4].

Самая базовая версия Visual Studio, версия Community, доступна бесплатно. Слоган для Visual Studio Community Edition - «Бесплатная полнофункциональная IDE для студентов, разработчиков программного обеспечения с открытым исходным кодом и отдельных разработчиков».

В настоящее время поддерживается версия Visual Studio 2019.

Visual Studio не поддерживает встроенный язык программирования, решение или инструмент; вместо этого он позволяет подключать функциональность, закодированную как VSPackage. После установки функциональность доступна в качестве Сервиса. Среда IDE предоставляет три службы: SVsSolution, которая предоставляет возможность перечисления проектов и решений. SVsUIShell, который обеспечивает функциональность окон и пользовательского интерфейса (включая вкладки, панели инструментов и окна инструментов) и SVsShell, которая занимается регистрацией VSPackages. Кроме того, IDE также отвечает за координацию и обеспечение связи между службами. Все редакторы, дизайнеры, типы проектов и другие инструменты реализованы как VSPackages. Visual Studio использует COM для доступа к VSPackages. Visual Studio SDK также включает в себя структуру управляемых пакетов (MPF), которая представляет собой набор управляемых оболочек вокруг COM-интерфейсов, позволяющих писать пакеты на любом языке, совместимом с CLI. Однако MPF не обеспечивает всех функций, предоставляемых интерфейсами Visual Studio COM[5]. Затем эти службы можно использовать для создания других пакетов, которые добавляют функциональные возможности в среду IDE Visual Studio.

Поддержка языков программирования добавляется с помощью специального пакета VSPackage, называемого языковой службой. Языковая служба определяет различные интерфейсы, которые реализация VSPackage может реализовать для добавления поддержки различных функций. Функциональные возможности, которые можно добавить таким образом, включают раскраску синтаксиса, завершение операторов, сопоставление фигурных скобок, всплывающие подсказки с информацией о параметрах, списки членов и маркеры ошибок для фоновой компиляции. Если интерфейс реализован, функциональность будет доступна для языка. Языковые услуги реализуются на основе языка. Реализации могут повторно использовать код из синтаксического анализатора или компилятора для языка. Языковые службы могут быть реализованы как в собственном коде, так и в управляемом коде. Для нативного кода можно использовать как нативный COM-интерфейс, так и Babel Framework (часть Visual Studio SDK). Для управляемого кода MPF включает в себя оболочки для написания управляемых языковых сервисов.

Visual Studio не включает встроенную поддержку контроля версий, но определяет два альтернативных способа интеграции систем контроля версий с IDE. Source Control VSPackage может предоставить собственный настраиваемый пользовательский интерфейс. Напротив, плагин управления исходным кодом, использующий MSSCCI (интерфейс управления исходным кодом Microsoft), предоставляет набор функций, которые используются для реализации различных функций управления исходным кодом, со стандартным пользовательским интерфейсом Visual Studio. MSSCCI был впервые использован для интеграции Visual SourceSafe с Visual Studio 6.0, но позже был открыт через Visual Studio SDK. Visual Studio .NET 2002 использовал MSSCCI 1.1, а Visual Studio .NET 2003 использовал MSSCCI 1.2. Visual Studio 2005, 2008 и 2010 используют MSSCCI версии 1.3, в которой добавлена ​​поддержка переименования и удаления распространения, а также асинхронного открытия.

Visual Studio поддерживает запуск нескольких экземпляров среды (каждый со своим собственным набором VSPackages). Экземпляры используют разные кусты реестра (см. Определение MSDN термина «куст реестра» в используемом здесь смысле) для хранения своего состояния конфигурации и различаются по их AppId (идентификатор приложения). Экземпляры запускаются специфичным для AppId .exe, который выбирает AppId, устанавливает корневой куст и запускает IDE. VSPackages, зарегистрированные для одного AppId, интегрированы с другими VSPackages для этого AppId[6]. Различные редакции продукта Visual Studio создаются с использованием разных идентификаторов приложений. Продукты выпуска Visual Studio Express устанавливаются со своими собственными AppId, но продукты Standard, Professional и Team Suite имеют один и тот же AppId. Следовательно, можно установить выпуски Express вместе с другими выпусками, в отличие от других выпусков, которые обновляют ту же установку. Профессиональная версия включает расширенный набор VSPackages в стандартной версии, а набор команд включает расширенный набор VSPackages в обеих других редакциях. Система AppId используется оболочкой Visual Studio в Visual Studio 2008.

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

Как и любая другая IDE, она включает редактор кода, который поддерживает подсветку синтаксиса и завершение кода, используя IntelliSense для переменных, функций, методов, циклов и запросов LINQ. IntelliSense поддерживается для включенных языков, а также для XML, каскадных таблиц стилей и JavaScript при разработке веб-сайтов и веб-приложений. Предложения автозаполнения появляются в немодальном списке над окном редактора кода, рядом с курсором редактирования. В Visual Studio 2008 и более поздних версиях его можно временно сделать полупрозрачным, чтобы увидеть препятствующий ему код. Редактор кода используется для всех поддерживаемых языков.

Редактор кода Visual Studio также поддерживает установку закладок в коде для быстрой навигации. Другие вспомогательные средства включают в себя сворачивающиеся блоки кода и добавочный поиск, в дополнение к обычному текстовому поиску и поиску регулярных выражений. Редактор кода также включает буфер обмена из нескольких элементов и список задач. Поддерживает фрагменты кода, которые являются сохраненными шаблонами для повторяющегося кода и могут быть вставлены в код и настроены для проекта, над которым выполняется работа. Инструмент управления для фрагментов кода также встроен. Эти инструменты отображаются как плавающие окна, которые можно настроить на автоматическое скрытие, когда они не используются или прикреплены к боковой части экрана. Редактор кода Visual Studio также поддерживает рефакторинг кода, включая, среди прочего, переупорядочение параметров, переименование переменных и методов, извлечение интерфейса и инкапсуляцию членов класса внутри свойств[7].

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

Visual Studio включает в себя отладчик, который работает как отладчик уровня источника и как отладчик уровня компьютера. Он работает как с управляемым кодом, так и с собственным кодом и может использоваться для отладки приложений, написанных на любом языке, поддерживаемом Visual Studio. Кроме того, он также может подключаться к запущенным процессам, отслеживать и отлаживать эти процессы. Если исходный код для запущенного процесса доступен, он отображает код во время его выполнения. Если код недоступен, он может показать разборку. Отладчик Visual Studio также может создавать дампы памяти и загружать их позже для отладки. Многопоточные программы также поддерживаются. Отладчик можно настроить на запуск при сбое приложения, работающего вне среды Visual Studio.

Отладчик позволяет устанавливать точки останова (которые позволяют временно остановить выполнение в определенной позиции) и наблюдать (которые отслеживают значения переменных по ходу выполнения). Точки останова могут быть условными, то есть они срабатывают при выполнении условия. Код можно перешагнуть, то есть запустить по одной строке (исходного кода) за раз. Он может либо входить в функции для отладки внутри него, либо перешагивать через него. Выполнение тела функции недоступно для ручной проверки. Также поддерживает редактирование и позволяет редактировать код во время отладки. При отладке, если указатель мыши находится над какой-либо переменной, ее текущее значение отображается во всплывающей подсказке («подсказки данных»), где его также можно изменить, если необходимо. Во время кодирования отладчик Visual Studio позволяет вызывать определенные функции вручную из окна инструмента Immediate. Параметры метода предоставляются в окне «Немедленно».

Дизайнер Visual Studio включает в себя множество визуальных дизайнеров, чтобы помочь в разработке приложений. Эти инструменты включают в себя:

  1. Конструктор Windows Forms используется для создания приложений с графическим интерфейсом с использованием Windows Forms. Расположение может контролироваться путем размещения элементов управления внутри других контейнеров или фиксации их на стороне формы. Элементы управления, отображающие данные (например, текстовое поле, список и представление сетки), могут быть связаны с источниками данных, такими как базы данных или запросы. Элементы управления с привязкой к данным можно создавать, перетаскивая элементы из окна «Источники данных» на поверхность конструктора. Пользовательский интерфейс связан с кодом с использованием модели программирования, управляемой событиями. Дизайнер генерирует код приложения на C # или VB.NET.
  2. WPF Designer.
  3. Дизайнер WPF под кодовым названием Cider был представлен в Visual Studio 2008. Как и дизайнер Windows Forms, он поддерживает метафору перетаскивания. Он используется для создания пользовательских интерфейсов, ориентированных на Windows Presentation Foundation. Он поддерживает все функции WPF, включая привязку данных и автоматическое управление макетом.

В 2019 году Visual Studio были произведены некоторое новые функции. Рассмотрим их далее:

  1. Новый интерфейс создания проектов;
  2. Новые возможности установки обновлений – теперь можно выбрать способ установки обновлений Visual Studio и полностью контролировать его («Сервис -> Параметры»), а также обновления Visual Studio загружаются в фоновом режиме, только когда компьютер бездействует;
  3. Доступна совместная работа с другими пользователями с помощью среды Visual Studio Live Share, которая устанавливается по умолчанию;
  4. Переработан интерфейс среды, в частности увеличено вертикальное пространство для кода;
  5. Добавлен вид расширения: «Бесплатное», «Платное» и «Пробная версия» – теперь гораздо легче распознать версию расширения, также добавлены соответствующие теги, для более удобного поиска;
  6. Система управления версиями – теперь можно временно сохранить изменения, чтобы работать над другими задачами, это возможно благодаря поддержке временного хранилища Git средствами Git в Team Explorer;
  7. Очистка кода одним щелчком – теперь отреагировать на предупреждения и рекомендации среды можно одним нажатием кнопки;
  8. Усовершенствованный поиск – теперь поиск выдает более точные результаты (а также поиск стал возможен в окнах отладки);
  9. Индикатор хода выполнения сборки – теперь мы можем наблюдать более подробные сведения о ходе выполнения сборки, полезно, если проект крупный и на его сборку затрачивается много времени.

VS2019 выглядит великолепно. Что касается внешнего вида, в старой Visual Studio есть несколько изменений:

Рис 1 - Изменения в интерфейсе

Рис 2 - Обновленный интерфейс режима отладки

Поле поиска Ctrl + Q переместилось вправо от меню и немного изменило функциональность. Новые функции включают нечеткий поиск, более быстрые результаты и функцию «поиска в Интернете»:

Рис 3 - Интерфейс поиска

Проблема может быть ошибкой, предупреждением или предложением. Предложения являются новой функцией в VS2019. Идея состоит в том, чтобы найти и исправить проблемы со стилем и форматированием в вашем коде. Например, вы можете автоматически применять ключевое слово var, когда это возможно. Или автоматически сортировать и удалять ненужные с помощью операторов. Это можно настроить:

Рис 4 - Интерфейс автоматической настройки форматирования

Каждая новая версия Visual Studio реализует множество функций, которыми ReSharper обладает некоторое время. Однако, в отличие от JetBrains, задача команды Microsoft намного сложнее, поскольку им необходимо поддерживать широкий спектр языков программирования и конфигураций.

Были добавлены новые функции отладки. Отладка имеет несколько интересных новых дополнений в VS 2019. Шаговые действия (F10, F11,…) теперь намного быстрее[8].

В окно Locals добавлены возможности поиска:

Рис 5 - Интерфейс окна “Locals”

Здесь можно искать во всем или только в настоящее время расширенные элементы. Также можно определить, на сколько уровней должен идти поиск. Это крайне удобное дополнение, но в его текущей форме есть некоторые ограничения и предостережения:

  1. Поиск довольно медленный, так как он индивидуально оценивает каждое выражение в дереве.
  2. Поиск останавливается на каждом найденном объекте и продолжается только при нажатии «Найти далее» (F3). Поскольку поиск идет медленно и останавливается на каждой находке, вы не можете просмотреть все элементы и запустить его во время обеденного перерыва.
  3. По тем же причинам, что и упомянутые, вы не можете получить счетчик всех поисковых запросов.
  4. Поиск ограничен окнами Locals, Autos и Watch, поэтому вы не можете использовать его в DataTip или QuickWatch отладчика.

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

Сравнение OzCode и Visual Studio:

  1. Поиск Visual Studio занял 17 секунд для 100 объектов Customer, где последним был Билл Гейтс. Поиск OzCode занял менее 1 секунды на 5000 клиентов. Он также имеет множество дополнительных возможностей, таких как условный поиск и автозаполнение. Вы можете попробовать OzCode 4.0 EAP (который уже поддерживает VS2019) и убедитесь сами.
  2. В отличие от функции поиска OzCode, которая в настоящее время поддерживает только C #, поиск в Visual Studio поддерживает Visual Basic, C ++ и любой другой язык программирования, который поддерживается в VS. В целом, это хорошее начало столь необходимой функции.

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

Рис 6 - Окно создания нового проекта

IntelliCode не является частью Visual Studio 2019. В настоящее время расширение Visual Studio, которое вы можете установить.

Рис 7 - Всплывающее окно “IntelliCode”

Данное расширение добавит предложенные варианты автозаполнения в ваш Intellisense. За ним стоит технология машинного обучения, которая сканирует проекты с открытым исходным кодом на GitHub и изучает наиболее распространенные действия, которые может выполнить программист. Таким образом, в вышеприведенном случае AI узнал, что после Replace наиболее распространенным является использование Length, Contains, StartsWith, Replace или EndsWith.

Следующий представитель интегрированных сред разработки: IntelliJ IDEA - это интегрированная среда разработки Java (IDE) для создания компьютерного программного обеспечения. Он разработан JetBrains (ранее известный как IntelliJ) и доступен в виде лицензии сообщества Apache 2. Они оба могут быть использованы для коммерческой разработки.

Первая версия IntelliJ IDEA была выпущена в январе 2001 года и была одной из первых доступных Java IDE с интегрированными возможностями навигации по коду и рефакторинга кода.

В отчете Infoworld за 2010 год IntelliJ получил наивысшую оценку центра тестирования из четырех лучших инструментов Java-программирования: Eclipse, IntelliJ IDEA, NetBeans и JDeveloper.

В декабре 2014 года Google анонсировала версию 1.0 Android Studio, IDE с открытым исходным кодом для приложений Android, основанную на версии сообщества IntelliJ IDEA с открытым исходным кодом. Другие среды разработки, основанные на инфраструктуре IntelliJ, включают AppCode, CLion, DataGrip, GoLand, PhpStorm, PyCharm, Rider, RubyMine, WebStorm и MPS.

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

IDEA обеспечивает интеграцию с инструментами сборки / упаковки, такими как grunt, bower, gradle и SBT. Он поддерживает системы контроля версий, такие как Git, Mercurial, Perforce и SVN. Базы данных, такие как Microsoft SQL Server, ORACLE, PostgreSQL и MySQL, доступны напрямую из IDE.

IntelliJ поддерживает плагины, с помощью которых можно добавить дополнительные функции в IDE. Плагины можно загрузить и установить либо с веб-сайта хранилища плагинов IntelliJ, либо с помощью встроенной в IDE функции поиска и установки плагинов. В настоящее время в версии IntelliJ IDEA Community доступно 1495 плагинов, а в версии Ultimate - 1626.

Редакции Community и Ultimate отличаются поддержкой различных языков программирования, как показано в следующей таблице. Поддерживается как в сообществе, так и в Ultimate Edition: Java, JavaScript, CoffeeScript, HTML/XHTML/HAML, CSS/SASS/LESS XML/XSL/XPath, YAML, ActionScript/MXML, Python, Ruby, Haxe, Groovy, Scala, SQL, PHP, Kotlin, Clojure, Си, C++ и Go.

Ряд языков поддерживается посредством плагинов сторонних разработчиков, в частности, так реализована поддержка OCaml, GLSL, Erlang, Fantom, Haskell, Lua, Mathematica, Rust, Perl5.

А так же был бесплатный плагин от Atlassian для IntelliJ, доступный для интеграции с JIRA, Bamboo, Crucible и FishEye. Однако программное обеспечение IDE-Connector было прекращено 1 июня 2015 года.

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

Эти две редакции также различаются по поддержке для систем контроля версий программного обеспечения и версий.

IntelliJ IDEA может остаться продуктивным благодаря ряду функций для эффективной разработки.

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

Рис 8 - Интерфейс IntelliJ IDEA

Для удобства можно скрыть все окна инструментов, нажав Ctrl + Shift + F12, а затем восстановить макет, снова нажав этот ярлык.

Панель навигации - это компактная альтернатива окну инструментов проекта. Для доступа к панели навигации нажмите Alt + Home.

Рис 9 - Интерфейс панели проекта

Большинство компонентов в IntelliJ IDEA, в том числе окна инструментов и всплывающие окна, обеспечивают быстрый поиск.

Большую часть времени работа с конечным набором файлов, и это нужно для того, чтобы быстро переключаться между ними. Экономия времени здесь - это действие под названием «Последние файлы», вызываемое нажатием Ctrl + E. По умолчанию основное внимание уделяется последнему доступному файлу. Обратите внимание, что вы также можете открыть любое окно инструмента с помощью этого действия:

Рис 10 - Интерфейс окна “Последние файлы”

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

Переход к файлу работает аналогичным образом, нажав Ctrl + Shift + N, но используется для файлов и папок. Чтобы перейти к папке, необходимо ввести символ косой черты.

Переход к символу доступен нажатием Ctrl + Shift + Alt + N и позволяет найти метод или поле по его имени. Для переключения между файлами это - нажать Ctrl + F12. Всплывающее окно показывает структуру файла и позволяет быстро перейти к любому из них:

Рис 11 - Всплывающее окно структуры файла

Если нужно открыть файл в определенном окне инструмента (или в Finder / Explorer), сделать это с помощью действия «Выбрать в», нажав Alt + F1:

Рис 12 - Окно обзора файлов проекта

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

  1. IntelliJ IDEA предлагает полный набор автоматизированных рефакторингов кода, которые при правильном использовании приводят к значительному повышению производительности.
  2. Поиск помогает быстро найти все фрагменты кода, ссылающиеся на символ в каретке (курсоре), независимо от того, является ли символ классом, методом, полем, параметром или другим оператором. При нажатии Alt + F7 появляется список ссылок, сгруппированных по типу использования, модулю и файлу.

При необходимости установить пользовательские параметры для алгоритма поиска использований, следует нажать Ctrl + Shift + Alt + F7 или первую кнопку на правой панели с результатами поиска.

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

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

IntelliJ IDEA автоматически применяет стиль кода, который вы настроили в настройках стиля кода, при редактировании, и в большинстве случаев вам не нужно явно вызывать действие «Переформатировать код».

Полезные ярлыки форматирования: по умолчанию IntelliJ IDEA использует обычные пробелы для отступов вместо вкладок. Если есть файлы с большим количеством отступов, вы можете оптимизировать их размер, включив опцию Использовать символ табуляции в настройках стиля кода Java.

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

Чтобы быстро выполнить операцию VCS для текущего файла, каталога или всего проекта, используйте всплывающее окно операций VCS.

Рис 13 - Интерфейс системы контроля версий

На вкладке «Локальные изменения» окна инструмента контроля версий отображаются локальные изменения: как поэтапные, так и не поэтапные.

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

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

В данной интегрированной среде разработки весьма удобна работа с инструментами сборки (Maven / Gradle) .После того как импортировали или создали свой проект Maven / Gradle, можно редактировать его файлы pom.xml или build.gradle непосредственно в редакторе. Любые изменения в базовой конфигурации сборки в конечном итоге необходимо будет синхронизировать с моделью проекта в IntelliJ IDEA.

3. Перспективы и развитие интегрированных сред разработки

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

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

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

ЗАКЛЮЧЕНИЕ

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

БИБЛИОГРАФИЯ

  1. https://www.jetbrains.com/help/idea/discover-intellij-idea.html
  2. https://oz-code.com/blog/honest-review-of-visual-studio-2019-preview-1/
  3. С. Давыдов, А. Ефимов. IntelliJ IDEA. Профессиональное программирование на Java. — СПб.: БХВ, 2005. — 800 с. — (В подлиннике). — ISBN 5941576072.
  4. Ник Рендольф, Дэвид Гарднер, Майкл Минутилло, Крис Андерсон. Visual Studio 2010 для профессионалов = Professional Visual Studio 2010. — М.: «Диалектика», 2011. — С. 1184. — ISBN 978-5-8459-1683-9.
  5. Алекс Макки. Введение в .NET 4.0 и Visual Studio 2010 для профессионалов = Introducing .NET 4.0: with Visual Studio 2010. — М.: «Вильямс», 2010. — С. 416. — ISBN 978-5-8459-1639-6.
  6. Карли Уотсон, Кристиан Нейгел, Якоб Хаммер Педерсен, и др. Visual C# 2008: базовый курс. Visual Studio® 2008 = Beginning Visual C# 2008. — М.: «Диалектика», 2009. — С. 1216. — ISBN 978-5-8459-1532-0.
  7. Пауэрс Л., Снелл М. Microsoft Visual Studio 2008 = Microsoft Visual Studio 2008 Unleashed by Lars Powers and Mike Snell. — C.: «БХВ-Петербург», 2008. — С. 1200. — ISBN 978-5-9775-0378-5.
  8. Майо Д. Самоучитель Microsoft Visual Studio 2010 = Microsoft Visual Studio 2010: A Beginner's Guide (A Beginners Guide). — C.: «БХВ-Петербург», 2010. — С. 464. — ISBN 978-5-9775-0609-0.