Как компилятор и интерпретатор используются на одном языке?

Возможно, это не лучшее решение, но оно выполняет свою работу:

import { Link } from 'react-router-dom';

// create functional component Post
export default Post = () => (
    <div className="component post">

        <button className="button delete-post" onClick={() => {
            // ... delete post
            // then redirect, without page reload, by triggering a hidden Link
            document.querySelector('.trigger.go-home').click();
        }}>Delete Post</button>

        <Link to="/" className="trigger go-home hidden"></Link>

    </div>
);

В принципе логика, связанная с одним действием (в данном случае удаление почты), вызовет триггер для перенаправления. Это не идеально, потому что вы добавите триггер узла DOM в свою разметку, чтобы вы могли удобно вызвать его, когда это необходимо. Кроме того, вы будете напрямую взаимодействовать с DOM, который в компоненте React может быть нежелательным.

Тем не менее этот тип перенаправления не требуется часто. Таким образом, одна или две дополнительные скрытые ссылки в вашей разметке компонента не будут сильно задевать, особенно если вы дадите им значимые имена.

2
задан Shahzaib Mazari 2 March 2019 в 06:32
поделиться

2 ответа

В Java исходный код сначала компилируется в байт-код, а затем выполняется интерпретатором (JVM - виртуальная машина Java).

Байт-код представляет собой машинный код для виртуальной машины.

В Javascript есть среда выполнения (движок), которая выполняет только временную компиляцию (JIT). По сути, во время выполнения ему дается исходный код, который он немедленно преобразует в собственный код, а затем код выполняется. В движке Chrome есть два модуля, которые выполняют компиляцию: один может выполнять код быстро, но код не сильно оптимизирован (интерпретатор зажигания), а другой создает высокопроизводительный код, но компиляция занимает больше времени (турбореактивный компилятор).

Зачем использовать оба:

  • переносимость - когда вы используете промежуточное представление, скомпилированное AOT, вы можете взять этот байт-код и запустить его на любой архитектуре, для которой предоставляется виртуальная машина. Вы можете передать один и тот же байт-код Java клиентам на Mac, ПК или Linux. Если у них установлена ​​JVM, код будет запущен. Для C или C ++ вы должны поставлять разные исполняемые программы для каждой архитектуры
  • быстрый начальный запуск и достойная производительность выполнения - компиляция требует времени (и чем больше оптимизированного кода, тем больше времени требуется для компиляции в целом), но никто не любит Подождите. Лучше создать что-то неидеальное (фаза зажигания), а затем постепенно улучшать код путем компиляции горячих путей в высокооптимизированный машинный код (фаза турбовентилятора). Это особенно вероятно сегодня, когда у нас есть процессоры со многими ядрами, но мы не можем использовать их все, потому что создавать программы с множеством параллельных потоков сложно (поэтому одно ядро ​​может выполнять программу, а другое может оптимизировать код в это время)
  • [ 119]
0
ответ дан marzelin 2 March 2019 в 06:32
поделиться

Java - первый машинно-независимый язык программирования; он использует как компилятор, так и интерпретатор. Компиляторы Java спроектированы таким образом, что преобразуют исходный код в независимые от платформы байтовые коды i-e. Эти байтовые коды затем переводятся в машинный код интерпретатором. Так компилятор и интерпретатор используются на одном языке. Любая система с JVM будет запускать эти байтовые коды.

Java program  byte code  interpreted by VM  machine language

Резюме:

Java-компилятор преобразует исходный код в промежуточный язык, известный как байт-код. Этот байт-код может быть выполнен только в виртуальной среде, называемой JVM. Виртуальная машина Java. JVM является интерпретатором Java-байт-кода. Он преобразует байт-код в машинный язык и выполняет строку за строкой.

это то, как и компилятор, и интерпретатор используются на одном языке ... если он окажется полезным, вы можете упомянуть

0
ответ дан sabeen kanwal 2 March 2019 в 06:32
поделиться
Другие вопросы по тегам:

Похожие вопросы: