Для чего нужна программа компилятор

Если вы программист, то наверняка слышали слово “компилятор”. Но знаете ли вы, что это такое на самом деле? Вы когда-нибудь задумывались, что происходит под капотом, когда вы запускаете команду javac(если у вас код на Java)? Вы когда-нибудь хотели создать свой собственный язык программирования? — и просто заводили бесполезный репозиторий GitHub, где все равно есть только один readme.md , потому что вы даже не знаете, с чего начать. Я думаю, что начинать стоит с этого: узнать больше о компиляторе .

Итак, в этой статье мы разберёмся, что представляет собой компилятор. Если вы опытный программист, который знает про компилятор каждую мелочь, то извините, эта статья не для вас. Но если вы — тот самый парень из абзаца выше, то вперёд за мной, в кроличью нору. На протяжении статьи я буду обсуждать следующие подтемы:

  • введение в компилятор;
  • типы компиляторов;
  • архитектура компилятора.

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

Что такое компилятор и интерпретатор ? Их основные отличия.

Вступление

Компилятор — это не что иное, как переводчик исходного кода.

Задача компилятора — перевести исходный код с одного языка на другой. Это означает, что если вы скормите компилятору исходный код Java , то сможете получить исходный код Python (не самый лучший пример, просто для понимания сути. На самом деле вы получите байт-код Java , который можно запустить на JVM). Для выполнения этого процесса у компилятора есть несколько взаимосвязанных компонентов.

Типы компиляторов

Кто такие компиляторы?

— Привет, Амиго. Меня зовут профессор Ханс Нудлс. Я – глава Ученого совета «Galactic Rush», а также курирую проект по обучению тебя программированию на Java.

— День добрый, профессор Нудлс.

— Я хочу рассказать тебе, почему Java – это очень крутой язык программирования.

— Ты не раз еще услышишь, что неоспоримое преимущество Java над другими языками – это мультиплатформенность. Что же это такое и с чем его едят? Но начну немного издалека.

— Дело в том, что компьютер умеет исполнять только простейшие числовые команды. Для собак есть команды «Рядом», «Лапу» и другие, слыша которую собака что-то делает важное.

У компьютера роль таких команд выполняют числа: каждая команда закодирована некоторым числом – кодом (их еще называют машинным кодом).

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

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

Читайте также:
Web framework что это за программа

Как работает язык программирования(Компилятор)? Основы программирования.

    Программа на языке C++

Компилятор

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

— Т.е если я написал программу и скомпилировал ее для Android, то она не будет работать, если я попробую запустить ее под Windows?

— Но у Java гораздо более инновационный подход.

    Программа на языке Java

Java‑компилятор

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

— А кто же компилирует программу в машинный код при ее запуске?

— Есть специальная программа под названием JVM (Java Virtual Machine) – Виртуальная Машина Java. Именно ее запускают первой, когда нужно запустить программу, состоящую из байт-кода. А уже JVM перед выполнением нужной программы компилирует ту в машинный код.

— Как интересно. А зачем понадобилось так делать?

— Это очень мощный ход. И одна из причин тотального доминирования Java.

— Благодаря такому подходу программы, написанные на Java, могут выполняться практически на любом устройстве – компьютеры, телефоны, банкоматы, тостеры, банковские карточки(!).

— Преимуществ такого подхода очень много. Именно поэтому все программы на Android тоже пишутся на Java. А благодаря развитию мобильного сектора, Java занимает доминирующее положение в следующих отраслях программирования:

1) Enterprise : тяжелые серверные приложения для банков, корпораций, инвестфондов и т.д.

2) Mobile : мобильная разработка (телефоны, планшеты), благодаря Android.

3) Web : лидирует PHP, но и Java держит солидный кусок рынка.

4) Big Data : распределенные вычисления в кластерах из тысяч серверов.

5) Smart Devices : программы для умного дома, электроники, холодильников с выходом в интернет.

— Java – это не просто язык, это целая экосистема: миллионы готовых модулей, которые ты можешь использовать в своей программе. Тысячи сообществ и форумов в интернете, где можно попросить помощи или совета.

— Чем больше ты будешь программировать на Java, тем больше будешь находить ответов на вопрос

— «Почему именно Java?». На этом на сегодня все.

— Спасибо, профессор. Очень интересная и вдохновляющая лекция.

Источник: javarush.com

Что это — компилятор, и как он работает

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

Читайте также:
Для чего программа эверест

Язык для операционной системы

Для начала стоит абстрагироваться, ведь программирование – это не только вбивание определенных ключей-слов в машину, это еще и тщательно продуманные действия, связанные с компонентами системы. Изначально был двоичный код, потом программисты создали полумашинный язык программирования – ассемблер, но для чего?

Представьте себе, что вам надо считать на калькуляторе программиста каждый бит, потом правильно его связывать и многое другое. В ассемблере все стало чуточку проще, но все еще очень и очень непросто, если сравнивать с современными языками программирования, например, С++, который называют одним из сложнейших, но про него речь пойдет чуть позже.

установленный компилятор

В языке ассемблер все осуществляется благодаря регистрам процессора: деление, умножение, перемещение значения из точки А в точку Б и т. д. Основная его проблема, что он все еще является полумашинным, но все равно поддается прочтению человеку, в отличии от хаотично раскиданных битов. Еще одним минусом было ограниченное количество этих самых регистров.

В 80-х годах решили придумать язык программирования, благодаря которому можно будет легко и просто написать операционную систему. Так появился С и компилятор С GCC от компании GNU. Если вы пользуетесь Linux, то обязательно должны были видеть продукты данной компании. Кстати, ассемблер используется и поныне, ведь некоторые компиляторы создают объектные файлы с двоичным кодом, а другие исполнительные – с кодом на ассемблере. Все зависит от платформы разработчика.

Современный компилятор имеет следующие программы в себе:

  1. Дебагер – программа, которая отправляет сообщения об ошибке от линковщика, препроцессора, интерпретатора.
  2. Препроцессор – это программа, главной задачей которой является поиск специальных меток, начинающихся со знака #, и выполнение определенного рода команд. Например, добавления сторонней библиотеки для компиляции проекта.
  3. Интерпретатор – программа, которая переводит наш более-менее понятный язык программирования в двоичный код или ассемблер.
  4. Линковщик – программа, благодаря которой недостающие файлы автоматически подключаются.

Также существует 2 типа сборки проекта компилятором: динамическая и статическая. В первой добавляются лишь нужные проекту файлы, несмотря на среду разработки, а во втором случае — все в кучу (подключенные, конечно). Итак, из этого уже можно сказать, что компилятор – это целый список программ для сбора и обработки информации в понятный и логичный для компьютера вид. Дальше мы рассмотрим, с чего все начиналось.

Первые простейшие компиляторы

Может, вы удивитесь, но впервые объект нашей статьи (тогда его еще называли транслятор) появился в далеком 1954 году в Институте, специализирующемся на прикладной математике. Он включал в себя не настолько большой комплекс программ, как сейчас, но все равно был прорывом в науке на то время. Там не было дебагера, поэтому людям приходилось все делать буквально руками, причем используя при этом стандартную и дискретную математику, чтобы узнать, правильный ли результат получила электронно-вычислительная машина.

простая программа на с++

Возможна ли сборка без нового языка?

Если вы достаточно толковый программист, то вполне сможете выполнить эту задачу. Правда, для этого понадобится немало времени и сил. Кстати, раньше даже была профессия такая – программист-линковщик. Это только в новых языках программирования все автоматизировано, а раньше людям приходилось связывать куски кода Make файлами. Между прочим, некоторые проекты на Linux и сейчас можно собрать с помощью этих самых Make-файлов, нужно лишь указать их зависимости вручную.

Читайте также:
Nvidia программа что это

среда разработки

После сбора кода линковщик отдавал работу уже компьютеру на обработку, где в итоге получал готовый бинарный код.

Как видите, компилятор – это не только программа, а еще и усилия множества людей. А они, как утверждал Генри Форд, пытаются автоматизировать каждый процесс.

Лучший компилятор Windows

Итак, многие из читателей знают, что существует множество мертвых языков, но еще больше живых, т. е. тех, которые хотя бы раз в год обновляют свою стандартную библиотеку. Как мы уже говорили, в 1980 году был создан С — это был прорыв. Многие наши отцы до сих пор обожают данный язык, но что с ним теперь?

Он живет и процветает в новом теле, если так можно сказать. Его наследником по праву является С++, хоть и его создателя воспрещают писать на нем код, похожий на С, многие программисты игнорирует это и делают, но почему допускается такое грубое нарушение правил?

обновленная среда разработки

  • Во-первых, он взял солидную долю стандартных библиотек от С, и новые компиляторы G++ способны компилировать код С, что уже само по себе указывает на их схожесть.
  • Во-вторых, С++ был создан, чтоб заместить С, и итоги этого мы видим сейчас. К слову, программа компилятор G++ не «ругается» до тех пор, пока не будет использован хотя бы один класс – в этом и есть основное отличие двух языков. Можно назвать G++ лучшим компилятором, не зря ведь благодаря ему пишут мобильные приложения, операционную систему Windows и т. д.

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

Ваш путь будет тернист – это стоит знать прежде всего. Для начала работы с языком, например, если это С, вы обязательно должны будете ознакомиться с компилятором C. А если с ним не подружиться и не понять его логику, то ваши проекты один за одним будут лагать и вылетать.

строки кода

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

В заключение

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

Источник: www.syl.ru

Рейтинг
( Пока оценок нет )
Загрузка ...
EFT-Soft.ru