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


Drawing 20

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

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

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

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

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

Protsess interpretatsii 510x141

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

Примеры интерпретируемых языков: 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 файл.

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

Сохраненное изображение 2014 2 5 21 3 44.424 510x377
Подключаем внешнюю библиотеку crt и используем встроенную в нее функцию readkey.

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

Сохраненное изображение 2014 2 5 21 2 32.800 510x256

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

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

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

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

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

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

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

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

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

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

  7. Здравствуйте! Подскажите, пожалуйста, я сделала все, как в уроке, но нигде не могу найти файл .exe.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *