#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. Каждый интерпретатор понимает один и тот же код на Питоне, но переводит его в машинные коды немного по разному.
Комментариев нет:
Отправить комментарий