Трансляторы компиляторы интерпретаторы системы программирования

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

Языки программирования – это формальные языки, специально созданные для общения человека с компьютером. Каждый язык программирования, равно как и «естественный» язык (русский, английский и т.д.), имеет алфавит, словарный запас свои грамматику и синтаксис, а также семантику.

Алфавит – фиксированный для данного языка набор основных символов, допускаемых для составления текста программы на этом языке.

Синтаксис – система правил, определяющих допустимые конструкции языка программирования из букв алфавита.

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

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

Синтаксис – описывает структуру программ как наборов символов (обычно говорят — безотносительно к содержанию).

Пример синтаксической ошибки : употребление оператора цикла For без To или Next, или отсутствие знака равенства в приведенной на рисунке программе.

Синтаксические ошибки распознаются встроенным синтаксическим анализатором.

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

Семантика – определяет смысловое значение предложений алгоритмического языка.

Пример семантической ошибки :

1) For i As Integer = 1 To 10 Step -2

2) Если надо вычислить , то запись x = a / b * c содержит семантическую ошибку, т.к. приоритет операций деления и умножения одинаков, то вначале а делиться на b , а затем полученный результат умножает на с .

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

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

  • Императивное
  • Декларативное
    • функциональное
    • логическое
    • Процедурное
    • Объектно-ориентированное
    • Неструктурное
    • Структурное
    • Языки низкого уровня
    • Языки высокого уровня
    • алфавит языка значительно шире машинного, что делает его гораздо более выразительным и существенно повышает наглядность и понятность текста;
    • набор операций, допустимых для использования, не зависит от набора машинных операций, а выбирается из соображений удобства формулирования алгоритмов решения задач определенного класса;
    • конструкции операторов задаются в удобном для человека виде;
    • поддерживается широкий набор типов данных.
    • Фортран – старейший язык программирования, предназначен для решения математических задач.
    • Кобол – для решения экономических задач
    • Delphi – универсальный.
    • Бейсик , Pascal – для обучения.
    • Java (джава) – язык сетевого программирования.
    • Для системного программирования наиболее подходят языки C, C++, C#. Cи – язык разработанный для написания операционной системы UNIX (обычно ядро операционных систем писали на Assembler ).

    Источник

    Транслятор, компилятор, интерпретатор

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

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

    Виды трансляторов

    1. Диалоговый. Обеспечивает использование языка программирования в режиме разделения времени (англ.).
    2. Синтаксически-ориентированный (синтаксически-управляемый). Получает на вход описание синтаксиса и семантики языка и текст на описанном языке, который и транслируется в соответствии с заданным описанием.
    3. Однопроходной. Формирует объектный модуль за один последовательный просмотр исходной программы.
    4. Многопроходной. Формирует объектный модуль за несколько просмотров исходной программы.
    5. Оптимизирующий. Выполняет оптимизацию кода в создаваемом объектном модуле.
    6. Тестовый. Набор макрокоманд языка ассемблера, позволяющих задавать различные отладочные процедуры в программах, составленных на языке ассемблера.
    7. Обратный. Для программы в машинном коде выдаёт эквивалентную программу на каком-либо языке программирования (см.: дизассемблер, декомпилятор).

    Виды компиляторов

    • Векторизующий. Транслирует исходный код в машинный код компьютеров, оснащённых векторным процессором.
    • Гибкий. Сконструирован по модульному принципу, управляется таблицами и запрограммирован на языке высокого уровня или реализован с помощью компилятора компиляторов.
    • Диалоговый. См.: диалоговый транслятор.
    • Инкрементальный. Повторно транслирует фрагменты программы и дополнения к ней без перекомпиляции всей программы.
    • Интерпретирующий (пошаговый). Последовательно выполняет независимую компиляцию каждого отдельного оператора (команды) исходной программы.
    • Компилятор компиляторов. Транслятор, воспринимающий формальное описание языка программирования и генерирующий компилятор для этого языка.
    • Отладочный. Устраняет отдельные виды синтаксических ошибок.
    • Резидентный. Постоянно находится в оперативной памяти и доступен для повторного использования многими задачами.
    • Самокомпилируемый. Написан на том же языке, с которого осуществляется трансляция.
    • Универсальный. Основан на формальном описании синтаксиса и семантики входного языка. Составными частями такого компилятора являются: ядро, синтаксический и семантический загрузчики.

    Источник

    6.10. Что такое транслятор, компилятор, интерпретатор?

    Трансляторы реализуются в виде компиляторов или интерпретаторов. С точки зрения выполнения работы компилятор и интерпретатор существенно различаются.

    Компилятор(англ.compiler— составитель, собиратель) читает всю программуцеликом, делает ее перевод и создает законченный вариант программы на машинном языке, который затем и выполняется.

    Интерпретатор(англ.interpreter— истолкователь, устный переводчик) переводит и выполняет программустрока за строкой.

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

    Откомпилированные программы работают быстрее, но интерпретируемые проще исправлять и изменять.

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

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

    Иногда для одного языка имеется и компилятор, и интерпретатор. В этом случае для разработки и тестирования программы можно воспользоваться интерпретатором, а затем откомпилировать отлаженную программу, чтобы повысить скорость ее выполнения.

    6.11. Что такое системы программирования?

    Система программирования — это система для разработки новых программ на конкретном языке программирования.

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

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

    Популярные системы программирования — Turbo Basic,Quick Basic,Turbo Pascal,Turbo C. В последнее время получили распространение системы программирования, ориентированные на создание Windows-приложений: Borland Delphi 3.0

    • пакет Borland Delphi(Дельфи) — блестящий наследник семейства компиляторов Borland Pascal, предоставляющий качественные и очень удобные средства визуальной разработки. Его исключительно быстрый компилятор позволяет эффективно и быстро решать практически любые задачи прикладного программирования.
    • пакет Microsoft Visual Basic— удобный и популярный инструмент для создания Windows-программ с использованием визуальных средств. Содержит инструментарий для созданиядиаграммипрезентаций.
    • пакет Borland C++— одно из самых распространённых средств для разработки DOS и Windows приложений.

    Ниже для иллюстрации приведены на языках Бейсик, Паскаль и Си программы решения одной и той же простой задачи — вычисления суммы S элементов одномерного массива A=(a1, a2, . an).

    Язык Бейсик(BASIC — Beginners All-purpose Symbolic Instruction Code — универсальный символьный код для начинающих) был создан в 1965 г.Дж. Кемени и Т.Курцемкак язык, облегчающий написание простых программ. Cейчас все чаще пишутBasicвместоBASIC,придавая другую трактовку названию: Basic — основной, базовый. Существует много различных версий Бейсика — от очень простых до усовершенствованных, содержащих множество дополнительных языковых конструкций. Наибольшее распространение имеют следующие версии:QuickBasic(QBasic) 4.5 для DOS иVisual Basic3.0-6.0 для Windows.QuickBasic 4.5 фирмы Microsoft— это очень простой, но в то же время эффективный язык, унаследовавший от раннего Бейсика все его достоинства, но избавившийся от всех его недостатков и впитавший целый ряд передовых идей начала 90-х годов. Еще QuickBasic очень привлекателен своей средой программирования. Одна из удач — это использование своеобразного режима работы. Для быстрой работы в среде используется режиминтерпретатора,а для окончательного перевода отлаженных программ на машинный язык используетсякомпилятор.Из QBasic компилятор исключен. QBasic входит в минимальный комплект поставки программного обеспечения компьютера. Бейсик очень популярный язык программирования. ПрограмманаБейсике INPUT «N = «; N : DIM A(N) FOR I = 1 TO N PRINT «A(«; I; «) =»; INPUT A(I) NEXT I S = 0 FOR I = 1 TO N S = S + A(I) NEXT I PRINT «Сумма center»>Окно среды программирования Quick Basic
    ПрограмманаПаскале Program Summa; Type Mas = Array [1 .. 100] of Real; Var A : Mas; i, n: Integer; S : Real; BEGIN Write(‘n = ‘); ReadLn(n); For i : = 1 to n do begin Write(‘A[‘, i, ‘] = ‘); ReadLn(A[i]); end; S : = 0; For i : = 1 to n do S : = S + A[i]; WriteLn(‘S = ‘, S:8:2); END. Язык Паскальбыл разработан в 1970 г.Никласом Виртомкак язык обучения студентов программированию. Паскаль вырабатывает навыки соблюдения хорошего строгого стиля программирования, упрощающего разработку сложных программ. Основные привлекательные черты Паскаля —логичность, поддержка концепций структурного и процедурного программирования, работа с динамической памятью, возможность создания своих типов данных.В Паскале программист должен всегда явно указывать, с какими конкретными переменными он желает работать и каковы типы этих переменных. Строгая типизация данных позволяет резко снизить количество ошибок, появляющихся в программе вследствие невнимательности или опечаток. В своем первоначальном виде Паскаль имел довольно ограниченные возможности, но расширенный вариант этого языка —Turbo Pascal,является очень мощным языком программирования. Интегрированная оболочка Turbo Pascal, разработанная фирмойBorland(ныне Inprise), включающая в себя редактор, компилятор, компоновщик и отладчик, вместе с интерактивной справочной системой сделали разработку программ на Паскале делом простым и приятным.
    Язык СиразработанДеннисом Ритчив 1972 г. как язык, пригодный для программирования новой операционной системы UNIX. Операционные системы ради повышения скорости работы традиционно писались на языке низкого уровня — ассемблере, но язык Си настолько хорошо зарекомендовал себя, что на нем было написано более 90% всего кода ОС UNIX. Язык СИ обрел популярность как так называемый язык среднего уровня, в котором удобство, краткость и мобильность языков высокого уровня сочетаются с возможностью непосредственного доступа к аппаратуре компьютера, что обычно достигаются только при программировании на языке Ассемблера. Си не очень прост в изучении и требует тщательности в программировании, но позволяет создавать сложные и весьма эффективные программы. ПрограмманаСИ # include # include main() < float a[100], s; int i, n; clrscr(); printf("n="); scanf("%i", &n); for (i = 1; i s=0; for (i = 1; i

    Источник

    Читайте также:  Технологии разработки desktop приложений
Оцените статью