Компилируй это, интерпретируй то.

Компилируй это, интерпретируй то.

Больше вкусностей найдешь на моем канале - https://t.me/emotional_robot


Чем глубже мы погружаемся в прекрасный мир программирования, тем запутаннее все становится. Но не волнуйтесь, дядя Эмоциональный робот вас в беде не бросит. По крайней мере, пока он в адеквате, а там уж как попрет.

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

Компилятор


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

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

Что нужно понимать, если захочется кодить на компилируемых ЯПах? Основной момент - отсеивание огромного количества ошибок при разработке на этапе компиляции. Если вы допустили ошибки в синтаксисе, не согласовали типы данных, пытаетесь вызвать несуществующий метод несуществующего объекта (мы об этом тоже поговорим, не спешите разбегаться), то компилятор отправит вас в пешее эротическое. Пока вы не исправите все ошибки, программа не будет скомпилирована, и вы не сможете поделиться вашим killer app с этим безумным и прекрасным миром.

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

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

Интерпретатор


Надеюсь, вы не так сейчас выглядите?

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

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

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

Кроме того, без самого интерпретатора программа - просто кусок бесполезных команд, они не будут выполняться, хоть ты умоляй на коленях, хоть приноси в жертву девственниц. Хотя, про компилируемые языки также сказать можно - без компилятора весь код бесполезен. Так и живем, без какого-то одного важного компонента вся работа - пшик и пук.

Самый яркий пример связки интерпретируемого языка и интерпретатора - это JavaScript и браузеры. Да, вся функциональная движуха в браузере, будь это отправление запросов на сервер, включение и выключение кнопок, снежок перед Новым годом (интересно, еще остались такие сайты?) - это интерпретация браузером написанного JavaScript кода. Поздравляю, теперь вы просвещенные последователи культа "JavaScript и боль в нижней части спины". Можно понтоваться перед друзьями.

Итого

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

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



Report Page