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

ВУЗ: Не указан

Категория: Курсовая работа

Дисциплина: Не указана

Добавлен: 25.04.2023

Просмотров: 169

Скачиваний: 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]