Язык Swift часть 3. Компилируемый язык.

Swift - компилируемый язык или интерпретируемый?

Сделаем пару сравнений языка Swift с другими языками. И ответим на вопрос:

"Хорошо, а какого типа язык Swift? Он компилируемый, или интерпретируемый? Может еще какие варианты?"

Почему этот вопрос так важен? Потому что этот вопрос относится к ключевым принципам программирования, с которыми мы довольно редко сталкиваемся напрямую, и поэтому не понимаем. Но компиляция и интерпретация - основа взаимодействия языка программирования с компьютером.


Так как же Swift конвертирует программу в машинный код, понятный процессору? Он больше похож на C++, или Python? Может быть Java?

РазработчикМостПользователь
1Компилируемые языки C++, C (код - полностью компилируется в машинный код)Машинный кодЗапуск
2Нечто среднее C#, Java (код - частично компилируется в машинный код)Байт-кодВиртуальная машина - Запуск (необходимо окружение для запуска)
3Интерпретируемые языки JavaScript, Ruby (код - нет компиляции)исходный кодИнтерпретация - Запуск (Нужен интерпретатор)

Есть три категории языков программирования.

  1. В первых исходный код полностью трансфофрмируется в машинный код. Соответственно программы работают быстрее.
  2. Во-вторых исхохдный код частично компилируется, или компилируется в промежуточный код. Для выполнения такого кода нужно рабочее окружение. Например виртуальные машины.
  3. И в третьих код никак не компилируется, а запускается интерпретатором.

Конечно есть различные исключения, но мы говорим о типичных случаях работы языков программирования.

Так вот Swift - компилируемый язык программирования. Типичная программа на Swift полностью компилируется в машинный код.

Из этого следует, что нет никакой специальной среды выполнения Swift кода, нет никаких виртуальных машин, которые нужно установить перед тем, как запустить программу. Swift компилируется прямиком в машинный код.

Можно задать логичный вопрос:

"Это так необходимо знать прямо сейчас, когда я только начал изучение языка программирования?"

На это есть причина. Когда мы начинаем изучать Swift работая в Playground или при помощи REPL или выполняя код строка за строкой в консоли - можно попасть в ловушку. Можно ошибочно начать полагать, что Swift это интерпретируемый язык. Но на самом деле это не так. Компилятор работает за занавесом, скрытый от наших глаз. Это работает именно так, потому что Swift оснащен весьма мощными инструментами написания кода. И это нужно понимать.

Еще раз - Swift ПОЛНОСТЬЮ компилируемый язык программирования.