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

Классификация языков программирования. Критерии выбора среды и языка разработки программ (Средства разработки программ)

Содержание:

Введение

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

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

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

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

Для решения задач использовались письменные и цифровые источники, дающие представление об области. Разумеется, существует печатная информация, которая остается актуальной спустя десятилетия, поскольку она, например, характеризует исторические реалии профессии (так, в истории появления языков программирования известен буквально каждый шаг разработчиков, о чем говорят печатные книги еще 80-х годов выпуска). Но следует понимать, что порой новые языки и новые среды разработки появляются быстрее, чем соответствующая литература по ним, и в этом случае требуется обращаться к авторитетным онлайн-изданиям, признанным в профессиональной сфере (англоязычные журналы Electronicdesign и Dr. Dobb's; русскоязычный журнал T_ADVISER и новостные порталы). Необходимо также не забывать о данных информационных агентств, поскольку статистика собирается именно их силами: в случае данной работы это We Are Social и Kantar Worldpanel. Также нужно принять во внимание, что среда профессионального программирования является стандартизируемой и регулируемой; в этом случае на помощь приходят международные и местные стандарты (ISO/IEC/IEEE, ГОСТ ИСО, МЭК и прочие).

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

Глава 1. Классификация языков программирования

1.1 Понятие языка программирования

Язык программирования – компьютерный язык, предназначенный для записи компьютерных программ посредством определенного набора лексических, синтаксических и семантических правил. [44, 45]

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

В любом, даже самом компактном, компьютере обязательно будет следующий набор программ:

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

Абсолютно все вышеперечисленные программы написаны на определенных языках программирования. [3]

Языком программирования называется система обозначений и правил, позволяющая записать программу (алгоритм) решения задачи в виде последовательного текста в удобном для человека виде. [3]

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

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

К счастью, платформенно зависимые языки ассемблера достаточно быстро были заменены языками высокого уровня, которые не зависели от конкретной архитектуры аппаратного обеспечения. Для написания программы на языке высокого уровня следует сначала перевести программу на язык машинных команд посредством транслятора (или компилятора). Транслированная таким образом программа выполняется непосредственно компьютером. [10: 289-290]

Также была открыта возможность перевода программы на промежуточный язык, который также не зависел от конфигурации и архитектуры конкретной вычислительной машины, но был максимально приближен к языку машинных команд. Затем программа на промежуточном языке выполнялась специальной программой-интерпретатором. Также был возможен вариант компиляции фрагментов программы непосредственно перед выполнением: конкретно взятый фрагмент программы переводился с промежуточного языка на язык машинных команд, после него следующий фрагмент, и так до выполнения функции аппаратным обеспечением. [10: 289-290]

Примерно десятилетие спустя (в середине 50-х) под руководством Джона Бэкуса группа программистов разработала FORTRAN, алгоритмический язык программирования высокого уровня, специально для IBM. Хотя и до работы группы Бэкуса проводилась разработка языков, преобразующих арифметические выражения в машинный код, именно создание FORTRAN (акроним от FORmula TRANslator), дающего возможность записи алгоритма вычислений с использованием условных операторов и операторов ввода/вывода, стало точкой отсчета эры языков программирования высокого уровня. [12: 63-69]

Программисты, разрабатывавшие язык FORTRAN, столкнулись с требованиями создания высокоэффективного кода, поэтому им пришлось использовать наработки предыдущих поколений языков программирования и конструировать язык с учетом архитектуры IBM 407. Несмотря на относительную платформенную ориентированность, успех разработки этого продукта привел к тому, что производители других вычислительных систем также стали создавать свои версии трансляторов. Но любая отрасль достаточно быстро погрязнет в конфликтных ситуациях, если не будет проведена унификация базовых понятий. Именно с целью унификации языка в качестве первого в истории стандарта был разработан язык FORTRAN IV, а стандарт получил название FORTRAN 66. [12]

Однако даже в середине прошлого века многим исследователям было понятно, что мир электронных вычислительных машин не будет ограничиваться IBM. Поскольку FORTRAN все еще зависел от конкретной архитектуры вычислительной системы, в качестве альтернативы разрабатывался язык ALGOL (акроним от ALGOrithmic Language): в конце 50-х годов прошлого века группа программистов под руководством Питера Наура стремилась к разработке языка, удобного для описания алгоритмов и применяющего систему обозначений, максимально близкую к принятой в математике. [13]

Языки FORTRAN и ALGOL стали первыми в истории языками программирования, ориентированными непосредственно на программирование вычислений.

История программирования также сохранила упоминания о появлении PL/I и COBOL (начало 60-х годов). По сути, совместное использование вышеупомянутых языков расширяло возможности языка FORTRAN и было первоначально ориентировано строго на IBM 360. Несмотря на определенную популярность языка PL/I у программистов, работавших на компьютерах IBM и машинах серии ЕС, в настоящее время он представляет чисто теоретический интерес. [42]

В конце 60-х годов группе под руководством Найарда и Дала удалось разработать язык программирования Simula-67, использующий концепцию пользовательских типов данных. Он также стал достоянием истории, но запомнился как первый язык, применяющий понятие классов. [20]

В середине 70-х годов Виртом был предложен язык Pascal, моментально получивший широчайшее использование в силу своей универсальности. В это же время по инициативе Министерства обороны США началась работа по созданию языка высокого уровня Ada (в честь графини Ады Лавлейс, которую считают первой программисткой в истории). Поскольку создание языка курировалось на министерском уровне, оно началось с определения требований и выработки спецификаций. Над проектом работали четыре независимые группы, но все они использовали как основу язык Pascal. В начале 80-х годов был разработан первый промышленный компилятор языка Ada. [14]

А с середины 70-х годов прошлого века ведет свое исчисление самый успешный язык программирования в истории – язык С (Си) и связанная с ним линия объектно-ориентированных языков: C++, Java, C#. Этот универсальный язык программирования С был разработан Денисом Ритчи и Кеном Томпсоном. Он приобрел широкую популярность для системного программирования и в свое время использовался для написания ядра операционной системы UNIX. Стандартизировали язык С в 1982 году силами Американского национального института стандартов (англ. American national standards institute, ANSI). На разработку ушло чуть меньше десятилетия, и в 1990 году удалось принять международный стандарт языка С. Стандартизированный язык С лег в основу разработки повсеместно используемых сейчас языков программирования C++ и Java. [14]

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

В настоящее время подавляющая часть программ пишется на языках С и C++ (Си-плюс-плюс). [20] Интерфейс любой операционной системы (так называемый API – аббревиатура от Application Program Interface, «интерфейс прикладного программирования»), то есть набор системных вызовов, предназначенных для разработчиков прикладных программ, как правило, представляет собой набор функций на языке С. Наконец следует упомянуть, что современные объектно-ориентированные языки также основаны на языке С: и язык C++, занимающий промежуточное положение между традиционными и объектно-ориентированными языками, а также объектно-ориентированные языки Java и C#. [14]

Параллельно с алгоритмическими языками шло развитие языков для обработки деловой информации (на основе COBOL – акронима от COmmon Business Oriented Language) и языков искусственного интеллекта (к таковым относятся языки LISP, акроним от LISt Processing, и Prolog). Язык LISP, разработанный в 60-х годах группой программистов под руководством Дж. Маккарти, считается первым функциональным языком обработки списков. Он применяется для программ на основе разработки людической теории. [41]

Когда компьютеры перестали занимать несколько этажей промышленного комплекса, разработчики получили возможность создания достаточно компактных аппаратов. Вычислительные микромашины стали достоянием человеческого быта, а с появлением первых персональных компьютеров языки программирования стали составными частями интегрированных сред разработки. Когда персональный компьютер (то есть личный, нацеленный на единичного пользователя, а не на группу пользователей) переквалифицировался в рабочий инструмент, появились специальные языки, применяемые в различных офисных программах. Известнейшим из них является VBA (Visual Basic for Application). [14]

В 90-х годах широкое распространение также получила сеть Интернет. Интернет подарил пользователям возможность распределенной обработки данных, что не могло не отразиться и на развитии языков программирования. Появились языки, ориентированные на создание серверных приложений (Java, Perl и PHP), языки описания документов (HTML и XML). Традиционные С++ и Pascal также претерпели изменения: под языком программирования начинает пониматься не столько функциональность самого языка, сколько библиотека классов, предоставляемая средой программирования. Если на ранней стадии развития программирования имела значение спецификация самих языков программирования, то с 90-х стала важна стандартизация механизмов взаимодействия распределенных приложений. Появляются новые технологии – COM и CORBA, специфицирующие взаимодействие распределенных объектов. [2]

1.3 Классификация современных используемых языков программирования

Существующие в наше время языки программирования можно классифицировать, например, с исторической точки зрения [3].

Старые языки программирования: фактически они являются родоначальниками позднейших языков программирования, однако в некоторых случаях используются по сей день с разными целями. В их числе: FORTRAN, COBOL, Basic, Pascal, Ada, LISP.

Мейнстримные языки программирования: намного новее по хронологическому порядку, известны за счет того, что считаются наиболее популярными. На них построена подавляющая часть программ, используемых повседневно в рабочей деятельности человека. Это С, С++, C#, Java, JavaScript, Python, PHP, Ruby.

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

Новые и будущие языки программирования: реалия текущего времени. Они призваны справляться с теми вопросами и задачами, с которым не смогли справиться предыдущие. Количество задач, которые предстоит решить программированию, по-прежнему велико, и не все задачи могут быть решены при использовании стандартных и стандартизированных языков. Поэтому возникли языки программирования Go, Swift, Hack, Rust, Scala и прочие, которые могут появляться, развиваться или, напротив, признаваться неактуальными. [3]

1.4 Применение языков программирования в различных сферах

В настоящее время языки программирования применяются в самых различных областях человеческой деятельности [2]:

  • В научных вычислениях – промышленное программирование, программирование космических мощностей (языки C++, FORTRAN, Java);
  • В системном программировании – для разработки и усовершенствования программного обеспечения различных устройств (языки C++, Java);
  • Для обработки информации – сведение массивов данных, их систематизация, категоризация и поиск (языки C++, COBOL, Java);
  • Для разработки искусственного интеллекта (LISP, Prolog);
  • В издательской деятельности (Postscript, TeX);
  • Для удаленной обработки информации – очень актуальная сфера применения в условиях удаленного доступа (Perl, PHP, Java, C++);
  • Для описания документов – особенно речь идет о дистанционном отображении с интернет-доступом (HTML, XML). [2]

1.5 По каким причинам языки оказываются полезными или бесполезными

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

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

Выводы по главе 1

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

Не всегда новые аппаратные или программные задачи могут быть решены старыми программными средствами. Порой для решения таких задач требуется изобретать новые программные средства; однако когда поставленная задача решена, на ее месте появляются новые задачи, требующие решения. Опять же, не всегда можно решить их старыми средствами. Что касается языков программирования, то программистам приходится или развивать уже известные языки, или изобретать новые, которые лучше отвечают требованиям современности. После решения конкретной задачи новоизобретенный язык может оказаться универсально применимым – в этом случае его ждет долгая «жизнь», и он станет популярен в профессиональной среде разработчиков; он может оказаться не универсальным, но пригодным для решения определенных задач – в этом случае он может стать нишевым; но также он может оказаться бесполезен или практически бесполезен для решения иных задач, кроме единственной – в этом случае он останется малоизвестным или уйдет в историю.

Глава 2. Критерии выбора среды и языка разработки программ

2.1 Средства разработки программ. Понятие среды

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

Компилятор языка программирования является составной частью среды проектирования. Сама программа наравне с конструкциями, предустановленными стандартом, как правило, пользуется библиотечными функциями и классами, предоставляемыми средой разработки. Так, интегрированная среда разработки Visual Studio охватывает библиотеку классов MFC (Microsoft Foundation Classes), существенно упрощающую операцию разработки приложений, использующих оконный интерфейс. [1]

2.2 Трансляторы и код

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

  • компилирующие окончательный выполнимый код;
  • компилирующие интерпретируемый код, для выполнения которого необходимо дополнительное программное обеспечение. [2]

Окончательным выполнимым кодом являются приложения, реализованные как COM-компоненты, EXE-файлы и прочие. К интерпретируемому коду можно отнести байт-код JAVA-программ, выполняемый посредством виртуальной машины JVM. [2]

Языки, создающие окончательный выполнимый код, получили название компилируемых (это, например, С, C++, FORTRAN, Pascal). Языки, реализующие интерпретируемый код – интерпретируемые (это Java, LISP, Perl, Prolog).

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

Объектный код, формируемый компилятором, выступает как область данных и область машинных команд, обладающих адресами, которые впоследствии «согласуются» редактором связи (периодически называемым загрузчиком). Редактор связи располагает все по отдельности откомпилированные объектные модули и статически подключаемые библиотеки в общем адресном пространстве.

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

2.3 Процесс трансляции

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

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

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

Фаза анализа программы состоит из следующих шагов:

  • лексического анализа;
  • синтаксического анализа;
  • семантического анализа.

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

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

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

На этапе семантического анализа производится обработка синтаксических единиц и создание промежуточного кода. В зависимости от наличия или отсутствия фазы оптимизации итогом семантического анализа может стать оптимизируемый далее промежуточный код или же готовый объектный модуль. [2]

К числу задач, решаемых семантическим анализатором, относятся следующие:

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

Как макрос определяется некоторый предварительно определенный код, на этапе компиляции вставляющийся в программу во всех местах указания вызова данного макроса. [16]

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

  • генерация кода;
  • редактирование связей. [2]

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

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

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

2.4 Интегрированная среда

Интегрированная среда разработки, ИСP (англ. IDE, Integrated development environment), также иногда называемая единой средой разработки (ЕСР), определяется как комплекс программных средств, используемый программистами для разработки программного обеспечения.

Среда разработки включает в себя следующие составные части:

  • текстовый редактор,
  • компилятор и/или интерпретатор,
  • средства автоматизации сборки,
  • отладчик. [47]

В некоторых случаях среда разработки включает в себя средства для интеграции с системами управления версиями и различные инструменты для упрощения конструирования графического интерфейса пользователя. Кроме того, значительная часть актуальных сред разработки содержит браузер классов, инспектор объектов и диаграмму иерархии классов для применения при объектно-ориентированной разработке программного обеспечения. Несмотря на существование ИСР, предназначенных для нескольких языков программирования (Eclipse, Microsoft Visual Studio, NetBeans), среда обычно предназначается для одного определенного языка программирования: только для Visual Basic, Delphi и прочих. [47]

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

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

Традиционно интегрированная среда выступает в роли единственной программы, где проводится полный цикл разработки. Она в большинстве случаев включает в себя большое количество функций для создания, изменения, компилирования, развертывания и отладки программного обеспечения. Цель среды разработки заключается в абстрагировании конфигурации для объединения утилиты командной строки в едином модуле, который, в свою очередь, дает возможность сократить временные затраты на изучение языка программирования и повысить производительность программиста, работающего над задачей. Также признается, что тяжелая интеграция задач разработки имеет возможность в будущем повысить производительность. В частности, интегрированная среда разработки позволяет проверить код и тем гарантировать мгновенную обратную связь и сообщить разработчику о наличии синтаксических ошибок. В то время как основная масса нынешних ИСР представляет собой графические системы, они применялись задолго до возникновения систем управления окнами (например, реализованные в Microsoft Windows для *nix-систем). Они базировались на тексте и позволяли использовать функциональные или горячие клавиши, для того чтобы реализовать решение различных задач (как например Turbo Pascal). Эксплуатация интегрированных сред для разработки программного обеспечения считается антонимичной технологии, согласно которой применяются несвязанные инструменты, такие как vi (текстовый редактор), GCC (компилятор) и т. п. [9]

Интегрированные среды разработки нередко предоставляют пользователям возможность делать пометки в комментариях в исходном тексте программ, тем самым отмечая места, требующие редакции или обращения внимания в будущем (например TODO). При дальнейшей работе такие пометки-комментарии могут выделяться редакторами (vim, emacs, встроенный Visual Studio) или использоваться с целью организации совместной работы с построением тегов и задач (например в IntelliJ). Стандартом оформления кода считается использование комментариев с TODO на Object Pascal или Delphi. Корпорация Microsoft в руководстве по Visual Studio рекомендует использовать тег TODO (наравне с HACK, UNDONE) для следующих пометок:

  • добавление новых функций;
  • уже известные проблемы, которые позже нужно устранить;
  • классы, предполагаемые к реализации;
  • места размещения кода обработчиков ошибок;
  • напоминания о необходимости переработки неудачного участка кода. [26]

На практике под интегрированной средой разработки понимается совокупность программных средств, поддерживающая все этапы разработки программного обеспечения: от написания исходного текста до компиляции и отладки программы, обеспечивающая простое и быстрое взаимодействие с другими инструментальными средствами (программным отладчиком-симулятором, внутрисхемным эмулятором, эмулятором ПЗУ и программатором). [47]

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

При традиционном подходе начальный этап написания программы строится следующим образом:

  • Исходный текст набирается при помощи какого-либо текстового редактора.
  • По завершении набора работа с текстовым редактором прекращается и запускается кросс-компилятор (компилятор, производящий исполняемый код для платформы, отличной от той, на которой исполняется сам кросс-компилятор). [15]
  • Как правило, написанная программа содержит синтаксические ошибки, о которых компилятор сообщает на консоль оператора.
  • В текстовом редакторе следует найти и устранить выявленные компилятором ошибки. [3]

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

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

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

  • Возможность применения встроенного многофайлового текстового редактора, нацеленного на работу с исходными текстами программ;
  • Возможность применения автодиагностики ошибок, обнаруженных при компиляции, при выводе отображения исходного текста программы, доступного для редактирования, выводящейся параллельно с диагностикой в многооконном режиме;
  • Возможность одновременной работы над несколькими проектами. Диспетчер проектов позволяет применять любой проект как шаблон для нового проекта;
  • Минимальное количество перекомпиляции – перекомпилируются лишь уже редактировавшиеся модули;
  • Возможность загрузки отлаживаемой программы в имеющиеся средства отладки, работа с ними без выхода из оболочки;
  • Возможность подключения к оболочке фактически любых программных средств. [17]

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

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

2.5 Выбор интегрированной среды

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

2.5.1 Базовые интегрированные среды для разработки мобильных приложений

По свидетельству информационного агентства We Are Social, количество пользователей сети Интернет в мире прирастает преимущественно за счет владельцев мобильных устройств. Многие домохозяйства – например, в Соединенных Штатах Америки – вообще не владеют персональными компьютерами, а в Интернет выходят исключительно со смартфонов и планшетных ПК. [24]

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

Visual Studio 2015

Visual Studio является одним из известнейших и наиболее заслуженных программных продуктов. В случае с мобильными приложениями это средство для создания приложений для WinPhone. Несмотря на повсеместную распространенность Visual Studio, этот продукт считается пригодным преимущественно для опытных разработчиков в силу обилия неструктурированной информации в общем доступе. Программист уровня «новичок» будет вынужден вложиться в курсы по изучению Visual Studio и обзавестись соответствующей справочной литературой. Однако пользователи отмечают качественный редактор и идеально работающие функции тестирования этой среды. [38]

Android Studio

Android Studio считается сравнительно новой интегрированной средой разработки. Он ориентирован на разработчиков приложений для системы Android (Android Developers). Поскольку, по оценкам специалистов-аналитиков из международно-признанного бюро Kantar Worldpanel ComTech, больше половины рынка мобильных устройств занимают устройства на ОС Android, сложно переоценить важность среды разработки, нацеленной н нужды едва ли не половины всех мобильных устройств в мире. [25] Обладает эта оболочка и недостатками, которые внезапно оказываются прямо противоположны недостаткам самой ОС Android: общие настройки ИСР и ее персонализация признаются пользователями как «бедные, скупые, укороченные». Если вспомнить, что сама ОС Android удивительно индивидуально адаптивна и очень дружественна для пользователя, остается надеяться, что в будущем эта «бедность» будет как-то исправлена. [40]

XCode

Претенциозно названная производителем «светом во тьме», эта ИСР ориентирована на создание приложений для ОС X и iOS. Если портативные устройства на Android занимают ориентировочно половину рынка, то на различные мобильные устройства iOS приходится оставшаяся половина (за небольшими исключениями: не следует забывать о системах линейки WinPhone и мелких внутренних ОС). XCode считается наилучшим выбором среды для использования языков Objective C и совсем молодого Swift. Подчеркивается, что для некоторых задач XCode – это на сегодняшний день единственное решение. Однако есть претензии со стороны разработчиков: они указывают на стабильность среды, вынуждающую вносить дополнительные изменения в свои проекты после выхода очередной версии. К тому же XCode считается относительно сложной средой: как и Visual Studio, она требует от молодого программиста прохождение отдельных курсов и покупки специализированной литературы. [39]

Все вышеперечисленные среды были разработаны официальными представителями. Следует уделить внимание универсальным кроссплатформенным средам разработки.

Xamarin Studio

Xamarin Studio признается одним из наиболее популярных инструментов разработки приложений. Эта среда позволяет при использовании только языка C# разрабатывать приложения под операционные системы WindowsPhone, Android, Mac и iOS. Предусмотрен плагин для Visual Studio. Нельзя не упомянуть о недостатках: разработчики испытывают трудности с портированием на Xamarin уже готовых приложений (то есть утверждаемая кроссплатформенность становится сомнительной); также отмечаются хотя и мелкие, но систематически появляющиеся ошибки в самой среде и в выходном коде. [37]

IntelliJ IDEA

Эта среда была разработана компанией JetBrains. Производитель утверждает, что она позволяет создавать программы на множестве популярных языков (Java, JavaScript, Python, Ruby, Groovy, Scala, PHP, C, C++ и прочие). Несмотря на кажущуюся универсальность, пользователи также имеют претензии к этому продукту, который не отличается высокой производительностью (учитывая его плавающую, но немалую цену, эта черта не радует покупателей). Время компиляции, перекомпиляции и тестирования затянуто по сравнению с другими интегрированными средами. [31]

Appcelerator Titanium

Это условно-бесплатная интегрированная среда, выпущенная компанией Axway для быстрого создания консольных и графических приложений. Утверждается, что в Appcelerator Titanium можно написать приложение для любого мобильного устройства. Однако широчайшие возможности этой ИСР, как отзываются пользователи, имеют и обратную сторону: среда искусственно ограничивает разработку и генерирует ошибки в коде. Также есть жалобы на низкое качество документации. [27]

Eclipse

Eclipse Foundation выпускал эту интегрированную среду разработки, ориентируя ее на работу с Java. Со временем Eclipse стала кроссплатформенной, позволяя разрабатывать программное обеспечение на множестве языков, и обзавелась огромным количеством внешних модулей, существенно расширяющих её функциональность. Но с тех пор как фирма IBM «выпустила» среду «на волю» (изначально эта ИСР разрабатывалась как замена IBM VisualAge; потом IBM сделала исходный код открытым и передала развитие ИСР внешнему сообществу), не изменились два существенных минуса данной среды: отсутствие единого сообщества разработчиков и ощутимая нехватка документации. [30]

Netbeans

Считается мощнейшей интегрированной средой разработки и позволяет писать приложения на Java, JavaScript, Python, PHP, C, C++ и даже на Ada. При спонсировании проекта компанией Oracle и фондом Apache разработка ведется энтузиастами, которые выбрали в качестве основной концепции подход «все сразу». Эта же концепция обусловила главный минус Netbeans: ее невысокое быстродействие. Пользователи также упоминают, что некоторые плагины (в особенности для разработки приложений для Android) имеют существенные ограничения функциональности. [33]

PhoneGap

Работающий на лицензии Apache продукт корпорации Adobe является не самой обычной средой разработки кроссплатформенных приложений: эта ИСР отличается от прочих, не требуя знания языков, которые в сообществе программистов считаются «родными». То есть, если разработчик намеревается создать приложение для Android, ему не нужно знание языка Java. Используется JavaScript в связке с HTML5 и CSS3. Сама идея нецелевой среды разработки порождает очевидный минус этой оболочки: ее функциональность признается существенно ограниченной. [34]

2.5.2 Базовые интегрированные среды для разработки десктопного программного обеспечения

Согласно данным отчета аналитической компании Gartner, количество используемых в мире персональных компьютеров превысило отметку в 1 млрд штук еще в 2008 году. [21] Более актуальная информация не может не привлекать внимание – так, уважаемый отраслевой источник T_ADVISER приводит следующие данные: «В январе 2018 года аналитическая компания Gartner подвела итоги ушедшего года на мировом рынке персональных компьютеров. Согласно предварительной оценке специалистов, производители выпустили в 2017-м свыше 262,5 млн устройств, включая настольные ПК, ноутбуки, ультрапортативные ПК премиум-класса и гибридные устройства на базе Windows». [22] Все эти устройства применяются повсеместно: в рабочих, учебных, развлекательных целях. Пользователь или работодатель пользователя сам выбирает необходимый пакет программ, требуемый для вышеуказанных целей. Сложно на первый взгляд оценить количество программ, помогающих пользователям решать каждодневные задачи: будь то программа для построения мышиных моделей (применяемая в фармакологической отрасли), программа для создания и редакции научных текстов или помогающая расслабиться после рабочего дня игра в жанре «шутер», пользователь в большинстве случаев будет иметь выбор из нескольких приложений, а не один-единственный вариант.

Количество интегрированных сред разработки хотя и проще подсчитать, но их разнообразие все равно может озадачить начинающего (да и опытного) специалиста. Отталкиваться от языка программирования также трудоемко: на данный момент их существует более 500. Чтобы упростить выбор молодым программистам или тем, кто хочет ими стать, отраслевые издания создают списки наиболее популярных и востребованных языков. Так, каждую весну выходит сводный рейтинг популярности языков программирования от шведско-германского разработчика Стефана Нильсена. Он собирает статистику на основе изучения вакансий на сайтах-агрегаторах уже 18 лет. И большинство западных программистов ориентируются на результаты его исследований. [23]

Так, Нильсен приводит количество запросов в тысячах по тому или иному языку в разные периоды времени (перевод интернет-издания tproger.ru):

Или более показательная сводка на март 2018 г.:

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

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

Microsoft Visual Studio

Уже упоминавшаяся среда Visual Studio позволяет создавать программы, ориентированные преимущественно под Windows. Она применяется для создания консольных приложений или приложений, обладающих графическим интерфейсом. Для Visual Studio разработано изрядное количество сторонних плагинов: их добавление позволяет заметно расширить функциональность среды (вплоть до кроссплатформенного состояния). Минусы уже перечислялись: для запуска среды требуются значительные ресурсы. К тому же ее цена варьируется от 699 до 2900 долларов США. Зато она позволяет создавать буквально все: от мобильного приложения-калькулятора до видеоигр. [38]

Netbeans

Это название также уже знакомо. Netbeans позволяет редактировать существующие десктопные проекты или создавать новые, обладает интуитивно понятным интерфейсом и преимущественно использует Java, хотя и дает возможность установки пакетов с поддержками других языков. [33]

PyCharm

Не очень дорогая ИСР от той же компании, которая подарила миру рассмотренную выше среду IntelliJ IDEA (которая, кстати, годится и для корпоративных решений, а не только для мобильных приложений). По названию пользователь может без труда догадаться, что «родным» языком этой оболочки может считаться Python. Среда позволяет писать программы на Windows, Linux и Mac OS, поддерживая языки Coffee Script, CSS, Cython, HTML, JavaScript, Node.js, TypeScript и, разумеется, Python. Пользователи отзываются об этой среде как о лучшей для программистов Python, хотя и не без минусов: она содержит некоторые ошибки вроде неработающего автозаполнения. [35]

Eclipse

Еще одно уже знакомое название: среда позволяет писать программы и графические интерфейсы на C, C++, Java, Perl, PHP, Python, Ruby и других языках. К тому же открытый исходный код этой интегрированной оболочки хотя и пугает молодых программистов, но дает обширные возможности по усовершенствованию и персонализации среды. [30]

Code::Blocks

Очень известная ИСР, отличающаяся простым интерфейсом, совместимая с Linux, Mac и Windows. Новички очень любят эту среду разработки в силу простоты ее освоения и пригодности для совместной работы. Однако она написана на C++, что не может не сказаться на ее ограниченном функционале: эта среда считается «компактной» и потому совершенно не подходит для крупных проектов. [29]

Aptana Studio 3

Aptana считается наиболее мощной интегрированной средой разработки с открытым исходным кодом, а третья версия еще и улучшена по сравнению с предыдущими. Используется преимущественно для разработки веб-приложений, поддерживает HTML5, CSS3, JavaScript, Ruby, Rails, PHP и Python. Однако мощность подразумевает некоторую медлительность работы, и многие профессиональные программисты не очень любят Aptana Studio, предпочитая ей более быстрые и мощные HTML-среды. [28]

XCode

Уже рассмотренная среда пригодна не только для разработки приложений под iPhone, но также и является отличным набором инструментов для создания любых приложений под iPad и Mac. Такая среда имеет свои ограничения: она не работает без компьютера производства Apple, а для загрузки любого приложения в Apple Store необходимо иметь дорогостоящую лицензию разработчика. [39]

RubyMine

Еще один продукт от хорошо знакомой компании Jetbrains. Это кроссплатформенная интегрированная среда разработки, позволяющая пользователю писать на CoffeeScript, CSS, HAML, HTML, JavaScript, LESS, Ruby и Rails, Ruby и SASS. Она даже поддерживает разработку под iOS. Однако такая мультифункциональность требует определенной мощности: компьютер для работы должен иметь как минимум 4 ГБ оперативной памяти, что весьма существенно. [36]

Komodo

Производитель заявляет эту ИСР как «Одна среда для всех ваших языков», а пользователи хвалят удобный интерфейс для расширенного редактирования и множество мелких функций, повышающих удобство среды. Бесплатная ознакомительная версия, разумеется, имеет уменьшенный диапазон функций, однако владельцы полной версии утверждают, что эта ИСР абсолютно безгрешна. Вероятно, именно это общественное мнение сделало Komodo одной из популярнейших интегрированных сред для веб-разработки. Также Komodo позволяет писать мобильные приложения. [32]

Вывод по главе 2

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

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

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

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

Заключение

Хотя программирование и не является профессией, которая развивалась в течение веков, именно оно помогает форсировать развитие цифрового общества и служить целям всеобщей цифровизации.

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

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

Список использованной литературы

Печатные издания:

  1. Борисенко В.В. Основы программирования / В.В. Борисенко. Интернет-университет информационных технологий. М.: 2005.
  2. Голиков В.А. Теория программирования / В.А. Голиков. Московская финансово-промышленная академия. – М., 48 с.
  3. Зуев Е.А. Эволюция архитектуры компиляции // Сборник трудов "Современные информационные технологии и образование" под ред. проф. В.А.Сухомлина, Москва, МАКС Пресс, 2005.
  4. Каган Б.М., Сташин В.В. Основы проектирования микропроцессорных устройств автоматики / Б.М. Каган, В.В. Сташин. – М.: Энергоатомиздат, 1987.
  5. Казаченко В.Ф. Микроконтроллеры: Руководство по применению 16-разрядных микроконтроллеров INTEL MCS-196/296 во встроенных системах управления / В.Ф. Казаченко. – М.: Издательство Эком, 1997.
  6. Корнеев В.В., Киселев А.В. Современные микропроцессоры / В.В. Корнеев, А.В. Киселев – М.: НОЛИДЖ, 1998
  7. Микропроцессорные системы и микроЭВМ в измерительной технике: Учеб. пособие для вузов/ А.Г. Филиппов, А.М. Аужбикович, В.М. Немчинов и др.- М.: Энергоатомиздат, 1995.
  8. Науман Г., Майлинг В., Щербина А. Стандартные интерфейсы для измерительной техники: пер. с нем. / Г. Науман, В. Майлинг, А. Щербина. – М.: Мир, 1982.
  9. Новиков Ю.В., Калашников О.А., Гуляев С.Э. Разработка устройств сопряжения для персональных компьютеров типа IBM PC. Под общей редакцией Ю.В. Новикова. Практ. пособие / Ю.В. Новиков, О.А. Калашников, С.Э. Гуляев – М.: ЭКОМ., 1997
  10. Одинцов И. О. Профессиональное программирование. Системный подход / И.О. Одинцов – 2-е изд. перераб. и доп. – СПб.: БХВ-Петербург, 2004. – 624 с.
  11. Саймон Ричард. Microsoft Windows API. Справочник системного программиста / Ричард Саймон. Microsoft: 2004. – 1213 с.
  12. Себеста Роберт У. 2.3. Компьютер IBM 704 и язык Фортран // Основные концепции языков программирования = Concepts of Programming Languages / Роберт У. Себеста. Пер. с англ. – 5-е изд. – М.: Вильямс, 2001. – 672 с.
  13. Себеста Роберт У. 2.5. Первый шаг к совершенствованию: язык ALGOL 60 // Основные концепции языков программирования = Concepts of Programming Languages / Роберт У. Себеста. Пер. с англ. – 5-е изд. – М.: «Вильямс», 2001. – 670 с.
  14. Себеста Роберт У. Основные концепции языков программирования = Concepts of Programming Languages // Роберт У. Себеста. Пер. с англ. – 5-е изд. – М.: «Вильямс», 2001. – 670 с.
  15. Словарь синонимов ASIS. В.Н. Тришин. 2013.
  16. Словарь языка интернета.ru / под редакцией М. А. Кронгауза. – М. : АСТ-Пресс, 2016. – 199 с.
  17. Хантер Робин. Основные концепции компиляторов = The Essence of Compilers / Робин Хантер. – М.: Вильямс, 2002. – 256 с.

Периодические онлайн-издания:

  1. Bruckschlegel, Thomas. Microbenchmarking C++, C#, and Java. July 01, 2005. Профессиональный интернет-журнал разработчиков программного обеспечения Dr. Dobb's. URL: http://www.drdobbs.com/cpp/microbenchmarking-c-c-and-java/184401976 (дата обращения – 14.11.2018)
  2. What is Rapid Application Development? Профессиональное пособие CASEMaker Inc. URL: http://www.iro.umontreal.ca/~dift6803/Transparents/ Chapitre1/Documents/rad_wp.pdf (дата обращения – 14.11.2018)
  3. Wong, William. Before C, What Did You Use? Electronic Design. Retrieved May 22, 2017. URL: https://www.electronicdesign.com/embedded-revolution/c-what-did-you-use (дата обращения – 14.11.2018)
  4. Новостное издание «Утро» URL: https://utro.ru/news/2008/06/23/746732.shtml (дата обращения – 14.11.2018)
  5. Периодическое профессиональное интернет-издание T_ADVISER. URL: http://www.tadviser.ru/index.php/Статья:Компьютеры_(мировой рынок)

Источники статистических данных:

  1. Личный сайт Стефана Нильсена, авторитетного источника в сфере программирования. URL: https://www.snielsen.de/ (дата обращения – 14.11.2018)
  2. Отчет информационного агентства We Are Social. URL: http://wearesocial.sg/blog/2015/01/digital-social-mobile-2015/ (дата обращения – 14.11.2018)
  3. Официальный сайт информационного агентства Kantar Worldpanel. URL: https://www.kantarworldpanel.com/global/smartphone-os-market-share/ (дата обращения – 14.11.2018)

Документация для ИСР:

  1. Актуальная документация по Visual Studio корпорации Microsoft. URL: https://docs.microsoft.com/ru-ru/visualstudio/?view=vs-2017 (дата обращения – 14.11.2018)
  2. Презентация кроссплатформенной интегрированной среды Appcelerator Titanium. URL:https://www.appcelerator.com/ (дата обращения – 14.11.2018)
  3. Презентация кроссплатформенной интегрированной среды Aptana Studio 3. URL: http://www.aptana.com/ (дата обращения – 14.11.2018)
  4. Презентация кроссплатформенной интегрированной среды Code::Blocks. URL: http://www.codeblocks.org/ (дата обращения – 14.11.2018)
  5. Презентация кроссплатформенной интегрированной среды Eclipse. URL: http://www.eclipse.org/ (дата обращения – 14.11.2018)
  6. Презентация кроссплатформенной интегрированной среды IntelliJ IDEA от производителя JetBrains. URL: https://www.jetbrains.com/idea/ (дата обращения – 14.11.2018)
  7. Презентация кроссплатформенной интегрированной среды Komodo. URL: https://www.activestate.com/komodo-ide (дата обращения – 14.11.2018)
  8. Презентация кроссплатформенной интегрированной среды Netbeans. URL: https://netbeans.org/ (дата обращения – 14.11.2018)
  9. Презентация кроссплатформенной интегрированной среды PhoneGap. URL: https://phonegap.com/ (дата обращения – 14.11.2018)
  10. Презентация кроссплатформенной интегрированной среды PyCharm. URL: https://www.jetbrains.com/pycharm/ (дата обращения – 14.11.2018)
  11. Презентация кроссплатформенной интегрированной среды RubyMine. URL: https://www.jetbrains.com/ruby/ (дата обращения – 14.11.2018)
  12. Презентация кроссплатформенной интегрированной среды Xamarin Studio. URL: https://developer.xamarin.com/releases/studio/ (дата обращения – 14.11.2018)
  13. Презентация продукта Microsoft. URL: https://visualstudio.microsoft.com/ru/ (дата обращения – 14.11.2018)
  14. Презентация продукта Apple. URL: https://developer.apple.com/xcode/ (дата обращения – 14.11.2018)
  15. Презентация продукта Google. URL: https://developer.android.com/studio/ (дата обращения – 14.11.2018)

Государственные и международные стандарты:

  1. ANSI INCITS 226–1994 (R2004), ранее X3.226-1994 (R1999)
  2. ISO 6160:1979 Programming languages – PL/1
  3. ISO/IEC 1989:2002 Information technology – Programming languages – COBOL
  4. ISO/IEC 2382-1:1993, Information technology – Vocabulary – Part 1: Fundamental terms
  5. ISO/IEC/IEEE 24765:2010 Systems and software engineering – Vocabulary
  6. ГОСТ Р 51904-2002 Программное обеспечение встроенных систем. Общие требования к разработке и документированию
  7. ГОСТ Р ИСО/МЭК 12207-99 Информационная технология. Процессы жизненного цикла программных средств
  8. СТ ИСО 2382/7-77 // Вычислительная техника. Терминология.