Bonjour,
Après avoir lu quelques posts sur ce sujet, je ne peux m'empêcher de réagir.
J'ai commencé à m'intéresser à l'informatique seul vers l'âge de 13 ans, et j'en ai maintenant 22.
Au niveau de mes études, j'ai fait un BTS SIO et ai enchaîné vers une license 3 en info.
Pour être honnête, ces études ne m'ont servi à rien niveau programmation.
J'ai déjà maîtrisé l'objet, pas mal de frameworks, et beaucoup de langages ainsi que leurs ajouts.
( Mes préférences tapent dans : PHP & Symfony 2, Java & Hibernate, python, html/css/javascript, c#, ainsi que quelques notions d'assembleur )
Actuellement, je suis employé dans une boite de gestion de clients lourds bossant exclusivement avec WinDev.
Lorsque j'ai débuté mon BTS SIO, l'outil de prédilection employé pour l'apprentissage de la programmation était ( et est toujours ) : WinDev.
Que dire de ce logiciel, de cet "AGL"...
Je vais être franc : je n'y trouve aucun points positifs.
Je vais y aller point par points.
____________________________________
1) Ce "langage" n'est pas orienté objet.
Pourquoi dis-je ceci, alors que tout les "fans" ( cf : service commercial ) disent que l'objet est implémenté "depuis la magnifique et merveilleuse VERSION 17, MERCI Ô GRAND PCSOFT !" ?
Tout simplement parce que ce n'est PAS de l'objet.
Aucune notion d'extend ou de quelconque hiérarchie. Aucune notion d'interface.
Vous appelez ça de l'objet, ça, vous ? Moi pas. J'appelle ça une blague.
2) Ce premier point pose beaucoup de problèmes au niveau du fonctionnement du langage.
Exemple typique :
Je crée en Java un JComboBox.
Je souhaite rajouter des items dedans ? Je passe par la fonction addItem de celui-ci.
comboBox.addItem("Ceci est merveilleux.");
Je crée sous WinDev un équivalent du JComboBox.
Je souhaite rajouter quelquechose dedans ?
ListeAjoute(COMBO_1, "Ceci est horrible.")
Le gros problème de ce langage viens de cette pool globale de fonctions.
En effet, il n'existe pas de notion de fonctions appartenant à un objet, à un élément GUI.
Du coup, qu'est-ce qu'ils ont fait ? Ils ont continué d'ajouter des fonctions de gestion GUI, BDD, TOUT dans la pool globale.
Du coup qu'est-ce qui s'est passé ? Cette pool globale est devenue lourde et grosse à un point ou ils n'ont plus trouvé de noms pour leurs fonctions.
Je vous donne la fonction "ChaîneFinirPar". Ok, ça semble correct, ça renvoie true si le string donné fini par l'autre donné.
Je vous donne la fonction "Milieu". Euh... hein ? C'est un substring.
Alors pourquoi dans ce cas ne pas avoir fais en sorte que toutes les fonctions de gestion des string commencent par "Chaîne" ?
La ou je veux en venir, c'est que ce langage n'est pas harmonieux.
Les noms de fonctions ne se suivent pas. Ce pool globale les a forcé à donner des noms de fonctions répétitifs et longs à taper.
( "ZoneRépétéeSelectOccurrence", "SansCaractèreGauche", "HCréeRéplicaTransportable", "EntierVersNuméroDeSemaine", "TableSauvePositionEtSélection", "fCopieFichierRépertoireWeb", "FenDonneLargeurAdaptée", etc... )
De ce fait, ce langage n'est absolument pas intuitif. Ce que l'on retiens, c'est que beaucoup de fonctions ont des noms tordus, et qu'il faut les apprendres.
Ils ont voulu réinventer la roue, "à la française". Aucunes conventions ne sont respectées, et passer à WinDev est un vrai cauchemar.
Que ce soit des conventions de nommage par rapport à l'exterieur... ou des conventions de nommage par rapport à leur propre langage.
C'est long à taper, c'est hardu à lire, c'est difficile à maintenir. Et pire : pour un développeur tatillon, rien n'est harmonieux. Bref, c'est la cata.
3) Il est en français. Plus exactement, il a été pensé en français.
Et c'est ce "pensé" qui change toute la donne.
Il est vrai qu'on peux passer du français à l'anglais en un clic.
Ils ont tout simplement traduit mot à mot les noms de fonctions françaises.
( Pour reprendre les exemples précédents : "LooperSelectCount", "NoLeftCharacter", "HCreateMoveableReplica", "IntegerToWeekNumber", "TableSavePositionAndSelection", "fCopyFileWebFolder", "WinGiveSuitableWidth", etc... )
Alors est-ce que cette vulgaire traduction est utile ? Non.
On ajoute simplement une traduction de mauvaise qualité et encore plus tordue que les noms de fonction déjà bien tordues existantes.
Je DETESTE coder en français. Et à cause de cette traduction, j'ai du me résigner à coder en français... J'en ai perdu mes cheveux.
Ce que critique la n'est pas le simple fait qu'il soit en français, mais plutôt que la traduction du langage ( ajoutée à la mauvaise hiérarchisation citée au point 2 ) rends la chose encore plus mauvaise à utiliser.
4) La stabilité du logiciel en règle générale, avec la toute dernière version utilisée au boulot. ( La 19 )
Exemple 1 : Le logiciel plante sans prévenir.
Souvent, le logiciel plante. "WinDev 19 machin blabla a céssé de fonctonner".
Cela arrive tellement souvent qu'on finit par capituler et s'y faire.
Exemple 2 : Les requêtes ne sont pas mises à jour.
Pour ceux qui seraient étrangers à l'environnement WinDev, sachez que la "bonne pratique" veux qu'on ne crée pas les requêtes directement dans le code.
On a pour cela une catégorie "Requêtes" dans le panneau de gestion des fichiers de projet.
On crée ainsi une requête écrite à la main, encore heureux.( l'interface de création assistée est mal foutue et lente à souhait. De toute façon, je ne m'en serai jamais servi. )
Problème : j'écris un SELECT * [...]
Puis plus tard, j'ajoute une nouvelle donnée dans ma table.
Que se passe-t-il ? Mon programme ne marche plus.
Après de multiples recompilations, "synchronisation de projet", et mise à jour de la base de donnée et zéro erreur de compilation, impossible de cerner le problème.
Solution : En fait, lorsqu'on rédige une requête, WinDev passe derrière et la retravaille "façon PCSoft".
Et apparemment, mon SELECT * ne selectionnait pas tout, mais uniquement les colonnes qu'il y avait lorsque j'avais crée la BDD au début.
Il m'a donc fallu aller éditer la requête, rajouter un caractère au pif, sauvegarder, remettre comme avant, sauvegarder.
Une matinée perdue pour ça.
"Développez dix fois plus vite !"
Exemple 3 : Une fois, j'ai réussi à écrire un bout de code qui faisait planter l'éditeur DES qu'il tentait de l'afficher.
Pas de solution disponible, impossible d'éditer le fichier de code à la main via notepad ou un truc du genre.
( Il est encrypté, ou compressé, ou un truc mystique du genre )
J'ai du virer mon fichier et le recommencer.
Exemple 4 : Il n'y a pas de fonctions de téléchargement de fichiers.
J'ai du bricoler avec une autre faisant une requête HTTP et donnant le texte comme résultat, et galérér avec des soucis d'encodage sous forme de "fichier texte" pour recomposer le fichier voulu.
Il est malheureusement impossible de checker le pourcentage pendant le téléchargement, et la plupart du temps le fichier en ressort corrompu.
Exemple 5 : Chaque fonction est encadrée dans leur "zone d'édition", comme si votre fichier de code était rempli d'une multitude de JTextField.
Il est donc impossible de copier/coller une multitude de fonctions d'un coup, et de les renommer à la va-vite pour les avoir sous la main.
On est obligé de se taper la technique [Raccourci / Menu, créer procédure]>[Ouverture d'une fenêtre demandant le nom, on écrit le nom]>on colle
Résultat : on perds 50 ans à créer nos fonctions une par une. Alors qu'avec Sublime Text à côté, j'aurais pu toutes les écrires d'un coup via les multi-curseurs puis les coller à la fin.
On passe une heure à faire ce qui est faisable en cinq minutes.
Exemple 6 : On ne peux créer les accesseurs d'une classe qu'un par un, via l'interface graphique maison.
Du coup, ça prends beaucoup de temps. Et à cause du point 5, on ne peux pas non plus les copier/coller d'un coup.
Pour mon dernier projet sous WinDev Mobile, j'ai du créer les accesseurs d'environ 15 classes, plus 5 variables par classe en moyenne.
75 fois : menu, classes, clic droit, créer accesseur, selectionner le field, cocher privé, public, static, etc, valider
Et au final, après avoir passé deux heures à me taper ces foutus menus... "les accesseurs ne sont pas compatible avec le framework Android"
Ah, ok...
J'ai du tous les supprimer, et j'ai tout mis en public. WHOA.
MER-VEI-LLEUX.
Exemple 7 : Pas de breakpoints quand vous développez pour Android.
Très très contraignant.
5) Le GDS.
Aaaaaaah, ce GDS... ( Gestionnaire De Sources )
C'est une copie du SVN, avec pleins de fonctions pour vous ralentir et vous pourrir la vie.
Vous voulez éditer un fichier ? Il faut "l'extraire".
En gros, vous indiquez à la base de donnée que le fichier est en cours d'édition, et que personne n'aura le droit à part vous de l'éditer.
Ah, ça, niveau gestion des conflits... c'est simple, y'en a pas. Par contre, niveau boulot en équipe, c'est chaud.
Il y a bien un mode permettant d'éditer le fichier de façon collaborative, mais il n'est pas stable.
Entre les crash, les réintégrations qui foirent, le GDS qui pète un câble et qui nous ressort des vieux fichiers on ne sais trop d'où...
Serieux, pour en revenir au point 2 et 3, pourquoi vouloir reinventer la roue ?
Des tas d'outils fiables existent déjà ! Git et SVN en sont des très bons, parmi tant d'autres !
Pourquoi avoir voulu nous sortir un truc maison malfoutu ?!
6) Le support.
WinDev est majoritairement utilisé en France.
Et malheureusement, très peu de forums documentent cet "outil".
On se retrouve la plupart du temps livré à soi-même, sans savoir si ce qu'on cherche à réaliser est au moins possible ou non...
7) Apprentissage.
Comme je l'ai dit, ce langage est de mauvaise qualité. Mal hierarchisé et organisé, long à écrire, etc...
Après quelques projets réalisés en entreprise, je n'en suis pas fier.
La moitié du code d'entre eux est du vulgaire bricolage. Bricolage pour faire en sorte que mon application marche, malgré le fait que certaines fonctions vitales à un développeur ne sont mêmes pas mentionnées dans leur documentation.
Alors qu'est-ce que ça donne si on met un développeur débutant sur du WinDev ?
Il va prendre ( et apprendre ) des EXTREMEMENT mauvaises habitudes.
Vous savez, le genre de gars qui pense que l'objet c'est une juste classe avec des variables dedans ? ( haha )
Les gars qui vous foutent 1500 lignes dans le "public static void main(String[] args)" ?
Voilà.
8) Communication.
Il n'est pas possible de parler de WinDev sans parler de la communication générale qu'effectue PCSoft.
Entre les nanas en bikiki, tenues légères et et maquillage de tapins ornant affiches & prospectus, sites internet et menus de leurs logiciels... c'est ridicule, c'est malsain.
Tenter de percer le marché serieux de l'informatique avec des seins et ( dans de très rares cas ) des pectoraux, ça ne devrait même pas être légal.
J'ai honte de voir l'image machiste et retardée que donne PCSoft du niveau informatique Français.
Tu m'étonne que les boites se plaignent que leurs employés se barrent dans des pays étrangers...
WinDev est un pesticide à employés qualifiés.
Ensuite viennent tout les messages précédents. C'est bon, on a compris.
On se tape tout les larbins du service commercial & marketing de chez PCSoft, pas besoin de commentaires supplémentaires.
Leur qualité marketing ( et de produits, par la même occasion ) est 1000 fois inférieure à celle qu'on pourrais trouver chez d'autres concurrents.
( Si vous ne connaissez pas cette boite et leurs produits, foncez. Cela fait quelques années maintenant que je code en PHP, en Java et en Python avec leurs produits, c'est un vrai paradis ! )
____________________________________
Voilà, si il y en a eu assez pour lire ce gros pâté, je vous remercie grandement.
Vous connaissez maintenant mon avis sur le sujet.
WinDev ( ainsi que tout les produits de PCsoft ) sont des produits à fuir comme la peste.
Ce que je voudrais dire aux nouveaux lecteurs : remarquez comme la quasi totalité des messages en faveur de WinDev sont de la même forme ?
Rédigées de la même façon. Toujours avec des comptes n'ayant été crée QUE pour poster ce message.
Ce que je veux dire : ne faites pas confiance aux posts dont les auteurs n'ont qu'un seul message.
Pas la peine de me dire "ah ahaha, tu n'a qu'un message, en fait tu nous demande de t'en foutre de ce que tu dis ?"
Non, absolument pas. Ce conseil n'en est pas un, vu que c'est simplement du bon sens.
On ne fais pas confiance à des gens qui n'ont qu'un post à leur actif.
Forgez-vous un sens critique, et regardez les choses en face.
Je tiens à remercier Zeb qui, en plus de son immense travail pour le site, garde un calme surhumain et n'a pas fermé ce thread.
PS : Désolé pour les fautes, j'ai essayé de faire du mieux que je pouvais, mais il reste vachement tard.
Demain dodo, lundi boulot.
____________________________________
if ( actualReader.enterprise == Enterprise.PCSOFT ) { System.out.println("Coucou les gens ! Remplissez bien vos rapports, et n'oubliez pas de finir votre quota de posts bienveillants envers PCsoft, hein ?
Bisous."); }