Файл: Классификация языков программирования. Критерии выбора среды и языка разработки программ (Языки программирования).pdf
Добавлен: 31.03.2023
Просмотров: 107
Скачиваний: 1
Введение
В современном мире сложно представить хорошего специалиста, не владеющего информационными технологиями, так как для ориентации в информационных потоках специалист любого профиля должен уметь получать, обрабатывать и эффективно использовать информацию.
Быстрое развитие компьютерных и информационных технологий поспособствовало появлению новых разнообразных знаковых систем для записи алгоритмов – языков программирования.
Эти языки дают возможность для задания действий при помощи вычислительных формул и позволяют сформировать концепции, структурирующие последовательность действий.
Целью данной курсовой работы является изучение истории, классификации и развития языков программирования, а также рассмотрение критериев выбора среды и языка разработки программ.
Задачи исследования:
- Ознакомление с историей развития языков программирования.
- Рассмотрение классификации языков программирования.
- Обзор этапов разработки программ.
- Определение критериев выбора среды программирования и языка для разработки программы.
Для раскрытия темы, достижения поставленных целей и задач были использованы учебные пособия, научная литература, в том числе публикации в журналах, входящих в базы цитирования Web of Science и Scopus.
Глава 1. Языки программирования
1.1. История развития языков программирования
Программирование – в широком смысле представляет собой все технические операции, необходимые для создания программы, включая анализ требований и все стадии разработки и реализации. [11]
Язык программирования – формализованный язык для записи алгоритмов. Оформленные с помощью языков программирования алгоритмы называются программами для компьютера.
Язык программирования образуют три его составляющие: алфавит, синтаксис и семантика. [6]
Алфавит – это фиксированный для данного языка набор основных символов, т. е. «букв алфавита», из которых должен состоять любой текст на этом языке, - никакие другие символы в тексте не допускаются.
Синтаксис – это правила построения фраз, позволяющие определить, правильно или неправильно написана та или иная фраза.
Семантика определяет смысловое значение предложений языка. [3]
На сегодняшний день в мире существует более сотни языков программирования. У каждого языка своя область применения.
Языки программирования делятся на уровни – чем меньше детализация алгоритма, тем выше уровень языка.
По этому критерию можно выделить следующие уровни языков программирования:
- машинные;
- машинно-ориентированные (ассемблеры);
- машинно-независимые (языки высокого уровня). [7]
При появлении первых компьютеров машинный код был единственным средством общения человека с компьютером. Машинный код представлял собой последовательность единиц и нулей.
Языки программирования можно разделить на процедурные и непроцедурные.
В начале 50-ых годов 20 века появился процедурный язык низкого уровня (машинно-ориентированный) – язык Ассемблера. Это язык, который представляет каждую команду машинного кода в виде условных символьных обозначений, мнемоник. [6]
В 50-е годы был создан язык Фортран (FORTRAN от FORmula TRANslating system – система трансляции формул). Этот язык программирования относится к процедурным языкам высокого уровня. Так же, как и первые вычислительные машины, этот язык предназначался, в основном, для проведения естественнонаучных и математических расчетов. В усовершенствованном виде этот язык сохранился до настоящего времени. Среди современных языков высокого уровня он является одним из наиболее используемых при проведении научных исследований. Относится к компилируемым языкам. Компилируемыми принято считать такие языки как C, C++, FORTRAN, Pascal, Ada. Это означает, что программы, написанные на этих языках, транслируются в машинный код данного компьютера перед началом выполнения. [5]
В 1957 году появился язык Алгол (ALGOL от ALGOrithmic Language – алгоритмический язык). Этот язык так же, как и Фортран, предназначался для решения научно-технических задач. Данный язык имеет логическую структуру, благодаря которой стал стандартным средством записи алгоритмов в научной литературе и применялся как средство обучения основам программирования. Algol вызвал интерес, но не привлек достаточного количества потребителей, т.к. не имел некоторых важных функций – обработки текстов, форматирования ввода/вывода.
Лисп (LISP от LISt Processing – обработка списков), созданный в 1960 году Джоном Маккарти. Ориентирован на структуру данных в форме списка и позволяет организовать эффективную обработку больших объемов текстовой информации. [7]
В середине 60-х годов разработан в качестве учебного языка язык Бейсик (Beginner's All-purpose Symbolic Instruction Code – универсальный символический код инструкций для начинающих, или, сокращенно, BASIC). Он был разработан профессорами Дартмутского колледжа (США) Т. Куртцем и Дж. Кемени в 1965 году для обучения студентов, незнакомых с вычислительной техникой. Этот язык, благодаря простоте, стал очень популярным. Особенно его популярность повысилась с появлением персональных компьютеров, где он стал одним из основных языков программирования. [6]
PL/I (Programming Language One) создан в 1967 году. По своим возможностям PL/I значительно мощнее многих других языков (Си, Паскаля).
В конце 60-х – начале 70-х гг. появился язык Форт (FORTH – четвертый). Этот язык стал применяться в задачах управления различными системами после того, как его автор Чарльз Мур написал на нем программу, предназначенную для управления радиотелескопом Аризонской обсерватории.
Появившийся в 1971 году язык Pascal был назван так в честь великого французского математика XVII века, изобретателя первой в мире арифметической машины Блеза Паскаля. Этот язык был создан швейцарским ученым, специалистом в области информатики Никлаусом Виртом. Язык Pascal первоначально разрабатывался как учебный, и, действительно, сейчас он является одним из основных языков обучения программирования в школах и вузах. [7]
Pascal имеет различные средства для структурирования программ. На нижнем уровне деления (для элементарных подзадач) чаще всего используются процедуры и функции, а на верхнем уровне (для больших задач) используются модули. [11]
На основе языка Паскаль в конце 70-х гг. был создан язык АДА, названный в честь одаренного математика Ады Лавлейс.
АДА является языком, победившим (май 1979 г.) в конкурсе по разработке универсального языка, проводимым Пентагоном с 1975 году. Разработчики – группа ученых во главе с Жаном Ихбиа. Победивший язык окрестили АДА, в честь Огасты Ады Лавлейс. Язык АДА – прямой наследник языка Паскаль. Этот язык предназначен для создания и длительного (многолетнего) сопровождения больших программных систем, допускает возможность параллельной обработки, управления процессами в реальном времени и многое другое, чего трудно или невозможно достичь средствами более простых языков. [7]
В настоящее время популярным среди программистов является язык C. Данный язык был создан в лаборатории Bell в 1972 году и первоначально не рассматривался как массовый. Он планировался для замены ассемблера, чтобы иметь возможность создавать столь же эффективные и компактные программы и в то же время не зависеть от конкретного типа процессора. На этом языке в 70-е годы написано множество прикладных и системных программ и ряд известных операционных систем (UNIX).
C++ – это объектно-ориентированное расширение языка Си, созданное Бьярном Страуструпом в 1980 году. Язык C++ обладает рядом свойств, которые делают его более совершенным языком по сравнению с C, однако наиболее важным является то, что он обеспечивает возможность объективно-ориентированного программирования. [12]
Java – этот язык был создан компанией Sun в начале 90-х годов на основе C++. Он призван упростить разработку приложений на основе C++ путем исключения из него всех низкоуровневых возможностей. Но главная особенность этого языка – компиляция не в машинный код, а в платформно-независимый байт-код (каждая команда занимает один байт). [17]
Язык программирования Python был создан голландским программистом Гвидо ван Россумом в 1991 году, изначально он задумывался как потомок языка ABC. Гвидо ван Россум дал имя языку от названия телесериала. После того, как Россум разработал язык, он выложил его в Интернет, где уже целое сообщество программистов присоединилось к его улучшению. Сейчас часто выходят новые версии этого высокоуровневого многоцелевого языка, которые легко интегрируются с компонентами, написанными на других языках программирования. [5]
C# - это язык программирования, сочетающий в себе концепции: контекстно-ориентированные и объектно-ориентированные, разработанный под руководством Андерса Хейлсберга в 2001 году инженерами компании Microsoft. На данный момент наличие компиляторов кодов С# позволяет запускать приложения без установки дополнительного программного обеспечения на платформе .NET. Разработчики C# учли все проблемные алгоритмы предшествующих языков, что позволило сделать его более стабильным. [19]
1.2 Классификация языков программирования
Машинно-ориентированные языки – это языки, наборы операторов и изобразительные средства которых существенно зависят от особенностей ЭВМ (внутреннего языка, структуры памяти и т.д.). Машинно-ориентированные языки позволяют использовать все возможности и особенности машинно-зависимых языков [16]:
- высокое качество создаваемых программ;
- возможность использования конкретных аппаратных ресурсов;
- предсказуемость объектного кода и заказов памяти;
- для составления эффективных программ необходимо знать систему команд и особенности функционирования данной ЭВМ;
- трудоемкость процесса составления программ (особенно на машинных языках и ЯСК), плохо защищенного от появления ошибок;
- низкая скорость программирования;
- невозможность непосредственного использования программ, составленных на этих языках, на ЭВМ других типов.
У каждого компьютера свой определенный машинный язык, который предписывает компьютеру выполнение операций над операндами, поэтому машинный язык является командным. Но некоторые семейства электронных вычислительных машин (такие как ЕС ЭВМ, IBM/370/ и др.) имеют единый машинный язык для машин разной мощности. Информация о нахождении операндов и типе выполняемой операции сообщается в командах любого из них. [15]
В моделях ЭВМ последнего поколения можно заметить тенденцию к реализации более сложных команд, что способствует повышению внутренних языков машинно-аппаратным путем. Команды приближаются по своим функциональным действиям к операторам алгоритмических языков программирования.
Языки символического кодирования являются командными языками, как и машинные. Но стоит заметить, что коды операций и адреса в машинных командах заменены на символы-идентификаторы, и не представляют собой последовательность двоичных или восьмеричных цифр. Такая форма написание помогает запоминанию смысловых содержаний операций и минимизирует число ошибок при написании программ. [8, 1]
Первым шагом для создания языка символического кодирования является использование символических адресов. Команды ЭВМ заменены с физических (истинных) на символический адрес, а требуемое количество ячеек для хранения результирующих, исходных и промежуточных значений определяется по результатам составленной программы. Назначение адресов выполняется отдельно от составления программы в символических адресах, что позволяет существенно упростить трудозатраты программиста.
Существуют языки-автокоды, которые включают в себя все возможности языков символического кодирования. Это достигается благодаря возможности расширенного введения команд.
В некоторых программах можно обнаружить некоторые довольно часто использующиеся командные последовательности, соответствующие определенным процедурам преобразования информации. Для эффективной реализации таких процедур необходимо оформлять их в виде специальных макрокоманд, включая их в язык программирования. Можно перевести макрокоманды в машинные команды. Существует два способа: расстановка и генерирование. Макрокоманда позволяет обеспечить передачу фактических параметров, превращая её в реальную машинную программу. Фактические параметры в процессе трансляции вставляются в остов – серию команд, реализующих требуемую функцию, которая обозначена макрокомандой. [5, 18]
В системах с генерацией существуют специальные программы, которые проводят анализ макрокоманды и выявляют необходимость той или иной функции, а также формируют необходимую последовательность команд, реализующих данную функцию.
В обеих системах используются трансляторы с языком символического кодирования и набора макрокоманд, являющихся операторами автокода.
Развитым автокодам присвоили название Ассемблера. На языках типа Ассемблера составляются сервисные программы и пр. [12]