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

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

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

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

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

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

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

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

Смешанные формы. Ранние языки программирования могли быть четко отнесены к одной из групп, сегодня же различия быстро стираются. Современные языки программирования, такие как 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г.

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