Це просто цікаво, що я мав, читаючи про інтерпретовані та складені мови.
Ruby , без сумніву, є інтерпретованою мовою, оскільки вихідний код обробляється інтерпретатором на місці виконання.
Навпаки, C - це компільована мова, оскільки спершу потрібно скласти вихідний код відповідно до машини, а потім виконати. Це призводить до набагато швидшого виконання.
Зараз підходимо до Python :
- Код python ( somefile.py ) при імпорті створює файл ( somefile.pyc ) у тому самому каталозі. Скажімо, імпорт здійснюється в оболонці python або модулі django. Після імпорту я трохи змінюю код і знову виконую імпортні функції, щоб виявити, що він все ще працює зі старим кодом. Це говорить про те, що файли * .pyc - це компільовані файли python, схожі на виконуваний файл, створений після компіляції файлу C, хоча я не можу виконати файл * .pyc безпосередньо.
- Коли файл python (somefile.py) виконується безпосередньо (./somefile.py або python somefile.py), не створюється файл .pyc і код виконується так, як свідчить про інтерпретовану поведінку.
Вони припускають, що код python компілюється кожного разу, коли він імпортується в новому процесі для створення .pyc, тоді як він інтерпретується при безпосередньому виконанні.
Отже, який тип мови я повинен вважати ним? Інтерпретовано чи складено? І як її ефективність порівнюється з інтерпретованими та складеними мовами?
Відповідно до сторінки Вікі- інтерпретовані мови , вона перерахована як мова, складена до віртуального машинного коду, що це означає?
RUN
. Це було так, як якщо б у вас був компілятор, який робив крок лексінгу, а потім виводив потік лексем, який доводилося переробляти щоразу, коли програма запускалася. Зовсім не так, як сучасна компіляція байт-кодів, як це зроблено, скажімо javac
, що включає в себе лексинг, аналіз та оптимізацію.