поддержка
проекта:
разместите на своей странице нашу кнопку!И мы
разместим на нашей странице Вашу кнопку или ссылку. Заявку прислать на
e-mail
код нашей кнопки:
Языки программирования (продолжение)
Алгоритмический язык ПАСКАЛЬ назван в честь английского ученого Б.
Паскаля. По своей идее это алголоподобный язык, вобравший в себя все
лучшие проектные решения предшественника. Но вместе с тем это
качественно новый шаг, связанный прежде всего с тем, что здесь впервые
была воплощена концепция абстрактных типов данных. Если раньше все
данные, преобразования которых описывались в программе, относились к
одному из заранее определенных типов (целые, действительные и т. п.), то
в ПАСКАЛе были введены средства конструирования новых типов данных. Были
в языке и другие важные нововведения, среди которых следует отметить
интервальные типы данных, средства работы с множествами и некоторые
другие.
Благодаря этим свойствам ПАСКАЛЬ стал не только интересным и мощным
средством программирования широкого круга прикладных задач, но и языком,
пригодным для обучения программированию как систематической дисциплине,
основанной на фундаментальных понятиях, ясно и естественно отраженных в
самом языке ПАСКАЛЬ.
Почти одновременно с ПАС К АЛ ем, в начале 70-х гг., был разработан и
язык программирования СИ. Но если ПАСКАЛЬ шел больше от теории
программирования, то язык СИ - типичный пример влияния практических
потребностей системного программирования на разработку новых языков.
Изначально он создавался как инструментальное средство для реализации
операционной системы UNIX на ЭВМ фирмы DEC, но популярность его быстро
переросла рамки конкретной машины, операционной системы и задач
системного программирования. И сейчас язык СИ можно по праву назвать
одним из универсальных языков программирования. С одной стороны, в нем
имеются средства определения новых типов данных, широкий набор
операторов, характерных для языков высокого уровня, модульность и
структурность, а с другой - в язык СИ включены средства программирования
почти на уровне ассемблера (например, побитовые операции и работа с
указателями). СИ-программы компактны и эффективны, но практическое
использование языка требует от программиста осторожности, аккуратности и
знания преимуществ и недостатков тех или иных конструкций.
Мы привели лишь несколько примеров языков программирования высокого
уровня. Но каждый из них фиксировал достижения самой дисциплины и
открывал новые пути развития в программировании. Так, ФОРТРАН показал
возможность "отрыва" от конкретной ЭВМ с ее фиксированной системой
команд; АЛГОЛ - использование строгого и элегантного математического
стиля для реализации сложных алгоритмов; ПАСКАЛЬ - конструирование новых
типов данных, а СИ - интеграцию языка программирования с операционной
обстановкой, в которой этот язык функционирует.
К языкам программирования сверхвысокого уровня можно отнести лишь
АЛГОЛ-68 и APL. Первый из них развивает "алголовскую" линию языков
программирования. Но здесь сделана попытка формализовать описание языка,
приведшая к появлению абстрактной и конкретной программ. Первая из них
строится программистом, а вторая - выводится из первой. Предполагается,
что при таком подходе принципиально невозможно породить неверную
синтаксически (а в идеале и семантически) конкретную программу.
Язык APL (Applied Programming Language) "исповедует" другой подход -
повышение уровня за счет введения в язык программирования сверхмощных
операций и операторов. Так, например, в APL один и тот же знак операции
"+" используется и для сложения чисел, и для сложения матриц. Такой
подход приводит к необходимости использовать расширенный набор символов,
а программа превращается в очень компактную, но иероглифическую запись.
И можно констатировать, что широкого распространения язык APL не
получил, хотя он и используется на практике.
А в 80-х гг. развитие языковых средств программирования стало все больше
связываться с языками спецификации, обеспечивающими, с одной стороны,
формулировку требований к разрабатываемой системе, а с другой -
поддерживающими промышленные технологии разработки сложных программных
комплексов. Одним из первых языков этого класса можно считать язык
программирования АДА, названный так в честь первой женщины-программиста
Ады Лавлейс, дочери английского поэта Дж. Байрона. Это современный
алгоритмический язык с традиционной структурой управления, возможностями
определения типов и подпрограмм. Удовлетворяет язык и требованиям
модульности. В дополнение к классическим свойствам язык обеспечивает
программирование задач реального времени, возможности моделирования
параллельного решения задач и обработку прерываний.
Мы рассмотрели одну из классификаций языков программирования, в основе
которой лежит выразительная мощность языка. Однако существуют
классификации языков программирования и с другими основаниями. Одна из
них - классификация, согласно которой языки программирования делятся на
вычислительные и языки символьной обработки. Практически все
вышерассмотренные языки относились к первому типу. Если же говорить о
языках обработки символьной информации, то следует хотя бы упомянуть о
ЛИСПе (List Processing Language), ПРОЛОГе (Programming in Logic), РЕФАЛе
(Алгоритмический язык рекурсивных функций).
Язык ЛИСП разработан Дж. Маккарти в США. Он стал основой ряда
программных реализаций интеллектуальных систем и дал толчок к разработке
множества специализированных языков искусственного интеллекта и языков
представлений знаний. В отличие от ЛИСПа ПРОЛОГ - европейский язык. Он
разработан А. Калмерауэром в Марсельском университете и базируется на
логическом исчислении. Специфика языка состоит в том, что здесь имеется
встроенная процедура поиска решений на И/ИЛИ графах. Наконец, третьим
языком символьной обработки, с появлением которого в эту область были
внесены интересные идеи, стал язык РЕФАЛ, созданный В. Турчиным. РЕФАЛ
базируется на нормальных алгоритмах Маркова. Подобно ЛИСПу, этот язык
активно использует мощные средства преобразования списков на основе
концепции распознавания по образцу.
Языки символьной обработки сыграли важную роль в программировании. С
одной стороны, они позволили осуществить разработку и реализацию ряда
практически важных систем аналитических преобразований, интеллектуальных
программ и т. д., а с другой стороны, именно эти языки породили целый
спектр исследований, результатом которых стала разработка и реализация
языков представления знаний. Такие языки - важнейшее средство
спецификации проблем и, следовательно, могут с успехом претендовать на
роль языков сверхвысокого уровня.
Существует, наконец, и "прикладная" классификация языков
программирования, согласно которой все они делятся на группы по областям
применения. Так, например, языки ФОРТРАН, АЛГОЛ-60, ПАСКАЛЬ и некоторые
другие составляют группу языков, ориентированную на научные и инженерные
расчеты. Типичным примером языков обработки экономической информации
является КОБОЛ, а одним из самых интересных языков программирования
задач имитационного моделирования - язык СИМУЛА-67.
Знакомство с классификациями языков программирования, обсуждение
характерных особенностей тех или иных языков можно продолжить. Но важнее
понять, каковы же тенденции в этой области. И с этой точки зрения сейчас
несомненна тенденция перехода от языков описания алгоритмов решения
задач к языкам постановки задач. При таком подходе в языке
программирования фиксируются средства для описаний типа "что" необходимо
получить в значительно большей степени, чем средства описания того,
"как" получается решение задачи.