Файл: Классификация языков программирования. Критерии выбора среды и языка разработки программ (Критерии выбора среды и языка разработки программ).pdf
Добавлен: 31.03.2023
Просмотров: 238
Скачиваний: 1
СОДЕРЖАНИЕ
Глава 1 Классификация языков программирования
1.1 История развития языков программирования
1.2 Классификация языков программирования
Глава 2 Критерии выбора среды и языка разработки программ
2.1 Наиболее известные языки программирования
CGI-сценарии, которые написаны преимущественно на Perl, C/C++, выполняются на стороне сервера и зависят от конкретных действий пользователя. Применяются, как и сценарии PHP, для создания динамических HTML-страниц, гостевых книг, ведения форумов и опросов.
1.2 Классификация языков программирования
Язык программирования используется для написания компьютерных программ, представляющих собой набор правил, которые позволяют компьютеру выполнить какой-либо вычислительный процесс, организовать управление различными объектами и т. п. Отличие языка программирования от естественного языка в том, что он предназначен для взаимодействия человека с ЭВМ, а естественный язык – для общения людей между собой. У большинства языков программирования для определения и манипулирования структурами данных и управления процессом вычислений используются специальные конструкции.
Чаще всего язык программирования существует в нескольких видах, которые существенно отличаются между собой:
– Стандарт языка – набор спецификаций, которые определяют его синтаксис и семантику; стандарт языка может исторически развиваться.
– Воплощения (реализации) стандарта – сами программные средства, которые обеспечивают работу соответственно определенному варианту стандарта языка. Они отличаются производителем, маркой и вариантом (версией), временем выпуска, полнотой воплощения стандарта, дополнительными возможностями; зачастую имеют определённые ошибки или особенности воплощения, которые влияют на практику использования языка или даже на его стандарт.
Стандартизация языков программирования.
Для большинства широко распространённых языков программирования разработаны международные стандарты. Специальными организациями проводится регулярное обновление и публикация спецификаций и формальных определений для соответствующего языка. Подобные комитеты продолжают разработку и модернизацию языков программирования и решают вопросы о расширении или поддержке уже существующих или новых языковых конструкций.
Языки программирования могут быть реализованы в виде компилируемых, интерпретируемых и встраиваемых.
Компилируемый язык. Программа при помощи особой программы, коорая называется компилятором, преобразуется (компилируется) в машинный код (набор инструкций) для данного типа процессора и образует исполнимый модуль, который можно запустить на выполнение как отдельную программу. Таким образом, компилятор преобразует исходный текст программы с языка программирования высокого уровня в двоичный код инструкций процессора.
Преимуществом скомпилированных программ является меньшее время их выполнения и ненужность для их выполнения дополнительных программ, т. к. они уже переведены на машинный язык. В то же время, при каждом изменении текста программы необходима ее перекомпиляция, что влияет на скорость процесса разработки. Также, скомпилированная программа может быть выполнена только на том типе компьютеров и, как правило, под управлением той операционной системы, на которую был рассчитан компилятор. Для создания исполняемого файла для машины другого типа необходима новая компиляция.
Интерпретируемый язык. Интерпретатором непосредственно выполняется (интерпретируется) исходный текст без предварительного перевода. При этом программа запоминается на исходном языке и не может быть запущена без интерпретатора. С этой позиции процессор компьютера можно назвать интерпретатором машинного кода.
Разделение на компилируемые и интерпретируемые языки довольно условно. Так, например, для языка Pascal, который традиционно считается компилируемым языком, можно написать интерпретатор. Кроме того, большинством современных «чистых» интерпретаторов не исполняются конструкции языка непосредственно, а компилируются в некоторое высокоуровневое промежуточное представление (например, с разыменованием переменных и раскрытием макросов).
Для любого интерпретируемого языка можно создать компилятор. Например, язык Lisp, являющийся изначально интерпретируемым, может компилироваться без любых ограничений. Код, который создается во время исполнения программы, может так же динамически компилироваться при выполнении.
Программы, разработанные на интерпретируемых языках, можно запускать сразу же после изменения, что приводит к облегчению процесса разработки. Зачастую программы на интерпретируемых языках могут быть запущены на разных компьютерах и операционных системах без дополнительных трудностей.
Вместе с тем, интерпретируемые программы выполняются гораздо медленнее, чем компилируемые, к тому же, они не могут быть выполнены без программы-интерпретатора.
Существуют языки (такие как Java и C#), которые находятся между компилируемыми и интерпретируемыми. Т.е. программа компилируется не в машинный язык, а в машинно-независимый код низкого уровня, который называется байт-кодом. Далее байт-код выполняет виртуальная машина. Виртуальная машина Java (Java Virtual Machine) выполняет байт-код для языка Java, а Common Language Runtime – для языка C#.
Для выполнения байт-кода обычно используется интерпретатор, хотя отдельные его части для ускорения работы программы могут транслироваться в машинный код непосредственно при выполнении программы по технологии компиляции «на лету» (Just-in-time compilation, JIT).
При таком подходе удобно использовать плюсы и интерпретаторов, и компиляторов. Существуют языки, которые имеют интерпретатор и компилятор (например, Форт).
Современные языки программирования поддерживают использование ASCII, т. е. доступность всех графических символов ASCII является необходимым и достаточным условием для записи любых конструкций языка. Из управляющих символов ASCII допускается только использование возврата каретки CR, перевода строки LF и горизонтальной табуляции HT (иногда также вертикальной табуляции VT и перехода к следующей странице FF).
В ранних языках, которые возникли в эпоху 6-битных символов, использовался более ограниченный набор. Например, алфавит Фортрана включает 49 символов (включая пробел): 26 символов букв латинского алфавита, цифры от 0 до 9 и знаки «точка», «запятая», =, +, –, *, /, (, ), $, ', :. Исключительным отличием характеризуется язык APL, в котором можно использовать большое количество специальных символов. , ', :. Исключительным отличием характеризуется язык APL, в котором можно использовать большое количество специальных символов.
Возможно использование символов за пределами ASCII (например, символов KOI8-R или символов Unicode), только это зависит от реализации: иногда такие символы разрешаются только в комментариях и символьных/строковых константах, а иногда и в идентификаторах. В СССР существовали языки, в которых все ключевые слова записывались русскими буквами, но большой популярности подобные языки не обрели (за исключением встроенного языка программирования 1С:Предприятие).
Расширение набора символов, которые используются в языке программирования, не поддерживается, т. к. многие проекты по созданию программного обеспечения являются международными. Неудобно было бы работать с кодом, в котором имена одних переменных могут быть записаны русскими буквами, других – арабскими, а третьих – китайскими иероглифами. Вместе с тем, языки программирования нового поколения (например, Delphi, C#, Java) для работы с текстовыми данными поддерживают Unicode.
Классификация языков программирования по категориям связана с методами, которые используются при написании программ (рис. 1).
Рисунок 1. Классификация языков программирования.
Процедурные языки Процедурные языки являются языками высокого уровня, в которых используется метод разбиения программ на отдельные связанные между собой модули – подпрограммы (процедуры и функции). Компоненты языка состоят из последовательности операторов, которые используют библиотечные процедуры и функции. Первым процедурным языком был Fortran, затем появился Cobol, Algol, Pascal, C, Ada.
Языки программирования низкого уровня.
Программирование на первых компьютерах происходило с помощью двоичных машинных кодов. Такое программирование довольно трудоемкое и тяжелое. Для упрощения процесса программирования разрабатывались языки программирования низкого уровня, которые позволяли задавать машинные команды в понятном для человека виде. Чтобы преобразовать их в двоичный код создавались специальные программы – трансляторы.
К языкам низкого уровня относится: программирование в машинных кодах; ассемблер; макроассемблер.
Языки низкого уровня ориентировались на определенный тип процессора и учитывали его особенности, поэтому для того, чтобы перенести программу, написанную на ассемблере, на другую аппаратную платформу её нужно было почти полностью переписать. Различия присутствовали также и в синтаксисе программ под разные компиляторы.
Языками низкого уровня пользуются преимущественно для написания небольших системных программ, драйверов устройств, модулей стыков с нестандартным оборудованием, программирования специализированных микропроцессоров, когда немаловажным является компактность, быстродействие и возможность прямого доступа к аппаратным ресурсам.
Языки программирования высокого уровня. В языках высокого уровня особенности конкретных компьютерных архитектур не учитываются, поэтому написанные программы легко могут быть перенесены на другой компьютер. Зачастую достаточным является компиляция программы под определенную архитектурную и операционную систему. Разработка программ на языках высокого уровня значительно проще и ошибок намного меньше. К тому же время разработки программы значительно уменьшается, что является особенно важным фактором при работе над сложными программными проектами.
Недостаток некоторых языков высокого уровня состоит в большом размере программ по сравнению с программами на языках низкого уровня. В то же время текст программ на языке высокого уровня гораздо меньше, но в байтах код, написанный на ассемблере, будет более компактным. Поэтому языки высокого уровня преимущественно используют для создания программного обеспечения для компьютеров и вычислительных устройств с большим объемом памяти.
Языки же низкого уровня используются для написания программ к устройств, для которых критичным является размер программы. Языки высокого уровня делятся на универсальные и проблемно-ориентированные.
Наиболее распространенные универсальные языки C#, C++, Basic, Pascal (Delphi) используются для разработки Windows-приложений. Большой вклад в программирование на начальных этапах внесли языки Fortran, Cobol, Algol, C и др. Языки программирования для разработки Интернет-приложений скорее относятся к универсальным языкам. К ним относятся современные версии C#, Basic, J#.
Проблемно-ориентированными языками, которые используются на Интернет-серверах и клиентских Интернет-приложениях, являются PHP, Perl, JavaScript, VBScript.
Объектно-ориентированные языки стали дальнейшим уровнем развития процедурных языков, основной концепцией которых есть совокупность программных объектов. Написание программы на языке представляется в виде последовательности создания экземпляров объектов и использование их методов. К ним относятся из первых языков Simula и SmallTalk, далее C++, Java.
В декларативном программировании задается спецификация решения задачи, то есть дается описание того, что представляет собой проблема и какой ожидается результат. Программы, созданные с помощью декларативного языка, не содержат переменные и операторы присваивания. К декларативным языкам можно отнести SQL и HTML. К подвидам декларативного программирования относится функциональное и логическое программирование.
Функциональные языки являются языками искусственного интеллекта. Программа, написанная на функциональном языке, состоит из последовательности функций и выражений, которые необходимо вычислить. Основной структурой данных является связный список. Функциональное программирование принципиально отличается от процедурного. Основными функциональными языками являются Lisp, Miranda, Haskel.
Языки, ориентированные на решение задач без описания алгоритмов, языки искусственного интеллекта. Представителем логического программирования является Prolog, которым написано большинство экспертных систем.
Языки относятся к объектно-ориентированным языкам, используются для написания программ, которые исполняются в определенной программной среде. Тексты программ, написанные на языке сценариев, можно включать в тело Html-документа. Первыми скриптами были Perl и Python, которые изначально были разработаны для операционной системы Unix, а уже в дальнейшем появились версии языков для операционных систем Windows и Macintosh. Для написания программ на языке сценариев необходимо знание процедур и функций системных библиотек.
Языки ориентированы на работу с одним определенным типом данных. Например, APL работает с матрицами и векторами, Snobol обрабатывает строки, SETL выполняет операции над множествами. Особое развитие получили языки для работы с базами данных: 3GL, PL/SQL, FoxPro. Замечание 3 Широкими возможностями обработки документов текстового процессора Microsoft Word, электронных таблиц MS Excel, баз данных MS Access и даже программ подготовки слайдовых презентаций MS PowerPoint обладает встроенный язык системы MS Office – Visual Basic for Application (VBA).