Файл: Классификация языков высокого уровня..pdf

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

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

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

Добавлен: 17.06.2023

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

Скачиваний: 3

ВНИМАНИЕ! Если данный файл нарушает Ваши авторские права, то обязательно сообщите нам.

СОДЕРЖАНИЕ

Введение

1.1Языки программирования

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

1.3 Языки программирования высокого уровня

2 Спецификация программ и стандартизация ЯП

2.1.1 Императивное программирование

2.1.2 Объектно-ориентированное программирование

2.1.3 Функциональное программирование

2.1.4 Логическое программирование

2.2.1 Язык функционального программирования РЕФАЛ

2.2.2 Язык программирования C (Си)

2 .2 .3 Язык программирования Prolog

2.2.4 Язык программирования Lisp (Лисп)

2.2.5 Язык программирования FORTRAN (ФОРТРАН)

2.2.6 Язык программирования ALGOL (АЛГОЛ)

2.2.7 Язык программирования COBOL (КОБОЛ)

2.2.8 Язык программирования Ada (Ада)

2.2.9 Паскаль (язык программирования)

2.2.10 История, назначение, характеристика Java

2.2.12 Язык программирования Smalltalk

3.1 Роль языков программирования

3.2 Области применения

3.3. Какой язык следует считать хорошим?

3.4 Структура программы на языке высокого уровня

Заключение

Список литературы

Системная область. Для создания операционных систем и реализации компиляторов в то время не существовало эффективного языка. Такие приложения должны были иметь доступ ко всем функциональным возможностям и ресурсам аппаратной части компьютера. Для достижения максимальной эффективности часто выбирался язык ассемблер. В некоторых проектах Министерства обороны США использовался JOVIAL — разновидность языка ALGOL, кроме того, вплоть до конца 60-х для таких приложений использовались также языки типа PL/I.

Еще одна близкая область — управление технологическим процессом и управление оборудованием. В связи с дороговизной и большими размерами компьютеров того времени большинство таких приложений (например, программа управления электростанцией или автоматической линией сборки) были больших объемов. Хотя обычно для этих целей использовался ассемблер, для применения в этой области были разработаны такие языки, как Forth.

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

Приложения XXI века

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

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

Языки четвертого поколения 4GL (Fourth Generation Languages) также заняли определенную нишу в этой области. Языки 4GL — это языки, специально адаптированные под конкретные области применения обработки деловой информации; как правило, они имеют средства для создания оконного интерфейса и простой доступ к записям базы данных. Также предусмотрены специальные возможности для создания форм заполнения стандартного бланка и генерирования красиво оформленных отчетов. Иногда компиляторы языков 4GL в качестве результата выдают программы на языке COBOL.


В 1996 г., когда вышло предыдущее издание этой книги, не было даже такого термина, как электронная коммерция (е-соттегсе). Это понятие, обозначающее ведение коммерческой деятельности через Интернет (продажа различных товаров через виртуальные магазины, предоставление услуг через электронные офисы), сильно изменило природу бизнес-программирования. Средства, позволяющие вести диалог пользователя (то есть покупателя) и компании (продавца) посредством Всемирной паутины, дали толчок к развитию новой роли языков программирования. Язык Java был разработан для обеспечения конфиденциальности частной жизни пользователя, а такие языки, как Perl и JavaScript позволяют продавцу получить от пользователя сведения, необходимые для проведения сделки.

Научные вычисления. Здесь по-прежнему FORTRAN не сдает своих позиций, хотя языки Java и C++ вполне успешно конкурируют с FORTRAN 90.

Системная область. В этой области доминирует язык С, созданный в конце 60-х гг., и его более новый вариант C++. Язык С обеспечивает очень эффективное выполнение программ и позволяет программисту получить полный доступ к операционной системе и аппаратной части. Кроме того, используются такие языки, как Modula и современный вариант BASIC. Хотя язык Ada и создавался для применения в этой области, он не получил здесь статуса основного языка. Программирование на языке ассемблер стало анахронизмом.

С появлением недорогих микропроцессоров, используемых в автомобилях, микроволновых печах, видеоиграх и электронных часах, возросла необходимость в языках, позволяющих писать программы для работы в реальном времени. К таким языкам относятся С, Ada и C++.

Искусственный интеллект. Здесь по-прежнему используется LISP, хотя на смену MIT LISP 1.5 начала 60-х пришли современные версии Scheme и Common LISP. Также развился Prolog. Оба языка признаны наиболее подходящими для задач поиска оптимального решения.

Издательская деятельность. Издательская деятельность является относи тельно новой областью применения языков программирования. Системы обработки текстов имеют свой собственный синтаксис входных команд и выходных файлов. Эта книга была написана с помощью системы обработки текстов ТЕХ. Можно сказать (за недостатком более подходящего термина), что главы компилировались по мере написания, то есть в них вставлялись ссылки на рисунки и таблицы, размещались сами рисунки и текст разбивался на абзацы. Транслятор ТЕХ создает программу на языке описания страниц Postscript. Хотя Postscript, как правило, является выходным форматом текстового процессора, у него есть собственный синтаксис и семантика, и текст может быть откомпилирован подходящим процессором. Обычно документы печатаются на лазерном принтере. Некоторые настаивают на программировании непосредственно в Postscript, но на сегодняшний день это выглядит так же глупо, как и программирование на языке ассемблер в начале 60-х (см. раздел 12.1).


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

В системе UNIX командный язык пользователя называется командным интерпретатором, или оболочкой shell, а программы называются сценариями shell. Эти сценарии активизируются при условии выполнения некоторых допустимых условий. Кроме того, появилось множество других языков сценариев (например, для тех же целей можно использовать Perl или TCL).

Новые парадигмы программирования. Постоянно появляются и изучаются новые модели приложений. В области исследования теории типов в языках программирования используется язык ML. Хотя промышленное применение этого языка не слишком значительно, его популярность постоянно растет. Другой важный язык — Smalltalk. Хотя он также не получил широкого использования в коммерческой области, он оказал глубокое воздействие на идеологию языков. Многие из объектно-ориентированных свойств языков C++ и Ada заимствованы из Smalltalk.

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

3.3. Какой язык следует считать хорошим?

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


Некоторые причины успеха или неуспеха языка могут быть внешними по отношению к самому языку. Так, использование языков COBOL или Ada в Соединенных Штатах для разработки приложений в некоторых предметных областях было регламентировано указом правительства. Аналогично часть успеха языка FORTRAN можно отнести к его большой поддержке различными производителями вычислительной техники, которые тратили много усилий на его изящные реализации и подробные описания. Часть успеха SNOBOL4 в 70-е гг. можно приписать превосходному описанию этого языка, сделанному Грисволдом [46]. Широкое распространение таких языков, как LISP и Pascal объясняется как их использованием в качестве объектов теоретического изучения студентами, специализировав38 Глава 1. Проблемы разработки языка

шимися в области разработки языков программирования, так и реальной практической значимостью этих языков.

Свойства хорошего языка

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

1. Ясность, простота и единообразие понятий языка. Язык программирования обеспечивает как систему понятий для обдумывания алгоритмов, так и средства выражения этих алгоритмов. Язык должен стать помощником программиста задолго до стадии реального кодирования. Он должен предоставить ясный, простой и единообразный набор понятий, которые могут быть использованы в качестве базисных элементов при разработке алгоритма. С этой целью желательно иметь минимальное количество различных понятий с как можно более простыми и систематизированными правилами их комбинирования. Это свойство мы называем концепту алы юй целостностью. Синтаксис языка влияет на удобство и простоту написания и тестирования программы, а в дальнейшем способствует ее пониманию и модификации. Центральным моментом здесь является удобочитаемость программы. Слишком лаконичный синтаксис может оказаться удобным при написании программ (особенно для опытного программиста), однако, когда такую программу нужно модифицировать, в ней оказывается нелегко разобраться. Программы на APL обычно настолько непонятны, что даже их разработчики спустя несколько месяцев после завершения работы затрудняются их расшифровать. Многие языки содержат такие синтаксические конструкции, которые сами подталкивают к неправильному восприятию программ, поскольку два почти одинаковых оператора на самом деле имеют кардинально различные значения. Например, появление пробела в операторе языка SNOBOL4 может полностью изменить его смысл. Хороший язык характеризуется тем, что конструкции, обозначающие различные понятия, должны и выглядеть совершенно по-разному, то есть семантические отличия должны отражаться в синтаксисе.


2. Ортогональность. Термин «ортогональность» означает, что любые возможные комбинации различных языковых конструкций будут осмысленными. Например, предположим, что язык позволяет задать выражение, которое вычисляет численное значение, а также задать условный оператор, в котором вычисляется выражение, с единственной целью — получить булево значение истина или ложь. Эти две языковые конструкции (выражение и условный оператор) ортогональны, если любое выражение можно использовать (и вычислять) внутри условного оператора.

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

3. Естественность для приложений. Язык должен иметь такой синтаксис, который при правильном использовании позволяет отражать в самой структуре программы лежащие в основе реализуемого ею алгоритма логические структуры. В идеале должна существовать возможность прямого перевода эскиза такой программы в подходящие программные операторы, отражающие структуру алгоритма. Последовательный, параллельный, логический и другие алгоритмы имеют различные естественные структуры, которые представлены в программах, написанных на языках, предназначенных для реализации этих алгоритмов. Язык должен предоставлять соответствующие решаемой задаче структуры данных, операции, структуры управления и естественный синтаксис. Одной из важнейших причин распространения того или иного языка является его естественность. Язык, соответствующий определенному классу приложений, может сильно облегчить создание отдельных программ в этой области. В качестве примера языков с очевидной направленностью на решение конкретных классов задач можно привести Prolog с уклоном в сторону дедукции и C++, предназначенный для объектно-ориентированных разработок.

4. Поддержка абстракций. Даже в наиболее естественном для данной предметной области языке программирования остается некоторый существенный пробел. Это пробел между абстрактными структурами данных и операциями, которые характеризуют решение задачи, и конкретными базовыми структурами данных и операциями, встроенными в язык. Например, язык С вполне может подойти для составления расписания занятий в университете, хотя в нем напрямую не существует естественных для этого приложения абстрактных структур данных, таких как студент, курс лекций, преподаватель, аудитория, и таких абстрактных операций, как определить студента в группу и назначить аудиторию для группы. Важной частью работы программиста является разработка конкретных абстракций для решения задачи и их последующая реализация с использованием базовых возможностей реального языка программирования. В идеале, язык должен позволять определять структуры данных, типы данных и операции и поддерживать их как самодостаточные абстракции. В этом случае программист сможет использовать их в других частях программы, зная только их абстрактные свойства и не вникая в их фактическую реализацию. Как Ada, так и C++ были разработаны именно по причине отсутствия этой возможности в более ранних языках, таких как Pascal и С соответственно.