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
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:
#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.
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.
#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
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 )
#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.
Comentarios
http://www.kungfooo.com/PostPictures/pythonBrowser/screenshot1.png
http://www.kungfooo.com/PostPictures/pythonBrowser/microBrowser.py
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:
http://markbyers.com/moinmoin/moin.cgi/ShortestSudokuSolver
#2 Es acojonante ese último ejemplo!! Con solo dos líneas te resuelve sudokus. Me quedo anonadada
s/Phyton/Python/
La unica magia que hay es que usa funciones de librerias que le hacen todo el trabajo.
#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.
#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
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.
#7 ¿O sea la potencia de las librerias de Python?
#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
Con KDE también se puede hacer un navegador en pocas líneas de código:
http://www.codeskipper.com/article/46/#p4
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 )
(en ejecucion)Y con .NET tambien, basta incrustar un widget navegador en la ventana, fin!
#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
Y q se me olvido postear:
(28 lineas, lo mismo pero dejando solo lo necesario)Saludos.
#14 ¿Yo he dicho eso?
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.
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.
#17 estoy contigo
aquí algo que mola más, un servidor web en shellscript: http://www.debian-administration.org/articles/371
import libreriaConMedioUniversoDentro;
class pichas
def __init__
makeUniverse();
end;
end;
#16 "...Y luego está Ada con su tipado fascista..."
Juas,
This Account Has Been Suspended
Please contact the billing/support department as soon as possible.
Como bien se ha dicho antes, con una línea y las bibliotecas adecuadas, vale:
perl -MIO::All -e 'io(":80")->fork->accept->(sub )'
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...