Задать вопрос
Ответы пользователя по тегу Трансляторы
  • Возможно ли создание языка, который бы пришёл на замену С по производительности?

    2ord
    @2ord
    И возможно ли теоретически построение более оптимального компилятора, чем у С, в ближайшие годы?
    Навряд ли. В этот язык вложено много человеко-часов. Поскольку он представляет из себя общепринятый стандарт, то проще доработать расширения для своих нужд, чем разрабатывать компилятор с нуля.

    Правильно ли я считаю, что С-программы работают быстрее программ на других языках после Ассемблера?
    Не обязательно. Вот взять, к примеру, сравнение Web Framework Benchmarks
    https://www.techempower.com/benchmarks/
    Программа на C заняла лишь 6-е место в списке.

    Что делает C эффективным ("быстрым", но не только)?

    Inline-функции
    GoTo, ассемблерные вставки
    регистровые переменные
    адресная арифметика
    разные "подсказки" для компилятора, типа векторных инструкций процессора и прочих.

    Для того, чтобы заменить язык C, необходимо:
    вложить много человеко-часов, создав компилятор, который генерирует код эффективнее C
    разработать лучший toolchain, чем имеющийся.

    Дополнительные ссылки:
    icps.u-strasbg.fr/~bastoul/local_copies/lee.html
    ftp.cvut.cz/kernel/people/geoff/cell/ps3-linux-doc...
    https://ispc.github.io/
    Ответ написан
    Комментировать
  • Что нужно почитать и изучить для написания свой транслятор языка?

    2ord
    @2ord
    Можно поиграться с генератором компиляторов Coco/R на основе грамматики ATG.
    Есть готовый сканер и парсер для C/C++.
    Есть книга Compiler Construction Н. Вирта
    Ответ написан
    Комментировать
  • Нормально ли при написании компилятора использовать си, как целевой язык?

    2ord
    @2ord
    Нормально Си в качестве бэкенд использовать.
    В качестве примера: Vishap's Oberon Compiler (voc). Вообще, Оберон (не Оберон-2) удобно рассматривать в качестве языка, который прост и у него есть приличное количество реализаций как с байткодом, так и на целевые платформы.
    Можно еще WebAssembly генерировать, при помощи Cranelift IR.
    Хотя иметь LLVM в зависимости не так уж и плохо.
    Ответ написан
    Комментировать
  • Сложно ли сделать свой гибридный компилятор?

    2ord
    @2ord
    гибридный компилятор
    Компилятор компилирует исходную программу в файл с целевыми инструкциями для процессора или виртуальной машины для байткода (JVM/CLR и т.д), а интерпретатор - интерпретирует код по ходу чтения.
    Интерпретатор по-проще реализовать будет. Можно написать также транслятор на другой язык. Обычно используют либо Си, либо JavaScript (ECMAScript). Если в Си, то в схеме участвует сторонний компилятор Си.
    Целевые программы на JavaScript будут выполнены либо в браузере, либо в интерпретаторах JavaScript.

    Лучше читать источники на английском:
    Compiler Construction (PDF) Никлауса Вирта - создателя языков Паскаль, Модула, Оберон, Лола.

    Полезный ресурс лектора по компьютерным наукам Охфорда Spivey's Corner
    Course outline (Compilers)
    Glossary (Compilers)
    На его сайте есть информация по виртуальным машинам для байткода.

    Добавлено:
    есть также интересный проект - компилятор компиляторов Coco/R. При помощи грамматики EBNF твоего языка он сможет сгенерировать код самого компилятора языка на C#, Java и некоторых других. Этот код может быть хорошей отправной точкой. Можно экспериментировать.
    Ответ написан
    Комментировать
  • Что вы думаете об онлайн компиляторах?

    2ord
    @2ord
    Онлайн компиляторы могут быть полезны для ознакомления с некоторым языком программирования, чтобы оценить его возможности до установки.
    Ответ написан
    Комментировать