Зарегистрируйтесь для доступа к 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).

Ссылки

  • Ад тестирования сайтов под Android
  • Текстовый редактор sublime

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

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

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

Об обучении на Хекслете

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

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

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

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

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

Используйте Хекслет по-максимуму!

  • Задавайте вопросы по уроку
  • Проверяйте знания в квизах
  • Проходите практику прямо в браузере
  • Отслеживайте свой прогресс

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

Отправляя форму, вы принимаете «Соглашение об обработке персональных данных» и условия «Оферты», а также соглашаетесь с «Условиями использования»