Добавлен: 29.03.2023
Просмотров: 321
Скачиваний: 4
ВВЕДЕНИЕ
Причиной выбора темы данной курсовой работы «Классификация языков программирования высокого уровня» по дисциплине «Основы алгоритмизации и программирования» послужила её актуальность.
Современного человека невозможно представить без персонального компьютера. Наша жизнь тем или иным образом зависит от информационных технологий: базы данных паспортного стола, пенсионного фонда и даже медицинская документация представлены теперь в электронном виде. Все эти базы создавались путём программирования. Но для того, чтобы наладить столь сложный процесс, человеку нужно было с чего- то начать: изобрести компьютер, создать определённый алгоритм действий для него, чтобы уже в дальнейшем совершенствовать начатое. Поскольку любой компьютер понимает только свой машинный язык или код, а для человека более удобен свой естественный язык, необходимо было разработать средство служащее мостом между человеком и компьютером. Так благодаря развитию в сфере информационных технологий появились языки программирования.
Цели написания данной курсовой работы заключаются в том, чтобы:
- рассмотреть общие характеристики и уровни языков программирования;
-проследить историю возникновения языков программирования высокого уровня;
- рассмотреть современные языки.
В соответствии с поставленными целями необходимо решить следующие задачи:
-собрать информацию по теме курсовой работы;
-познакомиться с общим понятием алгоритма, языка программирования;
-познакомиться с языками программирования высокого уровня;
-понять как языки высокого уровня используются и на какие группы делятся;
-познакомиться с современными языками;
- сделать вывод.
Данная курсовая работа основана на авторитетных учебных изданиях, рекомендованных министерством образования, которые были предоставлены университетом, что не оставляет сомнения в их надёжности.
1 Языки программирования
1.1 Классификация языков программирования и история их формирования
Язык программирования это система обозначений и правил, которая позволяет записать программу решения задачи последовательным текстом в удобном для человека виде.[[1]]
Сегодня в мире существуют сотни реально используемых языков программирования, и у каждого из них есть определенная область применения.
Создание алгоритма - один из основных этапов решения задачи на компьютере. Суть алгоритма заключается в последовательности предписаний, определяющей процесс преобразования первичных данных в нужный результат за определенное число шагов.[[2]]
При записи алгоритма в виде блок-схемы, на псевдокоде или в словесной форме позволителен определенный произвол при представлении команд. Такая запись настолько точна, что дает нам понять суть дела и выполнить алгоритм. Впрочем, на деле исполнителями алгоритмов являются компьютеры. В связи с этим алгоритм должен быть записан на «понятном» для компьютера языке. Здесь первоочередной необходимостью является точность записи команд, не оставляющая места для спонтанного истолкования их исполнителем. Исходя из этого, язык для алгоритмической записи должен быть формализован. Этот язык и есть язык программирования, а записанный на данном языке алгоритм— компьютерная программа.[[3]]
Есть множество различных классификаций для языков программирования, но чаще всего их подразделяют на языки низкого, высокого и сверхвысокого уровня.[[4]]
Уровень языка зависим от степени детализации предписаний, чем она меньше, тем уровень выше.
В связи с этим выделяют:
-машинные;
-машинно-ориентированные (ассемблеры);
-машинно-независимые (языки высокого уровня).[[5]]
Машинный язык и языки программирования относят к алгоритмическим языкам.[[6]]
Ранним действительным языком программирования считается язык Short Code (Короткий код) созданный в 1949г. под руководством Мочли. С его помощью можно было записывать уравнения не в двоичном коде, а двухсимвольными комбинациями.[[7]]
В самом начале второй половины двадцатого века, когда появились компьютеры на электронных лампах, началось масштабное развитие языков программирования. Запись производилась напрямую в виде машинных команд, что и стало началом программирования. Поскольку стоимость компьютеров сильно превосходила стоимость разработки любой программы, требовался высокоэффективный код. Для того, чтобы упростить процесс кодирование был создан машинно-ориентированный язык Ассемблера. Он позволял в символическом виде записывать машинные команды. Данный язык был зависим от каждого отдельного компьютера, точнее от системы команд. Но был достаточно удобен для программирования небольших задач, где требовалась максимальная скорость выполнения. Гораздо более труднее обстояло дело с крупными проектами. Главной проблемой при разработке программы на Ассемблере была привязка к архитектуре определенного компьютера. Это полностью исключало перенос данной программы на другие машины. По мере усовершенствования компьютера, такие программы нуждались в переписывании заново.[[8]]
Языки низкого уровня это машинные и машинно-ориентированные языки, они требуют указания мельчайших подробных деталей при процессе обработки данных.
Оперируя языками низкого уровня, и имея доступ к разнообразным возможностям процессора, разработчик способен создавать достаточно компактные и весьма эффективные программы, работающие быстрее и не занимающие большого объёма памяти устройства. Посредством таких языков быстрее и проще разрабатывать программы для управления устройствами компьютера (драйверы), системные программы и др.[[9]]
Ясен тот факт, что человеку трудно писать и читать алгоритмы на языке машины.[[10]] Для человека ближе и понятнее языки способные имитировать естественные. Именно такими являются языки программирования высокого уровня. Эти языки очень удобны для программистов, ведь за счет использования в них некоторых слов разговорного языка и распространенных математических символов, разрабатывать программы на них значительно проще.
К языкам высокого уровня относятся:
- Фортран,
- Кобол,
- Бейсик,
- Алгол,
-Си,
-Паскаль,
-Пролог и т.д.[[11]]
Поскольку в данных языках нет привязки к особенностям конкретных компьютерных архитектур, программы, которые создаются на уровне исходных текстов, легко переносимы на другие платформы, для которых создан транслятор. Разрабатывать программы на языках высокого уровня благодаря понятным и мощным командам не только гораздо проще, но и ошибок при их создании допускается в разы меньше. [[12]]
Разработка языков высокого уровня была направлена на то, чтобы избавить программистов от учета технических особенностей определенных компьютеров и от их архитектуры. [[13]]
Стоит отметить, что программы, созданные на языках высокого уровня, требуют для себя больше места в памяти и выполняются медленнее, чем программы на машинных языках. Однако, в сравнении с машинными языками, преимуществ у языков высокого уровня намного больше:
- алфавит языка высокого уровня в сравнении с алфавитом машинного языка значительно шире, что увеличивает его наглядность;
- набор операций, которые допускаются для использования, не зависит от машинных операций, а выбирается из соображений удобства определения алгоритмов решения задач определенного класса;
- достаточно гибок и удобен для использования формат предложений, это позволяет с помощью одного предложения задавать вполне содержательный этап обработки данных;
- требуемые операции задаются с помощью общепринятых математических обозначений;,
- данные получают индивидуальные имена, которые выбирает сам программист;
- в языке по сравнению с набором машинных типов данных может быть предусмотрен значительно более широкий набор типов данных.[[14]]
Лишь Алгол-68 и APL можно назвать языками сверхвысокого уровня. Поднятие их уровня произошло посредством введения сверхмощных операций и операторов.
Существует так же классификация, которая делит языки на вычислительные и языки символьной обработки. К вычислительному типу можно отнести языки: Фортран, Алгол, Паскаль, Бейсик, Си. А к языкам символьной обработки –Снобол, Лисп, Пролог и др.
Кроме того, можно выделить еще два основных направления развития языков программирования в современной информатике: процедурное и непроцедурное.[[15]]
Процедурные или алгоритмические языки необходимы для создания программ, которые представляют собой систему предписаний для решения конкретной задачи (выполнение команд определяется их очередностью, командами перехода, цикла или обращениями к процедурам).Здесь компьютер лишь механически выполняет эти предписания.[[16]]
История формирования процедурных языков программирования началась с возникновения проблемно-ориентированных языков. В данном языке максимально полно учитывается специфика класса задач, для решения которых он предполагается быть использован.
Процедурные языки также можно разделить на структурные и операционные. В структурных языках одним оператором могут быть записаны целые алгоритмические структуры: циклы, ветвления и т.д.. В операционных же языках для этого необходимо использовать несколько операций. Достаточно широкую популярность получили структурные языки как: Ада, Паскаль, ПЛ\1, Си.
Среди операционных наиболее известны: Бейсик, Фокал, Фортран.[[17]]
В начале 70-х годов 20 века сформировалось декларативное (непроцедурное) программирование, а в 80-е годы с появлением японского проекта создания ЭВМ пятого поколения ( цель которого, заключалась в создании основы для проектирования интеллектуальных машин), началось его более стремительное развитие. Логические и функциональные языки относят к непроцедурному программированию.[[18]]
Программа в функциональных языках описывает вычисление некой функции. Как правило, данная функция задается как состав других, более простых, которые в свою очередь раскладываются на ещё более простые и т.д. В функциональных языках одним из главных элементов является рекурсия, т.е. вычисление значений функции через значение этой же функции от других элементов. В функциональных классических языках нет циклов и присваивания.
Программа в логических языках совсем не описывает действий, лишь задает данные и соотношения меж ними. Вопросы системе можно задавать только после этого. Обрабатывая известные и заданные в программе данные, машина находит ответ на поставленный вопрос. Самим языком не явно задается порядок обработки, который в программе не описывается. Язык классического логического программирования - Пролог. Совсем не требует алгоритмического мышления построение логической программы, данная программа описывает статические отношения объектов, а динамика скрыта от программиста и находится в механизме перебора.[[19]]
Объектно-ориентированный язык создает фон в виде большого числа независимых объектов. Здесь любой объект ведёт себя сродни отдельному компьютеру, который не вникая во внутренние механизмы их работы, можно использовать для решения задач.[[20]] Среди профессионалов наиболее популярны, такие языки объектного программирования как Си ++. Среды типа Delphi и Visual Basic предпочитает использовать более широкий круг программистов.[[21]]
Помимо прочего языки могут делиться на компилируемые и интерпретированные.[[22]]
1.2 Трансляторы
Единственным средством взаимодействия компьютера с человеком на заре компьютерной эры был машинный код. Поэтому громадным достижением стало то, что родоначальникам языков программирования удалось сам компьютер заставить переводить эти языки на машинный код.
Выполняя программу на языке высокого уровня, первым делом ее нужно перевести на язык машинных команд. Для этого была создана соответствующая программа – транслятор или компилятор.[[23]]
Транслятор - языковой процессор, который в качестве входных данных воспринимает программы на отдельном начальном языке, а на выходе выдает равносильные работоспособные программы, но уже на объектном языке, также произвольного уровня.
Ассемблер - это транслятор, у которого отправным языком является символическое представление машинного кода, а объектным языком является некая форма машинного языка отдельного реального компьютера.
Компилятор — транслятор, для которого начальным служит язык высокого уровня, а его объектный язык близок к машинному языку реального компьютера. Им может быть язык ассемблера или другая версия машинного языка.[[24]]