Sono C e / o C ++ opzioni praticabili / pratiche per lo sviluppo web? [duplicare]

30

Sono abile in C, e sto imparando C ++ in questo momento. Ho sempre giocato con i siti web (HTML / CSS) e mi chiedevo se sarebbe possibile / pratico creare alcune semplici app web usando C e / o C ++.

Per C sarebbe tramite gli script CGI, come spiegato in questo tutorial per esempio - > link

Per C ++ potrebbe essere tramite un toolkit web come Wt - > link

Nota che so che è possibile (come spiegato in questa precedente domanda - > È possibile utilizzare C ++ come linguaggio di sviluppo Web lato server? ).

Quello che sto chiedendo è se è praticabile / pratico (cioè non un incubo). Non sono entusiasta di prendere un'altra lingua ancora come ho appena iniziato con C ++, ma se lo renderebbe lo sviluppo del web incredibilmente più facile lo prenderò in considerazione (o rimanderò i miei progetti di sviluppo web fino a quando non sarò pronto per imparare una nuova lingua ).

Inoltre, nel caso in cui ritieni che sia fattibile / pratico, le raccomandazioni sul percorso da seguire sarebbero molto apprezzate (ad esempio, dimentica C e vai con C ++, quale framework usare e così via).

    
posta Daniel Scocco 28.01.2012 - 18:09
fonte

8 risposte

28

C ++ come linguaggio del server Web è una buona idea solo sotto alcuni vincoli . Dal sito web CPPCMS :

When CppCMS Should Be Used.

C++ language is far from being popular for Web development for many reasons: lack of appropriate tools, skills of developers and many more.

However, there are areas where C++ web programming with CppCMS becomes very useful and efficient, and some where it is just a waste of time.

When CppCMS should or can be used?

  1. High load web sites and application with hundreds and thousands hits per second, where high performance, efficiency and scalability is required.
  2. Application that require scalable Comet/Server Push1 technologies --- CppCMS can efficiently handle hundreds and thousands simultaneous HTTP connection with minimal resources usage.
  3. Embedding web interface2 into existing C++ applications/services with a small cost of additional library.
  4. Embedded underpowered devices -- CppCMS allows creation of rich applications with relatively low cost of hardware that would perform reasonably fast.

When Not To Use?

If you create small web applications that do not require high loads and require very short time-to-market period -- probably tools like Django or RoR would be more appropriate for such tasks.

Inoltre, dai un'occhiata a il razionale per la necessità di CPPCMS .

If you build your personal blog, create small or even medium community or building a web site for a small company --- CppCMS is not for you. Take any of existing and good CMS like Drupal or develop with great Django framework, you'll be fine.

However, when the loads become more then average, the process of scale-up using existing web frameworks may be painful:

Low performance of dynamic or JIT languages enforces you to add more servers even on quite small loads. The caching becomes more complicated and less efficient because the system becomes distributed and does not scale-up linearly. Creation of such system requires skilled stuff and costs even more. CppCMS allows you to increase the performance of typical system by an order of magnitude and thus:

Remove requirement of maintaining a big server farm where few servers or even single one would solve the load problems. Reduce maintenance costs and power consumption.

Ora, se pensi di fare questo tipo di sito web, potrebbe essere interessante.

Si noti che la maggior parte degli sviluppatori non avrà bisogno di tale potenza. Se vuoi fare qualcosa che potrebbe davvero essere dispendioso in termini di energia, e in un modo che è ovvio, non perché pessimizzi, allora perché non usare il C ++.

    
risposta data 28.01.2012 - 18:19
fonte
25

Oggi lo sviluppo web C ++ è facile come lo sviluppo web con altri linguaggi che sono tradizionali per questo campo (Java, C #, Rails, PHP, Python).

CppCMS ti offre tutto ciò di cui hai bisogno per lo sviluppo web in C ++.

Quindi se C ++ è la lingua che hai scelto ... Non c'è ragione per non usare C ++.

Tuttavia avrai ancora bisogno di imparare molti concetti di sviluppo web: HTML, Ajax, Forms, MVC, SQL, gestione delle sessioni e così via.

Divulgazione: sono l'autore di CppCMS.

    
risposta data 28.01.2012 - 20:56
fonte
16

Ho fatto lo sviluppo web in C ++ e sono convinto che sia lo strumento sbagliato per il lavoro . Principalmente perché è una lingua "batterie non incluse", dove quelle "batterie" sono cose come:

  • Supporto Unicode
  • Analizzatori / builder per formati di dati comuni:
    • XML
    • JSON
    • Messaggi MIME
  • un client di database SQL

che sono presenti in libreria standard Python o . NET Framework .

Puoi ottenere questa funzionalità in C ++ con librerie di terze parti come POCO , ma è ancora meno conveniente che averlo standard.

    
risposta data 28.01.2012 - 19:24
fonte
11

Si può usare C ++. Consiglierei di utilizzare un framework come Lacewing per semplificare le cose.

Ci sono due buoni motivi per usare C ++ per lo sviluppo web

  • È necessario un server HTTP su un dispositivo incorporato
  • Hai bisogno di velocità, velocità reale. Sia il ridimensionamento in milioni o il calcolo della CPU (si pensi all'elaborazione dinamica delle immagini o all'intelligenza artificiale intensa)
risposta data 28.01.2012 - 20:33
fonte
11

Per le applicazioni lato server, la risposta è assolutamente sì. Molti siti di grandi dimensioni usano C ++ semplicemente per fornire prestazioni e utilizzo delle risorse che i linguaggi di scripting non fanno. Molti anni fa un sacco di codice web server era scritto in C ++ in ogni caso (vedi cose come i framework ISAPI o ATLServer di Microsoft) o solo come applicazioni CGI. Ciò è cambiato quando il web è diventato più popolare e ha richiesto uno sviluppo più rapido. Un linguaggio di script sarà sempre più veloce da sviluppare, specialmente quando stai solo "buttando qualcosa insieme", ed è sempre stato molto popolare tra gli sviluppatori junior che hanno iniziato a programmare.

Come prova del linguaggio più popolare per lo sviluppo web, PHP. È un ambiente raffinato in cui lavorare ma nessuno dirà che è la migliore lingua del mondo.

Oggi, mi auguro che le cose siano maturate a un punto in cui il back-end lato server dovrebbe essere scritto con la stessa cura professionale di qualsiasi altra applicazione. Ciò significa che C ++ può fare un ritorno nello sviluppo web (e penso che la SM stia andando così, come Herb Sutter ha riportato che C ++ ridurrà i requisiti energetici nel data center, che con enormi datacenter che abbiamo oggi significa un significativo risparmio di costi, quindi la rinascita del C ++ alla SM, anche se io Non sono convinto che si trasformerà in qualcosa di diverso dal software di sistema per loro)

Una cosa da notare però: è banale scrivere software backend C ++ che siedono come servizi chiamati da semplici script sul server web. Ho fatto questo con il mio vecchio posto di lavoro - il server web era lì solo per fornire un pass-through ai servizi applicativi. Questo ci ha permesso di fornire una sicurezza molto migliore (chiunque abbia hackerato il server web esposto ha avuto pochissimo da lavorare), prestazioni molto migliori (dato che la logica di business era distribuita su server che non servivano web), ed erano molto facili da testare - i servizi di back-end erano stand-alone e fornivano interfacce esplicite e ben definite per poter essere testati senza la web part dell'infrastruttura totale.

Ci sono alcuni interessanti sviluppi in C ++ come codice client del server web. Ho visto di recente Wt . Ciò consente di scrivere codice Qt ma avere la GUI visualizzata nel browser - i gadget visualizzati nel browser sono solo javascript / html / etc sottili che chiamano in modo trasparente nel codice Qt / C ++ in esecuzione sul server. Provate con il loro esempio Hangman (anche se ottengono 0/10 per la grafica, gli sviluppatori tipici :))

Penso che questa sia una naturale evoluzione dei meccanismi RPC, dove una volta potevamo eseguire un oggetto localmente o in remoto senza (come sviluppatore) preoccuparsi di dove si trovava l'oggetto, ora possiamo disconnettere la GUI dagli oggetti in un browser web piuttosto che un'app desktop.

    
risposta data 29.01.2012 - 16:31
fonte
1

Posso consigliare la mangusta come interfaccia web per programmi basati su C, l'ho usata più volte e è molto facile da usare.

Anche se forse PHP è un'opzione migliore per lo sviluppo web di C o C ++. È facile imparare una volta che conosci C e C ++ (la sintassi è molto simile). Puoi risparmiare più fatica con l'apprendimento di PHP rispetto a C e C ++ per lo sviluppo web. . .

    
risposta data 29.01.2012 - 16:01
fonte
1

IIRC eBay è basato su ISAPI che è stato scritto in C ++ utilizzando i moduli del server Microsoft Active Template Library.

È possibile che abbiano fatto una scommessa puntuale su di esso, ma ora non hanno motivi commerciali convincenti per spostarsi. Infatti, Facebook è compilato in un unico grande file binario C ++ ma si sviluppa in PHP e utilizza il compilatore HipHop per la traslitterazione:

Cross-compiler HipHop: link

Singolo binario: link

    
risposta data 26.04.2012 - 19:25
fonte
-2

Per le pagine Web, sì il tuo HTML e CSS sono buoni (ora ancora meglio con HTML5 e CSS3). Per le app Web probabilmente Flash e HTML5.

Quello che sto dicendo è che questi sono i modi più semplici e veloci a causa delle risorse disponibili rispetto a C e C ++ a meno che tu non sia un appassionato di C ++ hardcore o se stai cercando di realizzare qualcosa di grande!

    
risposta data 04.02.2012 - 01:56
fonte

Leggi altre domande sui tag