Faire une "belle" programmation en PHP - PHP - Programmation
Marsh Posté le 04-06-2006 à 18:49:45
un langage qui permet ceci
Citation : |
n'est pas un langage qui permet de "bien" programmer
si tu veux faire de la "bonne" programmation web, alors tourne toi vers C#/ASP
Marsh Posté le 04-06-2006 à 19:04:21
j'ai decouvert l'asp 2.0 + C# recemment et franchement je pleure quand je vois tout le temps que j'ai perdu avec PHP a essayer de faire des trucs propres a coup de MVC etc...
Surtout qu'avec le mod mono tu peux avoir l'hebergement pour pas trop cher.
PHP => quick & dirty, faire du propre c'est possible mais c'est pas fait pour ça!
Marsh Posté le 04-06-2006 à 19:09:07
Harkonnen a écrit : si tu veux faire de la "bonne" programmation web, alors tourne toi vers C#/ASP |
Beurk
Mieux vaut faire du Ruby ou du Python
En plus c'est complètement cross platform sans limitations dues à des implémentations partielles
Marsh Posté le 04-06-2006 à 23:16:05
Harkonnen a écrit : un langage qui permet ceci
|
C'est pas parce que c'est possible qu'il faut le faire.
Pour répondre au sujet du topic http://classes.scriptsphp.net/ est très enrichissant (et en français !).
Marsh Posté le 04-06-2006 à 23:28:37
kalex a écrit : C'est pas parce que c'est possible qu'il faut le faire. |
Ouais enfin un langage qui permet des insanités pareilles sur des trucs aussi basiques on ne peut qu'avoir peur de ses réactions imprévisibles sur des trucs plus complexes
Marsh Posté le 04-06-2006 à 23:42:38
D'ailleurs je me demande depuis un moment qu'elle en est la raison?
J'veux dire, comment se fait-il qu'on en soit arriver à un langage qui permet de pareilles choses?
Raisons historiques? Techniques? Autres?
Marsh Posté le 04-06-2006 à 23:50:36
dwogsi a écrit : D'ailleurs je me demande depuis un moment qu'elle en est la raison? |
Ca provient du caractère non typé des variables PHP, c'est un choix fait depuis le départ.
edit : Enfin, j'ai parlé un peu vite, c'est plutôt des variables très faiblement typées, car les variables PHP ont bien un type qu'il importe de vérifier dans beaucoup de cas.
Marsh Posté le 04-06-2006 à 23:53:11
Pourtant la syntaxe est bien inspirée du C? Ya eu un manque de logique ou pas assez d'inspiration du C à mon sens.
Marsh Posté le 04-06-2006 à 23:58:24
PHP est surtout inspiré de Perl (PHP-FI), lui-même inspiré du C.
Marsh Posté le 05-06-2006 à 00:02:25
syntaxe c-style, ca veut pas dire que le langage doit etre une copie du C, ni meme inspiré. PHP est interpreté et (tres faiblement) typé dynamiquement, il permet de faire du code "quick and dirty"
Marsh Posté le 05-06-2006 à 00:10:50
Oui oui bien entendu, je ne dis pas qu'il doit être une copie du C, je dis juste qu'ils auraient peut être pu reprendre les bases de certains langages, a savoir la syntaxe et peut être un meilleur typage.
Parce que je trouve que sont plus grand problème c'est de donner la possibilité de faire du code "quick and dirty", ça l'ouvre peut être à un plus large publique mais ce n'est peut être pas une bonne chose pour autant.
Marsh Posté le 05-06-2006 à 00:21:28
ca c'est que question de philosophie du langage, et php semble evoluer dans se sens (tout en assurant la retro-compatibilite ?)
et puis php n'a pas le monopole dans son domaine de predilection, tu peux faire un cgi en C ou en Java si tu preferes
Marsh Posté le 05-06-2006 à 00:25:35
Je pense que si l'on reste conscient de ce que l'on manipule, l'absence de typage fort de PHP n'est pas un problème. Il impose juste quelques vérifications supplémentaires.
Marsh Posté le 05-06-2006 à 00:30:19
dwogsi a écrit : Oui oui bien entendu, je ne dis pas qu'il doit être une copie du C, je dis juste qu'ils auraient peut être pu reprendre les bases de certains langages, a savoir la syntaxe et peut être un meilleur typage. |
Vu que le C n'est pas typé on peut dire qu'ils ont repris les bases du C
Marsh Posté le 05-06-2006 à 08:59:05
kalex a écrit : Je pense que si l'on reste conscient de ce que l'on manipule, l'absence de typage fort de PHP n'est pas un problème. Il impose juste quelques vérifications supplémentaires. |
+1
Marsh Posté le 05-06-2006 à 14:19:53
D'après tout ce que je lis ci-dessus, alors, je n'ai pas l'impression de mal coder en PHP, PHP est construit comme ceci et c'est tout...
Etes vous sûrs qu'on ne peut pas typer ses variables, ni allouer / désallouer un certain espace mémoire, et bosser sur des pointeurs ?
Merci pour toutes vos réponses, c cool
Marsh Posté le 05-06-2006 à 14:24:08
ForgetTheNorm a écrit : Etes vous sûrs qu'on ne peut pas typer ses variables |
oui, d'autant moins si tu parles de typage explicite à la java.
ForgetTheNorm a écrit : ni allouer / désallouer un certain espace mémoire, et bosser sur des pointeurs ? |
Ca, ce sont pas des moyens de coder proprement, ce sont des moyens de se tirer dans le pied
Marsh Posté le 05-06-2006 à 14:30:45
masklinn a écrit : oui, d'autant moins si tu parles de typage explicite à la java. |
Bof, je ne suis pas d'accord avec toi... C'est extrêmement pratique pour beaucoup de choses, et j'ai l'impression que les personnes qui ne s'interessent pas assez au sujet ou qui n'ont pas pour priorité d'avoir un code le plus pratique et puissant codé sont rebutées par tout ce qui est pointeur ou allocation de mémoire... D'où l'utilisation de JAVA ou autres qui sont plus lourds en traitement mais dont la machine virtuelle s'occupe de les gérer toute seule.
Marsh Posté le 05-06-2006 à 14:37:04
ForgetTheNorm a écrit : C'est extrêmement pratique pour beaucoup de choses |
Des exemples? La seule chose pour laquelle l'allocation manuelle est pratique c'est créer des memory leaks ou des buffer overflow, à part dans des environnements à très fortes contraintes de perfs/empreinte mémoire les systèmes à allocation automatique & GC sont infiniment plus fiables et moins dangereux.
En bonus, quand les GC sont bien optimisés (aussi bien sur l'allocation que sur la désallocation) il a été prouvé qu'ils sont globalement plus rapides que l'allocation manuelle générique (allocation manuelle générique = quand on ne se fait pas des allocateurs custom)
ForgetTheNorm a écrit : et j'ai l'impression que les personnes qui ne s'interessent pas assez au sujet ou qui n'ont pas pour priorité d'avoir un code le plus pratique et puissant codé sont rebutées par tout ce qui est pointeur ou allocation de mémoire... |
Un code plus pratique?
Un code plus puissant?
C'est une blague?
ForgetTheNorm a écrit : D'où l'utilisation de JAVA ou autres qui sont plus lourds en traitement mais dont la machine virtuelle s'occupe de les gérer toute seule. |
Lisp, Haskell, OCaml ou SML utilisent également un système basé sur un GC, et j'dois dire que les traiter de lourds j'avais encore jamais vu
Faudrait éviter de confondre le fait que Java utilise une VM et un JIT avec le fait qu'il utilise un garbage collector hein, ce sont deux choses complètement séparées et le fait d'en utiliser un n'impose aucunement le fait d'utiliser le second (flash news: il y a des GC pour le C++)
Marsh Posté le 05-06-2006 à 14:44:58
Harkonnen a écrit : un langage qui permet ceci
|
On peut faire moultement pire en python, c'est pas assez représentatif
masklinn a écrit : |
Lisp est certe conceptuellement simple, mais à l'utilisation il est franchement lourdingue pour la plupart des applications. (par contre il a ses domaines ou il excelle certes, mais c'est assez segmenté ...)
Marsh Posté le 05-06-2006 à 14:49:03
ForgetTheNorm a écrit : D'après tout ce que je lis ci-dessus, alors, je n'ai pas l'impression de mal coder en PHP, PHP est construit comme ceci et c'est tout... |
Pour forcer le typage d'une variable, tu peux utiliser ce type de mécanisme :
$var = (float) 3; |
$var est alors de type float et non int.
Pour vérifier un type de variable, il existe les fonctions is_int, is_float, is_string, etc. Ca peut aussi se faire avec les opérateurs de comparaison. Par exemple, en utilisant === au lien de ==, tu compares la valeur ET le type des variables.
Ensuite, tu peux utiliser les références (& ) pour optimiser la mémoire.
Marsh Posté le 05-06-2006 à 14:49:30
J'utilise tous les langages de programmation (enfin, tous...) dans un cade bien précis de mon travail qui traite de calcul de démonstration automatique, et qui va donc gérer des centaines de variables propositionnelles, qu'il va falloir allouer et désallouer, bouger de tableaux en tableaux, créer des listes, des piles, des liste chainées... Bref un beau bordel où ne pas avoir les pointeurs revient à être obligé de retenir dans des tableaux l'ensemble des variables...
J'ai déjà essayé et c'est horrible à programmer et horrible en gestion de mémoire.
Vous avez surement raison qu'en général les GC sont peut-être plus pratiques, mais moi je me cantonne à l'utilisation dans un cas très précis, et pour ça le JAVA ça va 5 min pour faire des interfaces graphiques ou pour voir un petit peu la notion d'objet, mais pas trop non plus....
Voilà pourquoi ma préférence envers le C et ses alloc/désalloc de mémoire
Marsh Posté le 05-06-2006 à 14:53:34
Quand t'es habitué aux malloc/free de C, tu peut commencer avec un GC par comptage de références. Tu le fais toi même en restant en C, comme ca, ca ne t'es pas trop étranger, et tu te rends vide compte du confort que ca apporte
Marsh Posté le 05-06-2006 à 15:06:34
masklinn a écrit : Vu que le C n'est pas typé on peut dire qu'ils ont repris les bases du C |
le C n'est pas typé, c'est nouveau ca ?
Marsh Posté le 05-06-2006 à 15:12:53
skelter a écrit : le C n'est pas typé, c'est nouveau ca ? |
c'est très discuté/discutable, ca dépends ce que tu recherche dans le typage ou ce que tu veut signifier
Marsh Posté le 05-06-2006 à 15:13:07
Pourquoi veux tu à tout pris allouer désallouer la mémoire ?
Edit : J'avais pas raffraichi la page avant de poster
Marsh Posté le 05-06-2006 à 15:16:39
0x90 a écrit : c'est très discuté/discutable, ca dépends ce que tu recherche dans le typage ou ce que tu veut signifier |
le C est typé statiquement, ca c'est un fait, ce qui est discutable c'est de dire que le typage est faible ou fort vu que le langage est permissif sur certain point et rigide sur d'autre
Marsh Posté le 05-06-2006 à 15:18:55
Citation : (flash news: il y a des GC pour le C++) |
je ne suis pas sur que le C++ ai reellement besoin de gc
Marsh Posté le 05-06-2006 à 15:22:36
skelter a écrit :
|
C'est pas tant le langage qui a besoin d'un gc ou non, mais plutot le projet qui utilise le langage, enfin il me semble
( evidement à jamais _vraiment_ besoin de quoique ce soit, c'est une question de confort )
Marsh Posté le 05-06-2006 à 15:25:49
oui, mais on peu programmer confortablement en C++ sans gc et sans se faire chier avec l'allocation memoire, par exemple avec les 'smart pointer' et meme les 'pointer contener' de boost
edit: extrait de la faq de Stroustrup
Citation : Also, C++ supports programming techniques that allows memory management to be safe and implicit without a garbage collector. |
Marsh Posté le 05-06-2006 à 15:39:04
0x90 a écrit : On peut faire moultement pire en python, c'est pas assez représentatif |
Heuu non
Ou alors j'veux un exemple de "moultement pire"
0x90 a écrit : Lisp est certe conceptuellement simple, mais à l'utilisation il est franchement lourdingue pour la plupart des applications. (par contre il a ses domaines ou il excelle certes, mais c'est assez segmenté ...) |
Je parlais de la lourdeur des applis hein, et il existe des compilateurs pour Lisp, haskell ou les ML quand à eux sont principalement utilisés sous forme compilée
skelter a écrit :
|
J'pense qu'on s'en fout hein, d'autres ont décidé qu'ils voulaient des GC en C++ et les ont implémenté, c'est tout, si t'en veux pas tu les utilises pas
skelter a écrit : oui, mais on peu programmer confortablement en C++ sans gc et sans se faire chier avec l'allocation memoire, par exemple avec les 'smart pointer' et meme les 'pointer contener' de boost |
http://en.wikipedia.org/wiki/Smart_pointers
Les smart pointers c'est une forme de garbage collection automatique
skelter a écrit : edit: extrait de la faq de Stroustrup
|
Ouais grâce à ça les applis C++ n'ont jamais de memleaks... oh wait
Marsh Posté le 05-06-2006 à 15:44:02
masklinn a écrit : |
moi j'aimerais bien voir le code de ces applis , serieusement tu as un exemple de code ecrit en C++ 'safe' et raisonnable (pas du c with class) qui leak ?
Marsh Posté le 05-06-2006 à 15:51:51
masklinn a écrit : Heuu non |
Une classe avec des attributs flous ca te dis ?
Code :
|
le tout dans un levenish.py
|
Marsh Posté le 05-06-2006 à 16:02:06
0x90 a écrit : Une classe avec des attributs flous ca te dis ? |
Super, tu peux faire ça dans tous les langages gérant les propriétés hein, y compris en C#
Marsh Posté le 05-06-2006 à 16:24:43
ReplyMarsh Posté le 05-06-2006 à 17:08:11
masklinn a écrit : Super, tu peux faire ça dans tous les langages gérant les propriétés hein, y compris en C# |
C'est ce que je voulais signifier, on peut avoir de mauvaises idées et les mettre en pratique dans beaucoup de langages (ca ne visait pas python en particulier)
Marsh Posté le 05-06-2006 à 17:15:06
Harkonnen a écrit : mon troll a pris \o/ |
Il a pris et il est en train de devenir gros et gras a force d'etre nourri par tout le monde
Marsh Posté le 05-06-2006 à 17:21:21
0x90 a écrit : C'est ce que je voulais signifier, on peut avoir de mauvaises idées et les mettre en pratique dans beaucoup de langages (ca ne visait pas python en particulier) |
Oui mais non, là je te signale quand même que tu as du passer par les propriétés, get/setattr et les métaclasses, un débutant ne va pas réussir à se tirer dans le pied comme ça parce qu'il ne connaîtra ni ne saura utiliser ces fonctionalités
Je suis parfaitement au courant que plus ce que le langage fournit est puissant plus c'est risqué et ça peut être abusé, mais avec le PHP ça te pète à la gueule au niveau le plus basique
Marsh Posté le 05-06-2006 à 17:27:38
masklinn a écrit : Oui mais non, là je te signale quand même que tu as du passer par les propriétés, get/setattr et les métaclasses, un débutant ne va pas réussir à se tirer dans le pied comme ça parce qu'il ne connaîtra ni ne saura utiliser ces fonctionalités |
tootafay d'accord
Marsh Posté le 04-06-2006 à 18:38:08
J'ai commencé le PHP comme beaucoup de monde grâce à des sites sur PHPdebutants, ou des sites du genre...
Ensuite, j'ai vu ça dans le cadre de mes études...
La notation qu'utilisent les 2 systèmes n'est pas la même, mais je trouve que le PHP est "laid"...
Pardonnez moi l'expression, par rapport à du C, du JAVA, du LISP, ou plein d'autres langages, je ne lui trouve pas de "belle" construction.
J'ai redécouvert récemment la manière de programmer en SQL, ça a changé beaucoup de choses...
Est-ce que vous connaissez des sites qui approfondiraient plus le PHP ?
Afin d'allouer - de désallouer certaines tailles mémoires, d'utiliser des pointeurs, bref.... de "bien" programmer
Merci !