Код программы на языках программирования тип файла

Компьютеры не понимают человеческих языков. На самом деле. На самом низком уровне компьютеры понимают только последовательности чисел. Которые представляют собой операционные коды (op-коды для краткости). С другой стороны. Людям было бы очень трудно писать программы в терминах оп-кодов. Поэтому языки программирования были изобретены для того. Чтобы облегчить людям написание компьютерных программ. Языки программирования предназначены для чтения и понимания людьми. Программа (исходный код) должна быть переведена на машинный язык. Чтобы компьютер мог выполнить программу (поскольку компьютер понимает только машинный язык).

Способ, которым происходит этот перевод. Зависит от того. Является ли язык программирования компилируемым или интерпретируемым.

Компилируемые языки (например, C, C++)

Ниже показан процесс программирования для скомпилированного языка программирования.

Компилятор берет программный код (исходный код) и преобразует его в модуль машинного языка (называемый объектным файлом). Другая специализированная программа. Называемая компоновщиком. Объединяет этот объектный файл с другими ранее скомпилированными объектными файлами (в частности. Модулями времени выполнения) для создания исполняемого файла.

Схема этого процесса приведена ниже. Нажмите кнопку Начальная сборка, чтобы увидеть анимацию создания исполняемого файла. Нажмите кнопку Запустить исполняемый файл. Чтобы имитировать запуск уже созданного исполняемого файла. Нажмите кнопку Перестроить для имитации перестройки исполняемого файла.

image/svg+xmlexecutable file

Таким образом. Для скомпилированного языка преобразование исходного кода в машинный исполняемый код происходит до запуска программы.

Это очень отличается от того. Что происходит для интерпретируемого языка программирования.

Это несколько упрощено. Поскольку многие современные программы. Созданные с использованием скомпилированных языков. Используют динамические связанные библиотеки или общие библиотеки. Поэтому для запуска исполняемого файла могут потребоваться эти динамические связанные библиотеки (Windows) или общие библиотеки (Linux, Unix).

Интерпретируемые языки программирования (например. Python, Perl)

Этот процесс отличается для интерпретируемого языка. Вместо перевода исходного кода на машинный язык до создания исполняемого файла интерпретатор преобразует исходный код на машинный язык одновременно с запуском программы. Это проиллюстрировано ниже:

Интерпретируемые языки используют специальную программу. Называемую интерпретатором, которая преобразует исходный код. Объединяется с библиотеками времени выполнения и выполняет результирующие машинные инструкции во время выполнения. В отличие от скомпилированного языка. В нем нет предварительно скомпилированной программы для запуска. Процесс преобразования и объединение с библиотеками времени выполнения происходит каждый раз при запуске программы на интерпретируемом языке. Вот почему программы. Написанные на компилируемых языках. Как правило. Работают быстрее. Чем сопоставимые программы. Написанные на интерпретируемых языках. Нажмите кнопку Пуск для запуска моделирования интерпретируемой программы. Нажмите кнопку Перезапустить, если вы хотите снова запустить симуляцию.

image/svg+xml

Каждый раз. Когда интерпретируемая программа запускается. Интерпретатор должен преобразовать исходный код в машинный код. А также извлечь библиотеки времени выполнения. Этот процесс преобразования заставляет программу работать медленнее. Чем аналогичная программа. Написанная на компилируемом языке.

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

А теперь что-то другое … Ява

Язык программирования Java не вписывается ни в скомпилированный язык. Ни в интерпретируемые языковые модели. Это показано на рисунке ниже.

Компилятор Java (javac) преобразует исходный код в байт-код. Байт-код-это своего рода средний машинный язык. Этот файл байт-кода (файл.class) может быть запущен в любой операционной системе с помощью интерпретатора Java (java) для этой платформы. Интерпретатор называется виртуальной машиной. Таким образом. Java является примером языка программирования виртуальных машин.

Языки виртуальных машин были созданы как компромисс между компилируемыми и интерпретируемыми языками. В идеальных условиях программы на языке виртуальных машин работают ближе по скорости к компилируемым языковым программам. Но имеют независимость от платформы интерпретируемых языковых программ.

Языки виртуальных машин используют как компилятор. Так и интерпретатор. Компилятор преобразует исходный код в своего рода средний машинный язык. В Java этот средний машинный язык называется байт-кодом. В Visual Studio.NET languages. Этот средний машинный язык называется MSIL (Microsoft Intermediate Language). (Чтобы упростить обсуждение на этой странице. С этого момента этот скомпилированный код будет называться в общем виде байт-кодом.) Интерпретатор для языков виртуальных машин-это специальная программа. Предоставляющая библиотеки времени выполнения для данной операционной системы. Это означает. Что для всех поддерживаемых операционных систем существует другой интерпретатор виртуальных машин.

Способ, которым языки программирования виртуальных машин получают некоторую скорость скомпилированных языков. Заключается в том. Что исходный код запускается через компилятор для создания байт-кода. Это преобразование происходит еще до запуска программы. Переносимость языков виртуальных машин (независимость от платформы) достигается за счет наличия различных интерпретаторов для каждой поддерживаемой операционной системы. Этот интерпретатор связывает правильные библиотеки времени выполнения для каждой отдельной операционной системы. Скомпилированный байт-код-это обычный машинный язык. Который будет работать без изменений с любым из интерпретаторов виртуальных машин для этого языка. Этот процесс проиллюстрирован ниже. У нас есть компилятор. Который преобразует исходный код в байт-код. Это можно смоделировать нажав на кнопку Скомпилировать кнопка. После того, как байт-код был создан. Тот же байт-код может быть использован без каких-либо изменений в любой операционной системе. Которая имеет интерпретатор виртуальной машины для языка программирования. Обратите внимание. Что каждый из интерпретаторов виртуальных машин имеет разный код библиотеки времени выполнения. Поскольку каждая операционная система имеет разные библиотеки времени выполнения. Именно так язык виртуальных машин обходит проблемы зависимости от платформы. Нажмите кнопку Запустить Windows, Запустить Mac OSX или запустить Linux для имитации запуска программы в любой из этих операционных систем.

image/svg+xml

Еще раз обратите внимание. Что байт-код не нужно перекомпилировать для работы в любой из различных операционных систем. Единственная причина для перекомпиляции программы — это изменение исходного кода.

Надеюсь, вы сможете увидеть. Как программы на языке виртуальных машин будут иметь лучшую производительность. Чем программы на интерпретируемом языке. Языки виртуальных машин преобразуют исходный код в обычный машинный код еще до запуска программы. Языки виртуальных машин не совсем соответствуют производительности скомпилированных языков. Потому что байт-код все еще должен быть загружен виртуальной машиной перед запуском.

Детали процесса программирования Java

Исходный код Java-программы-это текстовый файл. Который заканчивается на . Предположим. Вы напечатали следующий файл. Hello.java.

class Hello { public static void main(String[] args) { System.out.println("Hello"); } }

Чтобы скомпилировать эту программу. Вы должны ввести в командной строке следующее:

javac Hello.java

Компилятор Java называется javac. Явак программа уникальна тем. Что она не производит реального машинного кода. Вместо этого он производит нечто . Называемое байт-кодом. В отличие от машинного кода. Байт-код не зависит от платформы. Байт-код, созданный на машине с Windows. Является тем же байт-кодом. Который создается на машине с Linux. Это означает. Что байт-код может быть запущен (без перекомпиляции) на любой платформе. Имеющей интерпретатор Java.

Если компиляция в байт-код будет успешной. Байт-код будет содержаться в файле с именем Hello.class создается. Чтобы запустить этот байт-код. Интерпретатор Java вызывается следующим образом.

java Hello

Обратите внимание. Что имя интерпретатора Java- java. Также обратите внимание. Что вы не включаете .class в конец имени файла при вызове интерпретатора. По умолчанию файл .class создается в том же каталоге . Что и каталог. Из которого выполняется компилятор.

Совет по программированию

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

  • Удалите точку с запятой в конце инструкции.
  • Снимите правую фигурную скобку в конце блока.
  • Добавьте дополнительную левую фигурную скобку непосредственно перед началом блока.
  • Неправильно произнесите слово Основной метод отмечает начальную точку программы.

При появлении сообщения об ошибке обратите внимание на местоположение ошибки. О которой сообщает компилятор. Как вы увидите, строка. На которую указывает компилятор как на имеющую ошибку. Может не быть фактической строкой. На которой возникает ошибка.