Найти - Пользователи
Полная версия: IronPython
Начало » Python для новичков » IronPython
1 2
d1ffuz0r
проще писать сразу на С#
EBFE
А как код питона можно скомпилировать в мелкомягкий байткод, ведь он статический?
Некоторые фичи приходится эмулировать (особенно динамические, ну или множественное наследование).

Поэтому Jthon/IronPython и не оправдали надежд (в смысле скорости выполнения) - все-таки VMки и JIT заточенны под конкретные языки и “принципы”.
А было-бы неплохо - в оптимизацию явы/Net вбуханна уйма денег/человеко-часов.
odnochlen
EBFE
Некоторые фичи приходится эмулировать (особенно динамические, ну или множественное наследование).
А то. Вот мне и интересно, как они это в код дотнета компилируют, или врет педивикия? Где бы об этом почитать?
Насчет jython-а - он вроде ничего и не компилирует, просто еще один интерпретатор на яве. С одной стороны, стартует дольше, с другой - позволяет пользоваться java api. Используется в основном для тестирования прог на яве и для связывания явы и питона, если уж так невтерпеж.
EBFE
odnochlen
Вот мне и интересно, как они это в код дотнета компилируют, или врет педивикия? Где бы об этом почитать?
http://msdn.microsoft.com/en-us/magazine/cc163344.aspx
odnochlen
Насчет jython-а - он вроде ничего и не компилирует, просто еще один интерпретатор на яве
Вроде-бы в python-wiki пишут
http://wiki.python.org/jython/JythonFaq/GeneralInfo
JPython is an implementation of the Python programming language which is designed to run on the Java™ Platform. It consists of a compiler to compile Python source code down to Java bytecodes which can run directly on a JVM, a set of support libraries which are used by the compiled Java bytecodes,
Но опять же - многое приходится эмулировать, так что JIT здесь по моему особо не задействовуется:

jython-interactive-prompt:
>>> import py_compile
>>> py_compile.compile('simple.py', 'simple.class')
doc
Compile a source file to byte-code and write out the byte-code cache file

ebfe@debian:~$ more simple.py
x = 1 + 2
print x
ebfe@ubuntu:~$ icepick-javap -c simple
Compiled from "simple.py"
public class simple$py extends org.python.core.PyFunctionTable implements org.python.core.PyRunnable{
static final simple$py self;
static final org.python.core.PyString _0;
static final org.python.core.PyInteger _2;
static final org.python.core.PyInteger _1;
...
   9:	aload_1
   10:	iconst_1
   11:	invokevirtual	#22; //Method org/python/core/PyFrame.setline:(I)V
   14:	getstatic	#26; //Field _1:Lorg/python/core/PyInteger;
   17:	getstatic	#29; //Field _2:Lorg/python/core/PyInteger;
   20:	invokevirtual	#35; //Method org/python/core/PyObject._add:(Lorg/python/core/PyObject;)Lorg/python/core/PyObject;
   23:	astore_2
   24:	aload_1
   25:	ldc	#37; //String x
   27:	aload_2
   28:	invokevirtual	#40; //Method org/python/core/PyFrame.setlocal:(Ljava/lang/String;Lorg/python/core/PyObject;)V
  ...
}
odnochlen
Можешь сконпелированый java байткод выложить?
EBFE
Можешь сконпелированый java байткод выложить?
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB