Vous n'êtes pas identifié.
Pages: 1
Discussion fermée
Salut,
Nouveau sur le Web (et encore plus sous Linux), j'ai écrit
un logiciel permettant de faire des applications Web avec
des scripts en C (sous Windows et sous Linux).
Ces scripts sont beaucoup plus rapides que C#, Java, PHP
et les autres languages Web, mais je me demandais quelle
réactions cela pouvait provoquer chez les développeurs.
Bien sûr, je m'attends à ce que les programmeurs C soient
ravis de ne pas avoir à apprendre un autre langage pour
faire du Web, mais l'opinion des autres développeurs
m'intéresse également.
Merci de participer à cette reflexion!
Pierre.
Dernière modification par fbianco (22 Oct 2010 21:34:17)
Hors ligne
Ne serait-ce pas gwan (http://gwan.ch/en_about.html) des fois ?
C'est dans ma "todo list" pour les tests - ça peut être pas mal intéressant si les perfs sont là. Pour le moment je fais du pylons, mais...
Edit: ah bin en tombant sur ton autre post (http://swisslinux.org/forum/viewtopic.php?id=2750) si .
Dernière modification par Tengu (21 Oct 2010 15:44:52)
Hors ligne
Salut,
Merci pour l'outil. Apache et mod_c peuvent aller se cacher...
Meilleures salutations.
Hors ligne
Ok c'est interessant.
Je l'avais fait avec cgi mais à part des cas très particulier je pense que c'est une GROSSE erreur.
Si on a besoin de fait bcp de traitement c'est souvent pas au niveau de la génération des pages mais derrière.
Le C n'est pas adapté pour ce genre du chose.
Dans le meme genre http://libre.adacore.com/libre/tools/aws/
C'est en ada:
- sous GPL
- sécurité, typage fort de ada
- c'est pas un mod c'est un serveur a part entiere
- pas de pointeurs dangereux
- orienté objet (ou pas a vous de choisir)
- portable (le C n'est pas portable, 1 2 3 trollez)
Hors ligne
Je rejoins totalement tguillod.
Et je vais ajouter que le benchmark me semble comparer des pommes et des poires. Est-ce que gwan gère ssl, l'authentification http, le contrôle d'accès, fait proxy, gère les vhosts, dispose de réécriture des urls, gère le multilangue, les encodages différents, etc etc ? c'est malhonnête de comparer les performances sans les fonctionnalités.
Hors ligne
J'accepterai tous les arguments, sauf ceux qui sont totalement faux:
@tguillod,
"Le C n'est pas portable"?
Ah. Pourtant, toutes les plateformes ont un compilateur C... qui est
utilisé pour faire le runtime de vos langages Web favoris (lesquels
n'existeraient pas sans le C).
So much for the "GROSSE erreur"...
Le C est parfaitement adapté aux applications Web... à condition
bien sûr de savoir ce que c'est que le C.
@BOFH,
G-WAN gère les vhosts, et la prochaîne version apportera SSL/TLS,
le reverse-proxy, SCGI, la ré-écriture d'URLs, les redirection, etc.
Tout ceci n'ayant pas rendu G-WAN plus lent, il est "malhonnête"
de prétendre que les fonctionalités doivent ralentir un logiciel.
Par ailleurs, ni Apache ni Nginx ni même IIS ne supportent de
langage de script nativement (ce sont tous des rajouts) ce qui
détruit l'argument voulant que G-WAN n'offre pas de fonctionalités.
Pierre.
Hors ligne
Oui, bon..
"Pourtant, toutes les plateformes ont un compilateur C... qui est utilisé pour faire le runtime de vos langages Web favoris"
Toutes les plateformes ont un langage d'assemblage, dans lequel sont écrites les primitives du C. ça signifie que l'assembleur est un langage portable ?
Si le C est vraiment portable, pourquoi doit-on se farcir l'horreur que sont les autotools ou leurs concurrents ? et pourquoi gwan n'est-il disponible que sur linux 32bits ?
En ce qui concerne la grosse erreur, et le point sur lequel je rejoins tguillod, ce n'est pas la performance mais la sécurité. Même si le peu de code qu'on voit de gwan (les headers) a l'air soigneusement écrit, ça ne sera pas forcément le cas des servlets. La dernière chose dont j'ai envie, c'est de devoir auditer individuellement chaque servlet en sachant qu'elles recèlent peut-être une exécution de code arbitraire. Je vois qu'il y a une petite lib de buffer à taille variable, ce qui est sûrement une très bonne chose, mais je ne pense pas que ça soit suffisant pour garantir la sûreté du code en toutes circonstances.
Globalement, cela m'apparait comme un gros retour en arrière en matière de sûreté (mais j'aime bien les langages abstraits, alors je suis surement biaisé)
Dernier point que je n'avais pas remarqué avant: d'ou sort le chiffre de 5 millions ?
Au mieux, on observe un facteur de 400000 si on compare a la fois les RPS et le nombre de users servis. MAIS: pour que ce chiffre aie un sens, il faudrait que le RPS soit le RPS par utilisateur et pas le RPS total. Alors, ce n'est pas indiqué, mais la courbe a la tête d'un rps total (la pente raide au début et le plafond ensuite) alors que pour un RPS par utilisateur on s'attendrait a un plateau au début et une décroissance géométrique ensuite.
Je demanderai aussi pourquoi les graphes présentent le RPS et pas le temps de traitement moyen d'une requête. L'inversion favorise visuellement les résultats les plus hauts, et généralement les temps de traitement sont une mesure plus intuitive du cout d'une opération.
Hors ligne
@BOFH,
Un langage portable signifie que le MEME CODE SOURCE peut
être utilisé sur plusieurs plateformes.
C'est le cas du C, mais pas celui de l'assembleur. L'assembleur
n'est donc pas portable.
Les autotools ne sont pas nécessaires avec les scripts en C de
G-WAN, preuve que les mauvais outils peuvent exister dans
tous les langages, y compris le C.
> "G-WAN n'est disponible que sur Linux 32-bit"
Il n'a été compilé qu'en 32-bit et pas encore en 64-bit parce
que je n'ai pas encore installé Linux 64-bit sur une machine
de développement.
Les ajustements, s'il y en a, seront vraiment minimes.
http://gwan.ch/ tourne sur un serveur Debian 64-bit, preuve
que le code 32-bit n'est pas si inutile...
> "sécurité et garantir la sûreté du code en toutes circonstances"
Java, C# et PHP exposent les développeurs à quelques dizainnes
de vulnérabilité critiques de leur runtime -chaque année.
Ce n'est pas le cas du C, dont le runtime n'offre pas de failles de
sécurités basées sur une implémentation défaillante.
So much for "la sûreté du code en toutes circonstances".
Quand au "retour en arrière", j'invite le lecteur éclairé à lire ma
comparaison de Java, C# et PHP pour se faire une idée des
pseudo-améliorations (ou de la valeur ajoutée) de ces langages
"modernes" sur le C (voir la fin du manuel de G-WAN v1.0.97+).
> "d'ou sort le chiffre de 5 millions?"
Pour le savoir, il suffit (une fois encore) de se donner la peine de
lire le lien associé au 5 millions "[3]":
http://gwan.ch/#mxIIS
> "Pour que ce chiffre aie un sens, il faudrait que le RPS soit
> le RPS par utilisateur et pas le RPS total."
Je vois: un serveur qui sert plus d'un client n'a aucun intérêt
pour l'académic.
Heureusement, il se trouve que les utilisateurs de serveurs
Web apprécient de disposer d'un serveur capable de servir
plusieurs clients à la fois.
Cher BOFH, j'ai passé des heures à faire ces graphes mais
vous êtes le bienvenu si l'envie d'en faire des plus jolis, ou
des plus "pertinents" (de votre point de vue) vous prend.
J'apprécierais, d'une manière plus générale, que vous évitiez
de me servir de gros mensonges, ou des non-sens techniques
comme seuls arguments contre G-WAN, qui, faut-il le rappeler,
est le plus rapide des serveurs Web ET des serveurs applicatifs
Web, à la fois sous Linux ET sous Windows.
Comparé aux Apache + PHP ou IIS + C# et même GlassFish
+ Java, ce n'est pas si mal pour un logiciel gratuit écrit en un
an et par une seule personne.
Ah, dernière précision, IBM a demandé les conditions d'une
licence de code source pour G-WAN (preuve que tout le monde
ne pense pas comme vous, heureusement).
Sincèrement,
Pierre.
Dernière modification par PierreG (22 Oct 2010 11:25:23)
Hors ligne
Cher PierreG,
PierreG a écrit:
Un langage portable signifie que le MEME CODE SOURCE peut
être utilisé sur plusieurs plateformes.
C'est le cas du C, mais pas celui de l'assembleur. L'assembleur
n'est donc pas portable.
Je vous défie d'écrire du code C qui compile correctement sur Linux, BSD, windows, sur plusieurs architectures, et qui ne fasse pas recours a un système de compilation sophistiqué.
Comparez avec Ada, Haskell, OCaml, qui disposent tous de compilateurs natifs.
PierreG a écrit:
Il n'est compilé qu'en 32-bit et pas encore en 64-bit parce
que je n'ai pas encore installé Linux 64-bit sur une machine
de développement
.
Et c'est bien le problème, puisqu'avec un des langages susnommés une compilation croisée aurait suffi
> "sécurité et garantir la sûreté du code en toutes circonstances"
PierreG a écrit:
Java, C# et PHP exposent les développeurs à quelques dizainnes
de vulnérabilité critiques de leur runtime -chaque année.
Ce n'est pas le cas du C, dont le runtime n'offre pas de failles de
sécurités basées sur une implémentation défaillante.
Oui, et ces vulnérabilités sont identifiées et corrigées a une vitesse décente.
C'est également le cas du C; expliquez donc pourquoi la libc ne peut pas être considérée comme un runtime, et pourquoi elle serait exempte de problèmes. Le kernel n'est pas immunisé non plus contre ce genre de problèmes.
PierreG a écrit:
Quand au "retour en arrière", j'invite le lecteur éclairé à lire ma
comparaison de Java, C# et PHP pour se faire une idée des
pseudo-améliorations (ou de la valeur ajoutée) de ces langages
"modernes" sur le C (voir la fin du manuel de G-WAN v1.0.97+).
Eh bien justement, je viens de le lire.
Point 1: la portabilité. Votre argument est que Java, PHP, C# ont des runtimes écrits en C, et que donc ces langages ne sont pas plus portables que C.
Vous appliquez ici un raisonnement binaire, en prétendant qu'un programme est portable ou ne l'est pas. Vous ignorez totalement l'effort requis pour porter du code d'une arch a une autre, et le fait qu'écrire en C vous force a refaire ce travail pour chaque architecture, alors qu'il est fait une fois pour toutes dans un langage plus abstrait.
Point 2: la, ok, vous avez entièrement raison en ce qui concerne la pollution du namespace de PHP. ça ne date pas d'hier.
Point 3: vous affirmez que C#, Java, PHP n'apportent aucune évolution par rapport au C parce que la syntaxe pour les commentaires est identique ? cet argument est franchement risible
Point 4: vous argumentez que ces langages sont identiques parce qu'ils utilisent les mêmes structures de contrôle ? très bien, regardez du côté de Lisp, Haskell ou Erlang alors.
Point 5: donc vous reconnaissez que les runtimes Java, PHP, C# sont buggés alors qu'ils sont écrits en C ? c'est un argument à l'encontre du C, pas de ces langages.
Et globalement, vous ignorez totalement le vrai problème, a savoir le danger et la complexité de la gestion de la mémoire manuelle. Consultez le top 25 CWE, et vous constaterez qu'en 3e position se place le débordement de tampon, une erreur impossible dans un langage a gestion automatique de la mémoire. (et les faiblesses en position 1 et 2 sont indépendantes du langage)
PierreG a écrit:
Je vois: un serveur qui sert plus d'un client n'a aucun intérêt
pour l'académic.
Non, vous avez mal compris. Il est correct d'utiliser le RPS total comme métrique, et c'est ce que votre graphe montre. Votre graphe montre en revanche, a la louche, une amélioration de l'ordre de 10^3 sur IIS, c'est plus que respectable, mais je ne comprends toujours pas d'ou sort le 5 millions, si ce n'est par une multiplication incorrecte du RPS et du nombre de clients.
PierreG a écrit:
J'apprécierais, d'une manière plus générale, que vous évitiez
de me servir de gros mensonges, ou des non-sens techniques
comme seuls arguments contre G-WAN
Vous considérez que la sécurité d'un langage à gestion automatique de la mémoire est un non-sens technique ? Et ce ne sont pas des arguments contre G-WAN, qui me parait un produit de qualité, mais contre le concept d'écrire des servlets en C, qui me parait fort dangereux. Vous êtes peut-être un programmeur C d'exception, mais si vous pensez qu'il s'agit de l'avenir de la programmation web, vous êtes cruellement peu au fait des réalités sur les compétences du programmeur d'entreprise moyen.
PierreG a écrit:
Ah, dernière précision, IBM a demandé les conditions d'une
licence de code source pour G-WAN (preuve que tout le monde
ne pense pas comme vous, heureusement).
grand bien vous en fasse s'ils peuvent se le permettre. En ce qui me concerne, je préfèrerais vraiment le voir open source avant de travailler avec. J'y vois un intérêt certain pour le développpement embedded (interfaces de contrôle d'appareils sans console), oui. Mais pas pour remplacer de grosses applications web.
Hors ligne
PierreG a écrit:
J'accepterai tous les arguments, sauf ceux qui sont totalement faux:
@tguillod,
"Le C n'est pas portable"?
Ah. Pourtant, toutes les plateformes ont un compilateur C... qui est
utilisé pour faire le runtime de vos langages Web favoris (lesquels
n'existeraient pas sans le C).
Tu est pas correct. J'avais précisez que cette affirmation était plus ou moins une plaisanterie (le C n'est pas portable, 1 2 3 trollez). As tu utilisez exclusivement les types de longeur fixés. Si tu utilise une fois le type int le programme n'est pas vraiment portable au sens strict car int peux être 16,32,64 bits. As tu déjà porté du code C sur des systèmes embarqués (ou pire des microcontroleurs) ? Je pense pas sinon tu saurais que la portabilité du C est relative.
En ada pour le typage tu spécifie le range, la précision (absolue et relative) que tu veux sur un type. Le compilateur choisira lui même le type le plus adapté (16,32,64,128 bits). En C, pour obtenir la même chose tu doit toujours utiliser long long ou truffer le code de macro de pré-proc et de if sur limits.h. Le code devient alors incompréhensible.
Perso je connais pas ou peu de langage 100% portable (ADA l'est à 99% grâce à la normalisation, java à 95% grâce au bytecode, ...)
Tu raisonnement est un standard: On peut tout faire en C donc tous les autres langages sont mauvais.
Cela dit, le C peut être utile pour la programmation web mais dans des cas très particuliers et souvent derrière le serveur web. Exemple:
Un serveur nginx/zope connecté à un/plusieurs programme C qui font des traitements numériques importants.
Un autre exemple serait un serveur sur un matériel embarqué (personne prétend que apache/j2ee/ejb/oracle est adapté sur un routeur )
Ton programme est visiblement plutôt bon mais tu le discredite en le comparant à apache/iis. Je crois que tu place le produit dans un segment qui n'est pas le sien.
Concernant la sécurité va voir ce que pense les devs de openbsd sur la sécurité de gcc4 et de glibc. Le C est un bon langage si on fait pas d'erreurs. Tu est surement un très bon programmeur C mais ceux qui utiliseront ton serveur le seront pas forcément.
[edit] la doc est là http://trustleap.com/en_download.html
Jetez y un coup d'oeil ca en vaut la peine
Je pense pas que niklaus wirth approuverai le fait d'utiliser le C, lui qui c'est battu pour les langages à forte abstraction. Il a crée le Pascal le premier langage qui n'était pas seulement une couche pour simplifer l'asm.
Voir un manuel où l'auteur passe son temps à démolir la concurrence et justifie ses choix de designs à coups de citations me donne pas confiance.
Dernière modification par tguillod (22 Oct 2010 15:03:05)
Hors ligne
Je n'en reviens pas d'autant de mauvaise foi, d'agressivité et
d'approximations techniques, le tout réuni contre un projet
gratuit dont le seul tort est de faire mieux que tous les autres:
"HATRED, n. A sentiment appropriate to the occasion of another's superiority."
(Ambrose Bierce, The Devil's Dictionary)
Hors ligne
Message déplacé, on ne parlait pas développement à proprement parler. Et discussion close :
Swisslinux.org s'est doté d'une charte précise en application sur son forum. Veuillez en respecter les termes.
Raison: Doublon : N'inondez pas les forums (flood) : ne postez pas plusieurs fois la même question en pensant obtenir une réponse plus rapide. La discussion continue sur le fil http://www.swisslinux.org/forum/viewtopic.php?pid=17267
Hors ligne
Discussion fermée
Pages: 1