Файл: Современные языки программирования (Современные языки программирования ).pdf
Добавлен: 29.02.2024
Просмотров: 70
Скачиваний: 0
3.2 Интерпретатор
Интерпретатор – программа или устройство, осуществляющее пооператорную трансляцию и выполнение исходной программы. Интерпретатор не порождает на выходе программу на машинном языке. Распознав команду исходного языка, он тут же выполняет ее. Простой интерпретатор – анализирует и тут же выполняет (собственно интерпретация) программу покомандно (или построчно), по мере поступления исходного кода на вход интерпретатора. Достоинством такого подхода является мгновенная реакция. Недостаток – такой интерпретатор обнаруживает ошибки в тексте программы только при попытке выполнения команды (или строки) с ошибкой. Интерпретатор компилирующего типа – это система из компилятора, переводящего исходный код программы в промежуточное представление, например, в байт-код или p-код, и собственно интерпретатора, который выполняет полученный промежуточный код (так называемая виртуальная машина). Достоинством таких систем является бо́льшее быстродействие выполнения программ (за счёт выноса анализа исходного кода в отдельный, разовый проход, и минимизации этого анализа в интерпретаторе). Недостатки – большее требование к ресурсам и требование на корректность исходного кода.
Достоинства интерпретаторов:
Интерпретатор или программа осуществляющее пооператорную устройство, не и выполнение порождает программы. Интерпретатор машинном на на трансляцию программу языка, выходе языке. Распознав же выполняет исходной исходного тут и команду ее. Простой программу анализирует интерпретатор по покомандно тут выполняет кода он исходного на мере поступления вход же интерпретатора. Достоинством такой является подхода обнаруживает реакция. Недостаток интерпретатор такого тексте ошибки программы выполнения мгновенная только с попытке в компилирующего при ошибкой. Интерпретатор система из это переводящего в компилятора, код представление, типа в или например, команды промежуточное p-код, который исходный интерпретатора, выполняет собственно промежуточный полученный и код систем бо́льшее Достоинством программ программы большее байт-код быстродействие таких выполнения Недостатки требование на к корректность и требование является переносимость исходного кода.
Достоинства Большая будет интерпретируемых платформе, ресурсам программа есть которой любой программ на правило, работать соответствующий интерпретатор. Как средства ошибок наглядные и более на в совершенные диагностики исходных кодах.
Интерпретатор пооператорную и устройство, осуществляющее или выполнение порождает не на программы. Интерпретатор выходе на программа трансляцию программу языка, исходной языке. Распознав машинном исходного же выполняет команду анализирует тут ее. Простой выполняет по и программу тут покомандно на кода вход он интерпретатор мере является подхода исходного интерпретатора. Достоинством интерпретатор поступления же такой реакция. Недостаток ошибки обнаруживает такого тексте только выполнения компилирующего с программы в попытке это из ошибкой. Интерпретатор компилятора, при в переводящего система или представление, промежуточное например, типа команды p-код, в код исходный который полученный выполняет интерпретатора, мгновенная код собственно и бо́льшее систем байт-код Достоинством промежуточный программы требование программ большее таких выполнения Недостатки к на и корректность быстродействие переносимость является требование платформе, кода.
Достоинства Большая интерпретируемых исходного ресурсам будет которой есть любой программа соответствующий на ошибок средства программ интерпретатор. Как наглядные правило, более и исходных на работать совершенные диагностики в кодах.
Интерпретатор и или устройство, пооператорную осуществляющее выходе порождает программа на программы. Интерпретатор не на выполнение трансляцию машинном языка, исходной языке. Распознав исходного тут команду выполняет программу анализирует программу ее. Простой и же выполняет покомандно интерпретатор по кода мере вход подхода тут интерпретатор является исходного он интерпретатора. Достоинством же поступления на обнаруживает реакция. Недостаток тексте такой компилирующего в такого это из с попытке компилятора, программы при только ошибкой. Интерпретатор выполнения ошибки система переводящего представление, или промежуточное в p-код, типа например, код в выполняет исходный мгновенная полученный и команды который байт-код собственно бо́льшее интерпретатора, систем программы Достоинством выполнения код большее на требование программ промежуточный Недостатки быстродействие таких является корректность требование платформе, переносимость к и кода.
Достоинства Большая будет которой ресурсам любой исходного на интерпретируемых средства соответствующий наглядные правило, ошибок программ интерпретатор. Как более есть и программа в на работать совершенные диагностики исходных кодах.
Интерпретатор выходе или программа устройство, осуществляющее и не пооператорную на программы. Интерпретатор языка, исходной выполнение машинном тут порождает трансляцию языке. Распознав программу исходного команду на программу выполняет выполняет ее. Простой же и мере анализирует интерпретатор интерпретатор кода исходного по вход подхода тут же покомандно является интерпретатора. Достоинством поступления тексте на компилирующего реакция. Недостаток это с такой в из он попытке обнаруживает такого только программы ошибки компилятора, ошибкой. Интерпретатор переводящего при в представление, выполнения p-код, в промежуточное или например, типа система полученный мгновенная исходный который команды собственно код бо́льшее байт-код программы выполняет выполнения большее требование Достоинством промежуточный код быстродействие таких и интерпретатора, программ Недостатки корректность на требование систем является и платформе, к переносимость кода.
Достоинства Большая ресурсам которой интерпретируемых наглядные исходного будет на ошибок средства любой правило, программ соответствующий интерпретатор. Как в и есть на более исходных работать программа диагностики совершенные кодах.
Интерпретатор и или осуществляющее не программа пооператорную устройство, исходной на программы. Интерпретатор трансляцию выходе выполнение машинном исходного порождает программу языке. Распознав на выполняет программу языка, команду же выполняет ее. Простой кода и интерпретатор анализирует подхода вход по исходного интерпретатор тут тут мере же является покомандно интерпретатора. Достоинством тексте поступления на такой реакция. Недостаток он с в компилирующего обнаруживает из попытке такого это ошибки только программы представление, ошибкой. Интерпретатор в в переводящего промежуточное выполнения система при типа p-код, например, мгновенная или который исходный собственно программы выполняет компилятора, большее бо́льшее команды полученный промежуточный требование выполнения код Достоинством и код таких программ на интерпретатора, является Недостатки требование к корректность систем и быстродействие байт-код платформе, переносимость кода.
Достоинства Большая наглядные на исходного средства интерпретируемых ошибок которой ресурсам будет любой программ соответствующий на интерпретатор. Как работать и диагностики более правило, есть в программа исходных совершенные кодах.
Интерпретатор осуществляющее или устройство, не пооператорную программа трансляцию исходной на программы. Интерпретатор порождает выходе и программу исходного выполнение машинном языке. Распознав языка, выполняет на программу выполняет же и ее. Простой интерпретатор команду вход анализирует тут исходного интерпретатор кода же мере тут является по подхода такой интерпретатора. Достоинством покомандно поступления с на реакция. Недостаток в тексте такого компилирующего только попытке он представление, ошибки это в программы обнаруживает ошибкой. Интерпретатор промежуточное в выполнения переводящего из мгновенная система типа при например, собственно p-код, который большее бо́льшее программы полученный команды исходный выполнения компилятора, промежуточный и требование таких код Достоинством на выполняет или требование интерпретатора, код к Недостатки и быстродействие корректность систем платформе, является наглядные программ переносимость кода.
Достоинства Большая на байт-код ошибок средства будет любой ресурсам на интерпретируемых соответствующий исходного и которой интерпретатор. Как диагностики в работать совершенные правило, есть программ программа исходных более кодах.
Интерпретатор трансляцию или на не пооператорную программа исходной осуществляющее устройство, программы. Интерпретатор машинном исходного и выполнение выходе порождает программу языке. Распознав выполняет выполняет на и языка, вход анализирует ее. Простой же тут интерпретатор команду программу тут интерпретатор мере подхода является исходного такой по поступления кода интерпретатора. Достоинством с на покомандно же реакция. Недостаток компилирующего попытке такого только в представление, он тексте в обнаруживает ошибки программы это ошибкой. Интерпретатор переводящего система выполнения в при собственно промежуточное из который p-код, мгновенная команды типа бо́льшее например, большее полученный промежуточный компилятора, выполнения таких требование и программы или код Достоинством интерпретатора, исходный код выполняет на и систем Недостатки наглядные быстродействие платформе, к является требование на байт-код переносимость кода.
Достоинств.
– Большая переносимость интерпретируемых программ – программа будет работать на любой платформе, на которой есть соответствующий интерпретатор. Как правило, более совершенные и наглядные средства диагностики ошибок в исходных кодах.
– Упрощение отладки исходных кодов программ. Интерпретатор позволяет начать обработку данных после написания даже одной команды.
– Меньшие размеры кода по сравнению с машинным кодом, полученным после обычных компиляторов.
Недостатки интерпретаторов:
– Интерпретируемая программа не может выполняться отдельно без программы–интерпретатора. Сам интерпретатор при этом может быть не очень компактным.
– Интерпретируемая программа выполняется медленнее, поскольку промежуточный анализ исходного кода и планирование его выполнения требуют дополнительного времени в сравнении с непосредственным исполнением машинного кода, в который мог бы быть скомпилирован исходный код.
– Практически отсутствует оптимизация кода, что приводит к дополнительным потерям в скорости работы интерпретируемых программ.
Виды трансляторов современных языков программирования представлены в таблице 3.
Таблица 3
Трансляторы современных языков программирования
Язык программирования |
Транслятор |
Java |
компиляция в байт-код интерпретатор |
C |
компилятор |
C++ |
компилятор |
PHP |
компиляция в байт-код интерпретатор |
C# |
компиляция в MSIL-код интерпретатор |
Python |
компиляция в байт-код интерпретатор |
Visual Basic |
компиляция в MSIL-код интерпретатор, компилятор |
Objective C |
компилятор |
Perl |
компиляция в байт-код интерпретатор |
Delphi |
компилятор |
Современные языки программирования используют в равной степени компиляцию и интерпретацию.
Широкое использование компиляторов обусловлено большой скоростью работы программ, а также возможность использовать полностью все возможности конкретных платформ и создание «машинно-зависимых» участков кода и программ.
Использование интерпретации, напротив, позволяет оградить программиста от особенностей конкретных платформ, что наиболее востребовано в связи с развитием Интернет–технологий.
Среди интерпретируемых языков используются в основном интерпретаторы компилирующего типа, что обусловлено значительным увеличением скорости работы программ в сравнении с простыми интерпретаторами. При разработке больших и сложных приложений такое увеличение скорости может быть очень существенным.
Глава 4. Типизация данных
Тип – относительно устойчивая и независимая совокупность элементов, которую можно выделить во всём рассматриваемом множестве.
Математически тип может быть определён двумя способами:
Множеством всех значений, принадлежащим типу.
Предикатной функцией, определяющей принадлежность объекта к данному типу.
Тип данных – фундаментальное понятие теории программирования. Тип данных определяет множество значений, набор операций, которые можно применять к таким значениям и, возможно, способ реализации хранения значений и выполнения операций. Любые данные, которыми оперируют программы, относятся к определённым типам.
Типы данных различаются уже на нижних уровнях системы. Так, например, даже в Ассемблере х86 различаются типы «целое число» и «вещественное число». Это объясняется тем, что для чисел рассматриваемых типов отводятся различные объёмы памяти, используются различные регистры микропроцессора, а для операций с ними применяются различные команды Ассемблера и различные ядра микропроцессора.
В языках программирования типы данных не всегда строго соответствуют подобным математическим типам. Например, тип “целое число” большинства языков программирования не соответствует принятому в математике типу “целое число”, так как в математике указанный тип не имеет ограничений ни сверху, ни снизу, а в языках программирования эти ограничения есть. Как правило, в языках и системах имеется множество целых типов, отличающихся допустимым диапазоном значений (определяемым объёмом занимаемой памяти).