2009-08-17 24 views
9

Estoy familiarizado con Python y C++ como programador. Estaba pensando en escribir mi propia aplicación web simple y quería saber qué idioma sería más apropiado para el desarrollo web del lado del servidor.Marcos de aplicaciones web: C++ vs Python

Algunas cosas que estoy buscando:

  • Tiene que ser intuitivo. Reconozco que existe y sigue el modelo de Qt. Lo único que odio de Qt es que fomentan la sintaxis extraña a través de medios ofuscados (por ejemplo, el modismo de "espacios públicos:"). Si voy a escribir C++, necesito que sea un código estándar, reconocible y limpio. No hay fantasías de shmancy sofisticadas que Qt proporciona.
  • Cuanto menos código C++ o Python tenga que escribir, mejor. Lo que pasa con Django (framework web de Python) es que requiere escribir el HTML a mano. Creo que sería genial si los formularios HTML tomaran más un enfoque de wxWidgets. Wt está cerca de esto, pero sigue el modelo Qt en lugar de wxWidgets.

Normalmente estoy escribiendo juegos de video con C++ y no tengo experiencia en desarrollo web. Quiero escribir un buen sitio web por muchas razones. Quiero que sea una experiencia de aprendizaje, quiero que sea divertido, y quiero ser capaz de concentrarme fácilmente en "cosas divertidas" (por ejemplo, menos repetitivo, más carne de la aplicación).

¿Algún consejo para un desarrollador web novato? Supongo que los marcos de aplicaciones web son el camino a seguir, pero solo es cuestión de elegir uno.

+0

No descartaría escribir HTML a mano. HTML es fundamental para la forma en que funciona la web y escribirla a mano para su primera aplicación (siempre que no sea una * gran * aplicación) sería una buena idea IMO. –

+0

En mi opinión, el diseño de HTML es similar al de wxWidgets y QT en cuanto a diseño, sin embargo, ambos marcos de GUI tienen herramientas para ayudar a generar automáticamente esa información de diseño. Simplemente no tiene sentido escribir a mano algo que una herramienta podría escribir mejor, más rápido y más fácil. Sería ideal estructurar mi página web a través de una herramienta de diseño HTML GUI y luego pegar el código HTML generado en mi aplicación para enviar a los clientes. –

+0

Claro, si quiere ir por la ruta de generación automática de HTML, créelo en Dreamweaver o similar y úselo en la plantilla de Django. – agiliq

Respuesta

7

Si desea evitar escribir HTML, puede intentar GWT. Sin embargo, en mi experiencia, usar un marco intermedio para generar HTML y ECMAScript nunca funciona en ninguna parte, así como tampoco escribir manualmente las páginas.

[editar] nikow menciona en los comentarios que Pyjamas es un puerto de GWT a Python.

En cuanto al idioma, si tuviera que elegir entre C++ y Python elegiría Python el 100% del tiempo. Incluso ignorando la diferencia obvia en la abstracción entre esos lenguajes, Python simplemente tiene más bibliotecas útiles que C++. No tiene que escribir su propio servidor web orientado al desarrollo: Django viene con uno. No necesita escribir una biblioteca de plantillas personalizada: Python tiene Genshi. Django viene con una capa ORM capaz, o para un mayor control puede usar SQLAlchemy. Es apenas un concurso.

+3

Tenga en cuenta el proyecto de pijamas, que le permite utilizar Python en lugar de Java para GWT. – nikow

+1

Si esta no era ya la respuesta seleccionada, recomendaría publicar Pijamas como su propia respuesta. – quark

+4

Wt, la biblioteca C++ tiene tanto un servidor web incorporado como un poderoso lenguaje de plantillas, más una capa ORM, además de una buena base para probar unidades con solicitudes falsas y otras cosas. – matiu

0

La única razón por la que quizás desee usar C++ sobre Python es cuando la velocidad es primordial.

Si esta va a ser su primera aplicación web, probablemente esté bien solo con Python, y su velocidad de desarrollo será de órdenes de magnitud mejor que con CPP.

El lenguaje de plantillas de Django está lejos de ser impotente, para mí realmente parece muy pitónico. De hecho, puede escribir python puro en una plantilla (aunque esto generalmente no se recomienda).

Aún mejor, es posible reemplazar el sistema de plantillas de Django por el que más te guste. Mi lenguaje favorito personal para esto es HAML.

He aquí algunos datos sobre esto: Is there a HAML implementation for use with Python and Django

+0

No se puede escribir el código de Python puro en el lenguaje de plantillas de Django (predeterminado). (No veo esto como una limitación, sin embargo). – mipadi

+3

"La única razón por la que es posible que desee utilizar C++ sobre Python es cuando la velocidad es primordial". * Otra razón *: evitar crear la situación en la que cada pequeño proyecto de su empresa se implementa en un lenguaje de programación diferente, que a su vez viene con un IDE diferente, biblioteca estándar, bibliotecas escritas a medida, caprichos y limitaciones del lenguaje de programación, caprichos de la biblioteca , perfiladores, etc ... –

7
  • Django es buen punto para iniciar el desarrollo web es un gran marco
  • Si nos fijamos para C++ echar un vistazo en CppCMS, es mucho más cerca Django, no es como Wt que imita a Qt.

En cualquier caso, realmente depende de sus necesidades. C++ se puede usar para aplicaciones web integradas o de alto rendimiento, pero para sitios web de rango medio Django sería mejor. (y soy desarrollador de CppCMS)

+0

+1: Además, los formularios de Django no lo obligan a escribir HTML. La página como un todo debe estar en HTML, pero el formulario de entrada HTML se le quita específicamente. –

1

Creo que es mejor que vengas a python en tu caso, mientras tanto puedes extender las funcionalidades de cppCMS y escribir tu propio framework a su alrededor.

wt era una buena idea de diseño, pero de alguna manera no es adecuada.

1

Si está explorando frameworks de Python (basado en la respuesta exceptuada, creo que es así), creo que realmente se debe a usted mismo para verificar CherryPy. Cuando escribes aplicaciones CherryPy, realmente solo escribes aplicaciones de Python. El marco se sale de tu camino con mucha prisa. Es libre de elegir sus propias plantillas, ORM (si elige usar ORM), etc. En serio, tómese 10 o 20 minutos y eche un vistazo.

0

Después de mirar varios, como django, pylos, web2py, wt. Mi recomendación es web2py. Es una versión en python de "ruby on rails" y fácil de aprender.

11

Me gustaría ir con peso porque:

  • Usted ya conoce C++
  • Tiene un bonito layout system, por lo que no necesita saber un montón de HTML
  • Está muy bien escrita y un placer codificar en
  • Sus aplicaciones implementadas manejarán 50 veces la carga de la aplicación de Python en menos hardware (de la experiencia con aplicaciones de pilones, 10.000 veces la carga de una aplicación plone: ​​P)
  • Tiene todas las bibliotecas que el chico en la primera pregunta dice que no y más
  • Web 2.0 no es una idea posterior; no fue diseñado en un modelo Request + Response como todos los frameworks de python (hasta donde yo sé), sino en un modelo interactivo impulsado por eventos.
    • Utiliza WebSockets si está disponible
    • cae de nuevo a Ajax normales con gracia si no
    • cae de nuevo a HTTP para navegadores como Linx
  • Es más como la codificación de una aplicación de interfaz gráfica de usuario de una aplicación web , que es probablemente lo que está acostumbrado a
  • Está tipado estáticamente y, por lo tanto, es menos propenso a errores. ¿def delete(id): toma un int o una cadena?
  • Las pruebas unitarias (al menos en mis aplicaciones) tardan entre 10 y 100 veces menos tiempo que las pruebas de la unidad de aplicaciones python (incluido el tiempo de compilación)
  • Tiene una comunidad sólida y amigable. Todas mis publicaciones email list se responden en 0-3 días.
+3

Ahora estoy trabajando con una aplicación django, agregaré otra ventaja Wt y C++: es más explícita y menos mágica; Estoy descubriendo que con la aplicación django, la mayoría del código está en la biblioteca y el código de mi aplicación es principalmente devoluciones de llamada; esto hace que sea un poco difícil depurar ya que no conozco el orden en que se llamará mi código. Por otro lado, el código de django es mucho menos que cualquier aplicación de Wt y se hace mucho con una pequeña cantidad de código.Además, la aplicación django usa muchos más recursos cuando está inactiva debido al sondeo y las lecturas de DB. (Wt sondea también, pero los paquetes son muy pequeños y parece tener un mejor almacenamiento en caché de DB y notificaciones). – matiu

+0

-1: si desarrolla aplicaciones sin conocer HTML, obtendrá códigos maliciosos, el modelo GUI like no es bueno para web, ni siquiera admitirá el almacenamiento en caché y su modelo de sesión siempre limitará su rendimiento – Artyom

+0

También la plantilla Wt el motor es (lo siento) una broma. – Artyom

Cuestiones relacionadas