2016-06-05 4 views
0

Так что я потратил много времени, пытаясь исправить то, что Cython и Jython есть, и я все еще (более) смущен, как и все, кто только начал программировать. Я слышал, что Cython является расширением, но .. также и indepent language ??Является ли Cython/Jython независимым языком?

Что я думаю я понял, что:

  1. Cython/Jython просто Python и вы можете использовать C или C++/Java библиотеки, соответственно, с помощью всего лишь немного Cython/Jython синтаксиса ,

  2. Это означало, чтобы ускорить производительность, а также улучшить читаемость кода, когда задача будет более эффективным, чтобы писать в C или C++/Java и это делается с помощью статически типизированных переменных.

Или Cython/Jython просто какое-то расширение, которое используется иногда но не независимо друг от друга? Я имею в виду, что вы все равно напишете все в Python, а затем, для задач, которые вы бы предпочли использовать C или C++/Java, вместо этого вы использовали бы /Jython? (Я знаю, что еще нужно установлен Python и другие подобные вещи, как это зависит.)

Потому что, если это на самом деле лучше, кроме барьера, что он все еще развивается, так как это довольно новая, не будет необходимости в C или C++/Javaполностью уйти, поскольку это так же просто, как Python, но столь же мощным, как C или C++/Java?

ответ

7

Jython FAQ:

Jython является реализация языка Python для платформы Java. Jython 2.7 реализует один и тот же язык как CPython 2.7 и почти все стандартные модули библиотеки Core Python. (CPython является реализацией C языка Python.)

Написание Jython аналогично написанию стандартного Python. Основное отличие состоит в том, что, поскольку он компилируется в Java Bytecode, вы можете плавно взаимодействовать с Java-библиотеками. Конечно, у него есть требование на JVM, но у него нет Global Interpreter Lock (Известный GIL).

Cython:

Cython является оптимизация статического компилятора как для языка программирования Python и расширенного языка программирования Cython (на основе Pyrex)

Так, Cython прежде всего считается компилятор. Он компилирует ваш код Python в C, который затем компилируется (со стандартным компилятором C) и запускается.

Для дальнейшего облегчения интеграции с C/C++ он также расширил синтаксис для указания типов, определяя различные функции и взаимодействуя с кодом C/C++. Это, с одной стороны, позволяет Cython генерировать более эффективный код, который пропускает медленную интерпретацию, которую обычно выполняет Python VM, а с другой стороны, делает письменные расширения для Python прогулкой в ​​парке, поскольку вам не нужно знакомиться с Python C-API.


Таким образом, чтобы ответить на ваши вопросы:

Cython/Jython только Python, и вы можете использовать библиотеки C или C++/Java, соответственно, с помощью всего лишь немного синтаксиса Cython/Jython.

В значительной степени, да. Jython является Python и использует Java Libraries с базовыми import утверждениями. Cython очень похож на на Python и, как вы сказали, использует бит синтаксиса для взаимодействия с C/C++.

Он предназначен для ускорения работы, а также для повышения удобочитаемости кода, когда задача будет более эффективной для записи на языках C или C++/Java; и это делается с использованием статически типизированных переменных.

Для Cython этого является цель, для Jython это не так. Вот почему Cython предоставляет расширенный синтаксис для указания типов, а Jython - нет.

Оба языка используются независимо (в том смысле, что вы имеете в виду), но Cython обычно развертывается после профилирования кода Python, связанного с процессором, и определения узких мест.

+0

Итак, из того, что я понимаю, как только Cython станет более зрелым, не будет абсолютно никакой потребности в Python, поскольку он в основном Python, но быстрее и действует как язык программирования сам по себе? –

+0

@NeelKamath Я бы не дошел до этой крайности. «Cython» не разработан с целью замены «Python», а «Cython» разработан с целью дополнения «Python» и предоставления преимуществ там, где они необходимы (например, для научных вычислений). Рабочий процесс для работы с 'Cython' и' Python' в целом: разработка в 'Python', ** profile ** вашего кода и обнаружение узких мест, переписывание узких мест в' Cython' для ускорения выполнения. –

+0

Что означает «профиль» и «узкое место»? –

1

CPython сопоставим с Jython. Это реализация языка Python. CPython является де-факто стандартом и написан на C. Jython написан на Java и работает на JVM. Это также позволяет в значительной степени использовать экосистему Java. Есть и другая реализация языка, например PyPy или Pyston.

Cython совершенно другой. Это позволяет нам писать расширения для Python в C или Pyrex, подмножество языка Python. Cython ускоряет скорость выполнения для деталей, написанных с ним.

+0

OK, поэтому следует удалить часть Jython моего вопроса, если это совсем другое? Поэтому в основном я пишу только на Python, а затем вместо написания определенных задач на C я использую «Cython», который так же быстро, за исключением наличия библиотек * обоих * языков и в основном Python, за исключением некоторого синтаксиса C (синтаксис Cython), НО, я не могу просто написать программу в Китоне. Я понял? –

+0

Cython отличается. Он работает для CPython. Позволяет вам написать код в Python, например, синтаксис (со статической типизацией и другими синтаксическими различиями). Cython компилирует эти коды на C и повышает производительность. CPython и Jython - это просто Python, один написанный на C, один на Java. – masnun

+0

CPython == Jython (в некоторой степени, не полностью). Cython является расширением. – masnun

0

Jython - это реализация языка Python на виртуальной машине Java, поэтому Jython - это Python, но не CPython. Cython является расширением CPython и не имеет много общего с Python, кроме некоторых сходств в синтаксисе.

1

Ok. Jython - это реализация Python, которая преобразует исходный код python в java-байт-код или объектный код, как это принято большинством людей. Таким образом, вы в основном пишете свои программы, используя синтаксис python, но вывод исходного кода при компиляции объектного кода - это java-байт-код

Cython, с другой стороны, представляет собой реализацию, где по стандартным модулям на языке python переведен на язык C.Итак, здесь, когда вы в основном используете модуль, это стандартный модуль python, но для эффективности, под капотом, его язык C или код, который выполняется