Je maîtrise le C et j'apprends le C++ en ce moment. J'ai toujours joué avec des sites Web (HTML/CSS), et je me demandais s'il serait viable/pratique de créer des applications Web simples en utilisant C et/ou C++.
Pour C, ce serait via des scripts CGI, comme expliqué dans ce tutoriel par exemple -> http://www.cs.tut.fi/~jkorpela/forms/cgic.html
Pour C++, cela pourrait être via une boîte à outils Web comme Wt -> http://www.webtoolkit.eu/wt
Notez que je sais que c'est possible (comme expliqué dans cette question précédente -> C++ peut-il être utilisé comme langage de développement Web côté serveur? ).
Ce que je demande, c'est si c'est viable/pratique (c'est-à-dire pas un cauchemar). Je ne souhaite pas encore choisir une autre langue car je viens de commencer avec C++, mais si cela rendait le développement Web incroyablement plus facile, je le considérerais (ou je reporterais mes projets de développement Web jusqu'à ce que je sois prêt à choisir un nouveau langage). ).
De plus, si vous pensez que c'est viable/pratique, des recommandations sur la route à suivre seraient très appréciées (c.-à-d., Oubliez C et allez avec C++, quel cadre utiliser et ainsi de suite).
Le C++ en tant que langage de serveur Web est une bonne idée sous certaines contraintes uniquement . Sur le site Web du CPPCMS :
Quand CppCMS doit être utilisé.
Le langage C++ est loin d'être populaire pour le développement Web pour de nombreuses raisons: manque d'outils appropriés, compétences des développeurs et bien d'autres.
Cependant, il existe des domaines où la programmation Web C++ avec CppCMS devient très utile et efficace, et certains où ce n'est qu'une perte de temps.
Quand CppCMS doit ou peut être utilisé?
- Sites Web et applications à charge élevée avec des centaines et des milliers de visites par seconde, où des performances, une efficacité et une évolutivité élevées sont requises.
- Application qui nécessite des technologies Comet/Server Push1 évolutives --- CppCMS peut gérer efficacement des centaines et des milliers de connexions HTTP simultanées avec une utilisation minimale des ressources.
- Intégration de l'interface Web2 dans les applications/services C++ existants avec un faible coût de bibliothèque supplémentaire.
- Dispositifs sous-alimentés intégrés - CppCMS permet la création d'applications riches avec un coût relativement faible de matériel qui fonctionnerait assez rapidement.
Quand ne pas utiliser?
Si vous créez de petites applications Web qui ne nécessitent pas de charges élevées et nécessitent un délai de commercialisation très court, des outils tels que Django ou RoR seraient probablement plus appropriés pour de telles tâches).
Jetez également un œil à la raison d'être du CPPCMS .
Si vous créez votre blog personnel, créez une petite ou même moyenne communauté ou construisez un site web pour une petite entreprise --- CppCMS n'est pas pour vous. Prenez n'importe quel CMS existant et bon comme Drupal ou développez avec un grand Django framework, tout ira bien.
Cependant, lorsque les charges deviennent supérieures à la moyenne, le processus de mise à l'échelle à l'aide de frameworks Web existants peut être douloureux:
Les faibles performances des langages dynamiques ou JIT vous obligent à ajouter plus de serveurs même sur des charges assez faibles. La mise en cache devient plus compliquée et moins efficace car le système est distribué et ne se transforme pas de façon linéaire. La création d'un tel système nécessite des compétences et des coûts encore plus élevés. CppCMS vous permet d'augmenter les performances d'un système typique d'un ordre de grandeur et donc:
Supprimez la nécessité de maintenir une grande batterie de serveurs où peu de serveurs ou même un seul résoudraient les problèmes de charge. Réduisez les coûts de maintenance et la consommation d'énergie.
Maintenant, si vous pensez créer ce type de site Web, cela pourrait vous intéresser.
Notez que la plupart des développeurs n'auront pas besoin d'une telle puissance. Si vous voulez faire quelque chose qui pourrait vraiment consommer de l'énergie, et d'une manière qui est évidente, pas parce que vous pessimisez, alors pourquoi ne pas utiliser C++.
Aujourd'hui, le développement Web C++ est aussi simple que le développement Web avec d'autres langages traditionnels pour ce domaine (Java, C #, Rails, PHP, Python).
CppCMS vous donne tout ce dont vous avez besoin pour faire du développement web en C++.
Donc si C++ est le langage de votre choix ... Il n'y a aucune raison de ne pas utiliser C++.
Cependant, vous devrez toujours apprendre de nombreux concepts de développement Web: HTML, Ajax, Forms, MVC, SQL, Gestion de session, etc.
Divulgation: je suis l'auteur de CppCMS.
J'ai fait du développement web en C++, et je suis convaincu que ce n'est pas le bon outil pour le travail . Principalement parce que c'est un langage "batteries non incluses", où ces "batteries" sont des choses comme:
qui sont présents dans la Python ou . NET Framework .
Vous pouvez obtenir cette fonctionnalité en C++ avec des bibliothèques tierces comme POCO , mais c'est toujours moins pratique que de l'avoir en standard.
Pour les applications côté serveur, la réponse est absolument oui. De nombreux grands sites utilisent C++ simplement pour fournir les performances et l'utilisation des ressources que les langages de script ne font pas. Il y a de nombreuses années, beaucoup de code de serveur Web était de toute façon écrit en C++ (voir des choses comme les frameworks ISAPI ou ATLServer de Microsoft) ou tout simplement comme des applications CGI. Cela a changé lorsque le Web est devenu plus populaire et a nécessité une accélération du développement. Un langage de script sera toujours plus rapide à développer, surtout lorsque vous `` associez quelque chose ensemble '', et a toujours été très populaire auprès des développeurs débutants qui se lancent dans la programmation.
Pour preuve, le langage le plus populaire pour le développement Web, PHP. C'est un bel environnement dans lequel travailler mais personne ne dira que c'est la meilleure langue du monde.
Aujourd'hui, j'espère que les choses ont mûri au point où le backend côté serveur devrait être écrit avec autant de soin professionnel que toute autre application. Cela signifie que C++ peut faire un retour dans le développement Web (et je pense que MS va dans ce sens, car Herb Sutter a rapporté que C++ réduira les besoins énergétiques du centre de données, qui avec d'énormes centres de données que nous avons aujourd'hui signifie une économie significative. D'où la renaissance du C++ chez MS, même si je ne suis pas convaincu que cela deviendra autre chose qu'un logiciel système pour eux)
Une chose à noter cependant: il est trivial d'écrire un logiciel d'arrière-plan C++ qui repose sur des services appelés à partir de scripts simples sur le serveur Web. Je l'ai fait avec mon ancien lieu de travail - le serveur Web était là uniquement pour fournir une transmission aux services d'application. Cela nous a permis de fournir une bien meilleure sécurité (toute personne piratant le serveur Web exposé a eu très peu de travail), de bien meilleures performances (car la logique métier était distribuée sur des serveurs qui ne servaient pas de serveur Web), et ils étaient très faciles à tester - les services dorsaux étaient autonomes et fournissaient des interfaces explicites et bien définies afin de pouvoir être testés sans la partie Web de l'infrastructure totale.
Il existe également des développements intéressants en C++ en tant que code client de serveur Web. J'ai vu Wt récemment. Cela vous permet d'écrire du code Qt mais d'avoir l'affichage GUI dans le navigateur - les gadgets affichés sur le navigateur sont juste du javascript/html/etc fin qui appellent de manière transparente le code Qt/C++ exécuté sur le serveur. Essayez leur Hangman exemple (bien qu'ils obtiennent 0/10 pour les graphiques, les développeurs typiques :))
Je pense que c'est une évolution naturelle des mécanismes RPC, où une fois que nous pouvions exécuter un objet localement ou à distance sans (en tant que développeur) se soucier de l'emplacement de l'objet, nous pouvons maintenant déconnecter l'interface graphique des objets dans un navigateur Web plutôt qu'une application de bureau .
Oui, C++ peut être utilisé. Je recommanderais d'utiliser un framework comme Lacewing pour simplifier les choses.
Il y a deux bonnes raisons d'utiliser C++ pour le développement Web
Je peux recommander la bibliothèque mongoose comme interface web pour les programmes basés sur C, je l'ai utilisée plusieurs fois et elle est très facile à utiliser.
Bien que [~ # ~] php [~ # ~] soit une meilleure option pour le développement Web que C ou C++. C'est facile à apprendre une fois que vous connaissez C et C++ (la syntaxe est très similaire). Vous pouvez économiser plus d'efforts en apprenant PHP que de lutter avec C et C++ pour le développement Web...
L'IIRC eBay est construit sur ISAPI qui a été écrit en C++ en utilisant les modules du serveur Microsoft Active Template Library.
Il est possible qu'ils aient fait un pari précoce sur celui-ci, mais n'ont maintenant aucune raison commerciale impérieuse de s'en éloigner. En effet, Facebook est compilé en un seul gros binaire C++ mais ils se développent en PHP et utilisent le compilateur HipHop pour transliter:
Cross-compilateur HipHop: https://developers.facebook.com/blog/post/2010/02/02/hiphop-for-php--move-fast/
Binaire unique: http://en.wikipedia.org/wiki/HipHop_for_PHP#HPHPc