NewbieContest

Général => Defouloir => Discussion démarrée par: Nil le 17 Septembre 2010 à 19:48:38



Titre: PHP lol
Posté par: Nil le 17 Septembre 2010 à 19:48:38
J'allais écrire un mail à mon ami mathgl24 pour discuter de son langage préféré lorsque je me suis rendu compte que tout le monde pouvais profiter de ce message, pas juste le très chanceux mathgl24.

Section défouloir. Pour une fois, je ne bitche personne en particulier, je vais uniquement bitcher PHP et je le fais dans la partie adéquate du forum. J'ai des arguments en plus! N'hésitez pas à me corriger si je dis des faussetés, car j'aimerais beaucoup que tout ceci soit faux! Ce message est surtout sur les arrays, mais il est possible que j'update un jour pour ajouter des points qui n'ont aucun sens.

**************************************************************

C'est toi qui m'a dit un jour que PHP était awesome pour les array?

Je croyais que je pourrais "l'apprécier" en travaillant avec, mais c'est le contraire. Plus je code en PHP, plus je trouve que c'est de la *merde*. C'est quoi le problème? Non, c'est quoi LES problèmes!

Ce n'est même pas un array
Ça créé automatiquement un map alors que ce n'est PAS ce que je veux. J'ai passé les 6 dernières années de ma vie à apprendre l'informatique, et donc à comprendre les forces et les faiblesses de chaque structure de données. Tu sais c'est quoi la force d'un array/vecteur? Accès immédiat pour lire et écrire. PHP réussi à briser ça en implémentait un map et en brisant les index qui ne sont pas de 0 à N, mais qui sont ce que tu veux. C'est pratique? Oui, c'est effectivement pratique d'avoir un *map*, mais c'est ultra pratique d'avoir un array aussi quand on en veut une! Et ils ont le culot d'appeler ça un array!

Ce n'est pas une classe
PHP5 supporte les classes, et un peu mieux que Python! Good!!! Mais, ils n'ont pas jugé pertinent d'en offrir aux programmeurs. Ce n'est pas dramatique, mais qu'est-ce que ça donne sur les array? Tout simplement une syntaxe de merde. Tu veux appeler une fonction X sur ton array? Ok, mais elle va commencer par array_, c'est le prix à payer. Non, je sais, ce n'est pas grave! C'est juste lourd à lire et à écrire. Voici quelques exemples :
Code:
PHP : array_push($myArray, 6);
PHP++ : $myArray.append(6)

PHP : $myArray = array_map($f, array(1, 2, 3, 4);
PHP++ : $myArray = array(1, 2, 3, 4).map($f);
Ben oui, pourquoi pas? Quand un langage offre la programmation objet, c'est la moindre des choses d'offrir des classes! [...] Bon, ceux qui sont habitué à PHP vont sans doute préférer la version PHP et donc trouver mon point totalement stupide, mais ceux qui ont codé en d'autres langages ont plus de chances d'être d'accord.

C'est la seule structure de données!
C'est faux, il y a la SPL (Standard PHP Library) qui offre des files, piles, listes chainées (il n'y a pas d'ensemble (set) par contre), mais je n'ai jamais vu personne s'en servir! Il y a très peu de commentaires sur le site de PHP-SPL, comme si c'était des affaires trop compliqués! Si les programmeurs n'utilisent pas la SPL, ça implique qu'ils utilisent ce qui reste : array. Et c'est parfait quand ils ont besoin d'une d'un map ou d'un array très simple, mais mauvais dans les autres cas.

La syntaxe d'initialisation est merdique et illisible
Même en C++ c'est mieux! Voici un peu ce que ça donne:
Code:
PHP : $monArray = array(1, 2, 3, 4, 5);
C++ : int monArray[] = {1, 2, 3, 4, 5};
Python : monArray = [1, 2, 3, 4, 5]
Tu vois, c'est de plus en plus court alors que ça veut toute dire la même chose (Lol, non, en PHP c'est un map). Bon, honnêtement, ce n'est pas un problème pour un exemple aussi simple; je chiale pour rien, mais j'avais un exemple un peu plus compliqué hier (3 niveaux d'array) et j'étais en tabarnak(NdT : en furie, disons). J'étais même pas capable de lire mon code et je savais même pu quel parenthèse allait avec quel parenthèses. Voici un exemple un peu plus compliqué :
Code:
PHP : $rules = array(1=>array(1, 2, 3), 2=>array(2, 3, 4), 3=>array(3, 4, 5), 4=>array(5, 6, 7), 5=>array(6, 7, 8), 6=>array(7, 8, 9));
C++ : int rules[7][3] = {{0, 0, 0}, {1, 2, 3}, {3, 4, 5}, {4, 5, 6}, {5, 6, 7}, {6, 7, 8}, {}7, 8, 9};
Python : rules = [[], [1, 2, 3], [2, 3, 4], [3, 4, 5], [5, 6, 7], [6, 7, 8], [7, 8, 9]]

Bref, ça devient rapidement lourd et illisible le mot clé array.

La syntaxe, globalement
Code:
Vérifier la présence d'un élément
PHP : if (in_array('x', $myArray))
Python : if 'x' in myArray:

Appender un array
PHP : $myArray = array_push($myArray, array(1, 2, 3, 4));
Python : myArray += [1, 2, 3, 4]

Prendre une partie de l'array
PHP : $array2 = array_slice($myArray, 0, 3)
Python : array2 = myArray[0, 3]

Dernier exemple, sur les ensembles. Différence de 2 ensembles.
PHP : $result = array_diff($set1, $set2);
Python : result = set1 - set2
Plein d'autres exemples que c'est plus cours et plus lisible en Python. Bien sûr, vous vous dites que je prend des exemples qui avantagent Python et, oui, c'est clairement ce que j'ai fait. Mais, ce qui est amusant c'est que, dans à peu prêt tout ce que je vois, le code Python est plus cours et plus lisible que le code PHP qui fait la même chose.

Faut deviner comment ajouter un élément C'est mon pire paragraphe niveau argumentation. J'aurais du l'enlever.
Aucune fonction pour le faire. (C'est faux, il y a array_push(), mais c'est pour utiliser l'array comme une pile et je suis sûr que l'autre méthode est plus utilisée) J'ai du chercher pour savoir qu'on peut ajouter un élément en utilisant les crochets vides, genre myArray[] = 1;. Ok, cool, maintenant que je le sais, c'est bien, mais, suis-je le seul à trouver que c'est mauvais? Qu'est-ce qui me dit dans cette ligne que c'est un ajout?

Supprimer un élément
Il y a une fonction pour supprimer un élément.Yay! Mais encore une fois, c'est de la merde et c'est exactement ce qui me met en criss (NdT : en furie, disons) présentement. Tu as un array très simple, genre $a = array(1, 2, 3, 4, 5); Tu supprime 3. Ok ... Cool. Ensuite tu veux accéder à l'élément à l'index 2 (qui devrait maintenant être 4) et ça te retoune NULL ou quelque chose du genre! OMG WTF!!! Si vous trouvez ça normal, vous avez sérieusement besoin de connaître d'autres langages. En passant, je sais que je peux utiliser array_values() pour les remettre en ordre. Le problème est que je ne devrais PAS avoir à faire ça! Dans tous les pµtains de langages, quand tu supprime un élément dans un array/vecteur, les éléments suivants changent d'index et c'est parfaitement normal et logique. Update! Je viens de me rendre compte qu'il n'y a aucun moyen simple de supprimer un élément... lol. Non mais, c'est drôle tellement ça n'a aucun sens. Il faut plusieurs lignes de code pour supprimer un élément... hahahahaha :D Le seul autre langage sérieux que je connais qui est comme ça, c'est de l'assembleur.

Update!
array_rand()
Cette simple fonction mérite qu'on s'y attarde. Que donne, selon vous,
Code:
$myArray = array("I", "Love", "NC");
print_r(array_rand($myArray, 2));
Toutes personnes normales diraient que ça retourne 2 éléments au hasard, donc possiblement ["I", "Love"] ou ["NC", "I"], etc. Eh bien, NON! La fonction retourne les index... J'ai rarement vu quelque chose d'aussi imbécile. Le résultat serait plutôt quelque chose comme [1, 2] ou [2, 0], etc.

**************************************************************

C'était juste sur les array en plus :D En codant une épreuve, j'ai trouvé plein d'autres points qui m'ont dérangés. J'essaierais de faire une autre compilation si j'ai le goût. Alors, qu'en pensez-vous? Je dis n'importe quoi? Je me trompe?

Discuss.


Titre: Re : PHP lol
Posté par: Barti le 17 Septembre 2010 à 20:14:45
Et donc la solution magique j'imagine que c'est Python :D ?
Moi perso j'aimerai bien tenter Ruby avec Rails mais bon c'est pas très documenté à ce qui parait, c'est ca l'avantage de PHP c'est que c'est vachement documenté et y'a une grosse communautée derrière, après je connais pas bien les autres langages je ne me prononce pas dessus ^^

Citation
Code:
PHP : $monArray = array(1, 2, 3, 4, 5);
C++ : int monArray[] = {1, 2, 3, 4, 5};
Python : monArray = [1, 2, 3, 4, 5]

et en Ruby :

Code:
tab = [] # tableau vide
prix = [30, 400, 25, 73] # tableau contenant des entiers
puts prix # affichage de toutes les valeurs du tableau
 
langues = ["fr", "en"] # tableau de chaînes de caractères
puts langues
 
mix = 4, "quatre" # tableau mixte
puts mix

Bon après c'est difficile de faire plus simple mais moi ca me donne carrément envie de me mettre au Ruby !
Après moi je dis ca, je dis rien :P


Titre: Re : PHP lol
Posté par: Nil le 17 Septembre 2010 à 20:31:35
La solution? Je sais pas. J'ai trouvé la mienne, vous pouvez trouver la votre. Bien sûr, tous les langages ont des défauts, j'ai juste remarqué que PHP en a plus que d'autres.

J'aurais beaucoup aimé écrire les exemples en Ruby, mais je ne connais pas ce langage. J'aurais donc possiblement écrit un peu n'importe quoi et j'aime pas trop faire ça. Cela dit, les exemples que tu donnes semblent très intéressantes :) Le "problème" avec Ruby c'est que c'est les exemples que j'ai vus étaient difficiles à lire, ça m'a bloqué dans mon intérêt.


Titre: Re : PHP lol
Posté par: Barti le 17 Septembre 2010 à 20:47:50
Moi je trouve Ruby pas si difficile à lire (en même temps j'étais habitué à coder en PHP comme un gros porc) mais je viens de voir ca : Diaspora (http://www.joindiaspora.com/) (c'est un clone de Facebook ou les données seraient décentralisées ca à l'air très interressant comme concept, reste à voir ce que ca vas devenir) et ce truc la qui a l'air assez bien parti, est codé en Ruby, j'ai jeté un coup d'oeil vite fait aux sources et franchement ca a pas l'air si incompréhensible que ca (en tout cas avec un code coloré)...


Titre: Re : PHP lol
Posté par: mathgl24 le 17 Septembre 2010 à 20:48:13
Nil : Tu aimes PHP c'est certain hahaha! :P
Tu as oublié de mentionner les calices de $ qu'il faut toujours mettre devant les vars. Sinon, le PHP est à utiliser UNIQUEMENT pour le WEB et nulle part ailleurs. Exemple : On ne code pas en PHP l'algo d'une crypto ; ça n'a pas raison d'être. Personnellement, je code en C++ et c'est vraiment excellent pour ce genre de chose.

Il y a peu de temps, Nil m'a fait connaître Python et m'a même donné des "cours de base". C'est vrai que c'est totalement plus lisible et plus clean que le PHP. Or, on ne prend pas Python pour coder des algos qui peuvent s'avérer complexes. Le but est de prendre des langages ADAPTÉS à notre situation. Si on fait du WEB, on peu prendre PHP. La multiplication de 2 matrices : on prend maple ou mathématica par exemple. Il y en a d'autres, mais je ne suis pas l'expert ici ;).

Le but aussi est d'écrire du code LISIBLE pour non seulement les autres, mais aussi pour soi-même. Donc, les one-liners ou ceux qui mettent du code qui ne finit plus et qui peut se résumer en quelques lignes propres, ce n'est pas excellent. (SANS offenser personne ici)

Maudit! Je ne réussis pas à trouver de quoi pour contredire Nil...  :/  Ça viendra un jour c'est certain =D

Sinon, ce serait aussi intéressant de savoir quels langages sont appropriés à tel type de structure. Exemple : PHP ==> WEB, etc.
Donc, s'il y a des experts, j'aimerais bien avoir vos points de vue sur cette question sans oublier sur ce que Nil a écrit.


Titre: Re : Re : PHP lol
Posté par: Nil le 17 Septembre 2010 à 21:07:48
Sinon, le PHP est à utiliser UNIQUEMENT pour le WEB et nulle part ailleurs.
Lol, on ne connaît pas les mêmes programmeurs PHP :D
Parcours les afterwards et tu vas voir que la plupart du code est en PHP.

Au fait, j'espère que vous savez qu'on peut faire du web avec plein d'autres langages :)
PHP : plein de librairies, le nombre s'approche de l'infinie
Python : CGI, Zope, Django, TurboGears
Ruby : Rails, surement d'autres, je sais pas
C++ : Wt, OpenCMS, etc. Mais faudrait être motivé pour faire du web en C++
etc.

@Barti. Mouais, c'est globalement mieux que plein d'autres langages; faudrait que je vérifie ce qui me dérangeait, ça fait longtemps. Mais, pour être franc, je n'ai pas le goût d'apprendre Ruby tout de suite, je suis plutôt motivé par D ou Go, je ne sais pas encore lequel. Quoique, D et Go ne remplacent pas du tout Ruby. C'est plutôt pour remplacer le C++ qui commence à me faire chier.


Titre: Re : PHP lol
Posté par: cyrbil le 19 Septembre 2010 à 20:17:59
Perso moi qui est fait l'erreur de commencé à programmer en php c'est en allant vers d'autre language que j'ai vu le changement. Mais php apporte aussi ses avantage.
Sinon je confirme qu'on peut faire la plupart des épreuve de NC avec mais question rapidité faut pas être presser :-°

J'ai vraiment galéré pour débuter en C/C++ parce que le php donne énormément de mauvaise habitudes ... :rolleyes:


Titre: Re : PHP lol
Posté par: Harry41 le 21 Septembre 2010 à 02:59:47
Moi, j'aime le php, c'est en programmant ce langage que j'ai compris l'interet des conventions de nommages...
Si l'on est un minimum strict, le php peut nous aider a avancer vitesse grand V.

Apres, j'ai plutot commence sur du Basic devant mon clavier relie a la tele ( merci papa )
Perso, dans tous les cursus que j'ai fait, on fait apprendre le Pascal, puis le C.
Je pense sincerement que c'est une bonne solution. Le pascal ne sert pas a grand chose,
mais il peut clairement fournir une base solide. J'ai compris ca 7 ans plus tard ( avant, je disais que c'etait vraiment pourri )

Sinon, oui, un langage correspond a une demande... on ne fait pas le meme genre d'appli avec du php que de l'Objective C, et ce, pour des raisons evidentes !


Titre: Re : PHP lol
Posté par: mathgl24 le 21 Septembre 2010 à 13:34:36
Parcours les afterwards et tu vas voir que la plupart du code est en PHP.
C'est ce que j'oublie souvent de faire  :oops:. Mais oui, 75% du code est du PHP. Bon, il faut ce dire que certains prennent sûrement le premier langage qu'ils ont sous la main et font l'épreuve. Ensuite, ils passent à autre chose, car le seul but est de valider et rien d'autre. Je ne m'en cache pas, c'est ce que j'ai fait dans les premiers temps depuis que je suis sur NC (honte à moi).

C'est bien beau aimer PHP, mais pour ceux qui sont dans le domaine de l'informatique je crois qu'il est important d'agrandir ses horizons et d'apprendre d'autres langages (savoir les utiliser pour les BONNES choses), se mettre à jour avec les différents ajouts pour un langage quelconque, pour une nouvelle technologie, etc.

Je dis ça, mais je ne l'applique pas, car je suis mathématicien (à devenir). Donc, je vais faire ce que j'ai dit mais pour les maths. J'attends la réplique de Nil qui va me dire : "Don't give me that shit! Tu es un programmeur!". Vrai! Par contre, c'est un hobby, donc je n'ai pas l'intérêt et la motivation pour pousser à ce point en informatique. Je m'intéresse bien plus à l'aspect algorithmique et mathématique de la chose.

Comme c'est un défouloir, j'en profite pour rajouter que si PHP enlève l'obligation de mettre des foutus $ devant les variables, ce sera une bonne amélioration dans le sens moins chiant ;).


Titre: Re : Re : PHP lol
Posté par: Nil le 21 Septembre 2010 à 15:11:57
Moi, j'aime le php, c'est en programmant ce langage que j'ai compris l'interet des conventions de nommages...

Soit c'est un gros sarcasme, soit j'ai rien compris. PHP est un des rares langages qui n'a aucune convention de nommage, ou plutôt qui en a 4 ou 5 .... Voici un site récent qui en parle :
Citation de: http://www.bitstorm.org/edwin/en/php/ #7
Some function names consist of more than one word. There are three conventions for combining these words:

1. Glued together: getnumberoffiles
2. Separated with underscores: get_number_of_files
3. Camel case: getNumberOfFiles
Most Languages choose one of these variants. PHP uses all of them.

Puis un autre, mais celui-ci est très intéressant parce qu'il détruit Python en même temps.
Citation de: http://simononsoftware.com/naming-convention-aka-php-vs-python/
PHP is often criticized for the mess in function names. In fact remembering function name is easy, remembering how to write the function name isn’t. Just imagine that there is a function named ’stream get line’. You just remember those three words. Of course you don’t remember how the function is written, the possibilities are:

1. stream_get_line()
2. streamgetline()
3. streamGetLine()
4. Stream_Get_Line()
5. StreamGetLine()
Et il a raison sur plusieurs points quand il détruit Python. :) Il dit que Python :
- est aussi mauvais que PHP pour la convention de nommage. Et il a raison pour les noms de modules, mais pour les noms de "fonctions" (il ne semble pas savoir que c'est des "méthodes" en programmation objet), ça me surprend! Il a raison sur ce point aussi, mais je n'ai vu aucun problème dans les librairies de base, genre list, set, dict, str, etc.
- n'est pas cool au niveau du "sucre syntaxique". Il donne un exemple qui "prouve" que la syntaxe de PHP est meilleure (son exemple fonctionne en Python en plus...). Son argument est que, en PHP on peut écrire du code tout croche et qu'on ne peut pas en Python. Il dit aussi qu'il n'aime pas le ":"... ok, mais c'est plus court que {}. En gros, son paragraphe c'est n'importe quoi ; la syntaxe de PHP n'est en rien supérieure à celle de Python. Vous allez me dire que c'est une question de goût, mais avez-vous seulement regardé?
- contient des méthodes magiques. C'est vrai, mais la seule que j'ai eu a utiliser c'est __init__() et c'est le constructeur de la classe. Dans tous les langages que je connais, le constructeur/destructeur est différent des autres méthodes et c'est plutôt normal.
- est mauvais pour les conventions de nommage. C'est le premier point.
- l'oblige à suivre une convention pour ses tests. Et il n'aime pas la convention de PyUnit, qui est bien sûr la même que JUnit. Que répondre à ça? Si tu n'aime pas une librairie de tests, tu n'as qu'à en prendre une autre. Ou tu devrais adopter la convention de *Unit parce que ça risque de t'être utile dans la vie.
- n'est pas un vrai langage objet à cause de "len()". Je suis d'accord que c'est un peu stupide le coup du "len()". La vrai syntaxe devrait être "myList.length()" et non "len(myList)", mais 1) on ne remet pas en question tout un langage pour une fonction qu'on aime pas, surtout que -> 2) c'est plus lisible avec len(myList) ; ça se lit comme un phrase. Vous preférez lequel?
Code:
if myList.length() > 10:    # Si maListe longueur > 10
if len(myList) > 10:         # Si longueur maListe > 10

Et il conclut en disant que Python et PHP c'est le même désordre et la même merde. Eh bien, au moins, il aura essayé autre chose que son petit favoris, et ça, j'ai du respect pour ça. Je suis surtout surpris de sa conclusion ; c'est le premier que je connais qui n'est pas tombé en amour avec Python en l'essayant. En lisant ses autres posts, il semble vouloir essayer Ruby. Excellent!!!


Titre: Re : PHP lol
Posté par: BAAL le 21 Septembre 2010 à 16:51:50
Je ne comprends pas tous ces débats sur quel est le meilleur language.
Personnellement je ne code pas dans un langage particulier, j'utilise un éditeur hexadécimal et je tape les opcodes directement dans l'éxecutable. Pas de problème de convention pour les noms des variables, etc... Pas besoin de compilateur, et surtout, c'est beaucoup plus rapide!


Titre: Re : Re : PHP lol
Posté par: DomJ le 21 Septembre 2010 à 22:00:38
j'utilise un éditeur hexadécimal et je tape les opcodes directement dans l'éxecutable.

tiens, j'aimerais bien pouvoir faire ça :o

c'est vraiment awesome ce truc


Titre: Re : PHP lol
Posté par: Nil le 21 Septembre 2010 à 23:35:29
Lol, c'est awesome dans un sens, mais horrible dans tous les autres! C'est de cette façon que les premiers programmeurs codaient, c'était long, horrible et très error-prone. Et il fallait tout refaire lorsqu'ils changeaient d'architecture. De nos jours, le gros minimum c'est de l'assembleur ou du C :)


Titre: Re : PHP lol
Posté par: DomJ le 22 Septembre 2010 à 00:31:29
ouais je vois le genre

mais c'est awesome dans le sens "moi j'écris directement mes .exe  :cool:"


Titre: Re : PHP lol
Posté par: Baelrog le 23 Septembre 2010 à 09:12:40
Sinon tu peux labourer un champs avec une petite cuillère, mais depuis on à inventer des machines pour ca.

Bref, se demander si un langage est mieux qu'un autre, oui, mais il faut surtout se demander "pour quoi faire ?". Ils ont tous des avantages et inconvénients en function de ce que l'on veut créer. Perso je développe pour une entreprise et on utilise PHP. Grande simplicité à sortir des interfaces graphiques, vitesse d'execution loin d'etre dégueulasse. Maintenant en ce qui me concerne, la seule fois ou j'ai eu à utiliser Python c'est pour les épreuve NC impliquant les grands nombres.

De plus Nil, ta comparaison PHP/Python porte principalement sur des longueurs syntaxiques et sens de lecture. Donc oui, PHP est un poil plus long à écrire, mais de toute façon, un programme, c'est 80% de réflexion et 20% d'écriture de code.


Titre: Re : Re : PHP lol
Posté par: Nil le 23 Septembre 2010 à 15:24:48
[...] de toute façon, un programme, c'est 80% de réflexion et 20% d'écriture de code.
Tu oublie un point important : personne n'est parfait. Ce qui implique qu'il y a des bugs dans ton code (ou que le client veut ajouter quelque chose) et qu'une personne X va devoir modifier le code en question. Même si cette personne c'est toi, tu vas devoir relire ton code et comprendre ce qui se passe réellement avant d'oser modifier le code. Si la personne n'est pas toi, alors ça devient amusant parce qu'elle doit partir du début et chercher le problème, donc LIRE beaucoup de code.

Bref, "80% de réflexion et 20% d'écriture de code" c'est possible si le programme n'évolue pas et si tu code uniquement pour toi même, mais c'est rare. Il faut ajouter l'élément "lecture X%" qui prend une grande part aussi. Et c'est là que des langages plus lisibles gagnent des points parce que, finalement, on lis beaucoup de code dans une vie.

Et, honnêtement, même si l'écriture du code représentait juste 1% du temps de développement, j'aime quand même mieux un langage qui se lis bien :)


Titre: Re : Re : PHP lol
Posté par: Nalfein le 23 Septembre 2010 à 15:26:21
Ils ont tous des avantages et inconvénients en function de ce que l'on veut créer. Perso je développe pour une entreprise et on utilise PHP.

On vois tout de suite que t'est développeur PHP en tout cas  :wink:.


Titre: Re : PHP lol
Posté par: Barti le 23 Septembre 2010 à 16:26:35
Moi je suis d'accord avec Nil, tu fais rarement un programme que tu vas jamais réutiliser, améliorer ou qui sera pas lu par quelqu'un d'autre, personnellement avant je codais comme un porc, maintenant c'est moins le cas et franchement y'avais un bête de truc que j'avais fait y'a longtemps quand j'ai voulu le relire pour l'améliorer je me suis dit que le réécrire serait plus facile tellement j'avais codé comme un porc, enfin après rien n'empêche d'écrire proprement en PHP (ou autre) et d'un autre côté comme un porc en Python (ou autre) et inversement...


Titre: Re : Re : Re : PHP lol
Posté par: _o_ le 23 Septembre 2010 à 16:44:56
Bref, "80% de réflexion et 20% d'écriture de code" c'est possible si le programme n'évolue pas et si tu code uniquement pour toi même, mais c'est rare. Il faut ajouter l'élément "lecture X%" qui prend une grande part aussi. Et c'est là que des langages plus lisibles gagnent des points parce que, finalement, on lis beaucoup de code dans une vie.

Je ne suis pas vraiment d'accord. La lisibilité et la maintenabilité du code dépendent pour une grosse partie de la conception de l'application, et du code produit. Le langage influe, mais dans une part négligeable du processus.


Titre: Re : PHP lol
Posté par: Baelrog le 23 Septembre 2010 à 17:17:30
Développant intégralement en objet et sur un framework, j'insiste autant sur l'architecture de mes codes que leur optimisation en termes de temps d'exécution (je cherche pas à gagner 3ms mais rester dans des temps d'affichage convenable, de l'ordre de la seconde).
De plus, je respecte une autre règle importante, la portabilité des classes que je développe, il faut rester le plus générique possible. Rien de spécifique à une application à part quelques paramètres de config. Et quelques commentaires algorithmique au sein des process principaux n'est jamais de trop.

De cette façon, lors de mise à jour ou d'import de classes d'une autre appli, ca me prend rarement plus de 15-20minutes à installer. Presque du Plug & Play :)

Donc je maintiens, 80% de réflexion et 20% de code. Une appli bien conçu parle d'elle même.


@Nalfein: :D, en effet, je suis cramé :) Reflex linguistique, mais pour ma défense j'ajouterais que le "u" et le "o" ne sot pas loin l'un de l'autre !!


Titre: Re : Re : PHP lol
Posté par: Nil le 24 Septembre 2010 à 00:47:43
Donc je maintiens, 80% de réflexion et 20% de code. Une appli bien conçu parle d'elle même.
Tu ne semble pas avoir lu ce que j'ai écrit... Moi aussi je trouve assez facile de débugger/relire mon propre code. Même si une application est bien construite, elle a quand même été pensée par quelqu'un d'autre et cette personne ne pensait pas comme toi. Oui, tu vas être aidé par l'architecture (des noms utiles genre) et par les commentaires, mais qu'on le veuille ou non, du code ça se lis et ça prend du temps. SI le choix du langage peut aider à ce niveau, alors pourquoi pas?

@_o_ : Hummm, oui, tu as raison quand tu dis que la partie importante pour qu'un programme soit maintenable c'est avant tout son architecture.. Cela dit, même si ton modèle est awesome et que tu sais où trouver ce que tu cherche, tu vas arriver à une série de lignes de code. Rendu là, si tu as le choix entre le langage fictif BlubParadox (ultra expressif, requiert souvent la moitié de lignes que dans un autre langage X) et PHP, je ne vois pas pourquoi on devrait rester sur PHP... Uniquement parce que c'est ce qu'on a appris en premier? C'est une mentalité de religion ça ^^


Titre: Re : Re : Re : PHP lol
Posté par: _o_ le 24 Septembre 2010 à 08:08:43
Rendu là, si tu as le choix entre le langage fictif BlubParadox (ultra expressif, requiert souvent la moitié de lignes que dans un autre langage X) et PHP, je ne vois pas pourquoi on devrait rester sur PHP... Uniquement parce que c'est ce qu'on a appris en premier?

Je n'ai pas dit ça. Mais entre un langage que l'on maîtrise et un autre inconnu, il vaut mieux utiliser le langage que l'on maîtrise, pour ne parler que de la lisibilité. Donc dans le cas précis que tu cites, c'est peut-être PHP qui l'emportera. Note également que c'est de la théorie : dans une entreprise, il va falloir jouer avec les compétences internes, et si la majorité des devs ne sont compétents que sur BlubParadox, il faudra probablement oublier l'idée de PHP.

Ce que je veux dire dans tout ça, c'est qu'il est très réducteur de qualifier des langages de programmation sur leur type (procédural, objet, fonctionnel...), leur lisibilité (toute relative au regard des compétences du développeur qui lit le code), leur fonctionnalité (typage faible/fort, capacités objets, etc...). Une nouvelle fois, il faut trouver le compromis sur tous les aspects du projet (nombre de dev, compétences, archi techniques, exigences client, budget, planning...), et le choix du langage en fait partie.


Titre: Re : Re : Re : Re : PHP lol
Posté par: Baelrog le 24 Septembre 2010 à 09:18:02
Mais entre un langage que l'on maîtrise et un autre inconnu, il vaut mieux utiliser le langage que l'on maîtrise, pour ne parler que de la lisibilité.

En rentrant chez moi je repensais à ce post et c'est exactement ce que je me disais. Ce qui influe le plus sur la lisibilité d'un code est l'expertise que tu en as. Je dis un nom au pif, mais le Perl pourrait être beaucoup plus concis que PHP, il n'empêche que je ne connais pas ce langage et qu'au début je vais galéré un peu.

Après tu me diras, ya que les imbéciles qui n'évolue pas :), mais comme le dis _o_, il faut faire avec certaines normes en entreprise, on ne peut pas laisser tout le monde faire sa tambouille dans son coin sinon ca devient ingérable. Mais grâce à ces normes, on part tous avec les même bases et l'utilisation d'un framework permet une cohérence architecturale et logique dans les applications, vu qu'elle sont imposées par le-dit framework.


Titre: Re : PHP lol
Posté par: mathgl24 le 24 Septembre 2010 à 13:14:21
Rendu là, si tu as le choix entre le langage fictif BlubParadox (ultra expressif, requiert souvent la moitié de lignes que dans un autre langage X) et PHP, je ne vois pas pourquoi on devrait rester sur PHP... Uniquement parce que c'est ce qu'on a appris en premier?

Je n'ai pas dit ça. Mais entre un langage que l'on maîtrise et un autre inconnu, il vaut mieux utiliser le langage que l'on maîtrise, pour ne parler que de la lisibilité. Donc dans le cas précis que tu cites, c'est peut-être PHP qui l'emportera. Note également que c'est de la théorie : dans une entreprise, il va falloir jouer avec les compétences internes, et si la majorité des devs ne sont compétents que sur BlubParadox, il faudra probablement oublier l'idée de PHP.

Ce que je veux dire dans tout ça, c'est qu'il est très réducteur de qualifier des langages de programmation sur leur type (procédural, objet, fonctionnel...), leur lisibilité (toute relative au regard des compétences du développeur qui lit le code), leur fonctionnalité (typage faible/fort, capacités objets, etc...). Une nouvelle fois, il faut trouver le compromis sur tous les aspects du projet (nombre de dev, compétences, archi techniques, exigences client, budget, planning...), et le choix du langage en fait partie.
Effectivement! J'ai eu à travailler dans une petite entreprise où eux, ils utilisaient PHP pour créer des modules Web que le client pouvait acheter par la suite. De plus, les noms de variable et de fonction doivent être nommés selon leurs règles. Bref, je n'aurais pas pu entrer là et dire que je ne programme qu'en python pour les avantages que Nil a nommés. De plus, si l'entreprise a tout codé en PHP, pensez seulement à tout le temps que ça prendrait pour tout réécrire le code en python... c'est inconcevable. Aussi, est-ce que les développeurs ont la compétence requise ? Si non, il faut les former et ça, ça c'est de l'investissement supplémentaire et ça demande beaucoup de temps.

Par expérience, juste le fait de migrer le code de PHP4 à PHP5 a demandé beaucoup de temps (les base de données MySQL vont de soi aussi). Donc, voilà pourquoi je suis d'accord avec les arguments de _o_.


Titre: Re : PHP lol
Posté par: Nil le 24 Septembre 2010 à 15:16:08
C'est difficile de faire face à l'adversité! :)

Oké, je ne sais pas pourquoi c'est arrivé sur le sujet des entreprises (ma faute en fait), parce que ce n'est absolument pas mon intention de changer la façon de voir des entreprises. Ils ont décidé tout seul d'acheter Lotus Notes, d'utiliser uniquement les technologies Microsoft les plus chères (et Oracle pour payer un peu plus), d'acheter Webdev, de refuser d'utiliser de gestionnaire de sources, de rester sur la version 4 de PHP, etc. Bref, les compagnies décident tout seul de leur choix (et ce sont parfois de très mauvais choix, car c'est souvent des managers qui décident et ils savent pas grand chose, genre : "Hey, on va utiliser Waterfall parce que tout le monde en parle") et on ne peut rien y changer.

Ce que je *voulais* dire, c'est d'apprendre autres choses pour vous rendre service. Je n'ai pas appris Python pour me trouver une job (c'est rare des jobs en Python, croyez moi), je ne vais pas apprendre Go ou D pour me trouver une job, je vais le faire uniquement pour me rendre service. En quoi ça va me rendre service de "perdre" tout ce temps à apprendre? Eh bien, une fois que c'est appris, tu peux réaliser :
1) Est-ce "meilleur" que le langage que j'utilisais? Dans quel sens? Plus rapide, lisible, expressif, etc. Meilleure communauté? Divers outils de langage (support fonctionnel?, genre lambda, map, filter, reduce, support thread?, beaucoup de fonctions/classes offertes?, support mémoire transactionnelle?, support XYZ?) Si le nouveau langage à "uniquement" 1 avantage sur l'autre, c'est, selon moi, une bonne raison de l'apprendre davantage et d'oublier un peu l'autre. Même si on était rendu "expert", on va être encore plus "expert" dans l'autre! Hum, non, mauvaise phrase. En gros, c'est plus utile d'être expert dans un meilleur langage que d'être expert dans un "moins bon" langage.
2) Est-ce que ce langage sers pour un type d'application en particulier. Si on connait juste un type de langage, alors on prend assurément le mauvais outil pour certaines applications. Ben quoi, pas de bruteforce en JS, Python, PHP, Ruby svp :)
3) Même si on découvre qu'on haïs ce langage et qu'il est un peu moins bon que X, vous aurez quand même appris un nouveau paradigme et ça peut vous être utile dans X. C'est un peu comme de la culture ;des fois ça ne sert pas de façon apparente, mais ça vous rend mieux informé et ça peut vous servir dans certains cas. Par exemple, j'ai appris Scheme et j'haïs ce langage, mais ça m'a terriblement servie! Ça m'a fait évoluer en C++, Python, PHP, PowerShell et pas mal tous les langages qui ont une petite partie fonctionnelle.