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

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

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

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

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

Оттранслированная программа затем выполняется непосредственно компьютером. Существует также возможность перевода программы на промежуточный язык , не зависящий от архитектуры конкретного компьютера, но тем не менее максимально приближенный к языку машинных команд. Затем программа на промежуточном языке выполняется специальной программой, которая называется интерпретатором. Возможен также вариант компиляции «на лету» (Just In Time Compilation ), когда выполняемый фрагмент программы переводится с промежуточного языка на язык машинных команд непосредственно перед выполнением.

Наиболее распространенные компилируемые языки — это Си , C++, Фортран, Паскаль . Интерпретируемые и компилируемые на лету языки — это в основном объектно-ориентированные языки, такие как Java , Visual Basic и C#. Все они вначале переводятся на промежуточный язык : для Java это так называемый байткод языка Java , для Visual Basic и C# — так называемый промежуточный язык ( Intermediate Language или просто IL), являющийся одним из основных компонентов платформы «. Net » фирмы Microsoft. Промежуточный язык может интерпретироваться специальным исполнителем (например, виртуальной Java -машиной), но, как правило, в современных системах применяется компиляция на лету, что позволяет достичь большего быстродействия.

Исторически одним из первых языков высокого уровня был Фортран. Он оказался исключительно удачным — простым и в то же время очень эффективным. До сих пор большая часть научных и инженерных программ написана на Фортране. Тем не менее, в последние 20 лет программисты отдают предпочтение языку Си и связанной с ним линии объектно-ориентированных языков — C++, Java и C#.

Другой значительной вехой в истории алгоритмических языков является разработка языка Алгол -60 (расшифровывается как aлгоритмический язык — ALGOrithmic Language ). Возникновение языка Алгол -60 связано с развитием структурного подхода к программированию, в котором используется вложение конструкций языка друг в друга. Так, основная единица языка — оператор — может быть простым или составным, т.е. состоящим в свою очередь из нескольких операторов, заключенных в блок с помощью ключевых слов begin и end . Внутри блока можно описывать локальные переменные, недоступные извне блока, и даже подпрограммы или функции.

Лекция. Seq2Seq, машинный перевод.

Язык Алгол -60 способствовал развитию алгоритмических языков, его наследником является, например, Паскаль и вся линия связанных с ним языков: Modula-2, Oberon и Delphi. Тем не менее, Алгол -60 оказался далеко не таким удачным, как Фортран.

В нем присутствовали непродуманные решения, в частности, возможность вложения подпрограмм внутрь других подпрограмм, а также неудачный механизм передачи параметров подпрограмм. Из-за этого Алгол -60 не был реализован на практике в полном соответствии со стандартом (в отличие от языков типа Алгамс, отступавших от стандарта в сторону простоты и удобства использования). Язык Паскаль появился тоже как коррекция Алгола-60, но, к сожалению, унаследовал его главное неудачное решение — вложенность подпрограмм друг в друга. Также в первоначальном варианте языка Паскаль отсутствовала возможность разбиения программы на файлы. Эти недостатки были затем исправлены автором Паскаля, замечательным швейцарским ученым и педагогом Никлаусом Виртом, в языках Modula-2 и Oberon . Но, к сожалению, программистское сообщество проигнорировало язык Oberon , остановившись на немного улучшенном варианте языка Паскаль . В настоящее время Паскаль , как правило, используется для обучения программированию, но не в практической работе.

Наконец, самый успешный язык программирования — язык Си и связанная с ним линия объектно-ориентированных языков: C++, Java , C#. В отличие от Алгола-60, язык Си был создан не теоретиками, а практическими программистами, обладающими при этом высокой математической культурой. Язык был разработан в конце 60-х годов XX века.

Читайте также:
Программа для записи звука с линейного входа компьютера

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

Главным достоинством Си является его простота и отсутствие псевдонаучных решений (таких, как вложенность блоков программ друг в друга: в Си функция не может содержать внутри себя другую функцию, а переменные четко разделяются на глобальные и локальные — не так, как в Алголе, где локальные переменные подпрограммы являются глобальными для всех вложенных в нее подпрограмм). Просто и ясно описан механизм передачи параметров в функцию (только по значению). Программист, создающий программу на Си , всегда четко понимает, как эта программа будет выполняться. Понятие указателя, статические и автоматические (стековые) переменные языка Си максимально близко отражают устройство любого современного компьютера, поэтому программы на Си эффективны и удобны для отладки.

В настоящее время подавляющая часть программ пишется на языках Си и C++. Интерфейс любой операционной системы (так называемый API — Application Programming Interface ), т.е. набор системных вызовов, предназначенных для разработчиков прикладных программ, как правило, представляет собой набор функций на языке Си . Наконец, современные объектно-ориентированные языки также основаны на языке Си . Это язык C++, занимающий промежуточное положение между традиционными и объектно-ориентированными языками, а также объектно-ориентированные языки Java и C#.

В курсе будем использовать псевдокод для неформальной записи алгоритмов, а также языки Си , C++ и C# для практического программирования. Применение объектно-ориентированных языков C++ и C# значительно облегчает программирование оконных приложений в системах типа Windows , тогда как при разработке программ, не связанных с графическим интерфейсом (например, математических расчетов), можно обойтись и более простым языком Си .

Источник: intuit.ru

Вопрос №17 Понятие об алгоритмическом языке. Логические языки. Языки низкого и высокого уровня. Компилируемые и интерпретируемые языки. Функциональные языки.

Алгоритми́ческий язык — формальный язык, используемый для записи, реализации и изучения алгоритмов. Всякий язык программирования является алгоритмическим языком, но не всякий алгоритмический язык пригоден для использования в качестве языка программирования

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

Алгоритм на алгоритмическом языке в общем виде записывается в форме:

алг название алгоритма (аргументы и результаты)

дано условия применимости алгоритма

надо цель выполнения алгоритма

нач описание промежуточных величин

| последовательность команд (тело алгоритма)

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

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

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

Имена (идентификаторы) — употpебляются для обозначения объектов пpогpаммы (пеpеменных, массивов, функций и дp.).

Опеpации. Типы операций:

  • аpифметические опеpации + , — , * , / и дp. ;
  • логические опеpации и, или, не;
  • опеpации отношения< , >, = , = , <> ;
  • опеpация сцепки (иначе, «присоединения», «конкатенации») символьных значений дpуг с другом с образованием одной длинной строки; изображается знаком «+».

Данные — величины, обpабатываемые пpогpаммой. Имеется тpи основных вида данных: константы, пеpеменные и массивы.

  • Константы — это данные, которые зафиксированы в тексте программы и не изменяются в процессе ее выполнения.
    • числовые 7.5, 12;
    • логическиеда (истина), нет (ложь);
    • символьные «А», «+»;
    • литеpные «abcde», «информатика», «» (пустая строка).

    Выpажения — пpедназначаются для выполнения необходимых вычислений, состоят из констант, пеpеменных, указателей функций (напpимеp, exp(x)), объединенных знаками опеpаций.

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

    Различают выражения арифметические, логические и строковые.

    • Арифметические выражения служат для определения одного числового значения. Например, (1+sin(x))/2. Значение этого выражения при x=0 равно 0.5, а при x=p/2 — единице.
    • Логические выражения описывают некоторые условия, которые могут удовлетворяться или не удовлетворяться. Таким образом, логическое выражение может принимать только два значения — «истина» или «ложь» (да или нет).
    • Значения строковых (литерных) выражений — текcты. В них могут входить литерные константы, литерные переменные и литерные функции, разделенные знаком операции сцепки. Например, А + В означает присоединение строки В к концу строки А. Если А = «куст «, а В = «зеленый», то значение выражения А+В есть «куст зеленый».
    Читайте также:
    Долгосрочная программа развития пример

    Операторы (команды). Оператор — это наиболее крупное и содержательное понятие языка: каждый оператор представляет собой законченную фразу языка и определяет некоторый вполне законченный этап обработки данных. В состав опеpатоpов входят:

    • ключевые слова;
    • данные;
    • выpажения и т.д.

    Операторы подpазделяются на исполняемые и неисполняемые. Неисполняемые опеpатоpы пpедназначены для описания данных и стpуктуpы пpогpаммы, а исполняемые — для выполнения pазличных действий (напpимеp, опеpатоp пpисваивания, опеpатоpы ввода и вывода, условный оператор, операторы цикла, оператор процедуры и дp.).

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

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

    Язык высокого уровня – это язык программирования, предназначенный для удовлетворения требований программиста; он не зависит от внутренних машинных кодов компьютера любого типа. Языки высокого уровня используют для решения проблем и поэтому их часто называют проблемно-ориентированными языками. Каждая команда языка высокого уровня эквивалентна нескольким командам в машинных кодах, поэтому программы, написанные на языках высокого уровня, более компактны, чем аналогичные программы в машинных кодах.

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

    Основное использование

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

    Быстрый и эффективный, но требующий определенных усилий и навыков

    В образовании, бизнесе, дома

    Прост в изучении

    Системное программирование, универсальное программирование

    Быстрый и эффективный, широко используется как универсальный язык

    В объектно-ориентированном про­граммировании

    Основан на языке С

    Программирование в биз­несе

    Жестко ориентирован на коммер­ческие задачи, легко научиться, но очень много операторов

    Использует инверсную польскую запись

    Научная работа и вычис­ления

    Основан на математических фор­мулах

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

    Системное программирование и программирование в режиме реального времени, универсальное про­граммирование

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

    Небольшой, компактный язык, соединяющий многие черты Пас­каля и Модула-2

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

    Языки программирования делятся на два класса — компилируемые и интерпретируемые.

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

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

    Кратко говоря, компилятор переводит программу на машинный язык сразу и целиком, создавая при этом отдельную программу, а интерпретатор переводит на машинный язык прямо во время исполнения программы.

    Разделение на компилируемые и интерпретируемые языки является несколько условным. Так, для любого традиционно компилируемого языка, как, например, Паскаль, можно написать интерпретатор. Кроме того, большинство современных «чистых» интерпретаторов не исполняют конструкции языка непосредственно, а компилируют их в некоторое высокоуровневое промежуточное представление (например, с разыменованием переменных и раскрытием макросов).

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

    Интерпретаторы

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

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

    При исполнении программных операторов, интерпретатор должен сначала сканировать каждый оператор с целью прочтения его содержимого (что этот человек просит меня сделать?), а затем выполнить запрошенную операцию. Операторы в циклах сканируются излишне много.

    Читайте также:
    Компьютерная технология рабочая программа

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

    Компиляторы

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

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

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

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

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

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

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

    • функции — объекты вычисления;

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

    • чистота (отсутствие побочных эффектов);

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

    • отложенные (ленивые) вычисления.

    В традиционных языках программирования (например, C++) вызов функции приводит к вычислению всех аргументов. Этот метод вызова функции называется вызов-по-значению. Если какой-либо аргумент не использовался в функции, то результат вычислений пропадает, следовательно, вычисления были произведены впустую. В каком-то смысле противоположностью вызова-по-значению является вызов-по-необходимости (ленивые вычисления). В этом случае аргумент вычисляется, только если он нужен для вычисления результата.

    Некоторые языки функционального программирования

    Источник: studfile.net

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

    Википедия Значение слова в словаре Википедия
    Трансля́тор — программа или техническое средство, выполняющее трансляцию программы . Трансля́ция програ́ммы — преобразование программы, представленной на одном из языков программирования , в объектный файл. Транслятор обычно выполняет также диагностику .

    Энциклопедический словарь, 1998 г. Значение слова в словаре Энциклопедический словарь, 1998 г.
    ТРАНСЛЯТОР в информатике (компилятор) программа ЭВМ, предназначенная для автоматического перевода описания алгоритма с одного языка программирования на другой, в частности на машинный язык.

    Примеры употребления слова транслятор в литературе.

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

    Он взял матрицу-диск, которая, по словам Никто, принадлежал Битти Белине, и осторожно сунул ее в транслятор памяти.

    Справа от дубля, в углу, стоял под брезентовым чехлом двухходовой транслятор ТДХ-80Е, убыточное изделие Китежградского завода маготехники.

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

    Вейдер мне говорил, что коммодор Матусевич носил на запястье транслятор, но понятия не имел о его предназначении.

    Я уже не говорю о телепортации — именно так ваша группа была заброшена на Новороссию, а коммодор Матусевич, к тому же, постоянно носил часы со встроенным в них транслятором.

    Источник: библиотека Максима Мошкова

    Источник: xn--b1algemdcsb.xn--p1ai

    Рейтинг
    ( Пока оценок нет )
    Загрузка ...
    EFT-Soft.ru