ITmentor | Сайт про IT
- Новости
- Статьи
- Материалы
- Календарь
- Предложить контент
- О проекте
- Не выбрано
- 2016
- 2017
- 2018
- 2019
- 2020
- 2021
- 2022
- 2023
- Не выбрано
- Январь
- Февраль
- Март
- Апрель
- Май
- Июнь
- Июль
- Август
- Сентябрь
- Октябрь
- Ноябрь
- Декабрь
- Бизнес иммиграция
- Законодательство
- Истории успеха / IT Style
- Маркетинг / Свой бизнес
- Стартап
- Образование / Работа в ИТ
- Языки программирования
- Mobile application
- Gamedev
- IT Belarus
- Технологии
Статьи
Компилируемые и интерпретируемые языки программирования
Желающие освоить язык программирования сталкиваются с такими понятиями, как компилятор и интерпретатор. Компиляция и интерпретация — это основа работы языков программирования.
Языки программирования в общем подходе делятся на два класса — компилируемые и интерпретируемые. Стоит отметить, что эта классификация языков программирования на компилируемые и интерпретируемые, является весьма условной, поскольку для любого языка программирования может быть создан как компилятор, так и интерпретатор. Кроме того бывают языки программирования смешанного типа.
Мы полагаемся на такие инструменты, как компиляция и интерпретация, чтобы преобразовать наш код в форму, понятную компьютеру. Код может быть исполнен нативно, в операционной системе после конвертации в машинный (путём компиляции) или же исполняться построчно другой программой, которая делает это вместо ОС (интерпретатор).
Компилируемые языки
Программа на компилируемом языке при помощи специальной программы компилятора преобразуется (компилируется) в набор инструкций для данного типа процессора (машинный код) и далее записывается в исполняемый файл, который может быть запущен на выполнение как отдельная программа. Другими словами, компилятор переводит программу с языка высокого уровня на низкоуровневый язык, понятный процессору сразу и целиком, создавая при этом отдельную программу
Как правило, скомпилированные программы выполняются быстрее и не требуют для выполнения дополнительных программ, так как уже переведены на машинный язык. Вместе с тем при каждом изменении текста программы требуется ее перекомпиляция, что создает трудности при разработке. Кроме того, скомпилированная программа может выполняться только на том же типе компьютеров и, как правило, под той же операционной системой, на которую был рассчитан компилятор. Чтобы создать исполняемый файл для машины другого типа, требуется новая компиляция.
Компилируемые языки обычно позволяют получить более быструю и, возможно, более компактную программу, и поэтому применяются для создания часто используемых программ.
Примерами компилируемых языков являются 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 47673 Поделиться:
Выбор компилируемого языка программирования?
Есть несколько вариантов, C# (немного пугает зависимость от платформы Windows), Java (сомнительное будущее), Objective-C (неизвестно, не пробовал, может кто то использовал и скажет как там :)), C/C++ (сильно напрягает и сложный). Посоветуйте плиз, сфера применения мобильные и десктопные приложения, возможно веб.
C# — это десктоп и веб. Есть популярный фреймворк для кросс-платформенной мобильной разработки.
Java — лично мне больше нравится, чем C# своим минимализмом. Десктоп на ней мало кто делает — сложно писать GUI и он не слишком красивый, зато кросс-платформенный. Для веба подходит не меньше, чем C#. На Java пишут под Android.
C/C++ — тоже не советую. Сложно найти специалистов и многие не любят на нем писать.
Если нет предпосылок для использования Windows, то стоит выбрать Java. Тем более, что большинству IntelliJ IDEA намного больше нравится, чем Visual Studio.
Какой бы язык в итоге не выбрали, по любому советую освоить С (старый добрый, без плюсОв).
Он не так сложен, как может показаться, а его знание пригодится.
Язык один, а результаты куда хочешь и под любые платформы.
Согласен с @doctordev, из предложенного Java болеее чем достойный вариант. GUI на ней тоже пишут, пример — почти все продукты JetBrains. У Java, имхо, на ближайшее десятилетие, более чем светлое будущее. Если она даже и загнется, в чем я сильно сомневаюсь, поддерживать продукты на Java тоже кому-то надо.
Плюс на Java пишут под веб и мобильные приложения (Android).
C/C++ хороший выбор, грамотные сишники всегда в цене, но область применения уже, порог вхождения выше.
С# не кросплатформенный, чтобы не говорили про Mono.
Go — перспективный, довольно простой, многие вещи сделаны изящно и понятно (прежде всего параллельные вычисления), но молодой. Пока не понятно что с ним будет.
Рекомендую посмотреть в сторону Golang’а. Под веб — отличное решение. Качественная стандартная библиотека, множество сторонних, активно развивается.
Как ни странно, я бы советовал C/C++. В мире того же Си за последние 40 лет появилось немало крутых инструментов, благодаря которым прострелить себе ногу уже не так-то просто. Почитайте 21st century C например.
Scala — хороший баланс между сложностью языка и мощностью. Компилируется в JVM и позволяет легко использовать Java-библиотеки.