Зарегистрируйтесь для доступа к 15+ бесплатным курсам по программированию с тренажером

Модуль 1. Урок 2. Виды языков программирования и место языка Java среди них. Введение в Java

Язык программирования_ -- это набор правил, описывающих задачи для компьютера. Более расширенное определение на вики.

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

Сейчас самыми массовыми являются архитектуры RISC и CISC.

Процессоры для настольных ПК, большинство серверных -- исполнены по CISC архитектуре; как от Intel так и от AMD.

Мобильные процессоры базируются на RISC архитектуре.

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

  • нативные языки
  • байт-код языки
  • скриптовые языки

Нативные языки

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

ассемблирование -- процесс трансляции программы с языка ассемблера в машинный код.

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

С++ считается высокоуровневым языком программирования.

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

Скриптовые языки

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

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

Интерпретаторы скриптовых языков созданы только для одного языка — объяснение.

Байт-код языки

Это компромисс между скриптовыми и нативными языками.

Java базируется на виртуальной архитектуре.

В вышеупомянутой статье, про архитектуры процессоров, было сказано про виртуальные архитектуры. Java Virtual Machine (JVM) является одной из таких виртуальных архитектур. JVM написана на низкоуровневых языках, под различные операционные системы и платформы, в том числе и мобильные. Обратите внимание, что JVM от Oracle для мобильных платформ и JVM для Android от Google -- несовместимы; они лишь используют общий синтаксис в исходниках языка java.

Все исходники java-кода компилируются в байт-код. В этом процессе происходит еще и оптимизация кода. Этот код является машинным для JVM, но не для конкретного компьютера.

bytecode -- это набор инструкций, исполняемых виртуальной машиной Java. (Один из следующих курсов полностью посвящен байт-коду java.)

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

  • Преимущества байт-код языков: портабилити (переносимость между платформами). Один раз написал -- запустил на различных платформах! Но не без оговорок.
  • Недостатки байт-код языков: медленное исполнение, по сравнению с нативными языками + дополнительное обеспечение (Virtual Machine).

Ссылки


Аватары экспертов Хекслета

Остались вопросы? Задайте их в разделе «Обсуждение»

Вам ответят команда поддержки Хекслета или другие студенты.

Ошибки, сложный материал, вопросы >
Нашли опечатку или неточность?

Выделите текст, нажмите ctrl + enter и отправьте его нам. В течение нескольких дней мы исправим ошибку или улучшим формулировку.

Что-то не получается или материал кажется сложным?

Загляните в раздел «Обсуждение»:

  • задайте вопрос. Вы быстрее справитесь с трудностями и прокачаете навык постановки правильных вопросов, что пригодится и в учёбе, и в работе программистом;
  • расскажите о своих впечатлениях. Если курс слишком сложный, подробный отзыв поможет нам сделать его лучше;
  • изучите вопросы других учеников и ответы на них. Это база знаний, которой можно и нужно пользоваться.
Об обучении на Хекслете

Для полного доступа к курсу нужен базовый план

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

Получить доступ
900
упражнений
2000+
часов теории
3200
тестов

Открыть доступ

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

  • 120 курсов, 2000+ часов теории
  • 900 практических заданий в браузере
  • 360 000 студентов
Отправляя форму, вы соглашаетесь c «Политикой конфиденциальности» и «Условиями оказания услуг»

Наши выпускники работают в компаниях:

Логотип компании Альфа Банк
Логотип компании Aviasales
Логотип компании Yandex
Логотип компании Tinkoff

Есть вопрос или хотите участвовать в обсуждении?

Зарегистрируйтесь или войдите в свой аккаунт

Отправляя форму, вы соглашаетесь c «Политикой конфиденциальности» и «Условиями оказания услуг»