Получите бесплатно 4 курса для лёгкого старта работы в IT
Получить бесплатно
Главная БлогКомпилируемые языки: список, плюсы и минусы
Компилируемые языки

Компилируемые языки: список, плюсы и минусы

Дата публикации: 21.11.2021
15 864
Время чтения: 14 минут
Дата обновления: 18.09.2023
В статье рассказывается:
В статье рассказывается:  
  1. Что значит компилируемый язык программирования
  2. Преимущества и недостатки компилируемых языков
  3. На чем написан компилятор
  4. Какие бывают компиляторы
  5. Ошибки, определяемые компилятором
  6. Примеры интерпретируемых языков
  7. Отличия компилируемых и интерпретируемых языков
  8. Компиляция + интерпретация = байткод-языки
  9. Простые выводы о языках программирования
  10. Какой язык программирования выбрать
  11. Пройди тест и узнай, какая сфера тебе подходит:
    айти, дизайн или маркетинг.
    Бесплатно от Geekbrains

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

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

Что значит компилируемый язык программирования

Любой язык общения представляет собой текст, составленный из различных символов, которые известны и понятны собеседникам. Язык программирования тоже состоит из символов, чья последовательность подчиняется определенным правилам и называется кодом. С помощью кода происходит взаимодействие «человек–компьютер».

Но такое общение нельзя назвать прямым: программист вводит текст (код), который преобразуются посредством определенной программы в символы. Именно такой преобразованный текст компьютер будет воспринимать как команды микропроцессора. А программа, ответственная за трансформацию кода, называется компилятором.

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


Только после этого ее можно запускать на выполнение в виде исполняемого модуля с определенным расширением (например, для ОС Windows файл будет иметь .exe расширение).

Компилируемый язык программирования
Компилируемый язык программирования

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

Преимущества и недостатки компилируемых языков

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

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

В качестве примеров компилируемых языков можно привести:

  • процедурный язык программирования Pascal;
  • высокоуровневый язык Go;
  • функциональный язык Erlang;
  • язык программирования Ada;
  • язык функционального программирования Haskell;
  • мультипарадигмальный Rust;
  • объектно-ориентированный C;
  • статически типизированный C++.
Узнай, какие ИТ - профессии
входят в ТОП-30 с доходом
от 210 000 ₽/мес
Павел Симонов - исполнительный директор Geekbrains
Павел Симонов
Исполнительный директор Geekbrains
Команда GeekBrains совместно с международными специалистами по развитию карьеры подготовили материалы, которые помогут вам начать путь к профессии мечты.
Подборка содержит только самые востребованные и высокооплачиваемые специальности и направления в IT-сфере. 86% наших учеников с помощью данных материалов определились с карьерной целью на ближайшее будущее!

Скачивайте и используйте уже сегодня:

Павел Симонов - исполнительный директор Geekbrains
Павел Симонов
Исполнительный директор Geekbrains
pdf иконка

Топ-30 самых востребованных и высокооплачиваемых профессий 2023

Поможет разобраться в актуальной ситуации на рынке труда

doc иконка

Подборка 50+ бесплатных нейросетей для упрощения работы и увеличения заработка

Только проверенные нейросети с доступом из России и свободным использованием

pdf иконка

ТОП-100 площадок для поиска работы от GeekBrains

Список проверенных ресурсов реальных вакансий с доходом от 210 000 ₽

pdf 3,7mb
doc 1,7mb
Уже скачали 31988 pdf иконка

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

На чем написан компилятор

В 50-е годы прошлого века Джон Бэкус, будучи сотрудником корпорации IBM, вместе с командой разработчиков создал Fortran (FORmula TRANslator (переводчик формул)) – первый язык программирования высокого уровня, позволяющий писать программы понятными словами. Кроме языка был создан и компилятор, который позволял трансформировать на Fortran другие программы, включая улучшенные версии самого Fortran.

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

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

Какие бывают компиляторы

Любой из компилируемых языков нуждается в компиляторе. Некоторые из них способны работать с разными языками. Тем не менее специалист, занимающийся программированием, всегда должен принимать во внимание характеристики того компьютера, на котором будет выполняться программа.

Это связано с тем, что существует достаточно много моделей и видов процессоров, поэтому код, понятный одному процессору, будет не читаем для другого. Аналогично обстоят дела и с операционными системами: программа может работать на Linux, но конфликтовать с Windows. Поэтому необходимо применять тот компилятор, который будет совместим с определенными ОС и процессором.

Какие бывают компиляторы
Какие бывают компиляторы

Для программы, чье выполнение планируется на нескольких ОС, понадобится кросс-компилятор, то есть такая компилирующая программа, которая модифицирует высокоуниверсальный код. Например, набор компиляторов GCC совместим с Java компилируемым языком, а также с C++, Ada, Fortran, Go, Objective-C, плюс поддерживается разными процессорами.

Компьютер можно снабдить не одним компилятором, а несколькими. В этих условиях выбор компилятора осуществляет интегрированная среда разработки, в которой пишется программа. Например, MS Visual Studio совместим с компиляторами для ОС Linux, Windows, Android. При выборе формата проекта Visual Studio самостоятельно идентифицирует ОС и процессор ПК, подбирая максимально соответствующий компилятор.

Ошибки, определяемые компилятором

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

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

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

Примеры интерпретируемых языков

Интерпретируемым языкам не требуется машинный код, чтобы исполнить программу, так как она строчка за строчкой выполняется при помощи интерпретаторов. До прихода JIT (Just-in-Time) компилятора в сферу программирования на процесс интерпретации затрачивалось колоссальное количество времени. Но в настоящее время разница между компилируемыми и интерпретированными языками программирования по этому параметру не существенна.

Дарим скидку от 60%
на обучение «Разработчик» до 24 ноября
Уже через 9 месяцев сможете устроиться на работу с доходом от 150 000 рублей
Забронировать скидку

Примеры таких языков:

  • мультипарадигменный язык JavaScript;
  • высокоуровневый язык Ruby;
  • высокоуровневый язык Perl;
  • скриптовый язык PHP;
  • скриптовый язык Python.

Интерпретируемые языки позволили упростить ряд аспектов программирования:

  • платформо-независимость;
  • механизм рефлексии;
  • прием динамической типизации;
  • меньший объем исполняемых файлов;
  • динамические области видимости.

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

Отличия компилируемых и интерпретируемых языков

Разница между этими двумя языками заключается в следующем:

Компилируемый язык:

  • компилирует программу целиком после ее ввода, преобразуя в объектный код, который хранится в файле;
  • существуют этап генерации промежуточного объектного кода (например, С, С++);
  • скомпилированные программы работают с более высокой скоростью, так как компиляция происходит до исполнения;
  • потребность в памяти по большей части обусловлена созданием объектного кода;
  • информация об ошибках появляется после процесса компиляции всей программы;
  • вид цепочки: исходный код → компилятор → машинный код → вывод.
Только до 28.11
Скачай подборку материалов, чтобы гарантированно найти работу в IT за 14 дней
Список документов:
ТОП-100 площадок для поиска работы от GeekBrains
20 профессий 2023 года, с доходом от 150 000 рублей
Чек-лист «Как успешно пройти собеседование»
Чтобы получить файл, укажите e-mail:
Введите e-mail, чтобы получить доступ к документам
Подтвердите, что вы не робот,
указав номер телефона:
Введите телефон, чтобы получить доступ к документам
Уже скачали 52300

Интерпретируемый язык:

  • программа интерпретируется построчно, то есть принимает одну инструкцию в качестве одного ввода и выполняет ее;
  • не генерирует промежуточный объектный код (например, Perl, Python, Matlab);
  • медленная скорость работы, так как компиляция и выполнение происходят одновременно;
  • требуются меньшие объемы памяти;
  • отображение ошибок происходит для каждой отдельной инструкции;
  • вид цепочки: исходный код → интерпретатор → вывод.

Компиляция + интерпретация = байткод-языки

Языки, использующие для исполнения кода и компиляцию, и интерпретацию, называют байткод-языками. Наиболее характерными примерами такого языка будут фреймворк.NET и Java.

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

Компиляция + интерпретация = байткод-языки
Компиляция + интерпретация = байткод-языки

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

Привлекает мир кодирования и создания программ? На курсе программиста с нуля до Junior вы освоите основы, познакомитесь с языками и инструментами разработки, и станете готовы к созданию своих первых проектов в IT-индустрии.

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

Простые выводы о языках программирования

Вышеуказанные языковые типы можно ассоциировать простыми словами:

  1. Компилируемые языки – это готовая пища. Не надо тратить время на приготовление, но такая еда не будет долго храниться. Программы, написанные с помощью этих языков, зависят от оборудования и операционной системы.
  2. Интерпретируемые языки – это замороженные сырые продукты. Хранить их можно долго, но требуется много времени на готовку. Написанные интерпретируемым языком программы не зависят от платформы, главное, чтобы был интерпретатор, поэтому они мобильны и безопасны. Однако процесс интерпретации нуждается в запасе времени, что не может не сказаться на производительности.
  3. Комбинированные языки – это полуфабрикаты: готовятся быстро и хранятся очень долго, правда теряются вкусовые качества. Программы, написанные таким языком, имеют ограничения функционала, обусловленные интерпретатором. То есть. у такой программы будет меньше возможностей, чем у той, которая написана на компилируемом языке.

Какой язык программирования выбрать

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

Некоторые языки теряют свою актуальность, например, ActionScrip, COBOL и другие. Но есть и такие, которые считались безнадежно устаревшими, но все же вернули себе былую популярность, например, JavaScript.

Однозначно можно сказать, что при использовании ОС Linux нужно изучать Python, С или Java. А если в приоритете Windows, то берите на вооружение AngularJS и .NET.

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

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

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

Оцените статью:
3.54
Добавить комментарий

Сортировать:
По дате публикации
По рейтингу
  1. Аноним

    Объектно-ореинтированный C ???

    1
    1
    Ответить
  2. Аноним

    что-то давно я классов на C не писал…

    0
    0
    Ответить
Читайте также
prev
next
Бесплатные вебинары:
prev
next
Как работает дизайн-студия на примере одного кейса 

Как работает дизайн-студия на примере одного кейса 

Узнать подробнее
Инновационные подходы к обучению информационным технологиям

Инновационные подходы к обучению информационным технологиям

Узнать подробнее
Как стать Python-разработчиком

Как стать Python-разработчиком

Узнать подробнее
Что нужно знать разработчику

Что нужно знать разработчику

Узнать подробнее
Кто такой тестировщик и как им стать

Кто такой тестировщик и как им стать

Узнать подробнее
Чем занимается программист и как им стать

Чем занимается программист и как им стать

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

Как искусственный интеллект помогает и мешает задачам кибербезопасности

Узнать подробнее
Бесплатный вебинар про внедрение искусственного интеллекта

Бесплатный вебинар про внедрение искусственного интеллекта

Узнать подробнее
Какие есть профессии в ИТ

Какие есть профессии в ИТ

Узнать подробнее
Смените профессию,
получите новые навыки,
запустите карьеру
Поможем подобрать обучение:
Забрать подарок

Получите подробную стратегию для новичков на 2023 год, как с нуля выйти на доход 200 000 ₽ за 7 месяцев

Подарки от Geekbrains из закрытой базы:
Осталось 17 мест

Поздравляем!
Вы выиграли 4 курса по IT-профессиям.
Дождитесь звонка нашего менеджера для уточнения деталей

Иван Степанин
Иван Степанин печатает ...