Компилятор исходного кода


Транслятор исходного кода , компилятор исходного кода ( компилятор S2S ), транскомпилятор или транспилер [1] [2] [3] — это тип транслятора , который берет исходный код программы, написанной на языке программирования . в качестве входных данных и создает эквивалентный исходный код на том же или другом языке программирования. Транслятор исходного кода выполняет преобразование между языками программирования, которые работают примерно на одном уровне абстракции , в то время как традиционный компилятор выполняет перевод с языка программирования более высокого уровня .на язык программирования более низкого уровня . Например, транслятор исходного кода может выполнять перевод программы с Python на JavaScript , в то время как традиционный компилятор переводит с такого языка, как C , на ассемблер или Java на байт -код . [4] Автоматический распараллеливающий компилятор часто принимает в качестве входных данных программу на языке высокого уровня, а затем преобразует код и аннотирует его аннотациями параллельного кода (например, OpenMP ) или языковыми конструкциями (например , операторами Fortran ). [2] [5]forall

Еще одна цель компиляции исходного кода — преобразование устаревшего кода для использования следующей версии базового языка программирования или API, нарушающего обратную совместимость. Он будет выполнять автоматический рефакторинг кода , что полезно, когда программы, подлежащие рефакторингу, находятся вне контроля исходного разработчика (например, преобразование программ из Python 2 в Python 3 или преобразование программ из старого API в новый API) или когда Размер программы делает непрактичным или трудоемким ее рефакторинг вручную.

Транскомпиляторы могут либо сохранять структуру переведенного кода как можно ближе к исходному коду, чтобы облегчить разработку и отладку исходного исходного кода, либо могут настолько изменить структуру исходного кода, что переведенный код не будет похож на исходный код. [6] Существуют также утилиты отладки, которые отображают транскомпилированный исходный код обратно в исходный код; например, стандарт карты исходного кода JavaScript позволяет отображать код JavaScript, выполняемый веб-браузером , обратно в исходный код, когда код JavaScript был, например, минимизирован или создан с помощью языка, транскомпилируемого в JavaScript. [ нужна цитата]

Так называемые трансляторы языка ассемблера — это класс трансляторов исходного кода, преобразующих код с одного языка ассемблера на другой, в том числе (но не ограничиваясь) для разных семейств процессоров и системных платформ .

Intel продавала свой 16-битный процессор 8086 как источник, совместимый с 8080 , 8-битным процессором. [8] Для поддержки этого у Intel был транслятор на основе ISIS-II из исходного кода 8080 в 8086 с именем CONV86 [9] [10] [11] (также называемый CONV-86 [12] и CONVERT 86 [13] . [14] ), доступная для OEM - клиентов с 1978 года, возможно, самая ранняя программа такого рода. [nb 1] Он поддерживал несколько уровней трансляции и работал на частоте 2 МГц на системе разработки микропроцессоров Intel MDS-800 с 8-дюймовым экраном .дисководы гибких дисков . По сообщениям пользователей, он работал не очень надежно. [15] [16]