www.kungfooo.com/2006/09/17/a-python-web-browser-in-25-li... por loretahur el 17-09-2006 12:32 UTC publicado el 17-09-2006 15:55 UTC
Para comprobar la potencia de Python vemos aquí un claro ejemplo. Se ha desarrollado un navegador web con tan sólo 25 líneas de código. Es bastante básico pero qué queréis con 25 líneas. Enlace en inglés
#2 Excelente ejemplo de la expresividad de los lenguajes de programación "modernos". Como comenta en la misma página hay otros casos lamativos, por ejemplo programas muy muy cortos que solucionan sudokus:
#6#5 Si. Y aunque no fuese asi, hoy en dia se valora mas en casi todos los entornos, los programas rapidos y de poco consumo de memoria que los que ocupan pocas lineas de codigo.
#8 Por eso mismo no se porque la gente se dedica a alabar la expresividad del lenguaje cuando la gracia son las librerias. Esto en concreto lo quiero señalar porque aunque los lenguajes de script son mucho mas versatiles a primera vista, esta misma versatilidad provoca que se sea mucho mas propenso a cometer errores o dejar "agujeros" explotables. Y es que para mi un lenguaje en el que no se sepa de que tipo es una variable, es un lenguaje de coña.
#10#8 En python siempre sabes de qué tipo es una variable, no hay tipos indefinidos a diferencia de en otros lenguajes como C, donde el tipo de un puntero void o de un variant de COM es desconocido a priori.
Hablando en claro, en python no puedes sumar variables de tipo entero con cadenas de caracteres a menos que sobrecargues el operador/hagas las conversiones explícitamente. En lenguajes de coña (como C ) una suma de un entero y una cadena (un puntero a char) sí está permitida... Y el tipo del resultado se deja a la interpretación del lector
Sobre este ejemplito de navegador la gracia está en wxWidgets. Para el que no las conozca son unas bibliotecas como las MFC pero atiborradas de esteroides. Compiten al nivel de Qt y con licencia LGPL. Claro que el mismo ejemplo (con las mismas bibliotecas) en C++ serían bastante más de 25 líneas
#12 Bueno, con Delphi (y otros) tambien se puede hacer un sencillo navegador (cutre, ya q usa el motor del explorer en este caso ) pero q al fin y al cabo no son mas de 33 lineas (el resto lo hacen las librerias, en este caso ActiveX)... (y sin comptactar codigo )
#14#10 Y naturalmente ni las librerías ni el intérprete python usan nada escrito en C/C++, claraaaro.
¿Cuantos años vamos a estar dando vueltas a lo mismo? Cada lenguaje (incluidos C o python) es bueno para según que cosas y circustancias de desarrollo. NO HAY PANACEAS UNIVERSALES EN PROGRAMACIÓN.
Arrogantes monolenguajeros
Sólo me pareció gracioso el comentario: "un lenguaje en el que no se sepa de que tipo es una variable, es un lenguaje de coña" porque descarta a lenguajes como C. Descarta todos los lenguajes con tipado débil en realidad.
El #8 quería hablar sobre lenguajes de tipado dinámico, donde el tipo de las referencias cambia, pero patinó :-). El de python, aunque el tipo de las referencias se herede del objeto referenciado, es un tipado fuerte: el tipo siempre está definido (y siempre es conocido en tiempo de ejecución). En C los tipos no cambian (son estáticos) pero su tipado es débil, tiene tipo indefinido y varios cast automáticos que dan resultados ambiguos. En C++ el tipado es fuerte y con información de tipos (el operador typeid, cast dinámicos, etc.)... Y luego está Ada con su tipado fascista
#15 En Windows, en cualquier lenguaje que soporte ActiveX es trivial. En el VisualC++/MFC es cuestión de usar una vista html. En otros instanciar el componente WebBrowser2.
la expresividad de Python no está en pegar juntos 4 widgets que ha hecho otro en C.
desarrollar un motor de visualización de HTML en Python viene a ser más o menos el mismo trabajo que en cualquier otro lenguaje; otra cosa es que te quites de en medio las llaves, que el manejo de listas sea más cómodo, que te permitan utilizar funciones de alto nivel sin la ñapa de los punteros a funciones... pero no hace magia.
los lenguajes que te pueden ahorrar código _de verdad_ son los declarativos (o si haces meta-programación con cualquier lenguaje, también te puedes ahorrar líneas).
www.kungfooo.com/PostPictures/pythonBrowser/microBrowser.py
markbyers.com/moinmoin/moin.cgi/ShortestSudokuSolver
Hablando en claro, en python no puedes sumar variables de tipo entero con cadenas de caracteres a menos que sobrecargues el operador/hagas las conversiones explícitamente. En lenguajes de coña (como C
Sobre este ejemplito de navegador la gracia está en wxWidgets. Para el que no las conozca son unas bibliotecas como las MFC pero atiborradas de esteroides. Compiten al nivel de Qt y con licencia LGPL. Claro que el mismo ejemplo (con las mismas bibliotecas) en C++ serían bastante más de 25 líneas
www.codeskipper.com/article/46/#p4
img102.imageshack.us/my.php?image=executantdb2.png (en ejecucion)
img102.imageshack.us/my.php?image=codidf0.png (codigo)
¿Cuantos años vamos a estar dando vueltas a lo mismo? Cada lenguaje (incluidos C o python) es bueno para según que cosas y circustancias de desarrollo. NO HAY PANACEAS UNIVERSALES EN PROGRAMACIÓN.
Arrogantes monolenguajeros
Saludos.
Sólo me pareció gracioso el comentario: "un lenguaje en el que no se sepa de que tipo es una variable, es un lenguaje de coña" porque descarta a lenguajes como C. Descarta todos los lenguajes con tipado débil en realidad.
El #8 quería hablar sobre lenguajes de tipado dinámico, donde el tipo de las referencias cambia, pero patinó :-). El de python, aunque el tipo de las referencias se herede del objeto referenciado, es un tipado fuerte: el tipo siempre está definido (y siempre es conocido en tiempo de ejecución). En C los tipos no cambian (son estáticos) pero su tipado es débil, tiene tipo indefinido y varios cast automáticos que dan resultados ambiguos. En C++ el tipado es fuerte y con información de tipos (el operador typeid, cast dinámicos, etc.)... Y luego está Ada con su tipado fascista
#15 En Windows, en cualquier lenguaje que soporte ActiveX es trivial. En el VisualC++/MFC es cuestión de usar una vista html. En otros instanciar el componente WebBrowser2.
Observad el poder de los script de unix de toda la vida:
#Super navegador en una sola linea de codigo
firefox &
Y ademas tiene todas las opciones de un navegador avanzado.
aquí algo que mola más, un servidor web en shellscript: www.debian-administration.org/articles/371
la expresividad de Python no está en pegar juntos 4 widgets que ha hecho otro en C.
desarrollar un motor de visualización de HTML en Python viene a ser más o menos el mismo trabajo que en cualquier otro lenguaje; otra cosa es que te quites de en medio las llaves, que el manejo de listas sea más cómodo, que te permitan utilizar funciones de alto nivel sin la ñapa de los punteros a funciones... pero no hace magia.
los lenguajes que te pueden ahorrar código _de verdad_ son los declarativos (o si haces meta-programación con cualquier lenguaje, también te puedes ahorrar líneas).
class pichas
def __init__
makeUniverse();
end;
end;
Juas,
Please contact the billing/support department as soon as possible.
perl -MIO::All -e 'io(":80")->fork->accept->(sub { $_[0] < io(-x $1 ? "./$1 |" : $1) if /^GET /(.*) / })'
Incluso es capaz de ejecutar CGI...
Y para el sudoku encontré por ahí uno de 4 líneas, pero es tan confuso que no merece la pena ponerlo...