Мы уже говорили о том, что такое программирование, а также о различных парадигмах программирования и некоторых языках, которые следуют этим парадигмам. Теперь давайте поговорим о том, как эти программы выполняются компьютером.
В статье Введение в программирование — Что такое программирование? я кратко объяснил, что языки программирования используются для написания кода, который затем переводится в код машинного уровня, понятный компьютеру. Этот перевод осуществляется с помощью таких инструментов, как компиляторы или интерпретаторы.
Некоторые языки используют компиляторы, а другие — интерпретаторы. Исходя из этого, языки часто называют компилируемыми и интерпретируемыми. Давайте обсудим их подробно.
КОМПИЛЯТОР
Компилятор — это транслятор, который принимает на вход язык программирования высокого уровня, такой как Java, и выдает на выходе язык низкого уровня (например, ассемблер или машинный язык).
По сути, это компьютерная программа, используемая для преобразования кодов, написанных на языке программирования, в машинный код (человекочитаемый код в двоичный язык из 0 и 1 битов, понятный компьютерному процессору).
Затем компьютер обрабатывает машинный код для выполнения соответствующих задач.
Компилятор берет весь код, проверяет все типы ошибок, пределы и диапазоны и компилирует его в машинный код, который затем выполняется компьютером. Если в код вносятся какие-либо изменения, то весь код необходимо перекомпилировать, только тогда изменения будут отражены.
Примечание: Время, необходимое компилятору для компиляции кода, называется временем компиляции, а время, затрачиваемое на выполнение кода, называется временем выполнения.
В случае компилируемых языков время компиляции относительно больше, а время выполнения короче, поскольку код уже переведен в код машинного уровня, и компьютеру нужно только выполнить этот код.
Компилятор хранит переведенный машинный код и выполняет его каждый раз, когда код запускается. Поэтому он требует больше памяти.
Java, C++, C#, Go и т.д. — одни из самых распространенных языков программирования высокого уровня, использующие компилятор для перевода своего кода в код машинного уровня.
Компилируемые языки часто называют статически типизированными языками программирования, поскольку компиляторы очень сложно реализовать, так как они не могут предсказать ничего, что происходит во время выполнения.
ИНТЕРПРЕТАТОР
Интерпретатор — это программа, выполняющая функции перевода языка программирования в понятный язык. Это компьютерная программа, используемая для преобразования высокоуровневых программных утверждений в машинные коды. Он включает в себя предварительно скомпилированный код, исходный код и скрипты.
Интерпретатор похож на компилятор, поскольку он также переводит языки программирования высокого уровня в машинный код, но разница в том, что в отличие от компилятора, интерпретатор читает код строка за строкой, проверяет наличие ошибок в этой строке и затем преобразует эту строку или утверждение в машинный код.
Интерпретатор не хранит код машинного уровня, поэтому он занимает меньше памяти, но поскольку код не хранится, он генерируется каждый раз, когда код выполняется.
Кроме того, поскольку код не компилируется, он не имеет времени компиляции, но время его работы очень велико по сравнению с компилятором, поскольку каждый раз он преобразует код языка программирования высокого уровня в код машинного уровня строка за строкой или утверждение за утверждением.
Мы не сможем найти все ошибки в нашем коде за один раз, поскольку интерпретатор остановит интерпретацию кода на той строке, где обнаружит какую-либо ошибку. Пока эта ошибка не будет исправлена, он не продвинется дальше этой строки.
Python, PHP, JavaScript, Ruby и т.д. — одни из самых распространенных языков программирования высокого уровня, использующие интерпретатор для перевода своего кода в код машинного уровня.
Эти языки часто называют динамически типизированными, так как они поддерживают динамическую типизацию, поскольку интерпретатор выполняет код построчно, поэтому во время выполнения он динамически определяет тип используемых переменных.
Одним из основных преимуществ интерпретатора является то, что вы можете запустить всего одну строку кода и увидеть ее результат, в то время как в случае с компилятором вам нужно сначала скомпилировать весь код, а затем запустить его.
Если вам понравилась статья, пожалуйста, поставьте ей большой палец вверх.
Читайте другие статьи цикла Введение в программирование