165 meneos

Un navegador web con 25 líneas de código en Python

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

negativos: 1   usuarios: 165   anónimos: 0  
compartir:  twitter  facebook  tuenti  
  1. #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:

    markbyers.com/moinmoin/moin.cgi/ShortestSudokuSolver
    7  votos: 0   link
    el 17-09-2006 12:37 UTC por joseluis joseluis
  2. #3   #2 Es acojonante ese último ejemplo!! Con solo dos líneas te resuelve sudokus. Me quedo anonadada
    15  votos: 0   link
    el 17-09-2006 12:39 UTC por loretahur loretahur
  3. #4   s/Phyton/Python/
    7  votos: 0   link
    el 17-09-2006 13:00 UTC por Xose Xose
  4. #5   La unica magia que hay es que usa funciones de librerias que le hacen todo el trabajo.
    6  votos: 0   link
    el 17-09-2006 13:04 UTC por --9937-- --9937--
  5. #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.
    13  votos: 0   link
    el 17-09-2006 13:11 UTC por Akron Akron
  6. #7   #5 Esa es la gracia de un buen lengua de programación: que se surta de muchísimas librerías y así no reinventar la rueda continuamente
    15  votos: 0   link
    el 17-09-2006 13:35 UTC por loretahur loretahur
  7. #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.
    6  votos: 0   link
    el 17-09-2006 13:46 UTC por --9937-- --9937--
  8. #9   #7 ¿O sea la potencia de las librerias de Python?
    8  votos: 0   link
    el 17-09-2006 15:23 UTC por otroqueseborra otroqueseborra
  9. #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 xD ) 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 :roll:

    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 :-D
    9  votos: 0   link
    el 17-09-2006 16:03 UTC por jorginius jorginius
  10. #11   Con KDE también se puede hacer un navegador en pocas líneas de código:
    www.codeskipper.com/article/46/#p4
    8  votos: 0   link
    el 17-09-2006 16:27 UTC por vfernandez vfernandez
  11. #12   Bueno, con Delphi (y otros) tambien se puede hacer un sencillo navegador (cutre, ya q usa el motor del explorer en este caso xD ) 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 xD )

    img102.imageshack.us/my.php?image=executantdb2.png (en ejecucion)
    img102.imageshack.us/my.php?image=codidf0.png (codigo)
    6  votos: 0   link
    el 17-09-2006 16:31 UTC por xEsk xEsk
  12. #13   Y con .NET tambien, basta incrustar un widget navegador en la ventana, fin!
    6  votos: 0   link
    el 17-09-2006 16:31 UTC por tamat tamat
  13. #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 :-P
    6  votos: 0   link
    el 17-09-2006 16:36 UTC por mambo mambo
  14. #15   Y q se me olvido postear: img59.imageshack.us/my.php?image=codi28uk9.png (28 lineas, lo mismo pero dejando solo lo necesario)

    Saludos.
    6  votos: 0   link
    el 17-09-2006 16:38 UTC por xEsk xEsk
  15. #16   #14 ¿Yo he dicho eso? :roll:

    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 :roll:

    #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.
    9  votos: 0   link
    el 17-09-2006 17:23 UTC por jorginius jorginius
  16. #17   Que pringaos sois todos. Usando decenas de lineas...

    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.
    6  votos: 0   link
    el 17-09-2006 17:28 UTC por --9937-- --9937--
  17. #18   #17 estoy contigo xD

    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).
    8  votos: 0   link
    el 17-09-2006 17:35 UTC por --2479-- --2479--
  18. #19   import libreriaConMedioUniversoDentro;
    class pichas
    def __init__
    makeUniverse();
    end;
    end;
    6  votos: 0   link
    el 17-09-2006 19:05 UTC por Blaxter Blaxter
  19. #20   #16 "...Y luego está Ada con su tipado fascista..."

    Juas, :-D
    6  votos: 0   link
    el 17-09-2006 22:18 UTC por teskmon teskmon
  20. #21   This Account Has Been Suspended
    Please contact the billing/support department as soon as possible.

    :-(
    6  votos: 0   link
    el 18-09-2006 00:29 UTC por apocalypso apocalypso
  21. #22   Como bien se ha dicho antes, con una línea y las bibliotecas adecuadas, vale:

    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...
    6  votos: 0   link
    el 18-09-2006 00:59 UTC por jferrero jferrero
comentarios cerrados

menéame