До появления языков программирования Java и C # компьютерные программы только компилировались или интерпретировались. Такие языки, как ассемблер, C, C ++, Fortran, Pascal, почти всегда компилировались в машинный код. Такие языки, как Basic, VbScript и JavaScript, обычно интерпретируются.
Так в чем же разница между скомпилированной и интерпретированной программами?
составление
Для написания программы необходимо выполнить следующие действия:
- Редактировать программу
- Скомпилируйте программу в файлы машинного кода.
- Свяжите файлы машинного кода в работающую программу (также известную как exe).
- Отладка или запуск программы
Для некоторых языков, таких как Turbo Pascal и Delphi, шаги 2 и 3 объединены.
Файлы машинного кода — это автономные модули машинного кода, которые требуют связывания вместе для создания окончательной программы. Причиной наличия отдельных файлов машинного кода является эффективность; компиляторы должны только перекомпилировать исходный код, который изменился. Файлы машинного кода из неизмененных модулей используются повторно. Это известно как создание приложения. Если вы хотите перекомпилировать и пересобрать весь исходный код, это называется сборкой.
Отличие интерпретируемого языка программирования от компилируемого для самых маленьких и нубов.
Связывание — это технически сложный процесс, когда все вызовы функций между различными модулями связаны друг с другом, ячейки памяти выделяются для переменных, а весь код размещается в памяти, а затем записывается на диск как законченная программа.
Это часто более медленный шаг, чем компиляция, поскольку все файлы машинного кода должны быть считаны в память и связаны друг с другом.
толкования
Шаги для запуска программы через переводчик
- Редактировать программу
- Отладка или запуск программы
Это гораздо более быстрый процесс, и он помогает начинающим программистам редактировать и тестировать свой код быстрее, чем с помощью компилятора.
Недостатком является то, что интерпретируемые программы работают намного медленнее, чем скомпилированные программы. На 5-10 раз медленнее, поскольку каждая строка кода должна быть перечитана, а затем повторно обработана.
Введите Java и C #
Оба эти языка полукомпилированы. Они генерируют промежуточный код, который оптимизирован для интерпретации.Этот промежуточный язык не зависит от базового оборудования, и это облегчает портирование программ, написанных на одном из других процессоров, при условии, что для этого оборудования был написан интерпретатор.
Java при компиляции создает байт-код, который интерпретируется во время выполнения виртуальной машиной Java (JVM). Многие JVM используют компилятор Just-In-Time, который преобразует байт-код в машинный код, а затем запускает этот код для увеличения скорости интерпретации. Фактически исходный код Java компилируется в два этапа.
C # скомпилирован в Common Intermediate Language (CIL, который ранее был известен как Microsoft Intermediate Language MSIL). Он запускается в Common Language Runtime (CLR), части.NET Framework, среды, которая предоставляет службы поддержки, такие как сборка мусора и Just -Временная компиляция.
Что такое компилятор и интерпретатор ? Их основные отличия.
И Java, и C # используют методы ускорения, поэтому эффективная скорость почти такая же, как у скомпилированного языка.
Если приложение тратит много времени на ввод и вывод данных, таких как чтение файлов на диске или выполнение запросов к базе данных, разница в скорости едва заметна.
Что это значит для меня?
Если у вас нет особой потребности в скорости и вы должны увеличить частоту кадров на пару кадров в секунду, вы можете забыть о скорости. Любой из C, C ++ или C # обеспечит достаточную скорость для игр, компиляторов и операционных систем.
До появления языков программирования Java и C # компьютерные программы только компилировались или интерпретировались. Такие языки, как ассемблер, C, C ++, Fortran, Pascal, почти всегда компилировались в машинный код. Такие языки, как Basic, VbScript и JavaScript, обычно интерпретируются.
Так в чем же разница между скомпилированной и интерпретированной программами?
составление
Для написания программы необходимо выполнить следующие действия:
- Редактировать программу
- Скомпилируйте программу в файлы машинного кода.
- Свяжите файлы машинного кода в работающую программу (также известную как exe).
- Отладка или запуск программы
Для некоторых языков, таких как Turbo Pascal и Delphi, шаги 2 и 3 объединены.
Файлы машинного кода — это автономные модули машинного кода, которые требуют связывания вместе для создания окончательной программы. Причиной наличия отдельных файлов машинного кода является эффективность; компиляторы должны только перекомпилировать исходный код, который изменился. Файлы машинного кода из неизмененных модулей используются повторно. Это известно как создание приложения. Если вы хотите перекомпилировать и пересобрать весь исходный код, это называется сборкой.
Связывание — это технически сложный процесс, когда все вызовы функций между различными модулями связаны друг с другом, ячейки памяти выделяются для переменных, а весь код размещается в памяти, а затем записывается на диск как законченная программа.
Это часто более медленный шаг, чем компиляция, поскольку все файлы машинного кода должны быть считаны в память и связаны друг с другом.
толкования
Шаги для запуска программы через переводчик
- Редактировать программу
- Отладка или запуск программы
Это гораздо более быстрый процесс, и он помогает начинающим программистам редактировать и тестировать свой код быстрее, чем с помощью компилятора.
Недостатком является то, что интерпретируемые программы работают намного медленнее, чем скомпилированные программы. На 5-10 раз медленнее, поскольку каждая строка кода должна быть перечитана, а затем повторно обработана.
Введите Java и C #
Оба эти языка полукомпилированы. Они генерируют промежуточный код, который оптимизирован для интерпретации.Этот промежуточный язык не зависит от базового оборудования, и это облегчает портирование программ, написанных на одном из других процессоров, при условии, что для этого оборудования был написан интерпретатор.
Java при компиляции создает байт-код, который интерпретируется во время выполнения виртуальной машиной Java (JVM). Многие JVM используют компилятор Just-In-Time, который преобразует байт-код в машинный код, а затем запускает этот код для увеличения скорости интерпретации. Фактически исходный код Java компилируется в два этапа.
C # скомпилирован в Common Intermediate Language (CIL, который ранее был известен как Microsoft Intermediate Language MSIL). Он запускается в Common Language Runtime (CLR), части.NET Framework, среды, которая предоставляет службы поддержки, такие как сборка мусора и Just -Временная компиляция.
И Java, и C # используют методы ускорения, поэтому эффективная скорость почти такая же, как у скомпилированного языка.
Если приложение тратит много времени на ввод и вывод данных, таких как чтение файлов на диске или выполнение запросов к базе данных, разница в скорости едва заметна.
Что это значит для меня?
Если у вас нет особой потребности в скорости и вы должны увеличить частоту кадров на пару кадров в секунду, вы можете забыть о скорости. Любой из C, C ++ или C # обеспечит достаточную скорость для игр, компиляторов и операционных систем.
Источник: ru.lifeunoreg.com
Чем отличаются компилируемые и интерпретируемые языки программирования?
Компилировать или нет? Ответить на этот вопрос почти невозможно. Если вы хотите научиться программировать в профессиональных целях, тогда хорошей идеей будет присмотреться к тому, что используют другие.
Например, в последние годы огромное количество программистов используют платформу .NET , которая включает в себя ASP.NET , C # , JavaScript/JQuery/AngularJS . Все эти языки программирования являются частью инструментария Windows . И хотя .NET стал доступен для Linux , пока он не используется достаточно широко для этой ОС . В мире Linux используют Java , PHP , Python , Ruby On Rails и C .
Что такое компилируемый язык программирования?
#include int main()
Выше приведен простой пример программы, написанной на языке программирования C . Это пример компилируемого языка программирования. Чтобы выполнить код, его необходимо запустить с помощью компилятора. Для этого я использую следующую команду Linux :
gcc helloworld.c -o hello
Приведенная выше команда превращает код из формата, удобного для восприятия человеком, в машинный код, который может выполнить компьютер. gcc сам является скомпилированной программой ( компилятор gnu c ).
Скомпилированную программу можно выполнить, просто запустив имя программы следующим образом:
./hello
Преимущества использования компилятора заключаются в том, что он обычно работает быстрее, чем интерпретируемый код, так как ему не нужно обрабатывать код « на лету » во время работы приложения.
Кроме этого, скомпилированная программа будет проверена на наличие ошибок во время компиляции. Если есть команды, которые не понравились компилятору, то о них будет сообщено. Это позволяет исправлять все ошибки перед запуском программы.
Но то, что программа скомпилирована успешно, еще не означает, что она будет работать так, как вы ожидаете. Поэтому все равно нужно протестировать приложение.
Ничто не идеально. Если есть программа на компилируемом языке С , скомпилированная на компьютере, работающем Linux , я не могу копировать эту скомпилированную программу на Windows и рассчитывать, что исполняемый файл будет выполнен.
Чтобы запустить ту же программу на Windows , нужно будет снова скомпилировать ее, используя компилятор C на компьютере под управлением Windows .
Что такое интерпретируемый язык?
print («hello world»)
Приведенный выше код представляет собой программу на языке python , которая отображает слова « hello world ».
Для выполнения кода нужно его компилировать сначала. Вместо этого я могу просто запустить следующую команду:
python helloworld.py
Приведенный выше код не нужно компилировать. Но необходимо, чтобы python был установлен на компьютере, на котором будет работать скрипт.
Интерпретатор python принимает удобный для восприятия человеком код и превращает его в промежуточное « состояние », прежде чем сформировать то, что может прочитать ПК. Все это происходит за кадром, и пользователь увидит только слова « hello world ».
Принято считать, что интерпретируемый код будет работать медленнее, чем скомпилированный код, потому что он должен проходить этап преобразования кода в отличие от скомпилированный кода, который просто выполняется.
Хотя это может показаться недостатком, существует ряд причин, по которым интерпретируемые языки полезны. Одна из них состоит в том, что гораздо проще выполнить программу, написанную на Python , в Linux , Windows и OSX . Просто убедитесь, что Python установлен на компьютере, на котором вы хотите запустить скрипт.
Еще одно преимущество заключается в том, что код всегда доступен для чтения, и его можно легко изменить. В случае со скомпилированным кодом нужно найти, где находится код, изменить его, скомпилировать и заново запустить программу.
В случае использования интерпретируемого кода вы открываете программу, меняете ее, и она готова к работе.
Так какой же язык использовать?
Сомневаюсь, что выбор языка программирования для изучения будет определен тем, что вы узнали, какие языки являются компилируемыми.
Несмотря на то, что некоторые языки явно умирают, такие как COBOL , Visual Basic и ActionScript , есть и другие, которые были на грани вымирания, но резко вернулись на прежнее положение, как например, JavaScript .
В общем, мой совет заключается в том, что если вы используете Linux , вам следует изучать Java , Python или C , а если вы используете Windows , изучаете .NET и AngularJS .
Дайте знать, что вы думаете по этой теме материала в комментариях. За комментарии, лайки, подписки, отклики, дизлайки низкий вам поклон!
Источник: www.internet-technologies.ru
Скомпилированные программы работают быстрее чем интерпретируемые
Существует несколько языков программирования, каждый со своими собственными причудами и функциями. Из-за различных вариантов дизайна и вариантов использования некоторые из них быстрее или медленнее, чем другие. Проще говоря, именно эти различия вызывают эти изменения производительности.
Что такое язык программирования?
Независимо от того, как выглядят языки программирования, они все делают одно и тоже: заставляют компьютер что-то делать. Все строки кода в конечном итоге переводятся в машинный код. Можно сказать, что все языки программирования, прошедшие машинный код, предназначены для упрощения создания программного обеспечения.
Эти языки можно классифицировать, глядя на уровень абстракции, который они выполняют для программистов. В основном, это то, насколько заботится сам язык о вещах, которые на более низком уровне будут обрабатываться вручную. Это, как правило, делает языки более высокого уровня намного проще для программирования.
Примером этого является управление памятью. Для некоторых языков с меньшей абстракцией программист должен вручную указать, сколько оперативной памяти им нужно для задачи, а затем отпустить ее, как только это будет сделано. Если они этого не сделают, или если что-то происходит, что они не учитывают, использование памяти может расти и расти. Языки более высокого уровня, такие как Java, делают это автоматически.
Цена автоматизации
Тем не менее, есть некоторые недостатки в использовании языков более высокого уровня. А именно, скорость. Иногда, чем больше вещей выводится из-под контроля программиста, тем менее эффективной может быть программа.
Например, языки с автоматическим управлением памятью (обычно называемые сборкой мусора) могут быть медленнее, чем те, которые не реализуют это. Это связано с тем, что программе требуется время, чтобы пройти через себя и очистить память через определенные промежутки времени.
Компиляция
Как правило, программы, написанные на таких языках, как C и C ++, работают быстрее, чем программы, написанные на большинстве других языков. Большинство операционных систем написаны с их использованием, а также некоторого ассемблерного кода еще более низкого уровня. Один из основных факторов этого исходит из их компиляции (по сравнению с интерпретацией).
Это означает, что перед запуском источник программы сначала переходит на более низкий уровень: машинный код. Полученные продукты называются двоичными файлами (например, DLL-файлами), которые связаны вместе с соответствующими файлами, чтобы заставить их работать, создавая то, что называется исполняемым файлом.
Однако одним из недостатков этого является время, необходимое для компиляции таких программ. Большие программы, такие как Mozilla Firefox могут занять около полутора часов или около того. К счастью, большинство программ в наши дни делают этот процесс заранее, что упрощает установку и использование.
Поскольку конечный результат написан на языке, который компьютер может понять напрямую, он имеет тенденцию быть довольно быстрым. Сравните это с интерпретируемыми языками, которые проходят через другой шаг.
Эффективность компилятора
Чтобы перевести любой код на что-то, что компьютер может понять (машинный код), его нужно запускать через специальную программу, называемую компилятором. На одном языке может быть несколько компиляторов для него. Например, как GCC (сборник компиляторов GNU), так и Clang можно использовать для компиляции программ.
Поскольку работа компилятора заключается в том, чтобы перевести программу в машинный код, насколько хорошо это может повлиять на ее скорость. Один и тот же источник может иметь несколько разных результатов, в зависимости от того, как сконфигурирован компилятор.
Это также может означать, что разные скомпилированные языки могут работать быстрее или медленнее, чем другие. Как правило, C и C ++ говорят, что они очень быстрые, поскольку компиляторы для них прошли годы разработки и улучшения. Другие языки не всегда имеют такую зрелость.
Интерпретированный язык
Как уже говорилось, интерпретируемые языки не компилируются заранее. Вместо этого они транслируются при запуске, обычно с помощью отдельной программы, известной как интерпретатор. Например, программы Java запускаются через нечто, называемое JVM (виртуальная машина Java).
Поскольку эти языки не нуждаются в предварительной компиляции, программы, написанные в них, как правило, намного легче сделать и протестировать. В результате, однако, само программное обеспечение может быть значительно медленнее. Интерпритаторы выполняют источник программы по строкам, что приводит к снижению скорости. Наряду с этим самому интерпритатору нужно немного времени для запуска.
Байткод: слабый компромисс
Из-за их несколько более медленного характера многие интерпретируемые языки фактически используют некоторую форму компиляции, чтобы ускорить их работу. Перед запуском эти программы переводятся на байт-код, тип языка, с которым легко работать интерпретаторам. Например, как Java, так и Python, до запуска, создают файлы CLASS и PYC, соответственно.
В принципе, это небольшой компромисс между легкостью развития и скоростью. Это быстрее, чем просто интерпретируемый код и его проще настроить, чем его полностью скомпилированные копии. Байт-код также обладает дополнительным преимуществом: он более переносим по сравнению с программами, скомпилированными для машинного кода. Если интерпретатор существует для архитектуры ЦП, он будет работать.
На некоторых языках также есть компиляция JIT (точно в момент времени). В основном, он принимает байт-код и компилирует его до машинного кода. Как и название, это происходит во время работы программы. Он предназначен для ускорения исполнения, ценой более медленного первого запуска, поскольку для его запуска требуется время для компиляции.
Заключение
Все это говорит о том, что эти различия на самом деле не являются проблемой для большинства людей, особенно когда компьютеры становятся все быстрее и быстрее с каждым годом. Хотя некоторые языки программирования, конечно, быстрее других, что действительно важно, так это то что они делают.
Конечно, если вы хорошо разбираетесь в программировании, это прекрасно пытаться вывести производительность из вашего кода. Но если вы только начинаете, гораздо лучше беспокоиться об обучении движкам в первую очередь. Неважно, насколько быстро или медленно рассматривается язык, если в конце концов ничего не получится.
Также нужно использовать правильный инструмент для работы. Язык сборки, например, очень хорош для написания операционных систем, потому что он низкого уровня. Но это слишком много для обычных настольных приложений. Существуют также языки, предназначенные для Интернета и т. д.
Какие факторы вы учитываете при изучении языка программирования?
Источник: juice-health.ru