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

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

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

Например, в последние годы огромное количество программистов используют платформу .NET , которая включает в себя ASP.NET , C # , JavaScript/JQuery/AngularJS . Все эти языки программирования являются частью инструментария Windows . И хотя .NET стал доступен для Linux , пока он не используется достаточно широко для этой ОС . В мире Linux используют Java , PHP , Python , Ruby On Rails и C .

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

Выше приведен простой пример программы, написанной на языке программирования C . Это пример компилируемого языка программирования. Чтобы выполнить код, его необходимо запустить с помощью компилятора. Для этого я использую следующую команду Linux :

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

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

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

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

Читайте также:  Build fire разработка приложения

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

Ничто не идеально. Если есть программа на компилируемом языке С , скомпилированная на компьютере, работающем Linux , я не могу копировать эту скомпилированную программу на Windows и рассчитывать, что исполняемый файл будет выполнен.

Чтобы запустить ту же программу на Windows , нужно будет снова скомпилировать ее, используя компилятор C на компьютере под управлением Windows .

Что такое интерпретируемый язык?

Приведенный выше код представляет собой программу на языке python , которая отображает слова « hello world ».

Для выполнения кода нужно его компилировать сначала. Вместо этого я могу просто запустить следующую команду:

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

Интерпретатор python принимает удобный для восприятия человеком код и превращает его в промежуточное « состояние », прежде чем сформировать то, что может прочитать ПК. Все это происходит за кадром, и пользователь увидит только слова « hello world ».

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

Хотя это может показаться недостатком, существует ряд причин, по которым интерпретируемые языки полезны. Одна из них состоит в том, что гораздо проще выполнить программу, написанную на Python , в Linux , Windows и OSX . Просто убедитесь, что Python установлен на компьютере, на котором вы хотите запустить скрипт.

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

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

Так какой же язык использовать?

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

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

В общем, мой совет заключается в том, что если вы используете Linux , вам следует изучать Java , Python или C , а если вы используете Windows , изучаете .NET и AngularJS .

Дайте знать, что вы думаете по этой теме материала в комментариях. За комментарии, лайки, подписки, отклики, дизлайки низкий вам поклон!

Источник

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

img

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

Interpreted vs Compiled

В компилируемом языке целевая машина переводит программу самостоятельно. В интерпретируемом языке исходный код не переводится самой машиной; его читает и выполняет другая программа (интерпретатор).

Подробное объяснение

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

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

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

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

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

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

Примеры истинных компилируемых языков: C, C++, Erlang, Haskell, Rust и Go.

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

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

Интерпретируемые языки гораздо медленнее компилируемых. Но с появлением JIT-компиляции (динамической компиляции) эта разница начинает сокращаться.

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

Небольшое пояснение

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

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

Плюсы и минусы

Плюсы компилируемых языков

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

Минусы компилируемых языков

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

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

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

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

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

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

Источник

ITmentor | Сайт про IT

  • Новости
  • Статьи
  • Материалы
  • Календарь
  • Предложить контент
  • О проекте
  • Не выбрано
  • 2016
  • 2017
  • 2018
  • 2019
  • 2020
  • 2021
  • 2022
  • 2023
  • Не выбрано
  • Январь
  • Февраль
  • Март
  • Апрель
  • Май
  • Июнь
  • Июль
  • Август
  • Сентябрь
  • Октябрь
  • Ноябрь
  • Декабрь
  • Бизнес иммиграция
  • Законодательство
  • Истории успеха / IT Style
  • Маркетинг / Свой бизнес
  • Стартап
  • Образование / Работа в ИТ
  • Языки программирования
  • Mobile application
  • Gamedev
  • IT Belarus
  • Технологии

Статьи

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

Желающие освоить язык программирования сталкиваются с такими понятиями, как компилятор и интерпретатор. Компиляция и интерпретация — это основа работы языков программирования.

kompiliruemye-i-interpretiruemye-yazyki-programmirovaniya

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

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

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

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

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

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

Примерами компилируемых языков являются Pascal, C, C++, Erlang, Haskell, Rust, Go, Ada.

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

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

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

Примерами интерпретируемых языков являются PHP, Perl, Ruby, Python, JavaScript. К интерпретируемым языкам также можно отнести все скриптовые языки.

Многие языки в наши дни имеют как компилируемые, так и интерпретируемые реализации, сводя разницу между ними к минимуму. Некоторые языки, например, Java и C#, находятся между компилируемыми и интерпретируемыми. А именно, программа компилируется не в машинный язык, а в машинно-независимый код низкого уровня, байт-код. Далее байт-код выполняется виртуальной машиной. Для выполнения байт-кода обычно используется интерпретация, хотя отдельные его части для ускорения работы программы могут быть транслированы в машинный код непосредственно во время выполнения программы по технологии компиляции «на лету». Для Java байт-код исполняется виртуальной машиной Java (Java Virtual Machine, JVM), для C# — Common Language Runtime.

Перепечатка статьи допускается только при указании активной ссылки на сайт itmentor.by

Хочешь получать новые статьи первым? Вступай в сообщества ITmentor Вконтакте и Facebook

Опубликован: 06-01-2017 47678 Поделиться:

Источник

Оцените статью