viernes, 27 de junio de 2008

IronPython mejoras y problemas.

Hola amigos, IronPython realmente ha avanzado mucho,
han corregido varios errores y tratan de mantener
la compatibilidad con el lenguaje python,
el interprete original este echo en C por eso
tambi\u00e9n se le conoce como cpython, existen otro
interprete echo en java llamado jython.



Esta es una gran diferencia con respecto ha boo, en realidad
boo es un lenguaje nuevo, es una mezcla entre python y C#,
al principio no ten\u00eda ni siquiera las listas, algo esencial
en python, ahora ya se encuentra implementado, pero no es
uno de sus fines mantener compatibilidad con python.



IronPython mejora d\u00eda con d\u00eda, pero aun as\u00ed tiene ciertos fallos,
aqu\u00ed dejo un par de diferencias entre python y IronPython:



El primer problema es con self,
que es una referencia a la misma clase:


Python:
$ ipython
In [1]: class miuler:
...: def __init__(self):
...: print self
...: print type(self)
...:
In [2]: jojo = miuler()
<__main__.miuler instance at 0xb7b2b4ec>

In [3]:



IronPython:
$ IronPythonConsole.exe
IronPython 1.0.2190 (Beta) on .NET 2.0.50727.42
Copyright (c) Microsoft Corporation. All rights reserved.
>>> class miuler:
... def __init__(self):
... print self
... print type(self)
Traceback (most recent call last):
SyntaxError: invalid syntax at :3
>>> class miuler:
... def __init__(self):
... print self
... print type(self)
...
>>> jojo = miuler()
<__main__.miuler instance at 0x000000000000002B>
Traceback (most recent call last):
File , line 0, in __init__
Exception: Object reference not set to an instance of an object
>>>


El segundo problema es con __main__ :


Python:
miuler@miuler:/usr/lib/python2.4$ python
Python 2.4.2 (#2, Nov 20 2005, 17:04:48)
[GCC 4.0.3 20051111 (prerelease) (Debian 4.0.2-4)] on linux2
Type "help", "copyright", "credits" or "license" for more
information.

>>> __name__
"__main__"
>>> import __main__
>>> type (__main__)
<type "instance">
>>>



IronPython:
miuler@miuler:~$ IronPythonConsole.exe
IronPython 1.0.2190 (Beta) on .NET 2.0.50727.42
Copyright (c) Microsoft Corporation. All rights reserved.
>>> __name__
"__main__"
>>> import __main__
Traceback (most recent call last):
ImportError: No module named __main__
>>> __name__
"__main__"
>>> type (__main__)
Traceback (most recent call last):
NameError: name "__main__" is not defined
>>>

Esta es una de las razones por la cual ipython
no puede correr en IronPython
-ipython es una shell Python mejorado-


Ya han mejorado muchos errores, y varios m\u00f3dulos
de python original corren sin problemas, pero
problemas como este, no dejan correr otros como ipython
que son muy usado, por lo que estaremos muy atentos
ha los nuevos cambios, para informarles.

No hay comentarios:

Entradas populares