![](/stc/img/evkova.png)
Программные средства создания клиентских программ (на примере платформы «1С:Предприятие 8»)
Содержание:
Введение
В работе любого современного разработчика программного обеспечения существуют инструменты, ставшие практически обязательными для каждодневного применения. Если говорить о программировании, таким инструментом, в первую очередь, будет интегрированная среда разработки или IDE (Integrated Development Environment).
Актуальность исследования заключается в том, что в настоящее время имеется большое разнообразие как сред разработки, так и языком программирования, а деятельность предприятий требует создания большого количества разнообразных клиентских приложений.
Объект исследования – среды разработки клиентских программ.
Предмет исследования – особенности выбора и использования среды разработки клиентских программ.
Цель исследования – рассмотреть особенности выбора и использования среды разработки клиентских программ.
Необходимо решить несколько задач:
- рассмотреть понятие клиентских программ;
- рассмотреть виды клиентских приложений (на примере платформы «1С:Предприятие 8»);
- проанализировать средства управления требованиями;
- проанализировать средства моделирования бизнес-процессов, приложений и данных;
- проанализировать средства разработки приложений;
- проанализировать средства тестирования и оптимизации приложений;
- проанализировать средства управления коллективной работой и контроля версий;
- провести анализ языков программирования для создания клиентских приложений;
- провести анализ распространённых средств разработки клиентских приложений.
Практическая значимость исследования заключается в том, что современный рынок инструментов создания приложений не ограничивается собственно средствами разработки — во многих случаях они играют в процессе разработки далеко не самую главную роль. Кроме того, важной характеристикой современного рынка средств управления жизненным циклом приложений является интеграция этих инструментов между собой и появление наборов средств, исчерпывающих все или почти все задачи, связанные с реализацией проектов по разработке приложений.
1. Теоретические особенности разработки клиентских программ
1.1. Понятие клиентских программ
Термин «клиент» пришел к нам из Древнего Рима, в исконном значении слова клиент – это свободный гражданин Римской Империи, который находится в зависимости от патрона (знатного гражданина), но в то же время клиент пользуется покровительством и защитой патрона.
В информатике, то клиент – это программное средство или физическое устройство, которое посылает запросы серверу (поставщику услуг).
Если говорить про локальную сеть или, как частный случай, корпоративную сеть, то клиентский компьютер – это компьютер, который пользуется вычислительными мощностями сервера при необходимости выполнения той или иной операции.
Рассмотрим также понятие клиентских приложений. В общем случае клиентское приложение – это приложение, отправляющее запросы серверу с целью получения той или иной информации. Термин клиент в области IT чаще всего применяется именно к приложениям. Если говорить о сфере веб, то типичным примером клиентского приложения является браузер, которые отправляют серверу специальные HTTP сообщения, которые получили название HTTP запрос, серверы в свою очередь отправляют клиенту сообщения, которые называются HTTP ответы.
Запросы клиента содержат специальные HTTP методы, которые позволяют указать серверу на то, как он должен обрабатывать запрос (некоторые запросы позволяют получить информацию с сервера, некоторые удалить информацию, а некоторые записать, всё зависит от метода). HTTP сервер, отправляя ответ, сообщает клиенту о том, как он понял запрос при помощи специальных кодов состояния.
Если говорить про MySQL сервер, то у него есть клиент, который позволяет выполнять SQL запросы к базе данных из командой строки (это специальное приложение), а также есть клиент с графическим интерфейсом, который позволяет управлять базами данных при помощи мышки. В качестве сервера, к которому делают запросы браузеры, можно привести пример сервера Apache. Таким образом, клиентское приложение – это программа, которая позволяет человеку взаимодействовать с сервером и получать требуемые услуги.
Клиентским называется то программное средство, которое способствует прямому взаимодействию с конечными пользователями. Речь может идти не только о приобретении организацией какого-то одного серийного программного средства, но и о прикладной программе, разработкой которой занималась определенная компания за счет своих или арендованных инструментальных средств[1].
Если когда-то такая функция, как взаимодействие пользователя с сервером предоставлялись в ограниченном виде, то в настоящее время никаких границ в данной сфере уже не существует. К тому же появилась реализация многофункциональной продукции и продукции, которые тесно интегрированы друг с другом, выступает в виде единой оболочки. Кроме того, клиентское ПО, которое начинает пользоваться особой популярностью в настоящее время, характеризуются следующими двумя основными параметрами:
1. Предпочтение отдается полной автономности программного продукта. Другими словами, особую ценность приобретают те средства, которые не требуют постоянного контроля со стороны администратора.
2. Защищенность клиентской части программного средства от возможной попытки взлома злоумышленниками.
Как можно заметить из всего вышесказанного, клиентское ПО приобрело достаточно широкое распространение. Работа в настоящее время над созданием приложений подобного типа не останавливается ни на секунду.
За счет клиентского программного обеспечения можно значительно упростить работы пользователям с базами данных. Также можно сказать, что в последнее время организации стали отдавать предпочтение тем программным средствам, для которых характерна закрытость программного кода, содержащего реальную информацию. Посредством использования современных технологий удается упростить работу клиента с интерфейсом программы настолько, что можно понять всю суть практически на интуитивном уровне. В этом упрощении есть свои плюсы. Например, пользователь сможет сосредоточиться на выполнение конкретных обязанностей, что в свою очередь ведет к повышению эффективности работы[2].
Имеются и многие другие разнообразные задачи, решить которые можно только со стороны конечного пользователя. Кроме того, для их выполнения зачастую требуются специализированные программы и объекты, такие как графические редакторы и 3D-элементы. Не стоит забывать и про необходимость в некоторых ситуациях таких услуг, как математический анализ.
В современных условиях, когда не существует каких-либо четких границ, появилась необходимость в обеспечении связью с корпоративной сетью. Этого удалось во многом добиться за счет использования клиентского программного обеспечения.
Далеко не все задачи могут быть решены внутри веб-приложений. Довольно часто могут возникать такие ситуации, когда данные передаются с влиянием, которое на них оказывают алгоритмы шифрования. И стоит понимать, что веб-приложения не способны предоставить возможность избавиться от подобных влияний. Этот недостаток возникает по вине открытости кода, которым обладают приложения подобного рода[3].
1.2. Виды клиентских приложений (на примере платформы «1С:Предприятие 8»)
Клиентское приложение - это сервис, установленный на компьютере пользователя в рамках платформы «1С:Предприятие 8», который позволяет интерактивно взаимодействовать пользователю с платформой. Отличается от остальных компонент системы (программ и рабочих процессов), тем, что последние нужны только для программного взаимодействия с другими частями системы или с другими программными объектами[4].
В платформе «1С: Предприятие 8» доступно 4 вида клиентских приложения:
- «Толстый» клиент,
- «Тонкий» клиент,
- Веб-клиент,
- Конфигуратор.
Наглядно возможности клиентских приложений представлены в Таблице 1.
«Толстый» клиент |
«Тонкий» клиент |
Веб-клиент |
Конфигуратор |
|
Разработка прикладных решений |
нет |
нет |
нет |
да |
Работа в локальной сети |
да |
да |
да |
да |
Работа через интернет |
нет |
да |
да |
нет |
Необходимость предварительной установки |
Да, большой дистрибутив |
Да, маленький дистрибутив |
нет |
Да, большой дистрибутив |
Таблица 1 – Клиентские приложения
Рассмотрим их более подробно.
1. «Толстый» клиент
«Толстый клиент» реализует полные возможности программы «1С:Предприятия 8» в плане исполнения прикладного кода. Практически все операции и вычисления производятся на компьютере, где установлено приложение. Однако, у толстого клиента есть минусы. Через интернет работа с базой будет не доступна, а само приложение, которое имеет большой размер дистрибутива, надо установить на локальный компьютер.
2. «Тонкий» клиент
С помощью приложения «Тонкий клиент» возможна работать с информационными базами через интернет. Почти все операции и вычисления производятся на сервере. Приложение «Тонкий клиент» предварительно устанавливается на компьютер клиента. По сравнению с приложением «Толстый клиент» имеет значительно меньший размер дистрибутива.
3. Веб-клиент
Клиентское приложение «Веб-клиент» не требует установки на компьютер. Работа с ним происходит в среде интернет-браузера (Internet Explorer, Mozilla Firefox, Google Chrome или Safari). Для начала работы клиенту достаточно запустить один из перечисленных браузеров, ввести адрес веб-сервера, где размещена информационная база после чего платформа «1С:Предприятия 8» будет доступна для использования.
4. Конфигуратор
С помощью приложения «Конфигуратор» можно разрабатывать и администрировать информационную базу платформы «1С:Предприятия 8»[5] .
2. Программные продукты и средства для разработки клиентских приложений
2.1. Средства управления требованиями
Рассмотрим основные категории средств, которые применяются сегодня различными участниками проектов, связанных с разработкой приложений.
Управление требованиями — одна из самых важных составных частей процесса разработки. От полноты и точности формулировки требований заказчика проекта во многом зависит объем работы, которую придется переделывать.
Как правило, требования формулируются просто в виде текстового документа (например, технического задания), однако сегодня все большее распространение получают средства управления требованиями, позволяющие в течение проекта отслеживать состояние работы над требованием, связать требование с реализующими его модулями и с тестами, проверяющими, удовлетворяет ли продукт данному требованию.
Из наиболее часто применяющихся в мире средств управления требованиями следует отметить Rational Requisite Pro (IBM, www.ibm.com), Borland CaliberRM (Borland, www.borland.com) и Telelogic DOORS (Telelogic, www.telelogic.com). Эти продукты обладают теми или иными средствами интеграции с другими инструментами поддержки жизненного цикла приложений и позволяют генерировать различные документы, содержащие требования к продукту (например, техническое задание или его аналоги). Отметим, что указанные категории инструментов применяются, как правило, в компаниях-разработчиках или в отделах разработки, хотя иногда заказчикам предоставляется упрощенный интерфейс для доступа к хранилищу требований (например, с помощью Web-интерфейса)[6].
2.2. Средства моделирования бизнес-процессов, приложений и данных
Моделирование и проектирование данных также является достаточно важной частью создания готового продукта и применяется во многих компаниях. Инструменты для поддержки этого этапа жизненного цикла приложений можно условно разделить на средства моделирования бизнес-процессов, средства проектирования данных и средства объектно-ориентированного моделирования, при этом многие компании производят инструменты указанных категорий, интегрирующиеся между собой, либо реализуют функциональность нескольких разнотипных средств моделирования в одном продукте. В последнее время подобные инструменты позволяют на основании модели сгенерировать код (серверный или клиентский) или схему базы данных и обладают средствами синхронизации модели с кодом или со структурой базы данных.
К наиболее известным средствам моделирования и проектирования относятся[7]:
- AllFusion Modelling Suite (Computer Associates, www.cai.com), состоящий из нескольких различных инструментов моделирования;
- Oracle Designer, представляющий собой комплексный инструмент, осуществляющий все перечисленные виды моделирования;
- Sybase PowerDesigner, представляющий собой инструмент, в состав которого входят средства создания моделей и объектно-ориентированного моделирования;
- System Architect (Popkin Software), позволяющий осуществлять проектирование данных и структурное моделирование, а также генерировать код клиентских приложений для ряда средств разработки;
- Visio (Microsoft, www.microsoft.com), представляющий собой универсальное средство моделирования данных и приложений (ориентированное главным образом на СУБД и средства разработки производства самой Microsoft);
- Rational Rose и Rational XDE Professional (IBM) — популярные средства объектно-ориентированного UML-моделирования приложений, обладающие средствами интеграции как с другими инструментами самой IBM, так и со средствами разработки некоторых других производителей;
- Together (Borland) — средство UML-моделирования, обладающее на данный момент наиболее совершенными средствами интеграции с различными средствами разработки как компании Borland, так и других производителей (в частности, Microsoft).
Перечисленные инструменты обычно применяются в компаниях-разработчиках или в отделах разработки и изредка — специалистами по сопровождению продуктов. Заказчики и конечные пользователи, за редким исключением, обычно не имеют дела с указанной категорией продуктов.
Отметим, что основная тенденция развития средств моделирования в настоящее время — это появление средств, осуществляющих их интеграцию между собой и с инструментами поддержки других этапов жизненного цикла приложений.
2.3. Средства разработки приложений
Средства разработки приложений подразделяются на средства создания Java/J2EE-приложений, средства создания Windows-приложений, средства создания .NET-приложений, инструменты создания приложений для операционных систем, применяющихся в мобильных устройствах, а также на средства создания приложений для различных версий UNIX/Linux и других платформ.
Из компаний, лидирующих на рынке средств разработки Java-приложений, следует отметить Borland, IBM, Oracle, а к наиболее популярным средствам создания приложений для платформ Windows и Microsoft .NET можно отнести Visual Studio .NET и Borland Delphi. Существует также немало инструментов, относящихся к категории Open Source, в частности предназначенных для расширяемой среды Eclipse, которая в настоящее время активно поддерживается корпорацией IBM.
Редактор - это любая программа, которая позволяет писать компьютерный код. Они варьируются от простого (как любой базовый текстовый редактор) до продвинутого программного обеспечения, такого как Adobe Dreamweaver, Eclipse, JDeveloper, SharpDevelop или Microsoft Visual Studio. Любая программа может быть написана в текстовом редакторе. По мере того, как становится понятнее язык программирования, рекомендуется использовать более продвинутый редактор, поскольку он может сделать кодирование и тестирование кода более эффективным.
Основная цель создания любой компьютерной программы – это заставить машину делать то, что хочет человек. По сути дела программа – набор инструкций, выполняя которые, компьютер совершает необходимые действия или выдает результат. Именно поэтому нередко употребляют словосочетание «написать программу», а не создать её.
Ранее программы создавались в машинных кодах, которые записывались непосредственно в память компьютера и затем запускались на выполнение[8].
Однако программное обеспечение становилось всё сложнее, создавать его в машинных кодах становилось всё более долго и неудобно, поэтому программисты начали облегчать себе жизнь.
Во-первых, они начали придумывать более простые языки программирования.
Во-вторых, они начали создавать специальные инструменты, которые бы помогали им преобразовывать простые языки программирования в машинные коды (ведь принцип выполнения программ на компьютере остался прежним - загрузка в память в машинных кодах).
Так сначала появились текстовые редакторы, ассемблеры и компоновщики, а потом компиляторы и интерпретаторы.
Появилась первая полноценная среда разработки, в которой были все необходимые инструменты для разработки программ.
Для начала определим разницу между текстовым редактором, применяемым для написания программ и полноценной IDE. Если упростить, текстовый редактор – это программа, с помощью которой разработчик взаимодействует непосредственно с кодом как текстом. Используя клавиатуру, с помощью текстового редактора разработчик вводит символы и ключевые слова языка программирования, описывая этими словами некий алгоритм, понятный в дальнейшем компьютеру. Код, написанный на C++ с помощью текстового редактора кода, нужно будет в дальнейшем отправить на компилирование в другую программу – компилятор, который не входит в состав текстового редактора.
Интегрированная среда разработки, в свою очередь, это некий комплекс отдельных инструментов разработчика, позволяющий не только написать код программы, но и скомпилировать этот код в готовое приложение, провести тестирование этой программы, поиск ошибок, рефакторинг и другие действия. В состав современных IDE, как отдельные элементы уже входят:
- текстовый редактор;
- компилятор (или интерпретатор – для интерпретируемых языков программирования);
- отладчик;
- система управления версиями;
- другие инструменты[9].
Современные IDE могут существенно расширять свой функционал благодаря различным плагинам. Стоит отметить, что некоторые текстовые редакторы (например Vim, Visual Studio Code, Emacs), благодаря доступным плагинам, также расширяют свой функционал, доводя его до практически IDE-шных возможностей. Однако, это все же два разных инструмента разработчика. Текстовый редактор предназначен скорее для внесения мелких изменений в код отдельных файлов будущей программы. IDE, в свою очередь, работает с программой комплексно, рассматривая ее в целом как «проект» или набор «проектов», а не как отдельные текстовые файлы с кодом. Отсюда и разница в доступных возможностях этих инструментов.
Рисунок 1 – Среда разработки приложений
Для создания программы достаточно редактора исходного кода и компилятора. Конечно, отладчик тоже не помешает. Кроме того, в современных средствах разработки есть немало других полезных инструментов, которые используются редко, но всё-же могут пригодиться.
Еще несколько лет назад наиболее широко применяющимися для создания приложений инструментами были средства разработки приложений и изредка — средства проектирования данных и генерации отчетов, а говоря о разработке программного обеспечения, многие в первую очередь подразумевали процесс программирования. И хотя в этот период происходило развитие современных методологий разработки приложений, моделирования и управления требованиями, управления самим процессом разработки, оно далеко не всегда сопровождалось созданием адекватных инструментов — требования формулировались в виде документов, диаграммы главным образом иллюстрировали проектную документацию, расчеты стоимости проектов осуществлялись с помощью электронных таблиц[10].
Последние три-четыре года характеризовались массовым появлением и применением средств поддержки жизненного цикла приложений, нередко хорошо интегрированных между собой. В это время различные производители средств разработки (главным образом лидеры рынка — Microsoft, IBM, Oracle, Borland, Computer Associates, Sun Microsystems) начали предлагать инструменты для различных этапов жизненного цикла приложений, таких как определение требований, моделирование и проектирование приложений и данных, создание приложений, документирование, тестирование и внедрение. Эти инструменты нашли свое применение в компаниях и отделах разработки, руководители которых стремились избавиться от рутинной работы и автоматизировать некоторые из процессов, связанных с разработкой приложений. В этот же период произошла заметная консолидация рынка, выразившаяся в приобретении лидирующими в этой области компаниями инструментов других фирм с целью обеспечения поддержки всех этапов жизненного цикла, а также рост популярности средств поддержки жизненного цикла приложений с открытым кодом и объема инвестируемых в них средств[11].
Большинство языков программирования являются высокоуровневыми языками программирования, что означает, что их легко понять, но понять компьютер невозможно. Чтобы компьютер «прочитал» вашу программу, он должен быть скомпилирован или иметь интерпретатор. Ваш язык программирования является решающим фактором того, нужна ли сторонняя программа для компиляции или интерпретации[12].
2.4. Средства тестирования и оптимизации приложений
На этапе тестирования проверяется, удовлетворяет ли приложение сформулированным к нему требованиям, и в продукт вносятся изменения, устраняющие выявленные при тестировании недостатки.
Из наиболее популярных средств тестирования и оптимизации в первую очередь следует отметить набор средств тестирования компании IBM/Rational, инструмент Borland Optimizeit Profiler, интегрирующийся в различные среды разработки, средства тестирования компаний Compuware (www.compuware.com) и Mercury(www.mercury.com).
Характерной особенностью современных средств тестирования является возможность интеграции их со средствами разработки приложений, средствами управления требованиями и иногда — со средствами управления изменениями, а также появление интегрированных сред управления процессом тестирования. Указанная категория инструментов применяется в компаниях-разработчиках или в отделах разработки, а также в обслуживающих их специализированных тестовых лабораториях.
2.5. Средства управления коллективной работой и контроля версий
Средства управления коллективной работой применяются на различных этапах создания приложений и подразделяются на средства управления задачами и проектами, средства контроля версий кода, моделей и документов, средства конфигурационного управления.
Из средств контроля версий наиболее популярными считаются Merant PVCS Version Manager и Microsoft Visual SourceSafe, а из средств управления проектами в первую очередь следует отметить семейство продуктов Microsoft Project. Из средств конфигурационного управления прежде всего нужно назвать Borland StarTeam, а также ряд инструментов компании IBM.
Современные средства управления коллективной работой характеризуются, как правило, наличием централизованного репозитария, хранящего составные части проекта, и средств интеграции с другими инструментами управления жизненным циклом приложений. Применяются они чаще всего в компаниях-разработчиках или в отделах разработки, но нередко к таким инструментам обращаются и заказчики, и специалисты по сопровождению ПО[13].
3. Классификация и распространённость языков программирования и средств разработки клиентских приложений
3.1 Анализ языков программирования для создания клиентских приложений
Любой, кто заинтересован в разработке программного обеспечения, например, программы, игры или онлайн-сервиса, должен начать с изучения языка программирования. Существует много разных языков, и создание новой программы требует время на обучение и больше информации, чем может предоставить одна эта страница.
Выбор языка для изучения может быть проблемой сам по себе. Создание программы с большим количеством функций часто требует достаточного владения одним или несколькими языками программирования.
При этом базовое понимание концепций практически любого языка программирования может помочь вам начать работу. Список языков программирования включает примеры различных типов программного обеспечения, которые может создать каждый язык.
Например, одним из первых языков программирования, которые я начал изучать была Java. Потому, что с помощью его можно было создавать программы для мобильных – на J2ME. Сейчас J2ME уже не так актуально, так как рынок заполонили смартфоны на андроиде и айфоны.
Для того, чтобы создавать сайты, часто используют HTML, JavaScript и PHP. На самом деле сайт можно создать на той же Java или C#, но все же гораздо проще и уместно для большинства проектов будет использовать именно PHP, Perl или Python.
В общем плане выбор языка программирования зависит от типа программы или сценария, который вы хотите создать. Например, Visual Basic является популярным из-за его относительной легкости. Основы программирования можно изучить с помощью Pascal.
Другие популярные языки - C, C ++ и C # используются для создания игр, приложений, драйверов, операционных систем, а также многих программ, которые запускаются на компьютере. Java и инструментарий Qt подойдет тем, цель кого создавать кроссплатформенное ПО – не только для Windows, но и Linux, Mac.
Важно определить, какой язык программирования выбрать исходя из требований к проекту.
Выбор языка, на котором пишут программы, невероятно важен - он поможет определить, будет ли проект успешным или нет, а ошибки часто приводят к неудачному итогу. Такие ошибки, которые могут привести к отсутствию планирования, включают:
- потраченное время на обучение,
- неправильное проектирование,
- увеличение форм-фактора,
- постоянные правки,
- повреждение деталей.
Ниже приведен метод оценки требований проекта, чтобы определить, какой язык может быть лучше для того или иного приложения.
В таблице 2 приведены некоторые из наиболее распространенных языков, их преимущества, а также области, которые создают больше проблем.
Скорость обработки |
Читабельность |
Простота |
GUI (графический интерфейс) |
Графика 2D |
Графика 3D |
Кросс-платформенность |
|
С |
8 |
6 |
2 |
3 |
5 |
8 |
7 |
С++ |
8 |
6 |
3 |
4 |
6 |
8 |
7 |
С# |
7 |
7 |
5 |
6 |
7 |
7 |
2 |
Java |
6 |
7 |
6 |
7 |
7 |
6 |
10 |
Python |
2 |
5 |
10 |
8 |
10 |
1 |
10 |
VB.net |
6 |
10 |
8 |
10 |
5 |
2 |
2 |
Assembler |
10 |
0 |
0 |
0 |
0 |
0 |
0 |
Первой задачей при выборе языка является перечисление основных требований проекта, за которым следуют второстепенные требования.
Затем, используя таблицу, оценивают каждый язык в соответствии с требованиями проекта, а язык с наивысшим баллом, скорее всего, будет оптимальным. Опытные программисты знают, как заставить язык работать под требования[14].
Оценка языка программирования производится по следующим показателям:
Скорость обработки: как быстро программа будет выполнена.
Читаемость: насколько сложно будет читать код.
Простота: насколько легко будет работать и использовать библиотеки.
GUI (графический интерфейс пользователя): как легко будет работать с приложением графического интерфейса пользователя.
Графика (2D): простота использования 2D-графики и ее скорости.
Графика (3D): простота использования 3D-графики и ее скорости.
Кросс-платформенность: как легко будет запускать программу на разных платформах (Windows, Mac).
Самый простой метод использования таблицы включает в себя поиск требований, а затем суммирование баллов, чтобы посмотреть, какой язык выходит на первое место.
Однако некоторые требования могут быть более важными, чем другие, поэтому можно также добавить вес к значениям оценки в зависимости от важности критериев.
Например, если скорость обработки в два раза важнее, чем читаемость, умножают показатели скорости обработки на 2.
Так, например, многие языки программирования используют фигурные скобки для разделения кода и имеют четкие точки входа (например, main()). Однако Python этого не делает, и это может сделать код похожим на блоки текста, которые гораздо труднее прочитать. Скобки четко показывают код-блок, а точка с запятой в конце строк, указывают, что код на этой строке является инструкцией вместо описания. В то время как Python гордится своей читабельностью, важно понимать, что большие программы на Python могут стать сложными для чтения[15].
Так, Яндекс провел опрос своих разработчиков, чтобы выяснить на каких языках программирования они пишут. Об этом сообщается в блоге Яндекса, где говорится следующее: спрашивали у разработчиков, на чём они пишут, чтобы выяснить — какие языки программирования в Яндексе самые популярные. В опросе приняли участие больше половины разработчиков компании, расклад получился такой:
Рисунок 2 – Результаты опроса работников Яндекс об используемом языке программирования[16]
Многие разработчики используют в работе несколько языков, поэтому мы просили их выбрать один — тот, на котором они пишут больше всего. В лидерах оказались пять языков: C++, JavaScript, Java, Python и Perl. Все эти языки разные, и каждый лучше решает свою задачу. Поэтому они по-разному используются в Яндексе.
C++ — классический язык для больших и сложных систем, где критически важна производительность. На нём обычно пишутся самые важные, базовые компоненты приложений. Например, на C++ написано ядро поиска Яндекса, Браузер и Карты.
На JavaScript в основном пишут интерактивные элементы сайтов, такие как анимация или браузерные игры. Этот язык очень широко используется в браузерах для написания интерфейсов — того, с чем напрямую взаимодействуют пользователи. На JavaScript написаны веб-интерфейсы всех сервисов Яндекса.
Java — это универсальный язык, на котором можно написать любое приложение, будь то игра Flappy Bird или веб-сервер, обрабатывающий миллионы запросов в минуту. Несмотря на название имеет мало общего с JavaScript. Разработка на нём пойдёт быстрее, чем на C++, однако программа может получиться чуть медленнее. Особенности Java позволяют создавать программы, которые работают практически на любом устройстве — от телефона до микроволновки. На Java у нас написаны, например, Маркет и Музыка.
Python — это дружелюбный к программисту язык с простым синтаксисом. С него хорошо начинать изучение программирования. Python широко используется в системном администрировании, но подходит для решения почти любых задач, кроме обработки больших объёмов данных. На Python многое делать проще и быстрее, чем на C++, но программа будет не такой производительной. Это разумный выбор, когда производительность не очень важна или задачу нужно сделать быстро. На Python написана серверная часть Диска, а ещё он используется в Директе, внутренних сервисах и многих других проектах.
Perl был создан для обработки текстов — например, для извлечения фактов из текстаЭто лаконичный, но непростой язык, который, однако, хорошо решает свою задачу. В Яндексе его используют, например, для анализа данных в баннерной системе и в разработке серверной части некоторых сервисов — например, Директа.
С точки зрения задачи выбор языка — это поиск равновесия между эффективностью программы, квалификацией программиста и временем, потраченным на работу.
С точки зрения разработчика, выбор языка — это вопрос предпочтений. Кому-то действительно нравится сам язык, кому-то — задачи, которые он решает. Например, одни предпочитают фундаментальные задачи и пишут базу поиска на C++, а другие любят делать то, что видно пользователям, и пишут интерфейсы на JavaScript. Третьи пишут на каком-то языке просто потому, что знают его досконально. А некоторые, наоборот, готовы пробовать новое и участвуют в разных проектах[17].
3.2. Анализ распространённых средств разработки клиентских приложений
Сред разработки на C++ очень много, и для каждой цели есть своя, особенная IDE. Рассмотрим несколько самых популярных сред разработки и редакторов исходного кода для C++.
Visual Studio – это среда разработки от Microsoft. Visual Studio в основном известна для написания приложений, включающих в себя .NET. Это полный набор инструментов, позволяющий произвести точную отладку и настройку приложения. Есть как Community-версия, так и PRO.
Visual Studio предназначена не только для разработчиков на C++, но также поддерживает многие другие популярные языки, такие как C#, Visual Basic и F#.
Visual Studio предлагает множество функций, некоторые из которых:
- интеллектуальное автодополнение кода;
- дизайнер графических форм (GUI);
- простая в использовании навигационная система.
Можно использовать IDE для разработки компьютерных программ для Microsoft Windows, а также веб-сайтов, веб-приложений и веб-сервисов.
Xcode – это интегрированная среда разработки, полный набор инструментов для разработки программного обеспечения, созданных Apple для разработки программного обеспечения для MacOS, iOS, WatchOS и tvOS.
Xcode создана разработчиками операционной системы.
Функции Xcode:
- создание приложений под все Apple платформы;
- автодополнение кода;
- удобная работа с GUI[18].
Это среда разработки на C++ как для Windows, так и для Mac с Linux.
У NetBeans также есть много готовых шаблонных проектов для C и C++, которые можно использовать в качестве основы для ваших приложений. NetBeans был написан с использованием Java, он также может быть использован для проектов PHP и HTML5.
Плюсы NetBeans:
- это ПО о открытым исходным кодом;
- разработан и поддерживается компанией Oracle;
- мультиплатформенная поддержка;
- поддержка визуализированного создания GUI-имнтерфейсов;
- простота установки и использования;
- поддержка Qt Toolkit;
- поддержка удаленного развития;
- легкая файловая навигация.
Eclipse –простая в использовании и при этом мощная IDE для C и C++. Между Eclipse и NetBeans мало различий, но все же Eclipse является более быстрой средой разработки.
Плюсы Eclipse:
- простота установки и использования;
- бесплатный и открытый источник;
- поддержка нескольких платформ;
- мощный движок создания GUI-интерфейсов;
- удаленный системный проводник.
CodeLite – это еще одна бесплатная и быстрая IDE для программирования на C и C ++. CodeLite также поддерживает разработку на PHP и JavaScript.
Функции CodeLite:
- мультиплатформенная поддержка;
- встроенная поддержка GCC/clang/VC++;
- CodeLite обладает удивительно быстрым и мощным инструментом завершения кода из-за собственного анализатора;
- поддержка профилирования, рефакторинга;
- анализ статического кода и браузер классов[19].
Qt Creator – самая известная среда разработки для создания графических приложений.
Есть версия с открытым исходным кодом, которая распространяется бесплатно.
Некоторые из функций Qt Creator:
- простой и удобный конструктор GUI-форм;
- кроссплатформенность;
- поддержка отладки, компиляции, профилирования, автозаполнения кода и рефакторинга;
- поддержка анализа статического кода;
- быстрый компилятор Qt;
- визуализация данных Qt;
- Qt Quick 2D Renderer;
- Qt WebView;
- Qt Virtual Keyboard.
Codeblocks – это еще одна свободная и открытая среда IDE для C и C++, написанная с использованием GNU C++. Главный плюс – кроссплатформенность программы. CodeBlocks также можно использовать для языков c и Fortran.
Некоторые из функций CodeBlocks:
- простая и быстрая установка;
- наличие портативной версии;
- удобный конструктор GUI-форм;
- встроенная возможность создания блок-схем[20].
Dev-C++ – это бесплатная интегрированная среда разработки с открытым исходным кодом, написанная в Delphi для Windows. Это легкая IDE, которой требуется всего на пару минут для установки. В ней можно установить плагин для создания GUI-интрефейсов методом перетаскивания элементов.
Некоторые из возможностей Dev-C++:
- малый вес;
- простая в использовании панель инструментов;
- автозавершение кода;
- горячие клавиши для компиляции и запуска, например F9 и F10;
- простая установка.
Это отличная среда разработки на C++, созданная известной компанией JetBrains. Она поставляется с некоторыми замечательными функциями, такими как “Smart Editor” , “Code Analysis”, “Embedded Terminal”.
Возможности CLion:
- удобное создание визуализированных интерфейсов;
- наличие инструментов для удобного создания код а и отладки;
- возможность установки плагинов;
- поиск ошибок в коде в Live-режиме[21].
Geany – легкая, быстрая, кроссплатформенная среда разработки не только на C++, но и на многих других языках. Здесь множества инструментов, но функционала программы хватит для отладки и сборки даже большого проекта.
Некоторые функции Geany:
- простое управление проектами;
- сворачивание кода;
- автодополнение кода.
В первую очередь выбор IDE зависит от уровня программирования. Для новичков лучшие среды разработки – это Dev-C++ и Code::Blocks. Для сложных проектов лучше всего подойдут Qt Creator и CLion. Также нужно учитывать ОС: не все среды кроссплатформенны[22].
Ознакомимся с данным опроса, проведенного среди 3240 разработчиков в феврале 2018 организацией Standard C++ Foundation (Некоммерческая организация с Бьёрном Страуструпом в качестве одного из руководителей. Целью организации является поддержка сообщества разработчиков программного обеспечения C ++).
Рисунок 3 – Результаты опроса Standard C++ Foundation о распространённости сред программирования[23]
По данным этого опроса, разработчики на C++ выделили такие средства разработки, как наиболее часто используемые. Первое место среди IDE у Visual Studio с 55.28% использующих его разработчиков, второе у Qt Creator - 24.41% разработчиков, третье место у CLion - 14.66%, четвертое место занимает Eclipse - 12.78% разработчиков, пятое место у XCode - 12.22% разработчиков, шестое место у Android Studio – 5.15%, седьмое у Code::Blocks – 4.85%.
Как мы видим многие разработчики для работы используют текстовые редакторы с различными расширениями функций или без них. В число таких входят: Vim - 37.93% разработчиков, Visual Studio Code - 25.77% разработчиков, Emacs (технически, это текстовый редактор с расширениями функционала до IDE) - 13.55%, Sublime - 12.78%.
По результатам опроса, проведенного среди 1860 участников в конце февраля 2018 года в сообществе r/cpp на портале reddit.com, первое место также занимает Visual Studio – 28.43%.
Среди представителей IDE в число наиболее часто используемых также вошли:
Qt Creator – 11.64%, CLion – 8.91%, Xcode – 4.05%, Eclipse – 3.98%, Code::Blocks – 2.43%.
Рисунок 4 – Результаты опроса reddit.com о распространённости сред программирования[24]
Компания JetBrains, одна из ведущих компаний - создателей инструментов для разработчиков (в частности создатель и владелец одного из ведущих IDE для C++ - CLion), представила в 2018 году свою статистику наиболее часто используемых интегрированных сред программирования С++.
По данным этой статистики, первое место среди различных сред разработки для C++ также получает Visual Studio, используемая 32% программистов. Следующие места в этом рейтинге интегрированных сред разработки распределились таким образом: второе место у CLion – 11%, третье место у Xcode – 5%, четвертое место у Eclipse – 5%, пятое место у QtCreator – 4%, шестое место у Atom – 3%, седьмое место у NetBeans – 3%.
Рисунок 5 – Результаты опроса JetBrains о распространённости сред программирования[25]
Также полезной будет статистика от той же компании JetBrains, показывающая наиболее часто применяемые в разработке компиляторы:
Рисунок 6 – Результаты опроса JetBrains о распространённости сред программирования
Интересные данные предоставляет аналитическая платформа G2 Crowd. Проанализировав частоту использования разработчиками различных сред разработки на C / C++ и степень удовлетворенности этими инструментами, компания представила такую инфографику:
Рисунок 7 – Результаты опроса G2 Crowd о распространённости сред программирования[26]
Из этой схемы мы все еще наблюдаем лидирование Visual Studio, среди других сред разработки для C++. Достаточно нишевыми продуктами оказываются CodeLite и Code::Blocks.
В последнее время производители средств разработки особое внимание уделяют инструментам повышения производительности труда разработчиков, поддержки коллективной работы, повторному использованию моделей и кода, а также средствам интеграции с инструментами поддержки других этапов жизненного цикла приложений. Данная категория инструментов применяется в компаниях-разработчиках или в отделах разработки, изредка используется специалистами по сопровождению программного обеспечения. За редким исключением, она не применяется ни заказчиками, ни конечными пользователями.
Заключение
Основные инструменты, которые входят почти во все современные средства разработки, перечислены ниже:
- Редактор исходного кода. Это текстовый редактор, который от обычных редакторов отличается возможностью подсветки синтаксиса. Подсветка синтаксиса - это выделение ключевых слов и других важных элементов языка программирования цветом и/или шрифтом. Конечно, для создания программ можно использовать и обычный текстовый редактор.
- Компилятор (или интерпретатор). Специальная программа, которая преобразует исходные коды в готовую программу - исполняемый файл. В операционных системах Windows такой файл обычно имеет расширение EXE.
- Отладчик. Это специальная программа, которая помогает искать ошибки в исходных кодах.
Существует достаточно большое количество интегрированных сред разработки на. Для выбора IDE под разработку на C++, как и для любого другого инструмента разработчика, справедлив индивидуальный подход. Отталкиваясь от текущих задач, базовой ОС, используемых языков, необходимых плагинов, требований команды и других, сугубо индивидуальных факторов разработки, выбор вами лучшей среды программирования C++ будет различным.
В любом случае, выбор главного инструмента вряд ли будет окончательным и универсальным для всех приложений.
Современный рынок инструментов создания приложений не ограничивается собственно средствами разработки — во многих случаях они играют в процессе разработки далеко не самую главную роль. Кроме того, важной характеристикой современного рынка средств управления жизненным циклом приложений является интеграция этих инструментов между собой и появление наборов средств, исчерпывающих все или почти все задачи, связанные с реализацией проектов по разработке приложений.
В ближайшее время следует ожидать появления нового поколения инструментов, ориентированных, во-первых, на вовлечение в процесс разработки заказчиков, специалистов по сопровождению ПО и конечных пользователей, а во-вторых, на повышение эффективности планирования и управления группами и отделами разработки в условиях выполнения многих проектов. В дальнейшем же будут созданы средства управления процессом разработки ПО, сходные со средствами управления другими производственными процессами.
Список используемой литературы
1. Елманова Н. Тенденции развития технологий разработки приложений. URL: https://compress.ru/article.aspx?id=16579 (дата обращения: 23.12.2019).
2. Ермаков И.Е. Объектно-ориентированное программирование: прояснение принципов? // Объектные системы. 2010. №1 (1). URL: https://cyberleninka.ru/article/n/obektno-orientirovannoe-programmirovanie-proyasnenie-printsipov (дата обращения: 23.12.2019).
3. Виды клиентских приложений. URL: https://1office.pro/help/knowledgebase/Introduction/clientskie-prilojeniya/ (дата обращения: 23.12.2019).
4. Завьялова Е. 10 лучших сред разработки на C++. URL: https://gitjournal.tech/10-luchshih-sred-razrabotki-na-c/ (дата обращения: 23.12.2019).
5. Зарипов Н. Н. Объектно-ориентированное программирование. Общие возможности контейнеров с++ // Academy. 2018. №6 (33). URL: https://cyberleninka.ru/article/n/obektno-orientirovannoe-programmirovanie-obschie-vozmozhnosti-konteynerov-s (дата обращения: 23.12.2019).
6. Казаков К.А., Семенов В.А. Объектно-ориентированная среда для разработки приложений планирования движения // Труды ИСП РАН. 2017. №5. URL: https://cyberleninka.ru/article/n/obektno-orientirovannaya-sreda-dlya-razrabotki-prilozheniy-planirovaniya-dvizheniya (дата обращения: 23.12.2019).
7. Какой язык программирования выбрать исходя из требований к проекту? URL: https://arduinoplus.ru/vibor-yazika-programmirovania/ (дата обращения: 23.12.2019).
8. Маилян А. Топ-7 популярных IDE для программирования на С++. URL: https://itvdn.com/ru/blog/article/cplspls-top7 (дата обращения: 23.12.2019).
9. На каких языках программирования пишут в Яндексе. URL: https://yandex.ru/blog/company/77617 (дата обращения: 23.12.2019).
10. Нестеренко Д. Ю. Объектно-ориентированное программирование на примере языка Java // Научный журнал. 2016. №8 (9). URL: https://cyberleninka.ru/article/n/obektno-orientirovannoe-programmirovanie-na-primere-yazyka-java (дата обращения: 23.12.2019).
11. Разные языки программирования и их области применения. Лекция в Яндексе. URL: https://habr.com/ru/company/yandex/blog/272759/a/ (дата обращения: 23.12.2019).
12. Разработка клиентских приложений. URL: http://dotrunet.ru/clientspo.html (дата обращения: 23.12.2019).
13. Романов С.С. Ключевые понятия и особенности объектно-ориентированного программирования // Таврический научный обозреватель. 2016. №12-2 (17). URL: https://cyberleninka.ru/article/n/klyuchevye-ponyatiya-i-osobennosti-obektno-orientirovannogo-programmirovaniya (дата обращения: 23.12.2019).
14. Средства разработки программ. URL: http://info-master.su/programming/profi/development-tools-programs.php (дата обращения: 23.12.2019).
15. Фадеев А.Ю., Волкова Е.А. Сравнительный анализ программного обеспечения для разработки мобильных приложений // Наука и перспективы. 2016. №3. URL: https://cyberleninka.ru/article/n/sravnitelnyy-analiz-programmnogo-obespecheniya-dlya-razrabotki-mobilnyh-prilozheniy (дата обращения: 23.12.2019).
16. Что такое клиент? Клиентский компьютер и клиентское приложение. URL: https://zametkinapolyah.ru/servera-i-protokoly/chto-takoe-klient-klientskij-kompyuter-i-klientskoe-prilozhenie.html (дата обращения: 23.12.2019).
17. Шанченко, Н. И.. Информационный менеджмент: учебное пособие для студентов специальности «Прикладная информатика (в экономике)». - Ульяновск :УлГТУ,2006. - 95 с.
18. Шопырин Д. Г., Шалыто А. А. Объектно-ориентированный подход к автоматному программированию // Информационно-управляющие системы. 2003. №5. URL: https://cyberleninka.ru/article/n/obektno-orientirovannyy-podhod-k-avtomatnomu-programmirovaniyu (дата обращения: 23.12.2019).
19. 10 лучших IDE. URL: https://yandex.ru/turbo?text=https%3A%2F%2Fwww.internet-technologies.ru%2Farticles%2F10-luchshih-ide.html-analiz-programmnogo-obespecheniya-dlya-razrabotki-mobilnyh-prilozheniy (дата обращения: 23.12.2019).
-
Что такое клиент? Клиентский компьютер и клиентское приложение. URL: https://zametkinapolyah.ru/servera-i-protokoly/chto-takoe-klient-klientskij-kompyuter-i-klientskoe-prilozhenie.html (дата обращения: 23.12.2019). ↑
-
Ермаков И.Е. Объектно-ориентированное программирование: прояснение принципов? // Объектные системы. 2010. №1 (1). URL: https://cyberleninka.ru/article/n/obektno-orientirovannoe-programmirovanie-proyasnenie-printsipov (дата обращения: 23.12.2019). ↑
-
Разработка клиентских приложений. URL: http://dotrunet.ru/clientspo.html (дата обращения: 23.12.2019). ↑
-
Что такое клиент? Клиентский компьютер и клиентское приложение. URL: https://zametkinapolyah.ru/servera-i-protokoly/chto-takoe-klient-klientskij-kompyuter-i-klientskoe-prilozhenie.html (дата обращения: 23.12.2019). ↑
-
Виды клиентских приложений. URL: https://1office.pro/help/knowledgebase/Introduction/clientskie-prilojeniya/ (дата обращения: 23.12.2019). ↑
-
Шанченко, Н. И.. Информационный менеджмент: учебное пособие для студентов специальности «Прикладная информатика (в экономике)». - Ульяновск :УлГТУ,2006. – С. 43. ↑
-
Елманова Н. Тенденции развития технологий разработки приложений. URL: https://compress.ru/article.aspx?id=16579 (дата обращения: 23.12.2019). ↑
-
Зарипов Н. Н. Объектно-ориентированное программирование. Общие возможности контейнеров с++ // Academy. 2018. №6 (33). URL: https://cyberleninka.ru/article/n/obektno-orientirovannoe-programmirovanie-obschie-vozmozhnosti-konteynerov-s (дата обращения: 23.12.2019). ↑
-
Средства разработки программ. URL: http://info-master.su/programming/profi/development-tools-programs.php (дата обращения: 23.12.2019). ↑
-
Средства разработки программ. URL: http://info-master.su/programming/profi/development-tools-programs.php (дата обращения: 23.12.2019). ↑
-
Зарипов Н. Н. Объектно-ориентированное программирование. Общие возможности контейнеров с++ // Academy. 2018. №6 (33). URL: https://cyberleninka.ru/article/n/obektno-orientirovannoe-programmirovanie-obschie-vozmozhnosti-konteynerov-s (дата обращения: 23.12.2019). ↑
-
Елманова Н. Тенденции развития технологий разработки приложений. URL: https://compress.ru/article.aspx?id=16579 (дата обращения: 23.12.2019). ↑
-
Шанченко, Н. И.. Информационный менеджмент: учебное пособие для студентов специальности «Прикладная информатика (в экономике)». - Ульяновск :УлГТУ,2006. – С. 14. ↑
-
Какой язык программирования выбрать исходя из требований к проекту? URL: https://arduinoplus.ru/vibor-yazika-programmirovania/ (дата обращения: 23.12.2019). ↑
-
Разные языки программирования и их области применения. Лекция в Яндексе. URL: https://habr.com/ru/company/yandex/blog/272759/a/ (дата обращения: 23.12.2019). ↑
-
На каких языках программирования пишут в Яндексе. URL: https://yandex.ru/blog/company/77617 (дата обращения: 23.12.2019). ↑
-
На каких языках программирования пишут в Яндексе. URL: https://yandex.ru/blog/company/77617 (дата обращения: 23.12.2019). ↑
-
Завьялова Е. 10 лучших сред разработки на C++. URL: https://gitjournal.tech/10-luchshih-sred-razrabotki-na-c/ (дата обращения: 23.12.2019). ↑
-
Завьялова Е. 10 лучших сред разработки на C++. URL: https://gitjournal.tech/10-luchshih-sred-razrabotki-na-c/ (дата обращения: 23.12.2019). ↑
-
Завьялова Е. 10 лучших сред разработки на C++. URL: https://gitjournal.tech/10-luchshih-sred-razrabotki-na-c/ (дата обращения: 23.12.2019). ↑
-
Завьялова Е. 10 лучших сред разработки на C++. URL: https://gitjournal.tech/10-luchshih-sred-razrabotki-na-c/ (дата обращения: 23.12.2019). ↑
-
Завьялова Е. 10 лучших сред разработки на C++. URL: https://gitjournal.tech/10-luchshih-sred-razrabotki-na-c/ (дата обращения: 23.12.2019). ↑
-
Маилян А. Топ-7 популярных IDE для программирования на С++. URL: https://itvdn.com/ru/blog/article/cplspls-top7 (дата обращения: 23.12.2019). ↑
-
Маилян А. Топ-7 популярных IDE для программирования на С++. URL: https://itvdn.com/ru/blog/article/cplspls-top7 (дата обращения: 23.12.2019). ↑
-
Маилян А. Топ-7 популярных IDE для программирования на С++. URL: https://itvdn.com/ru/blog/article/cplspls-top7 (дата обращения: 23.12.2019). ↑
-
Маилян А. Топ-7 популярных IDE для программирования на С++. URL: https://itvdn.com/ru/blog/article/cplspls-top7 (дата обращения: 23.12.2019). ↑
- Функции операционных систем персональных компьютеров
- Социально-экономические права и свободы граждан
- Обязательное социальное страхование в государственной системе социального обеспечения
- Выбор стиля руководства в организации
- Соотношение государства и гражданского общества (Понятие и признаки правового государства)
- Анализ процесса принятия решения о выборе места размещения потенциальными потребителями (Теоретические основы процесса принятия решений на потребительском рынке)
- Современные языки программирования (Метапрограммирование)
- Коммерческая деятельность розничного торгового предприятия и ее совершенствование (на примере конкретной организации) Теоретические основы организации коммерческой деятельности розничного торгового предприятия)
- Функции менеджмента
- Технологии и методы продаж в гостиничном бизнесе
- Повышения производительности труда в компании: совершенствование мотивации работников.(СУЩНОСТЬ, СОДЕРЖАНИЕ И СТРУКТУРА ПРОЦЕССА МОТИВАЦИИ)
- Коммерческие риски и способы их уменьшения (на примере конкретной организации) (ООО « Оргаропром»)