Тёмный

Как работает компилятор в C# и интерпретатор в Python: в чем заключается разница? 

HiroPuko
Подписаться 864
Просмотров 499
50% 1

Как код преобразуется в действие: компиляция и интерпретация в языках программирования: Python, JavaScript, PHP и C++, C#, Java.
В этом видео мы рассмотрим, как функционируют интерпретаторы и компиляторы в разных языках программирования, таких как Python, JavaScript, PHP, а также в С#, C++, и Java, особенно с учетом их динамической и статической типизации.
- Разберемся с запуском скрипта и обработкой исходного файла Python с использованием интерпретатора Python
- Разберем процесс анализа данных, создания байткода, а также оптимизации кэша
- Технический процесс интерпретации в языке программирование Python
В конечном итоге, мы превратим код в машинный код.
Далее коснемся темы CPython VM и рассмотрим его основные службы, включая управление памятью, обработку ошибок, управление сетью и взаимодействие с внешними библиотеками и фреймворками. Также обсудим использование сторонних библиотек с PyPi.org через Just-in-Time компиляцию, преобразование исходного файла main.py в байт-код .pyc.
Затем мы перейдем к процессу компиляции, где разъясним все этапы создания программы на операционной системе Windows 10 с использованием компилятора C# и виртуальной машины .NET VM. Рассмотрим обработку кода в байт-код и окончательную компиляцию в исполняемый файл (.exe).
- Как происходит создание исполнимых файлов из исходного кода
- Сравнение компиляции в .NET VM и интерпретации в Python
- Разница между интерпретации и компиляции

Наука

Опубликовано:

 

26 окт 2023

Поделиться:

Ссылка:

Скачать:

Готовим ссылку...

Добавить в:

Мой плейлист
Посмотреть позже
Комментарии : 16   
@alexlavrov4883
@alexlavrov4883 7 месяцев назад
Гениальность в простате. У Хиро получилось сложную тему очень доступно для всех обеснить.
@fugitiveom
@fugitiveom 7 месяцев назад
спасибо за видео, но пожалуйста... "ихний"...
@RatchetTV1515
@RatchetTV1515 8 месяцев назад
Код во время интерпретации не переводится в "машинный код". Он буквально "выполняется" виртуальной машиной пайтона (которая является программой, написанной на C) . Если бы можно было однозначно перевести код в машинный, то какой тогда смысл в наличии интерпретатора?
@RatchetTV1515
@RatchetTV1515 8 месяцев назад
В случае с C# практически нет никакой разницы между ним и Пайтоном. И то, и другое компилируется в промежуточный байт-код, и то, и другое потом интерпретируется виртуальной машиной. "Истинная" компиляция происходит только для языков вроде C, C++, Rust и подобных, где виртуальной машины в принципе нет. Исходный код компилируется в код ассемблера, после чего ассемблируется (по факту компилируется в соотношении один к одному) в настоящий машинный код (например, mov ax, 15 -> 0x66B80F00)
@RatchetTV1515
@RatchetTV1515 8 месяцев назад
У меня ощущение, что легенды о том, что при компиляции Джава и C# "превращаются" в машинный код, придумали джависты, которые сами не понимают, как работает JVM, но хотят себя считать более крутыми, чем те же питонисты. Если искать статьи по тому, как работает Джава, то каждая первая статья будет нести чушь о том, что Джава компилится в машинный код в рантайме, а потом магическим образом этот скомпилиный машинный код отдаёт процессору. В джаве есть just in time компиляция, конечно, но это скорее исключение, чем практика, ибо всё равно в 99% случаев джава так или иначе всего-лишь интерпретируется виртуальной машиной JVM
@HiroPuko
@HiroPuko 8 месяцев назад
Ваше утверждение содержит несколько неточностей: Верно: В Java не компилируются JAR-файлы. JAR-файлы являются архивами, которые содержат скомпилированный байткод Java, а не результат компиляции самого JAR-файла. Неверно: Java - это компилируемый язык программирования. Исходный код Java компилируется в байткод, который затем выполняется виртуальной машиной Java (JVM). Этот байткод хранится в файлах с расширением ".class". Таким образом, Java приложения действительно компилируются, хотя они не компилируются в непосредственно исполняемые файлы процессора. Неверно: Python также компилируется в байткод. Исходный код Python компилируется в байткод, который затем интерпретируется виртуальной машиной Python. Это позволяет выполнить Python-код на разных платформах, и инструкции доходят до процессора в машинном коде на этапе выполнения. Неверно: C# и .NET не являются "не компилируемыми" языками. C# компилируется в промежуточный байткод CIL (Common Intermediate Language), который затем выполняется в рамках .NET CLR (Common Language Runtime). Полученные исполняемые файлы (например, .exe) содержат CIL и исполняются виртуальной машиной .NET.
@RatchetTV1515
@RatchetTV1515 8 месяцев назад
@@HiroPuko я не говорил, что C# не компилируется. Все эти языки компилируются в байт-код, а потом исполняются. Разницы между всеми этими тремя языками по факту нет, так как процессы всегда одни: "исходники -> компиляция в байт-код -> интерпретация байт-кода виртуальной машиной
@RatchetTV1515
@RatchetTV1515 8 месяцев назад
@@HiroPuko по поводу "инструкции доходят до процессора в машинном коде на этапе выполнения": на самом деле это нельзя назвать "доходят в машинном коде". Виртуальная машина (интерпретатор) - всего-лишь скомпилированная программа, которая с помощью своего же исходного кода исполняет инструкции из байт-кода. Да, процессор выполняет код, но не программу на пайтоне/джаве/C#, а именно сам код виртуальной машины. Можно привести аналогию с калькулятором на пайтоне, который читает "код" из файла (например, 2 + 5 = ?) и интерпретирует этот код (выполняет его по факту) через свой собственный код (через if/elif/else, match/case или switch/case исходя из того, какие токены (число, операция, знак равно, знак вопроса и так далее) ему встречаются). По факту интерпретатор или виртуальная машина - это огромная функция с сотней case внутри switch
@igorpankov8237
@igorpankov8237 7 месяцев назад
Для меня все это слишком сложно и не ориентировано на цель. Исходя из видео я так и не понял для чего это все нужно и каков путь от задачи к решению. Все в видео это лишь набор терминов без привязки к смыслу возникновения
@HiroPuko
@HiroPuko 7 месяцев назад
Все в IT это набор терминов, если вы простые вещи не понимаете, такие как таблица умножения или алфавит. Кто вам виноват, учитись лучшее, будет упорне. И все у вас получится. Успеха вам в программировании!
@alexlavrov4883
@alexlavrov4883 7 месяцев назад
Автор видео в самом начале очень понятно обеснят цель видео, сравнения двух технологий и обработка данных. Если вам сложно русский понимать, тот уже притензия к вашим знаниям русского языка.
Далее
C# using за 30 секунд #Shorts
1:00
Просмотров 117 тыс.
小路飞被臭死啦!#海贼王#路飞
00:27
Просмотров 1,9 млн
Презентация Toretto
22:32
Просмотров 109
How to Make a 3D Game in Python from Scratch [ Pygame ]
16:14
Will the battery emit smoke if it rotates rapidly?
0:11
Gizli Apple Watch Özelliği😱
0:14
Просмотров 3,5 млн
Купил iPhone 15. Первые эмоции!
0:58