Студопедия
Главная страница | Контакты | Случайная страница | Спросить на ВикиКак

АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатика
ИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханика
ОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторика
СоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансы
ХимияЧерчениеЭкологияЭкономикаЭлектроника

Языки программирования. Компиляция и интерпретация

Читайте также:
  1. I. Языки программирования
  2. Lt;variant>Языки программирования высокого уровня
  3. Алгоритмические языки
  4. Алгоритмические языки. Трансляторы.
  5. Алтайские языки
  6. Анализ и интерпретация результатов
  7. Анализ, компиляция и прогон программы для создания memory mapped файла и записи его содержимого
  8. Афразийские языки.
  9. Геометрическая интерпретация и графическое решение задач линейного программирования
  10. Геометрическая интерпретация комплексных чисел.

Программа – это набор машинных команд, которые следует выполнить компьютеру для реализации того или иного алгоритма. Иными словами, программа – это форма представления алгоритма для исполнения его машиной.
Первым программистам приходилось писать команды в «машинных кодах», т.е. именно так, как их воспринимает машина Например, команда сложения двух чисел могла выглядеть примерно так:
15 0127 2677 3656.
Число 15, указанное в начале команды, – это код операции, означающий: «Сложить два неких числа и сумму записать в память». Числа 0127, 2677 и 3656 – это номера ячеек памяти. В этих ячейках хранятся слагаемые. Алгоритм такой команды звучит так: сложить число, записанное в ячейке номер 0127, с числом, записанным в ячейке номер 2677, и результат (сумму) поместить в ячейку номер 3656. Такой способ составления программ был очень трудоемким, сопровождался большим количеством ошибок и имел множество других недостатков.
Довольно быстро специалисты поняли, что можно автоматизировать процесс формирования машинного кода, если создать систему условных обозначений (язык программирования) для записи команд и составить программу, которая сама «переводила» бы такие команды в машинный код. Например, вместо указанной команды с кодом 15 можно написать:
с = а+b
В этой формуле содержится вся информация, представленная выше в словесном виде: знак «+» означает – сложить; знак «=»– записать (точнее, присвоить); латинские буквы обозначают некие переменные, значения которых хранятся а ячейках. Перед исполнением команды машина снабдит переменные реальными номерами ячеек.
Подобным же образом можно записывать более сложные операции, выполняемые компьютером. Например, команду проверки условия а > m можно изложить по-английски:
if a[i]>m then m=a[i]
или по-русски:
если a[i]>m, то m=a[i].
При таком подходе необходимо:

После этого на языке программирования можно писать множество программ, пользуясь единственной программой-переводчиком. «Грамматические» правила языка программирования формулируются предельно четко и не допускают вольного расположения отдельных элементов команды и знаков препинания (иначе программа-посредник «не поймет» ваши указания). Каждая команда имеет строго определенный синтаксис (правила записи). Например, если установлено, что условие «если» надо писать по-английски (if) и после условия (a[i]>m) нельзя ставить запятую, то всякая иная запись такой команды будет воспринята программой-посредником как ошибка.
Команды на языке программирования часто называют операторами или инструкциями. Последовательность таких команд, реализующих тот или иной алгоритм, называют программой на исходном языке или просто исходным текстом. Это говорит о том, что, кроме исходного текста, конкретная программа может иметь еще и машинный код, который непосредственно исполняется на машине. Исходные тексты помещают в текстовые файлы.
Существует два типа программ-посредников, работающих с исходными текстами: компилятор и интерпретатор.
Программа-компилятор(от слова compile– составлять, собирать) переводит исходный текст в машинный код и записывает его на диск в форме исполняемого (загрузочного) файла. После этого программа выполняется независимо от исходного текста. Раньше программы-компиляторы называли просто и точно – трансляторами (переводчиками).
Программа-интерпретаторвсегда работает совместно с исходным текстом. Она разбирает каждую инструкцию исходного текста (интерпретирует ее) и немедленно исполняет (т.е. файл на машинном языке не создается). Программа в режиме интерпретации работает гораздо медленнее, чем такая же программа в машинном коде. Это связано с тем, что каждую инструкцию приходится разбирать во время выполнения (а не заранее, как при компиляции). Многие инструкции в программе выполняются многократно, – и при каждом выполнении интерпретируются заново. Поэтому всюду, где возможно, стремятся заменить режим интерпретации режимом компиляции. Правда, интерпретация имеет и свои преимущества: с ее помощью проще отлаживать программу. Иногда пользуются режимом «псевдокомпиляции»: ускоряют интерпретацию за счет предварительного запоминания тех или иных элементов разобранных команд в памяти машины.
В наше время машинные коды не используются, и каждая программа для компьютера составляется на том или ином языке программирования. Существует очень много языков, однако все они, как правило, содержат средства описания данных, арифметические операторы (подобные с = а+b), средства управления и организации циклов (подобные if), средства ввода и вывода информации. Многие языки пользуются похожими принципами организации программ, но – разным синтаксисом. Например, вот как выглядит алгоритм поиска максимального числа, написанный на языках BASIC и С:

m=0 m=0
FOR i=1 TO n for(i=o; i<n; i++)
IF a(i)>m THEN m=a(i) {if(a[i]>m) m=a[i];;}
NEXT i  

Идеология очень похожа:

Одновременно множество «мелких» различий в синтаксисе: for и if написаны либо прописными, либо строчными буквами; индекс массива i заключен в круглые или квадратные скобки; в программе на С (читается «си») много знаков «точка с запятой»; в программе на языке BASIC – дополнительные слова ТО, THEN. NEXT
Чем принципиально отличаются естественные языки от языков программирования? Естественные языки возникают и развиваются по объективным законам, не зависящим от воли отдельных людей. Если изучить английский язык, то уже проще освоить немецкий: приобретенный опыт и интуиция позволяют хотя бы иногда догадываться о значении тех или иных слов, о связях слов.
Слова и синтаксис языков программирования придумываются искусственно. Например, если освоить язык С, то будешь твердо знать, что смысловые блоки исходного текста (составные операторы) выделяются фигурными скобками {...}. Перейдя на язык Pascal, обнаруживается, что это правило не работает. Никакая предварительная подготовка, никакая логика не позволят догадаться, что вместо фигурных скобок в этом языке следует писать begin (начало) и end (конец).
Поэтому не следует стремиться к изучению как можно большего числа языков программирования Владеть дюжиной языков невозможно. Их можно знать, но знать и владеть – не одно и то же. Изучив один язык (скажем, BASIC), можно освоить главное – идеологию программирования. При необходимости можно легко перейти на другой язык, однако для продуктивной работы в нем придется довести до автоматизма навыки правильного написания команд, освоить множество функций, соглашений, умолчаний и других тонкостей, характерных именно для этого языка.

Загрузка...

Дата добавления: 2015-01-05; просмотров: 23 | Нарушение авторских прав




lektsii.net - Лекции.Нет - 2014-2017 год. (0.011 сек.)