Компилятор?
by Kostiantyn Synyshyn
Front-end Developer at Levi9

Содержание

Мотивация

Высокоуровневые языки программирования

Модель интерпретации

Модель компиляции

 

WEB APPS

Правила Бентли для "оптимизации работы"

WEB APPS

BROWSER

OPERATING SYSTEM

BIOS

SILICON

processor commands

assembly

C/ C++

Java

JavaScript

C#

Swift

APPLICATIONS

RUST

компиляторы

C/ C++

Высокоуровневый ЯП

const isPrime = num => {
  for(let i = 2; i < num; i++)
    if(num % i === 0) return false;
  return num > 1;
}

Высокоуровневый ЯП

const isPrime = num => {
  for(let i = 2; i < num; i++)
    if(num % i === 0) return false;
  return num > 1;
}

Преимущества перед assembly:

  • Емкий
  • Удобно читаемый
  • Просто поддерживать
  • Портируемый

Интерпретация

M1

Модель интерпретации:

  1. Имеется устройство М1

Интерпретация

M1

Модель интерпретации:

  1. Имеется устройство М1
  2. Написать программу для М1, которая повторяет поведение устройства М2
  3. Результат: виртуальная машина М2

Program

M2

Интерпретация

x86

JavaScript

Application

Компиляция

M1

Program1

Program2

C2-1

Модель компиляции:

  1. Имеется устройство М1
  2. Найти "простой" язык L2 (для более сложного устройства М2) и реализовать программу на этом языке
  3. Реализовать транслятор, который транслирует программу из языка для устройства М2 в язык для устройства М1

Интерпретация vs Компиляция

Интерпретатор Компилятор
Для выражения x+1 Высчитывает значение x+1 Генерирует программу для просчёта x+1
Когда это происходит Во время выполнения До выполнения
Что это усложняет/замедляет Выполнение программы Разработка программы
Время принятия решений Run time Compile time

Платформа

Интерпретация и компиляция

Парсер и компилятор?

const result = 3 + 5 * 7

AST - вершины сопоставлены с операторами, а листья - с операндами

Интерпретация и компиляция

Интерпретация и компиляция

Summary

Thank you!

Q&A

Compilers?

By Kostiantyn Synyshyn

Compilers?

Intro to compilation theory

  • 52