программа которая переводит текст других программ в двоичные коды процессора
Транслятор – это программа, которая переводит в машинные коды текст программ, написанных на языке высокого уровня.
1.Интерпретатор: анализирует текст программы по частям, сразу выполняет обработанную команду.
Компилятор: переводит всю программу в машинный код, строит исполняемый файл.
14) Алгоритм, его свойства и способы записи.
1. Алгоритм – это однозначное, точное и полное описание последовательности элементарных действий для решения данной задачи.
Слово алгоритм происходит от имени арабского математика Аль-Хорезми (точнее – латинизи-рованной формы его имени – Аlgorithmi), который еще в IX веке сформулировал правила выполнения четырех арифметических действий. Эти правила называли правилами Аль-Хорезми (algorithmi), а позднее просто стали называть алгоритмом.
p>3. Способы записи алгоритма
2) на алгоритмическом языке (или языке программирования: Бейсик, Паскаль и т.д.),
3) на языке блок–схем.
15) Что такое блок – схема алгоритма. Основные блоки и структуры.
1. Блок–схема алгоритма – это графический способ записи алгоритма, представляющий собой систему определенным образом связанных блоков, изображаемых в виде плоских геометрических фигур.
Элементы блок –схемы располагаются сверху вниз, линии соединения отдельных блоков показывают направление процесса обработки схемы. Каждое такое направление называют ветвью.
2. Основные блоки
3. Структурами называют ограниченный набор блоков и стандартных способов их соединения для выполнения типичных последовательностей действий.
Блок–схема алгоритма – это графический способ записи алгоритма, представляющий собой систему определенным образом связанных блоков, изображаемых в виде плоских геометрических фигур.Элементы блок – схемы располагаются сверху вниз, линии соединения отдельных блоков показывают направление процесса обработки схемы. Каждое такое направление называют ветвью.
Перечислим типы блоков:
1. “Начало” и “конец” алгоритма изображаются овалом:
2. Блок “действия” изображается прямоугольником. Внутри его указываются необходимые вычисления и присваивания результата:
3. Блок “условия” изображаются ромбом. Внутри блока записываются условия выбора направления действия алгоритма:
4. Блоки “ввода” и “вывода” информации изображаются параллелограммами. С их помощью вводят исходные данные задачи, выводят результат решения:
Структурами называют ограниченный набор блоков и стандартных способов их соединения для выполнения типичных последовательностей действий. Алгоритмы “собирают” из трех основных (базовых) структур:
1. Структура “ следование” состоит из двух (или более) блоков “действие”:
2.Структура “развилка” состоит из логического элемента с проверкой некоторого условия и функциональных блоков, которые в простейшем случае есть блок “действие”.
“Развилка” может быть двух видов:
а) полная условная конструкция: б) неполная условная конструкция:
3. Структура “цикл” состоит из логического элемента с проверкой условия и функционального блока, называемого телом цикла. Ясно, что тело цикла может выполняться неоднократно. Данная структура может быть двух видов:
цикл – ПОКА цикл – ДО
В случае “цикл – ПОКА” функциональный блок размещен после проверки условия, поэтому может оказаться, что тело цикла не выполниться ни разу. Однако если условие выполняется – выполняется и весь цикл. Проще говоря, “цикл – ПОКА” выполняется, пока выполняются условие.
В “цикле – ДО” функциональный блок размещен до проверки выполнения условия, так что в этом варианте тело цикла в любом случае будет выполнено, по крайней мере, один раз. Условие в данном случае является условием выхода из цикла. Проще говоря, “цикл – ДО “ выполняется до наступления выполнения условия.
16) Компьютерная сеть и типы сетей.
1. Компьютерная сеть – это группа компьютеров, соединенных линиями связи.
Компьютерные сети – «за» и «против»
u внешние устройства
Сервер –это компьютер, предоставляющий свои ресурсы в общее использование.
Клиент – это компьютер, использующий ресурсы сервера.
17) Протокол в компьютерной сети. Пакетный режим передачи и состав пакета.
1. Пакетный режим был наиболее распространен при централизованной организации решения экономических задач, когда большой удельный вес занимали задачи отчетности о производственно-хозяйственной деятельности экономических объектов разного уровня управления.
2. Протокол в компьютерной сети. Сетевым протоколом называется набор правил, позволяющий осуществлять соединение и обмен данными между двумя и более включёнными в сеть компьютерами. Фактически разные протоколы зачастую описывают лишь разные стороны одного типа связи; взятые вместе, они образуют так называемый стек протоколов. Названияитакже указывают на программное обеспечение, которым реализуется протокол.
Протокол – это набор правил и соглашений, определяющих порядок обмена данными.
Шлюз (конвертер) – устройство, которое объединяет сети с разными протоколами.
18) Топология компьютерной сети (определение и примеры)
1. Топология сети – геометрическая форма и физическое расположение компьютеров по отношению к друг другу. Топология сети позволяет сравнивать и классифицировать различные сети. Различают три основных вида топологии:
Шина – это линия связи, которую несколько устройств используют для обмена данными.
4. «Дерево» = многоуровневая звезда
19) Локальная сеть и типы локальных сетей.
1. Локальная сеть объединяет компьютеры в одном или нескольких соседних зданиях.
LAN (Локальная сеть/локальные сети) – это компьютерная сеть, которая, дает возможность нескольким подключаться к сети интернет, используя единую точку доступа.
Сетевая ОС поддерживает:
2. Типы локальных сетей:
Сети с выделенным сервером
Сервер — специальный управляющий компьютер, предназначенный для: хранения данных для всей сети; подключения периферийных устройств; централизованного управления всей сетью и определения маршрутов передачи сообщений.
20) Маска подсети. Нахождение адреса сети и номера компьютера в сети по IP адресу.
TCP (Transfer Control Protocol)– протокол управления передачей данных
IP (Internet Protocol) – межсетевой протокол
Протоколы уровня приложений
HTTP (HyperText Transfer Protocol)– передача гипертекста
FTP (File Transfer Protocol) – передача файлов
SMTP (Simple Mail Transfer Protocol) – отправка эл. почты
POP3 (Post Office Protocol Version 3) – приём эл. почты
IMAP (Internet Message Access Protocol) – приём эл. Почты
21) Доменные имена и серверы доменных имен.
Доменное имя — это уникальное сочетание символов латинского алфавита, по которому можно идентифицировать ваш сайт среди множества других. Кроме букв, в домен могут входить цифры от 1 до 9 и символы дефиса «-», но дефис не может находиться в начале и в конце домена. Длина домена может быть от 2 до 63 символов. Для того чтобы конкретному цифровому IP-адресу поставить в соответствие символьное доменное имя вашего сайта, существуют специальные DNS-серверы(программы, осуществляющая преобразование доменного имени в цифровой IP-адрес и наоборот).
Каждое доменное имя состоит из нескольких частей, разделённых точками — это домены разных уровней. Число уровней доменов, как правило, ограничивается двумя-тремя. Длинное доменное имя и большое число уровней домена неудобны для использования. Крайнее правое поле называется Доменом верхнего уровня, далее, справа налево, следуют имена доменов более низкого уровня.
O Домены верхнего уровня (доменными зонами).
Все домены верхнего уровня можно разделить на две группы:
— национальные или географические домены, они определяют принадлежность сайта к той или иной стране или географической территории.
— домены общего пользования. Они могут устанавливать принадлежность сайта к определенной категории или виду деятельности.
O Домены второго уровня
Второй и все последующие уровни домена имеют важное ограничение — они должны быть уникальны в группе своего родительского домена. Иначе говоря, в Интернет может быть только один домен второго уровня в домене верхнего уровня. Доменные имена второго уровня регистрируются у организаций-регистраторов. Право владения на домен второго уровня выдается организации или человеку только на год, на каждый следующий год заявку надо продлевать.
O Домены третьего уровня
Домены третьего уровня регистрируются у организаций, владеющих доменами второго уровня. Обладатель домена второго уровня имеет возможность создавать неограниченное количество адресов третьего и далее уровней. Обычно, услугу регистрации домена третьего уровня предоставляют провайдеры– поставщики интернет услуг.
22) Информационная безопасность и защита информации.
1. Информационная безопасность — это защищённость информации от любых действий, в результате которых владельцам или пользователям информации может быть нанесён недопустимый ущерб.
2. Защита информации — это меры, направленные на то, чтобы не потерять информацию, не допустить её искажения и неправомерного доступа к ней.
Статьи к прочтению:
Daphne Koller: Was wir vom Online-Lernen lernen
Похожие статьи:
Человеку в жизни и практической деятельности приходится решать множество различных задач. Решение каждой из них описывается своим алгоритмом, и…
Введение Интернет полностью меняет то, как мы работаем, живем, развлекаемся и учимся. Эти изменения будут происходить в уже известных нам областях…
Программа которая переводит текст других программ в двоичные коды процессора
Компилятор (англ. compiler — составитель, собиратель) читает всю программу целиком, делает ее перевод и создает законченный вариант программы на машинном языке, который затем и выполняется.
Компилятор обеспечивает преобразование программы с одного языка на другой. Команды исходного языка сильно отличаются по организации и мощности, нежели команды машинного языка. Бывают такие, в которых одна команда исходного языка транслируется в 7-10 машинных команд. Существуют даже такие, в которых в каждой команде может соответствовать более 100 машинных команд (например язык программирования Пролог). В исходных языках довольно часто используется строгая типизация данных, которая осуществляется через их предварительное описание. Программирование на таких языках может опираться не только на кодирование алгоритма, но и на тщательное обдумывание структур данных или классов. Весь процесс трансляции с таких языков программирования обычно называется компиляцией, а исходные языки обычно относятся к языкам высокого уровня.
Интерпретатор (англ. interpreter — истолкователь, устный переводчик) переводит и выполняет программу строка за строкой.В отличие от компилятора, интерпретатор не порождает на выходе программу на машинном языке. Распознав команду исходного языка, он тут же выполняет ее. Как в компиляторах, так и в интерпретаторах используются одинаковые методы анализа исходного текста программы. Но интерпретатор позволяет начать обработку данных после написания даже одной команды. Это делает процесс разработки и отладки программ более гибким. Кроме того, отсутствие выходного машинного кода позволяет не «захламлять» внешние устройства дополнительными файлами, а сам интерпретатор можно достаточно легко адаптировать к любым машинным архитектурам, разработав его только один раз на широко распространенном языке программирования. Поэтому, интерпретируемые языки, типа Java Script, VB Script, получили широкое распространение. Недостатком интерпретаторов является низкая скорость выполнения программ. Обычно интерпретируемые программы выполняются в 50-100 раз медленнее программ, написанных в машинных кодах.
программа которая переводит текст других программ в двоичные коды процессора
Программа которая переводит текст других программ в двоичные коды процессора
Компилятор (англ. compiler — составитель, собиратель) читает всю программу целиком, делает ее перевод и создает законченный вариант программы на машинном языке, который затем и выполняется.
Компилятор обеспечивает преобразование программы с одного языка на другой. Команды исходного языка сильно отличаются по организации и мощности, нежели команды машинного языка. Бывают такие, в которых одна команда исходного языка транслируется в 7-10 машинных команд. Существуют даже такие, в которых в каждой команде может соответствовать более 100 машинных команд (например язык программирования Пролог). В исходных языках довольно часто используется строгая типизация данных, которая осуществляется через их предварительное описание. Программирование на таких языках может опираться не только на кодирование алгоритма, но и на тщательное обдумывание структур данных или классов. Весь процесс трансляции с таких языков программирования обычно называется компиляцией, а исходные языки обычно относятся к языкам высокого уровня.
Интерпретатор (англ. interpreter — истолкователь, устный переводчик) переводит и выполняет программу строка за строкой.В отличие от компилятора, интерпретатор не порождает на выходе программу на машинном языке. Распознав команду исходного языка, он тут же выполняет ее. Как в компиляторах, так и в интерпретаторах используются одинаковые методы анализа исходного текста программы. Но интерпретатор позволяет начать обработку данных после написания даже одной команды. Это делает процесс разработки и отладки программ более гибким. Кроме того, отсутствие выходного машинного кода позволяет не «захламлять» внешние устройства дополнительными файлами, а сам интерпретатор можно достаточно легко адаптировать к любым машинным архитектурам, разработав его только один раз на широко распространенном языке программирования. Поэтому, интерпретируемые языки, типа Java Script, VB Script, получили широкое распространение. Недостатком интерпретаторов является низкая скорость выполнения программ. Обычно интерпретируемые программы выполняются в 50-100 раз медленнее программ, написанных в машинных кодах.
Содержание урока
§40. Системное программное обеспечение
§41. Системы программирования
Трансляторы
§42. Инсталляция программ
§41. Системы программирования
Трансляторы
Основа любой системы программирования — транслятор.
Транслятор — это программа, которая переводит в машинные коды тексты программ, написанных на языке высокого уровня.
Существуют два типа трансляторов: интерпретаторы и компиляторы.
Интерпретатор анализирует текст программы по частям. Разобрав очередной фрагмент, он немедленно выполняет описанные в нем действия и переходит к обработке следующего фрагмента.
Достоинства интерпретаторов:
• программы переносимы (программа будет работать в любой системе, где установлена программа-интерпретатор);
• удобно отлаживать программу.
Есть и существенные недостатки.
• программу невозможно выполнить, если не установлен интерпретатор;
• программы выполняются медленно (в цикле из 100 шагов каждая строчка 100 раз «разбирается» интерпретатором);
• в тех частях программы, которые не выполнялись во время отладки, могут оставаться синтаксические ошибки.
Второй тип трансляторов — компиляторы. Они, в отличие от интерпретаторов, сразу переводят всю программу в машинный код и строят исполняемый файл, готовый к запуску.
Достоинства компиляторов:
• чтобы запустить программу, не нужно устанавливать транслятор;
• поскольку программа уже переведена в машинные коды, она выполняется значительно быстрее, чем при использовании интерпретатора.
Недостатки тоже есть:
1 Многие программы, разработанные для ОС Windows, могут быть запущены в Linux с помощью программы-оболочки Wine (www.winehq.org).
Чтобы как-то совместить достоинства интерпретаторов и компиляторов, была предложена идея компиляции программы в некоторый промежуточный исполняемый код (псевдокод, P-код), а не сразу в команды конкретного процессора. Для выполнения такого псевдокода нужна специальная среда — виртуальная машина, которую в принципе можно разработать для любого процессора и любой операционной системы.
Программа сначала обрабатывается компилятором, который строит псевдокод, а потом этот псевдокод выполняется интерпретатором.
Таким образом,
• при компиляции в псевдокод проверяются все синтаксические ошибки, поэтому при выполнении такую проверку делать не нужно; это значительно ускоряет работу программ в сравнении с интерпретацией;
• обеспечивается переносимость программ — можно выполнять программу (псевдокод) на любом компьютере, где есть виртуальная машина.
Байт-код — это разновидность псевдокода, в котором команда занимает 1 байт, а далее следуют её аргументы (или их адреса). Современные версии интерпретируемых языков Perl, РНР, Python используют компиляцию в байт-код для ускорения выполнения программы.
Следующая страница Состав системы программирования
Cкачать материалы урока
Что такое ассемблер и нужно ли его изучать
Этому языку уже за 70, но на пенсию он пока не собирается.
Есть традиция начинать изучение программирования с вывода на экран строки «Hello world!». На языке Python, например, это всего одна команда:
Всё просто, понятно и красиво! Но есть язык программирования, в котором, чтобы получить тот же результат, нужно написать солидный кусок кода:
Это ассемблер. Только не нужно думать, что он плох. Просто Python — это язык высокого уровня, а ассемблер — низкого. Одна команда Python при выполнении вызывает сразу несколько операций процессора, а каждая команда ассемблера — всего одну операцию.
Сложно? Давайте разбираться.
Программист, консультант, специалист по документированию. Легко и доступно рассказывает о сложных вещах в программировании и дизайне.
Немного о процессорах и машинном языке
Чтобы объяснить, что такое язык ассемблера, начнём с того, как вообще работает процессор и на каком языке с ним можно «разговаривать».
Процессор — это электронное устройство (сейчас крошечная микросхема, а раньше процессоры занимали целые залы), не понимающее слов и цифр. Он реагирует только на два уровня напряжения: высокий — единица, низкий — ноль. Поэтому каждая процессорная команда — это последовательность нулей и единиц: 1 — есть импульс, 0 — нет.
Для работы с процессором используется машинный язык. Он состоит из инструкций, записанных в двоичном коде. Каждая инструкция определяет одну простую машинную операцию: арифметическую над числами, логическую (поразрядную), ввода-вывода и так далее.
Например, для Intel 8088 инструкция 0000001111000011B — это операция сложения двух чисел, а 0010101111000011B — вычитания.
Программировать на машинном языке нелегко — приходится работать с огромными цепочками нулей и единиц. Трудно написать или проверить такую программу, а уж тем более разобраться в чужом коде.
Поэтому много лет назад был создан язык ассемблера, в котором коды операций обозначались буквами и сокращениями английских слов, отражающих суть команды. Например, команда mov ax, 6 означает: «переместить число 6 в ячейку памяти AX».
Когда и как был создан ассемблер?
Это произошло ещё в сороковых годах прошлого века. Ассемблер был создан для первых ЭВМ на электронных лампах, программы для которых писали на машинном языке. А так как памяти у компьютеров было мало, то команды вводили, переключая тумблеры и нажимая кнопки. Даже несложные вычисления занимали много времени.
Проблему решили, когда ЭВМ научились хранить программы в памяти. Уже в 1950 году была разработана первая программа-транслятор, которая переводила в машинный код программы, написанные на понятном человеку языке. Эту программу назвали программой-сборщиком, а язык — языком ассемблера (от англ. assembler — сборщик).
Появление ассемблера сильно облегчило жизнь программистов. Они смогли вместо двоичных кодов использовать команды, состоящие из близких к обычному языку условных обозначений. Кроме того, ассемблер позволил уменьшить размеры программ — для машин того времени это было важно.
Как устроен язык ассемблера?
Ассемблер можно считать языком второго поколения, если за первый принять машинный язык. Он работает непосредственно с процессором, и каждая его команда — это инструкция процессора, а не операционной или файловой системы. Перевод языка ассемблера в машинный код называется ассемблированием.
Коды операций в языке ассемблера мнемонические, то есть удобные для запоминания:
Регистрам и ячейкам памяти присваиваются символические имена, например:
EAX, EBX, AX, AH — имена для регистров;
meml — имя для ячейки памяти.
Например, так выглядит команда сложения чисел из регистров AX и BX:
А это команда вычитания чисел из регистров AX и BX:
Кроме инструкций, в языке ассемблера есть директивы — команды управления компилятором, то есть программой-ассемблером.
Вот некоторые из них:
Не думайте, что ассемблер — всего лишь набор инструкций процессора с удобной для программиста записью. Это полноценный язык программирования, на котором можно организовать циклы, условные переходы, процедуры и функции.
Вот, например, код, на ассемблере, выводящий на экран цифры от 1 до 10:
Здесь действие будет выполняться в цикле — как, например, в циклах for или do while в языках высокого уровня.
Единого стандарта для языков ассемблера нет. В работе с процессорами Intel разработчики придерживаются двух синтаксисов: Intel и AT&T. Ни у того ни у другого нет особых преимуществ: AT&T — стандартный синтаксис в Linux, а Intel используется в мире Microsoft.
Одна и та же команда в них выглядит по-разному.
Например, в синтаксисе Intel:
mov eax, ebx — команда перемещает данные из регистра eax в регистр ebx.
В синтаксисе AT&T эта команда выглядит так:
Почему для разных семейств процессоров нужен свой ассемблер?
Дело в том, что у каждого процессора есть набор характеристик — архитектура. Это его конструкция и принцип работы, а также регистры, адресация памяти и используемый набор команд. Если у процессоров одинаковая архитектура, то говорят, что они из одного семейства.
Так как наборы команд для разных архитектур процессоров отличаются друг от друга, то и программы на ассемблере, написанные для одних семейств, не будут работать на процессорах из других семейств. Поэтому ассемблер называют машинно-ориентированным языком.
Кому и зачем нужен язык ассемблера?
Даже из нашего примера «Hello, World!» видно, что ассемблер не так удобен в разработке, как языки высокого уровня. Больших программ на этом языке сейчас никто не пишет, но есть области, где он незаменим:
Если вы хотите разрабатывать новые микропроцессоры или стать реверс-инженером, то есть смысл серьёзно заняться изучением языка ассемблера.
Востребованы ли программисты на ассемблере сегодня?
Конечно. Хотя на сайтах по поиску работу вы вряд ли найдёте заявки от работодателей с заголовками: «Нужен программист на ассемблере», зато там много таких, где требуется знание ассемблера дополнительно к языкам высокого уровня: C, C++ или Python. Это вакансии реверс-инженеров, специалистов по компьютерной безопасности, разработчиков драйверов и программ для микроконтроллеров/микропроцессоров, системных программистов и другие.
Предлагаемая зарплата — обычная в сфере IT: 80–300 тысяч рублей в зависимости от квалификации и опыта. Вот, например, вакансия реверс-инженера на HeadHunter, где требуется знание ассемблера:
Стоит ли начинать изучение программирования с языка ассемблера?
Нет, так делать не нужно. Для этого есть несколько причин:
Поэтому, даже если вы решили заняться профессией, связанной с ассемблером, изучение программирования вам лучше начинать с языка высокого уровня. А уж ассемблер после него будет выучить несложно.
обложка: Полина Суворова для Skillbox Media
Урок 15
Системное программное обеспечение. Системы программирования
§40. Системное программное обеспечение. §41. Системы программирования
Содержание урока
§40. Системное программное обеспечение
§41. Системы программирования
Трансляторы
§41. Системы программирования
Трансляторы
Основа любой системы программирования — транслятор.
Транслятор — это программа, которая переводит в машинные коды тексты программ, написанных на языке высокого уровня.
Существуют два типа трансляторов: интерпретаторы и компиляторы.
Интерпретатор анализирует текст программы по частям. Разобрав очередной фрагмент, он немедленно выполняет описанные в нем действия и переходит к обработке следующего фрагмента.
Достоинства интерпретаторов:
• программы переносимы (программа будет работать в любой системе, где установлена программа-интерпретатор);
• удобно отлаживать программу.
Есть и существенные недостатки.
• программу невозможно выполнить, если не установлен интерпретатор;
• программы выполняются медленно (в цикле из 100 шагов каждая строчка 100 раз «разбирается» интерпретатором);
• в тех частях программы, которые не выполнялись во время отладки, могут оставаться синтаксические ошибки.
Второй тип трансляторов — компиляторы. Они, в отличие от интерпретаторов, сразу переводят всю программу в машинный код и строят исполняемый файл, готовый к запуску.
Достоинства компиляторов:
• чтобы запустить программу, не нужно устанавливать транслятор;
• поскольку программа уже переведена в машинные коды, она выполняется значительно быстрее, чем при использовании интерпретатора.
Недостатки тоже есть:
1 Многие программы, разработанные для ОС Windows, могут быть запущены в Linux с помощью программы-оболочки Wine (www.winehq.org).
Чтобы как-то совместить достоинства интерпретаторов и компиляторов, была предложена идея компиляции программы в некоторый промежуточный исполняемый код (псевдокод, P-код), а не сразу в команды конкретного процессора. Для выполнения такого псевдокода нужна специальная среда — виртуальная машина, которую в принципе можно разработать для любого процессора и любой операционной системы.
Программа сначала обрабатывается компилятором, который строит псевдокод, а потом этот псевдокод выполняется интерпретатором.
Таким образом,
• при компиляции в псевдокод проверяются все синтаксические ошибки, поэтому при выполнении такую проверку делать не нужно; это значительно ускоряет работу программ в сравнении с интерпретацией;
• обеспечивается переносимость программ — можно выполнять программу (псевдокод) на любом компьютере, где есть виртуальная машина.
Байт-код — это разновидность псевдокода, в котором команда занимает 1 байт, а далее следуют её аргументы (или их адреса). Современные версии интерпретируемых языков Perl, РНР, Python используют компиляцию в байт-код для ускорения выполнения программы.
Готовые программы на Java распространяются в виде байт-кода, поэтому для их выполнения необходимо установить виртуальную Java-машину. При этом для ускорения работы часто используется JIT-компиляция (англ. JIT — just-in-time — в это самое время), при которой байт-код «на лету» преобразуется в команды конкретного процессора. Тогда при повторном выполнении команды трансляция уже не нужна.
Следующая страница Состав системы программирования
Cкачать материалы урока
Урок 15
Системное программное обеспечение. Системы программирования
§40. Системное программное обеспечение. §41. Системы программирования
Содержание урока
§40. Системное программное обеспечение
§41. Системы программирования
Трансляторы
§41. Системы программирования
Трансляторы
Основа любой системы программирования — транслятор.
Транслятор — это программа, которая переводит в машинные коды тексты программ, написанных на языке высокого уровня.
Существуют два типа трансляторов: интерпретаторы и компиляторы.
Интерпретатор анализирует текст программы по частям. Разобрав очередной фрагмент, он немедленно выполняет описанные в нем действия и переходит к обработке следующего фрагмента.
Достоинства интерпретаторов:
• программы переносимы (программа будет работать в любой системе, где установлена программа-интерпретатор);
• удобно отлаживать программу.
Есть и существенные недостатки.
• программу невозможно выполнить, если не установлен интерпретатор;
• программы выполняются медленно (в цикле из 100 шагов каждая строчка 100 раз «разбирается» интерпретатором);
• в тех частях программы, которые не выполнялись во время отладки, могут оставаться синтаксические ошибки.
Второй тип трансляторов — компиляторы. Они, в отличие от интерпретаторов, сразу переводят всю программу в машинный код и строят исполняемый файл, готовый к запуску.
Достоинства компиляторов:
• чтобы запустить программу, не нужно устанавливать транслятор;
• поскольку программа уже переведена в машинные коды, она выполняется значительно быстрее, чем при использовании интерпретатора.
Недостатки тоже есть:
1 Многие программы, разработанные для ОС Windows, могут быть запущены в Linux с помощью программы-оболочки Wine (www.winehq.org).
Чтобы как-то совместить достоинства интерпретаторов и компиляторов, была предложена идея компиляции программы в некоторый промежуточный исполняемый код (псевдокод, P-код), а не сразу в команды конкретного процессора. Для выполнения такого псевдокода нужна специальная среда — виртуальная машина, которую в принципе можно разработать для любого процессора и любой операционной системы.
Программа сначала обрабатывается компилятором, который строит псевдокод, а потом этот псевдокод выполняется интерпретатором.
Таким образом,
• при компиляции в псевдокод проверяются все синтаксические ошибки, поэтому при выполнении такую проверку делать не нужно; это значительно ускоряет работу программ в сравнении с интерпретацией;
• обеспечивается переносимость программ — можно выполнять программу (псевдокод) на любом компьютере, где есть виртуальная машина.
Байт-код — это разновидность псевдокода, в котором команда занимает 1 байт, а далее следуют её аргументы (или их адреса). Современные версии интерпретируемых языков Perl, РНР, Python используют компиляцию в байт-код для ускорения выполнения программы.
Готовые программы на Java распространяются в виде байт-кода, поэтому для их выполнения необходимо установить виртуальную Java-машину. При этом для ускорения работы часто используется JIT-компиляция (англ. JIT — just-in-time — в это самое время), при которой байт-код «на лету» преобразуется в команды конкретного процессора. Тогда при повторном выполнении команды трансляция уже не нужна.
Следующая страница Состав системы программирования
Cкачать материалы урока