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

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

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

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

Добавлен: 17.06.2023

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

Скачиваний: 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 Структура программы на языке высокого уровня

Заключение

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

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

История

Язык Smalltalk отличается от всех других языков, описанных в этой книге, в двух отношениях:

1. Он разрабатывался как целая система, а не как просто средство для написания программ.

2. Объектная ориентация в этом языке изначально была встроенной концепцией в противоположность языкам C++ и Ada, в которых к уже существующим механизмам была просто добавлена концепция наследования.

Использование языка Smalltalk исходно было ограничено отсутствием доступных реализаций. Но теперь это уже не так. Язык Smalltalk имеет немногочисленных, но преданных приверженцев.

Smalltalk был разработан в начале 70-х годах Аланом Кеем в исследовательском центре Xerox PARC (Palo Alto Research Center). Целью проекта под названием Dynabook было создание целой среды для персонального компьютера. Это происходило во время расцвета деятельности Xerox PARC - тогда были разработаны персональные компьютеры Alto и Star, мышь, оконная среда (впоследствии весьма эффективно использованная Стивеном Джобсом в фирме Apple для разработки компьютеров Macintosh), значки для программ, сети Ethernet и Smalltalk.

В 1972 году Дан Ингаллс разработал первую реализацию языка, известную как Smalltalk-72. Это была первая практическая версия языка. Затем в Smalltalk были внесены некоторые изменения и общепринятым стандартом описания языка стал Smalltalk-80. Поскольку официального стандарта не существует, название Smalltalk применяется для обозначения набора нескольких достаточно близких и чрезвычайно совместимых языков.

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

Краткий обзор языка

Уникальность языка Smalltalk определяют следующие свойства, благодаря которым он отличается от остальных языков.

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

Минимальный язык разработки. Небольшой базовый язык определяет Smalltalk. По существу, все, что можно делать в Smalltalk, - это разработать класс как подкласс других классов и к каждому из разработанных классов присоединить методы. Основные операторы Smalltalk определяют присваивание и последовательное выполнение действий. Истинная мощь языка заключается в механизме параметрических вызовов, называемых сообщениями. При помощи сообщений можно определять структуры управления, подобные нашим обычным конструкциям if и while. Smalltalk поставляется с предопределенным набором определений классов, написанных на языке Smalltalk. Когда Smalltalk устанавливается на компьютер, то создается образ пустого окружения путем включения всех этих определений. При вызове интерпретатора Smalltalk вы получаете свою собственную копию этого образа. Внутри этого образа вы строите новые классы и модифицируете существующие классы добавлением или изменением методов. Системному администратору легко построить систему Smalltalk с альтернативным набором предопределенных определений классов, так что не совсем понятно, что следует понимать под языком Smalltalk. В данной ситуации мы называем языком Smalltalk набор предопределенных классов.

Выполнение программы Smalltalk. Модель выполнения для Smalltalk основана на коммуникационной модели (communication model). Данные в Smalltalk состоят из объектов, а методы рассматриваются как сообщения, посылаемые объектам. Так, 1 + 2 означает, что сообщение "+" с параметром 2 послано целочисленному объекту 1. Метод "+" в данном случае возвращает значение 3. На первый взгляд это может показаться странным, но становится вполне естественным после небольшой практики.

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


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

Изначально языки программирования разрабатывались таким образом, чтобы обеспечить наиболее эффективное выполнение программ. Компьютеры, стоившие миллионы долларов, определяли главную часть расходов, тогда как оплата работы программистов, зарабатывавших примерно $10 000 в год, составляла всего лишь малую их часть. Программа, созданная с помощью любого языка высокого уровня, должна была выполняться по крайней мере так же эффективно, как и программа, написанная на языке ассемблер, где кодирование осуществлялось вручную. Джон Бэкус, в конце 50-х гг. создавший для IBM язык FORTRAN, десятью годами позже говорил так :

«Честно говоря, у нас не было даже отдаленного представления о том, как эта штука [язык и компилятор FORTRAN] будет работать... Поскольку большинство людей в то время совершенно не верили в возможность создания подобной вещи, мы просто делали упор па оптимизацию объектной программы и времени выполнения. Считалось, что машинные коды программ, созданные транслятором, будут совершенно неэффективны и их невозможно будет использовать для большинства приложений. Мы совершенно не ожидали получить в результате систему, абсолютно независимую от конкретной машины, на которой программа в конечном счете должна выполняться. Оказалось, что это на самом деле очень ценное свойство, но поначалу мы об этом действительно не думали.

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

К середине 60-х гг. (к этому времени и относится приведенное выше высказывание), после появления языков FORTRAN, COBOL, LISP и ALGOL, Бэкус уже понимал, что программирование изменилось. Машины становились дешевле, затраты на программирование, наоборот, росли, появилась реальная необходимость переносить программы с одной машины на другую, а поддержка конечного продукта требовала значительных компьютерных ресурсов. В связи с этим поменялись требования, которым должен был удовлетворять создаваемый язык программирования. Вместо обеспечения эффективной работы скомпилированной программы на дорогом компьютере перед языками высокого уровня возникла другая задача — упростить создание корректных программ для решения задач в конкретных областях.


Технология создания компиляторов была сформирована в 60-е и 70-е гг. и развитие языковых технологий сконцентрировалось на решении специфичных задач в конкретных областях. В научном программировании в основном использовался FORTRAN, деловые приложения писались на языке COBOL, в военной сфере применялся JOVIAL, программы искусственного интеллекта писались на LISP, встроенные военные приложения использовали Ada. Как и естественные языки, языки программирования развиваются и в конце концов выходят из употребления, умирают. Так, язык ALGOL использовался в 60-е, затем его сменил Pascal, который, в свою очередь, вытесняется языками C++ , java. В области деловых приложений уменьшается роль языка COBOL, его также заменяет C++. В 60-е гг. активно применялись языки APL, PL/1 и SNOBOL4, а в 70-е — Pascal, в настоящее же время они практически исчезли. Те старые языки, которые применяются и в настоящее время, постоянно пересматриваются, чтобы соответствовать изменениям в других областях компьютерных технологий. Более новые языки, такие как C++, Java и ML, созданы на основе опыта, накопленного в процессе использования этих и сотен других более старых языков. На принципы конструирования новых языков влияют следующие факторы:

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

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

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


4. Методы реализации. Усовершенствование методов реализации отражается на выборе тех новых свойств, которые добавляются во вновь разрабатываемые языки.

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

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

В табл. 1.2 кратко описаны факторы, оказавшие наиболее важное влияние на развитие языков программирования во второй половине XX столетия.

Таблица 1.2. Факторы, повлиявшие на развитие языков программирования

Годы

Факторы и новые технологии

1951-1955

Аппаратная часть: компьютеры на электронных лампах; память с ртутной линией задержки.

Методы: языки ассемблера; основные концепции; подпрограммы; структуры данных.

Языки: экспериментальное использование компиляторов выражений

1956-1960

Аппаратная часть: запоминающие устройства на магнитных лентах; память на сердечниках; схемы на транзисторах.

Методы: ранние технологии компилирования; НФБ-грамматики; оптимизация кода; интерпретаторы; методы динамического распределения памяти и обработка списков.

Языки: FORTRAN, ALGOL 58, ALGOL 60, LISP

1961-1965

Аппаратная часть: семейства совместимых архитектур, запоминающие устройства на магнитных дисках.

Методы: мультипрограммные операционные системы; синтаксические компиляторы.

Языки: COBOL, ALGOL 60 (новая версия), SNOBOL, JOVIAL

1966-1970

Аппаратная часть: увеличение размера и быстродействия при уменьшении стоимости; микропрограммирование; интегральные схемы.

Методы: системы с разделением времени; оптимизирующие компиляторы; системы написания трансляторов.

Языки: APL, FORTRAN 66, COBOL 65, ALGOL 68, SNOBOL4, BASIC, PL/1, SIMULA 67, ALGOL-W

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


Выбор подходящего языка программирования для решения той или иной задачи часто зависит от того, к какой предметной области она принадлежит. Спектр языков программирования, применяемых для решения прикладных задач из различных предметных областей, за последние 30 лет претерпел значительные изменения. В табл. 1.1 подведены итоги использования различных языков программирования в различных предметных областях и в разные периоды.

Приложения 60-х

Программные приложения, которые в 60-е гг. интенсивно разрабатывались, можно разделить на четыре основных типа: обработка деловой информации, научные вычисления, системное программирование, системы искусственного интеллекта.

Приложения для обработки деловой информации. Большинство приложений этого типа, сегодня чаще называемых бизнес-приложениями, было предназначено для обработки огромного количества данных и выполнялось на больших «железных» универсальных машинах (big iron mainframes). Класс приложений этого типа включал в себя программы для учета поступления заказов, управления ресурсами и персоналом, а также для начисления зарплаты. Они были предназначены для считывания больших объемов данных, собранных за длительный период времени и хранящихся на магнитных лентах, и созданию новых данных, обновленных в результате незначительных преобразований. Чтобы понять, как это выглядело, посмотрите любой научно-фантастический фильм 60-х гг. Крутящиеся бобины с лентами в этих фильмах служили символом современных компьютерных технологий.

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

Научные вычисления. Приложения этого класса сводятся к нахождению решений различных математических уравнений. Они включают в себя задачи численного анализа, решения дифференциальных и интегральных уравнений и задачи статистики. Для применения именно в этой области изначально и создавались компьютеры — для составления баллистических таблиц во время Второй мировой войны. Здесь всегда доминировал FORTRAN. Его синтаксис всегда был близок к математическому языку, и ученым было легко использовать его.