2009-08-17 15 views
9

Ho familiarità con Python e C++ come programmatore. Stavo pensando di scrivere la mia semplice applicazione web e volevo sapere quale lingua sarebbe più appropriata per lo sviluppo web lato server.Framework di applicazioni Web: C++ vs Python

Alcune cose che sto cercando:

  • deve essere intuitivo. Riconosco che Wt esiste e segue il modello di Qt. L'unica cosa che odio di Qt è che incoraggiano una sintassi strana attraverso i mezzi offuscati (ad esempio, le "slot pubbliche:" idioma). Se scrivo C++, ho bisogno che sia un codice standard, riconoscibile e pulito. Niente fantasia stupida e sdolcinata che Qt offre.
  • Meno codice C++ o Python che devo scrivere, meglio è. La cosa su Django (framework web Python) è che ti richiede praticamente di scrivere l'HTML a mano. Penso che sarebbe bello se le forme HTML richiedessero più di un approccio wxWidgets. Wt è vicino a questo, ma segue il modello Qt invece di wxWidgets.

In genere sto scrivendo videogiochi con C++ e non ho esperienza nello sviluppo web. Voglio scrivere un bel sito web per molte ragioni. Voglio che sia un'esperienza di apprendimento, voglio che sia divertente, e voglio essere facilmente in grado di concentrarmi su "cose ​​divertenti" (ad esempio less boilerplate, più carne dell'app).

Qualche consiglio per uno sviluppatore web newbie? Immagino che i framework per app web siano la strada da percorrere, ma è solo questione di sceglierne uno.

+0

Non vorrei risparmiare la scrittura a mano HTML. L'HTML è fondamentale per come funziona il Web e scriverlo a mano per la tua prima app (a patto che non sia un'app * enorme *) sarebbe una buona idea IMO. –

+0

A mio parere, HTML è il layout proprio come wxWidgets e QT sono il layout per quanto ho visto, tuttavia entrambi questi framework della GUI hanno strumenti per aiutare a generare automaticamente le informazioni sul layout. Non ha senso per me scrivere a mano qualcosa che uno strumento potrebbe scrivere meglio, più velocemente e più facilmente. Sarebbe ideale strutturare la mia pagina web attraverso uno strumento di layout HTML della GUI e quindi incollare l'HTML generato nella mia app da inviare ai clienti. –

+0

Certo, se vuoi seguire la strada della generazione automatica di HTML, creali in Dreamweaver, o simili, e usali nel modello Django. – agiliq

risposta

7

Se si desidera evitare di scrivere HTML, è possibile provare GWT. Tuttavia, secondo la mia esperienza, usare un framework intermedio per generare HTML e ECMAScript non funziona mai da nessuna parte così come scrivere a mano le pagine.

[modifica] nikow menziona nei commenti che Pyjamas è una porta di GWT in Python.

Per quanto riguarda il linguaggio, se viene data la possibilità di scegliere tra C++ e Python, sceglierei Python il 100% delle volte. Anche ignorando l'ovvia differenza nell'astrazione tra quei linguaggi, Python ha semplicemente più librerie utili di C++. Non devi scrivere il tuo server web orientato allo sviluppo - Django ne ha uno. Non è necessario scrivere una libreria modello personalizzata - Python ha Genshi. Django è dotato di uno strato ORM capace, o per un controllo ancora maggiore puoi usare SQLAlchemy. È a malapena un concorso.

+3

Nota il progetto Pajamas, che ti consente di usare Python anziché Java per GWT. – nikow

+1

Se questa non era già la risposta selezionata, vorrei incoraggiare la pubblicazione di Pigiama come risposta. – quark

+4

Wt, la libreria C++ ha sia un server web integrato, che un potente linguaggio per i template, oltre a uno strato ORM, oltre a una buona base per il test delle unità con richieste false e quant'altro. – matiu

0

L'unico motivo per cui si desidera utilizzare C++ su Python è quando la velocità è fondamentale.

Se questa sarà la tua prima web-app, probabilmente starai bene con Python, e la tua velocità di sviluppo sarà migliore di quella con CPP.

Il linguaggio dei modelli di Django è tutt'altro che impotente, a me sembra davvero molto pitonico. In realtà puoi scrivere python puro in un modello (anche se generalmente non è raccomandato).

Ancora meglio, è possibile sostituire il sistema di template di Django con quello che ti piace. La mia lingua preferita per questo è HAML.

Ecco alcuni dati su questo: Is there a HAML implementation for use with Python and Django

+0

Non è possibile scrivere codice Python puro nel linguaggio dei modelli (predefinito) di Django. (Non vedo questo come una limitazione, però.) – mipadi

+3

"L'unica ragione per cui potresti voler usare C++ su Python è quando la velocità è fondamentale." * Un altro motivo *: evitare di creare la situazione in cui ogni piccolo progetto della tua azienda è implementato in un linguaggio di programmazione diverso, che a sua volta viene fornito con IDE diversi, libreria standard, librerie scritte personalizzate, limitazioni e limitazioni del linguaggio di programmazione, stranezze della libreria , profiler, ecc ... –

7
  • Django è buon punto per iniziare lo sviluppo del web è grande quadro
  • Se cercate C++ dare un'occhiata su CppCMS, è molto più vicino alla Django, non è come Wt che imita Qt.

In ogni caso, dipende molto dalle vostre esigenze. C++ può essere usato per applicazioni web embedded o ad alte prestazioni, ma per siti web di media gamma Django sarebbe meglio. (e sono lo sviluppatore di CppCMS)

+0

+1: Inoltre, i moduli Django non ti obbligano a scrivere HTML. La pagina nel suo complesso deve essere in HTML, ma il modulo di input HTML viene specificamente rimosso. –

1

Penso che faresti meglio a usare Python nel tuo caso, nel frattempo puoi estendere le funzionalità di cppCMS e scrivere il tuo framework attorno ad esso.

peso era un disegno buona idea, ma in qualche modo non così adatto.

1

Se si stanno esplorando i framework Python (in base alla risposta esclusa, penso che lo sia), penso che tu debba davvero a te stesso dare un'occhiata allo CherryPy. Quando scrivi applicazioni CherryPy, stai semplicemente scrivendo app Python. Lo scheletro ti toglie la strada in tutta fretta. Sei libero di scegliere il tuo modello, ORM (se scegli di utilizzare ORM), ecc. Seriamente, prendi 10 o 20 minuti e dai un'occhiata.

0

Dopo aver guardato diversi quelli, come Django, Pylos, web2py, in peso. La mia raccomandazione è web2py. È una versione pitone di "ruby on rails" e facile da imparare.

11

vorrei andare con Wt perché:

  • Sapete già C++
  • Ha una bella layout system, quindi non c'è bisogno di conoscere un sacco di HTML
  • è molto ben scritto e un piacere codice
  • le tue applicazioni distribuite gestirà 50 volte il carico delle app pitone con meno hardware (per esperienza con piloni applicazioni, 10.000 volte il carico di un'applicazione plone: ​​P)
  • ha tutte le librerie che il ragazzo nella prima questione dice che non e più
  • Web 2.0 non è un ripensamento; non è stato progettato su un modello Request + Response come tutti i framework python (per quanto ne so), ma su un modello interattivo basato su eventi.
    • Esso utilizza WebSockets se disponibile
    • ricade ajax normale con grazia se non
    • ricade http per i browser come Linx
  • È più come la codifica di un applicazione GUI di una web app , che è probabilmente quello che sei abituato a
  • È tipicamente statico e quindi meno soggetto a errori. def delete(id): prende un int o una stringa?
  • I test di unità (almeno sulle mie app) richiedono 10-100 volte meno tempo rispetto all'esecuzione delle mie app dell'app python (compreso il tempo di compilazione)
  • Ha una community forte e amichevole. Tutti i miei messaggi email list hanno una risposta in 0-3 giorni.
+3

Ora sto lavorando con un'applicazione django, aggiungerò un altro vantaggio in Wt e C++: è più esplicito e meno magico; Sto trovando con l'app django, la maggior parte del codice è nella libreria e il mio codice app è principalmente callbacks; questo rende un po 'difficile eseguire il debug perché non conosco l'ordine in cui verrà chiamato il mio codice. D'altra parte il codice django è molto meno di qualsiasi app Wt e ottiene molto lavoro con una piccola quantità di codice.Inoltre l'app django utilizza molte più risorse quando inattiva a causa del polling e delle letture dei DB. (WT sondaggi anche, ma molto piccoli pacchetti e sembra avere una migliore caching DB e notifiche). – matiu

+0

-1: se si sviluppano applicazioni senza conoscere l'HTML, si otterrà il codice scadente, l'interfaccia grafica come il modello non è buono per il web, anche Wt non supporta nemmeno il caching e il suo modello sessione sarà sempre limita le sue prestazioni – Artyom

+0

Anche il modello Wt il motore è (mi dispiace) uno scherzo. – Artyom

Problemi correlati