Страницы

Поиск по вопросам

воскресенье, 1 декабря 2019 г.

Разновидности реализаций языка Python

#python #дизайн_языка


В любой книге, где бы я не читал, говорится, что есть различные реализации языка.
  Стандартный это, как я знаю, CPython, а есть еще и другие (JPython, IronPython). 

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


Ответы

Ответ 1



Разницы в синтаксисе нет — каждый интерпретатор должен поддерживать грамматику Питона, чтобы иметь право называться таковым. Разница между интерпретаторами есть в скорости выполнения кода, доступности модулей: к примеру, не все модули стандартной библиотеки, что имплементированы в CPython, доступны в других реализациях, или имеют другую имплементацию. Модули, которые имплементируют часть функционала в С ("C extensions"), чаще всего не доступны ни с одним другим интерпретатором, кроме CPython'а (к примеру, сторонних реализаций numpy/scipy нигде, кроме как для PyPy, нет, да и там она добавлена практически вчера и в бете, ЕМНИП), мостиках в другие языки. К примеру, Jython умеет напрямую импортировать Java-классы - такой код кинет ImportError в других интерпретаторах: from java.util import Date from java.lang import System d = Date() System.out.println(d) Точно так же IronPython умеет работать с CLR и .NЕТ: from System import DateTime, String d = DateTime.now print String.Format("{0}", d)

Ответ 2



Язык задан описанием синтаксиса и грамматики и он, в общем случае, абстрактен. Реализация языка позволяет переводить код на языке в код, понятный процессору, чтобы он его мог выполнить. Реализации языка не отличаются в плане синтаксиса, но могут отличаться в плане семантики конструкций. Посмотрите, например, известное выражение i++ + ++i. Каждый интерпретатор понимает один и тот же код на Питоне, но переводит его в машинные коды немного по разному.

Комментариев нет:

Отправить комментарий