Урок 9. Про компиляцию, интерпретацию и .EXE файл.

Здравствуйте, дорогие читатели! Сегодня мы с вами немного окунемся в теорию. Наверняка, вы все когда-то хотели отправить свою супер-пупер программу другу. Но как это сделать? Не заставлять же его устанавливать PascalABC.NET! О том, как это сделать, мы сегодня и поговорим.

 

Все языки программирования делятся на два типа — интерпретируемые и компилируемые.

Интерпретаторы

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

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

При интерпретации выполнение кода происходит последовательно строка за строкой (от инструкции до инструкции). Операционная система взаимодействует с интерпретатором, а не исходным кодом.

Примеры интерпретируемых языков: PHP, JavaScript, C#, Python.

Скомпилированные программы работают быстрее, но при этом очень много времени тратится на компиляция исходного кода.

Программы же, рассчитанные на интерпретаторы, могут выполняться в любой системе, где таковой интерпретатор присутствует. Типичный пример — код JavaScript. Интерпретатором его выступает любой современный браузер. Вы можете однократно написать код на JavaScript, включив его в html-файл, и он будет одинаково выполняться в любой среде, где есть браузер. Не важно, будет ли это Safari в Mac OS, или же Internet Explorer в Windows.

Компиляторы

Компилятор — это программа, превращающая исходный текст, написанный на языке программирования, в машинные инструкции.

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

При компиляции весь исходный программный код (тот, который пишет программист) сразу переводится в машинный. Создается так называемый отдельный исполняемый файл, который никак не связан с исходным кодом. Выполнение исполняемого файла обеспечивается операционной системой. То есть образуется, например, .EXE файл.

Примеры компилируемых языков: C, C++, Pascal, Delphi.

Ход работы компилятора.

 

Препроцессинг

Эту операцию осуществляет текстовый препроцессор.

Исходный текст частично обрабатывается — производятся:

  • Замена комментариев пустыми строками
  • Подключение модулей и т. д. и т. п.

Компиляция

Результатом компиляции является объектный код.

Объектный код — это программа на языке машинных кодов с частичным сохранением символьной информации, необходимой в процессе сборки.

Компоновка

Компоновка также может носить следующие названия:  связываниесборка или линковка.

Это последний этап процесса получения исполняемого файла, состоящий из связывания воедино всех объектных файлов проекта.

EXE файл.

После компоновки у вас образуется .EXE файл вашей программы. Вы можете кинуть ее другу, и она откроется у него прямо в командной строке, как в старом добром DOS. Давайте попробуем создать .EXE файл. Все действия будут приводится в PascalABC.NET.

Заходим в Сервис -> Настройки -> Опции компиляции. Поверяем, стоит ли галочка напротив 2 пункта. Если стоит, то убираем ее.

Теперь откройте свою программу и запустите ее.

Откройте директорию, в которой у вас лежит исходный код программы.

EXE файл
Вот он, .EXE файл.

Кликаем по приложению. Как вы видите, после ввода данных, окошко сразу закрывается. Для того чтобы окно не закрывалось сразу, следует дописать две строчки кода, а именно: uses crt (перед разделом описания переменных) и readkey (в конце кода, перед оператором end).

Подключаем внешнюю библиотеку crt и используем встроенную в нее функцию readkey.

Теперь окно закроется по нажатию любой клавиши.

На заметку: [button colour=»black» type=»dropshadow» size=»small» link=»» target=»_self»]PascalABC.NET[/button] — это интегрированная среда разработки.

Среда разработки включает в себя:

  • текстовый редактор;
  • компилятор;
  • средства автоматизации сборки;
  • отладчик.

На сегодня все! Задавайте любые вопросы в комментариях к этой статье. Не забывайте кликать по кнопочкам и делится ссылками на наш сайт со своими друзьями. А для того, чтобы не пропустить выход очередной статьи, рекомендую вам подписаться на рассылку новостей от нашего сайта. Одна из них находится в самом верху справа, другая — в футере сайта.

  • Товарищ О.

    Великолепное исполнение, господа присяжные заседатели! Высший класс!

  • Speed

    Здравствуйте. Имеется пара вопросов.
    1) Зачем в компиляторах повторяется таблица интерпритации? Она точно такая же, как в интерпритаторах.
    2) Мне кажется, было бы удобнее для изучающих писать более понятнее значение функций. Так например readkey — функция, закрывающая программу после нажатия любой клавиши на компьютере. Так лучше воспринимается её значение. Чтобы потом не приходилось ворошить интернет и искать непонятное. Но это лишь мое пожелание 🙂

  • Коля Широких

    Спасибо!!!

  • Neon Eye

    «Скомпилированные программы работают быстрее, но при этом очень много времени тратится на компиляция исходного кода.» Ошибочка, должно быть так: «Скомпилированные программы работают быстрее, но при этом очень много времени тратится на компиляциЮ исходного кода.»

  • Тоха

    А можно ли сделать так ,что сам .exe файл ,открывался не в этом окне ,а в окне ну примерно как самая обычная программа ,или вот как сам PaskalABC.net?
    Можно ли написать игру в языке паскаль ,какую нибудь многоуровневую?

    • alen_marzz

      Можно. Но вопрос в том, нужно ли Вам это. Если появилась такая цель — переходите на что-нибудь помощнее (C, C++, какие-нибудь скриптовые языки). Pascal — язык для обучения, и никакие грандиозные вещи он не потянет.

  • Омар Шайхалиев

    Легко ли сделать на паскале бота для сбора бонусов.

  • Юрий

    У меня при компиляции const выдаёт ошибку: «Встречно «const» а ожидалось оператор».Что делать?