Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Архитектура_ЭВМ.doc
Скачиваний:
1
Добавлен:
31.07.2019
Размер:
827.39 Кб
Скачать

Xsl транформации (xslt) — один из новейших примеров функционального языка программирования с промышленным значением.

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

Самый известный представитель этой группы — язык PROLOG, который будет подробно рассмотрен в главе 23.

Декларативная парадигма программирования. Это определение употребляется для функциональной и логической парадигм программирования.

Степень абстракции.

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

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

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

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

Схема выполнения в языках программирования.

Компилирующие языки программирования. Исходный текст программы перед первым выполнением сначала переводится компилятором в машинный код. За счет этого предперевода достигается высокая скорость выполнения. В дальнейшем при компилировании исходный текст проверяется на наличие ошибок.

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

Смешанные формы. Ранние языки программирования могли быть четко отнесены к одной из групп, сегодня же различия быстро стираются. Современные языки программирования, такие как Java или C# компилируют выполняемую программу сначала в промежуточный код, который после этого выполняется при помощи интерпретатора в виде виртуальной машины. В Java, например, при выполнении обозначаются так называемые «хотспоты» (часто используемые сегменты программы), которые при выполнении переводятся в машинный код. За счет этого программы на Java или C# выполняются в контролируемой программной оболочке, без критического ухудшения общего времени выполнения по сравнению с исключительно компилируемыми программами.

Распространенные языки программирования

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

Важнейшие языки программирования

Язык

Краткое описание

Ada

Язык для требовательного к безопасности использования, структурированный язык в области реального времени, разработан Жаном Ишбиа из фирмы Honeywell Bull в 1970х годах, поддерживается министерством обороны США.

ALGOL

«Algorithmic Language» («Алгоритмический язык»), с 1960 года, предшественник многих императивных языков.

ANSYS

«Analysis Systems» («Аналитические системы»), для описания расчетов с применением метода конечного элемента.

APL

Язык программирования для мощных вычислительных машин старого поколения, специфицирован в 1961 году Иверсоном.

Apple Script

Универсальный скриптовый интерфейс под Mac OS X

APT

«Automatic Programmed Tools» («Автоматически программируемые инструментальные средства»), язык для вычислительных машин, с 1959 года.

Assembler

Близкий к машинному язык программирования

AutoCAD

Язык четвертого поколения для компьютерного дизайна.

Awk

Язык обработки строк для ОС UNIX

BASIC

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

BCL

Предшественник C

C

Аппаратноблизкий универсальный язык программирования.

C*

C-диалект для параллельного программирования.

C#

C-производный фирмы Microsoft.

C++

Объектно-ориентированное расширение C.

CHILL

МККТТ язык высокого уровня, разработан в 1976 для телекоммуникационной области.

CLOS

Common LISP Object System (всеобщая система объектов LISP), с 1988, расширение LISP в объектно-ориентированные языки.

CLP

Constrained Logic Programming (Программирование ограниченной логики), с 1990 года

COBOL

Common Business Oriented Language (Единый дело-ориентированный язык), примерно с 1960 гг, еще распространен в банковской области.

CSP

Communicating Sequential Processes (Взаимодействие последовательных процессов), разработанный Тони Хоаре формальный язык для описания параллельных процессов.

Delphi

Объектно-ориентированный язык программирования.

DSL

Design System Language (язык систем дизайна), предшественник PostScript

Dylan

Dynamic Language (динамический язык), потомок Scheme, разработан под руководством Apple в 1992 году для КПК Ньютон

Eiffel

Объектно-ориентированный язык программирования.

Erlang

Язык реального времени с функциональной парадигмой

Forth

Проблемо-ориентированный язык с перевернутым польским представлением для описания выражений, разработан в 1960 году Чарльзом Г. Муром.

FORTRAN

Первый язык программирования высокого уровня (1954 г), распространен в научных отраслях и сегодня благодаря мощным библиотекам.

Haskell

Функциональный язык программирования, основан на лямбда-вычислениях, таких как Миранда, назван в честь американского математика Хаскела Брукса Керри (с 1990 года)

HTML

Hypertext Markup Language (язык разметки гипер-текста), описательный язык для веб-сайтов, ср. [H04]

IDL

Interface Definition Language (язык описания интерфейса), для абстрактного описания распределенных объектов

Java

Объектно-ориентированный язык программирования для универсального применения.

JavaScript

Скриптовый язык, в основном применяется для «приглаживания» HTML-страниц.

JCL

Job Control Language (язык контроля работы), скриптовый язык, с 1960 г.

LISP

List Processor (обработчик списков), символьно-ориентированный язык реализации лямбда-исчислений (с 1960 года), распространен в области искусственного интеллекта (ИИ) и компьютерной алгебры.

Logo

Потомок LISP (с 1970), разработан Сеймуром Папертом, легкая адаптация языка-интерпретатора

Maple

Программируемая система компьютерной алгебры.

Mathematica

Программируемая система компьютерной алгебры.

MATLAB

MATrix LABoratory (МАТематическая ЛАБоратория), математическое программное обеспечение, широко применяется в области компьютерного моделирования.

Miranda

Легкий для изучения функциональный скриптовый язык (1985 год), разработан Девидом Тернером, больше не поддерживается

Modula-2

Расширение Pascal в модульную концепцию, um modulare Konzepte, разработан в 1978 году Николаусом Виртом

Mondrian

Функциональный язык, похожий на Haskell

Oberon

Наследник Modula-2 и Pascal, разработан Николаусом Виртом и Юргом Гуткнехтом, в основном для использования в обучении

Objective-C

Похожее на Smalltalk расширение C, разработан в середине 80х годов Бредом Коксом, объектно-ориентированный интерфейс программирования под Mac OS X

Occam

Язык для параллельного программирования транспьютеров, 1985 год

Pascal

Процедурный язык программирования, разработан в 1968 году Николаусом Виртом, назван в честь французского математика Блейза Паскаля, раньше часто использовался при обучении программированию

PEARL

Process and Experimental Automation Realtime Language (язык процессов и экспериментальной автоматизации в реальном времени), язык для мультизадачных систем и систем реального времени

Perl

Универсальный скриптовый язык, разработан в 1987 году Ларри Волом, основа многих веб-приложений.

PHP

PHP: Hypertext Preprocessor (PHP: гипертекстовая предобработка), для динамического составления веб-страниц.

PL/I

Programming Language I (язык программирования I), предшественник С, разработан в 1964 году фирмой IBM

PostScript

Язык описания страниц, разработан в 1984 году фирмой Adobe, ср. [H04]

PROLOG

Programming in Logic (логическое программирование), разработан в начале 70х годов Алэном Кольмеро, применяется в отрасли искусственного интеллекта.

Python

Скриптовый язык, который изначально был разработан для распределенной промышленной системы Амеба (1991 год).

Ruby

Скриптовый язык, похожий на Python, с объектно-ориентированными и функциональными элементами, разработан в 1993 году Юкихиро Матсумото.

Scheme

Диалект LISP, разработан в 1975 году в МТИ, поддерживает также императивные элементы

Self

Объектно-ориентированный и базированный на прототипах язык, как правило академического применения, разработан в 1986 году Дэвидом Унгаром и Рэнделлом Б. Смитом

SGML

Standard Generalized Markup Language (стандартный обощенный язык разметки), описательный язык для маркироваки текстов, с 1978 года

Simula

Предшественник Smalltalk, разработан в 1966 Оле-Йоханом Далом и Кристеном Нугардом

Smalltalk

Объектно-ориентированный язык программирования, подготовил дорогу многим другим таким языкам, разработан в 1970х годах Аланом Кеем, Даниэлом Ингалльсом и Адель Гольдберг в центре исследований XEROX Parc.

SNOBOL

Ориентированный на строки символьный язык, для манипуляций с цепочками символов, разработан в 1965 году Д. Ж. Фарбером, Р.Е. Грисволдом и Ф.П. Поленски из AT&T.

SQL

Standard Query Language (стандартный язык запросов), язык запросов к базам данных, с 1980 года

Tcl

Tool command language (язык управления инструментами), легкий для изучения скриптовый язык с влиянием C и LISP, с 1988 года, разработан Джоном Оустерхоутом.

VBasic

Visual Basic, основанный на Basic язык от Microsoft, разработан в 1991 и продолжает развиваться дальше.

VRML

Virtual Reality Modeling Language (язык моделирования виртуальной реальности), описательный язык для моделирования трехмерных миров, ср. [H04]

XML

eXtensible Markup Language (расширяемый язык разметки), мета язык для определения описательных языков, XML является частью SGML, ср. [H04]

XSLT

Функциональный язык программирования для перевода XML-документов либо опять в XML либо в другие форматы, разработан Джеймсом Кларком и Михаилом Каем, с 1999г.

Родословная» важнейших языков программирования и их потомков

Почему не существует «идеальных» языков программирования

Причины распространения языка программирования

FORTRAN и COBOL считаются сегодня «динозаврами» среди языков программирования: они просто были первыми. Это специальные языки: COBOL позволяет управлять файлами и данными, сортировать, выбирать и форматировать их. Возможность вычислений в нем ограничена (Там нет используемых в естественно-научных и технических областях важных трансцендентных функций и синтаксис схож с разговорным английским, а не с формулами).

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

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]