Файл: "Современные языки программирования".pdf

ВУЗ: Не указан

Категория: Курсовая работа

Дисциплина: Не указана

Добавлен: 19.06.2023

Просмотров: 79

Скачиваний: 3

ВНИМАНИЕ! Если данный файл нарушает Ваши авторские права, то обязательно сообщите нам.

Транслятор – обслуживающая программа, преобразующая исходную программу, предоставленную на входном языке программирования, в рабочую программу, Язык процессора (устройства, машины) называется машинным языком, машинным кодом. Код на машинном языке исполняется процессором. Обычно, машинный язык — язык низкого уровня, но существуют процессоры, использующие языки высокого уровня (например, iAPX-432[5]). Однако, такие процессоры не получили распространения в силу своей сложности и дороговизны. представленную на объектном языке.

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

3.1 Компилятор

Компилятор – это обслуживающая программа обеспечивает, выполняющая трансляцию на машинный язык программы, записанной на исходном языке программирования. Компилятор обеспечивает обеспечивает преобразование программы с одного языка на другой (чаще всего, в язык конкретного компьютера). Вместе с тем, команды исходного языка значительно отличаются по организации и мощности от команд машинного языка. Существуют обеспечивает языки, в которых одна команда исходного языка транслируется в 7–10 машинных команд. Однако есть и такие языки, в обеспечивает которых каждой команде может соответствовать 100 и более машинных команд. Кроме того, в исходных языках достаточно часто используется строгая типизация данных, осуществляемая через их предварительное описание. Программирование может опираться не на кодирование алгоритма, а на тщательное обдумывание обеспечивает структур данных или классов. Процесс трансляции с таких языков обычно называется компиляцией, а исходные языки обычно относятся к языкам программирования высокого уровня (или высокоуровневым языкам).[7]

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

Интерпретатор – программа обеспечивает или устройство, осуществляющее пооператорную трансляцию и выполнение исходной программы. Интерпретатор не порождает на выходе программу на машинном языке. Распознав команду исходного языка, он тут же выполняет ее. Простой интерпретатор – анализирует и тут же выполняет (собственно интерпретация) программу Недостаток покомандно (или построчно), по мере поступления исходного кода на вход интерпретатора. Достоинством такого подхода является мгновенная реакция. Недостаток – такой интерпретатор обнаруживает ошибки в тексте программы только при попытке выполнения команды (или строки) с ошибкой. Интерпретатор компилирующего типа – это система из компилятора, переводящего исходный код программы в промежуточное представление, например, Personality disorders are a class of mental disorders characterized by enduring maladaptive patterns of behavior, cognition, and inner experience, exhibited across many contexts and deviating markedly from those accepted by the individual's culture. These patterns develop early, are inflexible, and are associated with significant distress or disability.[1]The definitions may vary somewhat, according to source. Недостаток в байт-код или p-код, и собственно интерпретатора, который выполняет полученный промежуточный код (так называемая виртуальная машина). Достоинством таких систем является бо́льшее быстродействие выполнения программ (за счёт выноса анализа исходного кода в отдельный, разовый проход, и Personality disorders are a class of mental disorders characterized by enduring maladaptive patterns of behavior, cognition, and inner experience, exhibited across many contexts and deviating markedly from those accepted by the individual's culture. These patterns develop early, are inflexible, and are associated with significant distress or disability.[1]The definitions may vary somewhat, according to source. минимизации этого анализа в интерпретаторе). Недостатки – большее требование к ресурсам и требование на корректность исходного кода.[7]


Достоинства интерпретаторов:

– Большая переносимость интерпретируемых программ – программа будет работать на любой платформе, на которой есть Personality disorders are a class of mental disorders characterized by enduring maladaptive patterns of behavior, cognition, and inner experience, exhibited across many contexts and deviating markedly from those accepted by the individual's culture. These patterns develop early, are inflexible, and are associated with significant distress or disability.[1]The definitions may vary somewhat, according to source.соответствующий интерпретатор. Как правило, более совершенные и наглядные средства диагностики ошибок в исходных кодах.

– Упрощение отладки исходных кодов программ. Personality disorders are a class of mental disorders characterized by enduring maladaptive patterns of behavior, cognition, and inner experience, exhibited across many contexts and deviating markedly from those accepted by the individual's culture. These patterns develop early, are inflexible, and are associated with significant distress or disability.[1]The definitions may vary somewhat, according to source.Интерпретатор позволяет начать обработку данных после написания Personality disorders are a class of mental disorders characterized by enduring maladaptive patterns of behavior, cognition, and inner experience, exhibited across many contexts and deviating markedly from those accepted by the individual's culture. These patterns develop early, are inflexible, and are associated with significant distress or disability.[1]The definitions may vary somewhat, according to source.даже одной команды.

– Меньшие размеры Personality disorders are a class of mental disorders characterized by enduring maladaptive patterns of behavior, cognition, and inner experience, exhibited across many contexts and deviating markedly from those accepted by the individual's culture. These patterns develop early, are inflexible, and are associated with significant distress or disability.[1]The definitions may vary somewhat, according to source.кода по сравнению с машинным кодом, полученным после обычных компиляторов.

Недостатки интерпретаторов:

– Интерпретируемая программа Personality disorders are a class of mental disorders characterized by enduring maladaptive patterns of behavior, cognition, and inner experience, exhibited across many contexts and deviating markedly from those accepted by the individual's culture. These patterns develop early, are inflexible, and are associated with significant distress or disability.[1]The definitions may vary somewhat, according to source. не может выполняться отдельно без программы–интерпретатора. Сам интерпретатор при Personality disorders are a class of mental disorders characterized by enduring maladaptive patterns of behavior, cognition, and inner experience, exhibited across many contexts and deviating markedly from those accepted by the individual's culture. These patterns develop early, are inflexible, and are associated with significant distress or disability.[1]The definitions may vary somewhat, according to source.этом может быть не очень компактным.

– Интерпретируемая программа выполняется медленнее, поскольку промежуточный анализ исходного кода и планирование его выполнения требуют дополнительного времени в сравнении с непосредственным исполнением машинного кода, в Personality disorders are a class of mental disorders characterized by enduring maladaptive patterns of behavior, cognition, and inner experience, exhibited across many contexts and deviating markedly from those accepted by the individual's culture. These patterns develop early, are inflexible, and are associated with significant distress or disability.[1]The definitions may vary somewhat, according to source. который мог бы быть скомпилирован исходный код.


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

Виды трансляторов современных Personality disorders are a class of mental disorders characterized by enduring maladaptive patterns of behavior, cognition, and inner experience, exhibited across many contexts and deviating markedly from those accepted by the individual's culture. These patterns develop early, are inflexible, and are associated with significant distress or disability.[1]The definitions may vary somewhat, according to source. языков Практически отсутствует программирования представлены в таблице 3.

Таблица 3 Трансляторы Практически отсутствует современных языков программирования [2]

Язык программирования

Транслятор

Java

компиляция в байт-код интерпретатор

C

компилятор

C++

компилятор

PHP

компиляция в байт-код интерпретатор

C#

компиляция в MSIL-код

интерпретатор

Python

компиляция в байт-код интерпретатор

Visual Basic

компиляция в MSIL-код

интерпретатор,

компилятор

Objective C

компилятор

Perl

компиляция в байт-код интерпретатор

Delphi

компилятор

Современные языки программирования используют в равной степени компиляцию и интерпретацию.

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

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

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

4. Типизация данных

Тип – относительно устойчивая и независимая совокупность элементов, которую можно выделить во всём рассматриваемом множестве.По одной из классификаций, языки программирования неформально делятся на сильно и слабо типизированные(англ. strongly and weakly typed), то есть обладающие сильной или слабой системой типов. Эти термины не являются однозначно трактуемыми, и чаще всего используются для указания на достоинства и недостатки конкретного языка. Существуют более конкретные понятия, которые и приводят к называнию тех или иных систем типов «сильными» или «слабыми».


Примечание: В русскоязычной литературе часто встречается некорректный перевод термина «strong typing» как «строгая типизация»; корректный вариант «сильная типизация» используется лишь при противопоставлении «слабой типизации». Следует иметь в виду, что использование термина «строгий» в отношении системы типов языка может вызвать путаницу со строгой семантикой вычислений языка (англ. strict evaluation).

Математически тип может быть определён двумя способами:

Множеством всех значений, принадлежащим типу.

Предикатной функцией, определяющей принадлежность объекта к данному типу.

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

По одной из классификаций, языки программирования неформально делятся на сильно и слабо типизированные(англ. strongly and weakly typed), то есть обладающие сильной или слабой системой типов. Эти термины не являются однозначно трактуемыми, и чаще всего используются для указания на достоинства и недостатки конкретного языка. Существуют более конкретные понятия, которые и приводят к называнию тех или иных систем типов «сильными» или «слабыми».

Примечание: В русскоязычной литературе часто встречается некорректный перевод термина «strong typing» как «строгая типизация»; корректный вариант «сильная типизация» используется лишь при противопоставлении «слабой типизации». Следует иметь в виду, что использование термина «строгий» в отношении системы типов языка может вызвать путаницу со строгой семантикой вычислений языка (англ. strict evaluation).

Типы данных различаются уже на нижних уровнях системы. Так, например, даже в Ассемблере х86 различаются типы «целое число» и «вещественное число». Это объясняется тем, что для чисел рассматриваемых типов отводятся различные объёмы памяти, используются различные регистры микропроцессора, а для операций с ними применяются различные команды Ассемблера и различные ядра микропроцессора.

В языках программирования типы данных не всегда строго соответствуют подобным типы данных математическим типам. Например, тип “целое число” большинства языков программирования не соответствует принятому в математике типу “целое число”, так как в математике указанный тип не имеет ограничений ни сверху, ни снизу, а в языках программирования эти ограничения есть. Как правило, в языках и системах имеется множество целых типов, отличающихся допустимым диапазоном значений (определяемым объёмом занимаемой памяти).[1]


Наиболее часто используемые типы данных:

Простые:

Перечислимый тип. Хранит значения прямо указанные в его описании.

Целочисленный тип. Целое число со знаком и без знака.

Вещественный тип. Вещественное число с запятой и с плавающей точкой.В 1974 году Лисков и Зиллес (англ. Liskov and Zilles) назвали сильно типизированными те языки, в которых «при передаче объекта из вызывающей функции в вызываемую, тип этого объекта должен быть совместим с типом, определённым в вызываемой функции»[1]. Джексон писал: «В сильно типизированном языке всякая ячейка данных будет иметь уникальный тип и всякий процесс будет провозглашать свои требования по взаимосвязи в терминах этих типов»[2].

В статье Луки Карделли[en] «Полнотиповое программирование»[3], система типов называется «сильной», если она исключает возможность возникновения ошибки согласования типов времени выполнения. Иначе говоря, отсутствие непроконтролированных ошибок времени выполнения называетсятипобезопасностью; ранние работы Хоара называют это свойство безопасностью (англ. security).

Символьный тип. Хранит один символ в различных кодировках.

Множество.

The qualification is equivalent to a Level 1 or Level 2 (grade depending) Key Skills Qualification (in Scotland, the equivalent is a National 5). Some pupils may decide to take one or more GCSEs before or after they sit the others, and people may apply to take GCSEs at any point either internally through an institution or externally. A level 1 GCSE covers grades C-G (commonly referred by as the foundation tier) whereas a level 2 GCSE covers grades A*-C (commonly referred by as the higher tier). 5 level 2 GCSE's, including English and Maths, are generally required (as well as a B/A in the specific subject) to continue into the level 3 Advanced GCE level (A-Level) or equivalent level 3 qualifications.

The education systems of current and former British territories, such as Gibraltar,[1] Nigeria and South Africa, also offer the qualification, as supplied by the same examination boards. Other former British colonies, such as Singapore and Zimbabwe, continue to use the O-level qualification.[2] The international version of the GCSE is the IGCSE, which can be taken anywhere in the world, and which includes additional options relating to coursework and the language the qualification is pursued in. All subjects completed in the fifth of the European Baccalaureate are generally equivalent to the GCSEs subjects.

Prior education to GCSE level is generally required of pupils wishing to pursue A Level courses or the BTEC Extended Diploma and International Baccalaureate. GCSE exams were introduced as the compulsory school-leavers' examinations by the government of the United Kingdom. GCSE examinations are typically taken at the age of 16 but may be taken at any age.

Совпадает с обычным математическим понятием множества.

Логический тип. Принимает два значения ложь = 0 и истина = 1.

Указатель. Хранит адрес в памяти, указывающий на какую–либо информацию, как правило – указатель на переменную.

Составные (сложные):

Массив. Хранит индексированный набор элементов одного типа.

Строковый тип. Хранит строку Personality disorders are a class of mental disorders characterized by enduring maladaptive patterns of behavior, cognition, and inner experience, exhibited across many contexts and deviating markedly from those accepted by the individual's culture. These patterns develop early, are inflexible, and are associated with significant distress or disability.[1]The definitions may vary somewhat, according to source. символов.