Переводчик (компьютерный)
Выполнение программы |
---|
Общие понятия |
Типы кода |
Стратегии составления |
Известное время выполнения |
|
Известные компиляторы и наборы инструментов |
|
Транслятор — это компьютерная программа, которая преобразует инструкции программирования , или процессор языка программирования написанные в удобной для человека форме, в коды машинного языка, которые компьютеры понимают и обрабатывают. Это общий термин, который может относиться к компилятору , ассемблеру или интерпретатору — всему, что преобразует код с одного компьютерного языка в другой. [1] [2] К ним относятся переводы между компьютерными языками высокого уровня и понятными человеку компьютерными языками, такими как C++ и Java , языками промежуточного уровня, такими как байт-код Java , языками низкого уровня , такими как ассемблер и машинный код , а также между аналогичными уровнями языка на разных компьютерах. платформы , а также с любой из этих на любую другую из этих. [1] Программное и аппаратное обеспечение представляют разные уровни абстракции вычислений. Программное обеспечение обычно пишется на языках программирования высокого уровня, которые людям легче понять и которыми легче манипулировать, в то время как аппаратные реализации включают низкоуровневые описания физических компонентов и их взаимосвязей. Вычисления переводчика облегчают преобразование между этими уровнями абстракции. [3] В целом, вычисления-переводчики играют решающую роль в устранении разрыва между программными и аппаратными реализациями, позволяя разработчикам использовать сильные стороны каждой платформы и оптимизировать производительность, энергоэффективность и другие показатели в соответствии с конкретными требованиями приложения. [4]
Языковые процессоры программирования [ править ]
Процесс разработки программного обеспечения заметно различается в зависимости от типа переводчика, используемого разработчиком, и, конечно, он отличается от переводчика к переводчику. Этапы процесса разработки, на которые влияет транслятор, включают этап начального программирования, этап отладки и, в первую очередь, процесс выполнения. Факторы, на которые влияют на этих этапах, включают производительность кода, скорость обратной связи для процесса отладки, особенности языка и независимость платформы. Некоторые из наиболее известных процессоров языков программирования, используемых для трансляции кода, — это компиляторы , интерпретаторы и ассемблеры . [5]
Компиляторы [ править ]
Программное обеспечение компилятора взаимодействует с исходным кодом , преобразуя его, как правило, из языка программирования более высокого уровня в объектный код (ЦП) компьютера , который позже может быть выполнен центральным процессором . [6] Объектный код, создаваемый компилятором, состоит из машиночитаемого кода , который может обрабатывать компьютер. Этот этап вычислительного процесса известен как компиляция. Использование компилятора приводит к разделению процессов трансляции и выполнения. После компиляции новый объектный код сохраняется отдельно от исходного кода, в результате чего исходный код больше не требуется для процесса выполнения. В программах-компиляторах процесс трансляции происходит однократно, что приводит к созданию эффективного кода, который можно быстро выполнить любое количество раз. [6]
Трансляция высокоуровневого кода с помощью компилятора имеет очевидные преимущества. [7]
- Компиляция приводит к ускорению выполнения программы. Поскольку код транслируется перед выполнением, его результаты оптимизируются и выполняются быстро.
- Компиляторы более идеальны для защиты кода от плагиата и предотвращения использования исходного кода неавторизованной стороной.
- Объектный код необходимо создать только один раз при компиляции исходного кода.
Есть явные недостатки при трансляции высокоуровневого кода с помощью компилятора. [7]
- машины Объектный код, создаваемый во время компиляции, зависит от архитектуры набора команд (ISA). В результате получается объектный код, запуск которого зависит от конкретного типа машины.
- Стадия отладки процесса разработки не может начаться до полной компиляции программы. Ошибки видны только после компиляции.
- Любой измененный исходный код должен быть полностью перекомпилирован для повторного выполнения.
Некоторые известные языки программирования, использующие компиляторы, включают: [8]
Переводчики [ править ]
Программы-интерпретаторы функционируют путем интерпретации кода высокого уровня в код, пригодный для использования машиной, одновременно выполняя инструкции построчно. В отличие от компиляторов, интерпретаторам не нужно компилировать код перед выполнением инструкций. Процесс трансляции и исполнения выполняются одновременно и прерывается в случае ошибки в программе. Использование интерпретатора позволяет разработчикам тестировать и модифицировать код в режиме реального времени. Это упрощает процесс отладки, а также помогает создавать более эффективный код. Поскольку процесс трансляции и выполнения выполняется одновременно, время выполнения программ-интерпретаторов существенно. [5]
Есть явные преимущества перевода высокоуровневого кода с помощью интерпретатора.
- Поскольку объектный код не создается в процессе интерпретации, для кода требуется меньше памяти. [5]
- Языки-интерпретаторы не создают машинно-специфичный код и могут выполняться на машинах любого типа. [7]
- Процесс разработки и отладки обычно происходит быстрее из-за меньшей сложности и большей гибкости. [7]
Есть явные недостатки при переводе высокоуровневого кода с помощью интерпретатора. [7]
- Для запуска и интерпретации программ на компьютере должен быть установлен интерпретатор.
- Время выполнения программы медленнее, чем у компилятора.
Некоторые известные языки программирования, в которых используются интерпретаторы, включают: [5]
Сборщики [ править ]
Программа на ассемблере функционирует путем преобразования ассемблерного кода низкого уровня в обычный машинный код, читаемый ЦП. Цель языка ассемблера, как и других языков кодирования, — сделать процесс программирования более удобным для пользователя, чем программирование на машинном языке. Языки ассемблера используют мнемонические устройства и символические адреса для различения кода операции, операндов и конкретных адресов памяти. Многие из этих компонентов нелегко читаются человеком, поэтому мнемоника, символы и метки делают код расшифровываемым. Ассемблер обрабатывает код по одной строке за раз, а затем переходит к следующей инструкции. Чтобы устранить проблемы, возникающие из-за адресации местоположений, процесс трансляции, известный как сборка, обычно выполняется в два этапа. Первый проход сборки выполняется для идентификации двоичных адресов, соответствующих символическим именам. Это важно для выполнения второго этапа, который представляет собой построчный перевод на машинный язык. [9]
Обычно используемые ассемблеры включают в себя:
- Языки ассемблера x86 (используются в процессорах Intel и AMD) [10]
- Язык ассемблера ARM (используется в мобильных устройствах) [10]
- Язык ассемблера MIPS (используется в игровых консолях) [10]
- PowerPC Язык ассемблера [10]
- Язык ассемблера LC-3 (используется в основном в образовании и для программирования компьютера LC-3) [9]
См. также [ править ]
- Бинарный переводчик (двоичный код, обычно код)
- Переводчик языка ассемблера (низкоуровневый исходный код, код)
- Транслятор исходного кода (высокоуровневый исходный код, код)
- Рерайтер (от источника к источнику, обычно код)
- Средство форматирования исходного кода (источник-источник, обычно код)
- Конвертер файлов (двоичный код, обычно данные)
- Транскодер (двоичный код, данные)
Ссылки [ править ]
- ^ Jump up to: Перейти обратно: а б Торнтон, Скотт (17 февраля 2017 г.). «Что такое компиляторы, трансляторы, интерпретаторы и ассемблеры?» . Советы по микроконтроллеру . Архивировано из оригинала 19 июля 2019 г. Проверено 2 февраля 2020 г.
- ^ «Переводчики и утилиты для разработки программ». Справочник по программному обеспечению (PDF) . Корпорация Интел . 1984 [1983]. п. 3-1. 230786-001. Архивировано (PDF) из оригинала 29 января 2020 г. Проверено 29 января 2020 г.
- ^ Болье, Адриан (2022). «A15. Интерфейсные и серверные технологии: важность владения несколькими языками программирования» .
- ^ Пагадала, Сантош Кумар (2004). «Портативная реализация среды автоматизированного проектирования композитных конструкций» .
- ^ Jump up to: Перейти обратно: а б с д «Языковые процессоры: ассемблер, компилятор и интерпретатор» . Гики для Гиков . 09.08.2018 . Проверено 15 марта 2024 г.
- ^ Jump up to: Перейти обратно: а б «CSE 5317/4305: Проектирование и изготовление компиляторов» . лямбда.ута.edu . Проверено 15 марта 2024 г.
- ^ Jump up to: Перейти обратно: а б с д и «Типы переводчиков» . Ада Информатика . 15 марта 2024 г. Проверено 15 марта 2024 г.
- ^ «Скомпилированные и интерпретируемые языки» . www.ibm.com . Проверено 15 марта 2024 г.
- ^ Jump up to: Перейти обратно: а б Патт, Йельский университет; Патель, Санджай (15 августа 2019 г.). Введение в вычислительные системы: от битов и вентилей до C/C++ и не только (3-е изд.). Нью-Йорк, штат Нью-Йорк: МакГроу-Хилл. стр. 231–243. ISBN 978-1260150537 .
- ^ Jump up to: Перейти обратно: а б с д Стоко, Уильям (6 мая 2024 г.). «Структура жестового языка» . Ежегодный обзор антропологии . 9 : 365–390. doi : 10.1146/annurev.an.09.100180.002053 . Проверено 15 марта 2024 г.
Дальнейшее чтение [ править ]
- Калингарт, Питер (1979) [1978-11-05]. Написано в Университете Северной Каролины в Чапел-Хилл . Горовиц, Эллис (ред.). Ассемблер, компилятор и трансляция программ . Серия «Разработка компьютерного программного обеспечения» (1-е издание, 1-е изд.). Потомак, Мэриленд, США: Computer Science Press, Inc. ISBN 0-914894-23-4 . ISSN 0888-2088 . LCCN 78-21905 . Архивировано из оригинала 20 марта 2020 г. Проверено 20 марта 2020 г. (2+xiv+270+6 страниц)
- Принг-Милл, Дэвид (04 марта 2018 г.). «Почему ИИ не освоил языковой перевод?» . Центр сингулярности . Университет Сингулярности . Архивировано из оригинала 29 декабря 2019 г. Проверено 2 февраля 2020 г.
- Эдвардс, Стивен А. (осень 2013 г.). «Языковые процессоры» (PDF) . Колумбийский университет . Архивировано (PDF) из оригинала 24 июня 2019 г. Проверено 2 февраля 2020 г.
- Такер, Аллен; Белфорд, Женева Г. «Информатика» . Британская энциклопедия . Архивировано из оригинала 23 июля 2019 г. Проверено 2 февраля 2020 г.