Foros del Web » Programando para Internet » Python »

Python para programadores PHP

Estas en el tema de Python para programadores PHP en el foro de Python en Foros del Web. Python vs PHP Empecemos por las comparaciones. PHP surgió como un motor de plantillas a mediados de los 90. Es, hasta la fecha, orientado casi ...
  #1 (permalink)  
Antiguo 05/01/2014, 11:49
Avatar de razpeitia
Moderador
 
Fecha de Ingreso: marzo-2005
Ubicación: Monterrey, México
Mensajes: 7.321
Antigüedad: 19 años, 1 mes
Puntos: 1360
Python para programadores PHP

Python vs PHP

Empecemos por las comparaciones. PHP surgió como un motor de plantillas a mediados de los 90. Es, hasta la fecha, orientado casi el 100% hacia el mundo de la web.

Python por el otro lado, es un lenguaje de propósito general, a comparación de PHP no fue creado para ser exclusivamente usado para la web.

Existe una entrada muy interesante en la wiki de python, sobre python vs php. (Advertencia el link contiene material técnico).
https://wiki.python.org/moin/PythonVsPhp

Sobre el sistema el operativo
Aunque no lo creas el sistema operativo que utilices para desarrollar influye fuerte en que tan fácil o difícil sea instalar X librería.

Compilador de C
En PHP para poder utilizar X o Y librería tienes que agregar un modulo a apache (o cualquier servidor web que estén usando) y regularmente ese modulo esta hecho en C, pero compilado en algún formato binario para que pueda ser fácilmente incluido al servidor web.

Bueno en python ocurre algo similar, con la excepción que en python uno tiene que compilar esas partes escritas en C. Recuerda python es multiproposito y no requiere de un servidor web para ser interpretado.

Nota: No es necesario un copilador de C (especialmente en windows porque ya hay paquetes precompilados).

Framework VS Vanilla
Como dije antes, PHP originalmente fue un motor de plantillas. Y como tal existen 2 estilos principales a la hora de desarrollar web en PHP.

La primera es usar PHP como un motor de plantillas, el problema con esto es que en PHP es fácil inyectar lógica donde uno no debería, la separación de conceptos como tal no existe, es increíblemente fácil cometer un error y acabar haciendo un espagetti de código.

La segunda es usar algún framework, donde usando diferentes clases y archivos mantienes diferentes conceptos separados, por ejemplo la lógica de la presentación y de los datos persistentes.

Python, no nació como motor de plantillas, por lo que para hacer web siempre se recomienda el segundo estilo.

Desarrollo
En PHP usualmente instalas todo un stack de software, Apache+PHP+MySQL+etc... La ventaja es que ya existen muchos paquetes que vienen todo el uno haciendo el proceso transparente al desarrollador. Pero incluso si instala esas herramientas, al usarlo con un framework tiene que ajustar ciertos módulos, instalar otros, etc...

En python la manera de trabajar es radicalmente diferente. El servidor web no va directo a tus archivos .py y los interpreta tal como es el caso de PHP.

Al instalar un web framework traen por defecto un pequeño servidor web el cual puedes correr con algún comando desde la terminal. Usualmente este servidor web no esta preparado para producción. Este pequeño servidor web esta listo para que empieces a desarrollar. La diferencia con PHP es la siguiente:

1. Se crean las rutas (o url), y cada ruta va ligada a una vista.

2. Esa vista genera datos en algún formato, puede ser html, xml, json, yaml o algún otro formato. Y es regresado como respuesta cada vez que la url asociada a la vista sea visitada.

3. Muchos frameworks sirven el contenido estático (css, js, imagenes, etc..) por defecto. En PHP es transparente porque los archivos .php son interpretados directamente y el resto los toma como archivos estáticos. Para desarrollo esta bien servir el contenido estático por el framework no es un problema porque estas desarrollando y realmente no importa. Pero una vez en producción esto cambia.

Si ponen atención, cada vez que una url es visitada nunca dije que ese archivo .py es interpretado. De hecho los archivos .py solo se interpretan una sola vez al inicio de la aplicación. Después de eso, todo es almacenado e interpretado en la memoria principal.

Mi recomendación aquí es, no pierdan tiempo tratando de configurar todo el servidor web para que funcione como en producción. Y la razón es muy simple, porque no lo necesitas. Puedes desarrollar, probar el framework que elegiste, correr algunos scripts, ver como se comporta, probar librerías, etc... sin necesidad de configurar otro servidor web completamente diferente.

Hosting
El hosting para python es radicalmente diferente al de PHP. Mientras en PHP tienen algo llamado shared hosting. Que es usado extensivamente para pequeños desarrollos tales como: Blogs, Wikis, sitios simples con poca o nada de lógica, sitios con poco trafico, etc...

En python el concepto prácticamente no existe, si hay hosting compartidos para python, pero es escaso y casi siempre es un dolor de cabeza hacerlo funcionar. Y en general caro. Pero existen otras opciones mas económicas y fáciles de usar.

Existes PaaS (Plataform as a Service) como heroku, amazon aws, google app engine, etc... Donde hacer el deploy de tu aplicación es muy sencillo. La ventaja de estos tipos de hostings es que hasta cierto son gratis.

También existen los clásicos VPS y servidores dedicados. Los cuales tu tienes que hacerte cargo de deploy.

Deployment

Aquí es donde tienes que configurar tu servidor para que funcione con python. Y esto varia mucho dependiendo del framework que estés usando, el sistema operativo, la base de datos, el servidor web, etc...

Esta parte si haz desarrollado tu aplicación web siguiendo las mejores practicas no tendrás que cambiar el código en producción.

Recursos
Existe un montón de documentación, guías, tutoriales, screencasts y casi cualquier herramienta imaginable para aprender python orientado a la web.

No dejare links para no favorecer X o Y web framework o estilo.

Comunidad
Las comunidades de diferentes frameworks son bastante activas, tal vez no tan colosales como las de PHP, pero aun así consigues muy buenas respuestas y orientación.

Notas Especiales

Nota 1
Si quieres hacer web tal como lo estas haciendo en PHP si consejo es quedate en PHP.

Nota 2
No seguiste mi consejo y sigues tratando de hacer las cosas al estilo PHP en python, bueno en ese caso no vas a ser ignorado por la comunidad, aislado y señalado.

Y no es que la comunidad sea muy critica o prejuiciosa, si no que simplemente el día de mañana nadie va a estar dispuesto a mantener ese tipo de código.

Y digo, si algo que hiciste en 300 lineas de código usando formateo de cadenas, expresiones regulares, pritns y te tomo una cantidad considerable de tiempo mientras que alguien mas lo puede hacer el 5 mins usando librerías de un framework en unas pocas lineas código y generalizando el proceso. Bueno esta mas que claro porque nadie te iba a ayudar el primer lugar.

Nota 3
Si quieres aprender python orientado a web tienes que estar dispuesto a aprender y aceptar diferentes formas de pensamiento. Aunque esto signifique reaprender ciertas cosas desde 0.

Nota 4
No pierdas valioso tiempo de desarrollo configurando apache para aprender X o Y web framework.

Etiquetas: gui, ip, php, programadores, sistema
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Tema Cerrado




La zona horaria es GMT -6. Ahora son las 01:55.