PureBasic

Forums PureBasic
Nous sommes le Mer 22/Aoû/2018 6:43

Heures au format UTC + 1 heure




Poster un nouveau sujet Répondre au sujet  [ 28 messages ]  Aller à la page Précédente  1, 2
Auteur Message
 Sujet du message: Re: Le bien coder
MessagePosté: Jeu 05/Juil/2018 23:32 
Hors ligne
Avatar de l’utilisateur

Inscription: Dim 09/Oct/2005 16:51
Messages: 8468
Pas faux Djes..
@Poshu (Je précise que je ne me sens nullement agressé ou visé hein, on discute mais je fais parti des "vieux" codeurs maladroits.)

Je vais reprendre tout de même ta métaphore de sportif .
Robert aime bien le foot, mais il va à son entrainement 1 fois toutes les 2 semaines, parce qu'il n'a pas que ça à faire Robert.. Il a un taf, des gosses, une vie de famille, des potes et d'autres passions comme le piano ou il excelle parce qu'il en à fait 15 ans de façon assidu. Alors lors de la rencontre contre l'équipe adverse du coin, il arrive malgré son entrainement heinekenesque à marquer un but. Un but assez simple, une ouverture s'est présenté, il a tiré... bim, au fond. Ici pas de retournée acrobatique ou de ciseaux ou même de grosse reprise de volée..
Mais il a gagné Robert et il est bien content.. Il aurait pu apprendre les retournées, en étant plus assidu, en se pétant le dos à chaque entrainement, mais non, il ne la pas fait. Le regrette-t-il ? Pas vraiment..

J'arrête là cette métaphore foireuse pour dire qu'étant un des codeurs de longues dates, je n'en demeure pas moins créatif et probablement pétri de "mauvaise habitudes". Alors certes je n'ai pas toujours le réflexe des callbacks, mise à part dans certains cas précis (je l'ai par exemple utilisé pour un chrono histoire que le temps défile quand on bouge la fenêtre), mes progs sont fonctionnels. j'en ai même vendus quelques uns et les clients ont toujours été satisfaits.
Mais avant tout, si le résultat est à la hauteur de mes attentes, j'en suis très satisfait.
Alors est-ce de la fainéantise ? Franchement je ne crois pas. Je n'aspire pas à devenir un codeur parfait. Je ne crache pas sur un bon trick ou une méthode vraiment efficace mais je ne vais pas non plus tout le temps remettre en question ce que j'ai mis déjà beaucoup de temps à assimiler, et qui fonctionne. Je code avant tout pour le fun que cela m'apporte.

Enfin pour en revenir aux conseils "bien moisis", là encore c'est le point de vu du perfectionniste que tu es.
Si les events sont si merdiques, la team n'a qu'à les virer.. Mais vu qu'on a encore le choix et que cela fonctionne très bien pour la grande majorité des codes. Je ne vois pas le mal à aiguiller un débutant via cette méthode.
Maintenant il a plein de solutions, s'il si retrouve, il aura le choix.

Je vais de ce pas me coucher car j'ai mon bébé qui va se réveiller encore à 5h30 donc plus trop de créneau dodo.

_________________
~~~~Règles du forum ~~~~
.: Ar-S :. Tour + portable W10 x64 PB 5.4x / 5.6x
LDV MULTIMEDIA : Dépannage informatique Aude (11) Isère (38)
RESIZER GOLD : Mon logiciel de redimensionnement par lot


Haut
 Profil  
Répondre en citant le message  
 Sujet du message: Re: Le bien coder
MessagePosté: Ven 06/Juil/2018 7:27 
Hors ligne
Avatar de l’utilisateur

Inscription: Sam 31/Juil/2004 22:32
Messages: 1125
Alors en fait, la team a viré la boucle d'event... Sur SB. Et ça fait déjà un très gros argument pour ne plus l'utiliser : la compatibilité web/iOS/android.


Haut
 Profil  
Répondre en citant le message  
 Sujet du message: Re: Le bien coder
MessagePosté: Ven 06/Juil/2018 8:20 
Hors ligne
Avatar de l’utilisateur

Inscription: Dim 09/Oct/2005 16:51
Messages: 8468
On parlait de PB.

_________________
~~~~Règles du forum ~~~~
.: Ar-S :. Tour + portable W10 x64 PB 5.4x / 5.6x
LDV MULTIMEDIA : Dépannage informatique Aude (11) Isère (38)
RESIZER GOLD : Mon logiciel de redimensionnement par lot


Haut
 Profil  
Répondre en citant le message  
 Sujet du message: Re: Le bien coder
MessagePosté: Ven 06/Juil/2018 8:56 
Hors ligne

Inscription: Sam 08/Fév/2014 15:19
Messages: 1348
EnableExplicit
On en voit l'intérêt lorsqu'il nous arrive de patauger durant des jours sur un code parce pour finalement trouver qu'au deuxième appel d'une variable on a inversé deux lettres. Avec EnableExplict, au deuxième appel, le compilateur aurait dit "cette variable n'existe pas" Donc c'est très utile dans tous les cas voir indispensable pour gagner du temps si on est dyslexique.

EnableExplicit devrait même être plus strict et ne pas considérer qu'une variable numérique sans type est par défaut un Integer.
On ne se retrouverait pas avec des variables qui deviennent négatives car elles ont fait la boucle,
Code:
a = 9223372036854775807
Debug a + 1
Résultat valeur négative (compilo 64bits) -9223372036854775808
ou à utiliser 4 à 8 octets pour une variable à un seul chiffre (qui aurait pu être codée sur 1 avec un .a .b ou .c)

Inconvénient d'EnableExplict, c'est qu'on a tendance à déclarer puis parfois oublier des variables et utiliser de la RAM pour rien, et quand c'est un tableau à plusieurs dimensions... C'est un peu pour cela que j'avais demandé à une époque s'il était possible de mettre dans le précompilo de PB une option qui existe dans d'autres langages et qui sort une phrase de type "La variable xxx a été déclarée, mais jamais utilisée". Ça incite à nettoyer le code.

Je serais même partisan d'une option genre NoGadgetNum qui obligerait à utiliser une constante ou une variable pour l'ID des gadgets

Bind ou classique
Pas aussi évident que ça n'y parait. Par exemple mettre un Bind sur le resize de la fenêtre principale provoque un nouvel appel de la fonction à chaque changement de taille même d'un pixel et en cours de manœuvre. C'est joli car on voit tous les objets grandir en même temps, mais sur les petit configs avec beaucoup d'objets, ça plombe le CPU.
La méthode classique ne redessine les objets que quand on relâche la souris

La boucle classique à base de WaitWindowEvent oblige le programme à s'arrêter dès qu'un event listé se produit. Dans certains types d'applications, c'est très bien car ça empêche que l'utilisateur ne reclique pensant qu'il ne se passe rien alors que le programme commence un traitement.

Sur le forum us, il a été démontré un bug (5.70b1): Si on bind plusieurs fois un même objet, unbind ne fonctionne plus.

Et il y avait d'autres désavantages évoqués sur le forum us (mais je ne m'en ne me souviens plus)

Mais de toutes façon, on peut mélanger les deux, et c'est très bien, car on peut par exemple mettre les actions qui doivent executer une par une en mode classique et d'autres (comme l'affichage d'une pendule) en bind

_________________
Windows 10 x64 - CPU intel i3 - RAM 16Go - Video NVidia GT 620 - 1920x1080
Linux Slackware et Debian 64bits / xfce - (VirtualBox 5)


Dernière édition par Marc56 le Ven 06/Juil/2018 9:05, édité 1 fois.

Haut
 Profil  
Répondre en citant le message  
 Sujet du message: Re: Le bien coder
MessagePosté: Ven 06/Juil/2018 9:04 
Hors ligne
Avatar de l’utilisateur

Inscription: Mer 29/Juin/2011 14:11
Messages: 1485
Localisation: Belgique
Même si dans la plupart de mes programmes la boucle d'événement se limite à

Code:
Repeat
   WaitWindowEvent()
forever


Car j'utilise les "bind", cette boucle peut s’avérer très utile.

Si je dis pas de bêtises, beaucoup de langages avec une programmation événementiel (GUI) comme par exemple "Java" n'on pas ce type de boucle et oblige de passé par des threads pour la gestion hors événementiel.

Avec Pb et ca boucle on est vraiment libre d’interagir comme on veux même si il n'y à pas d’événement.

_________________
Linux Mint / Windows 10 64 bits PB: 5.61 ; 5.62 beta


Haut
 Profil  
Répondre en citant le message  
 Sujet du message: Re: Le bien coder
MessagePosté: Ven 06/Juil/2018 9:48 
Hors ligne
Avatar de l’utilisateur

Inscription: Sam 31/Juil/2004 22:32
Messages: 1125
@Ar-S Moui. J'ai du mal à séparer les deux, et surtout : pourquoi ne pas faire une pierre deux coups?
En dehors de ça, on a vu comment la communauté réagi quand la team essaye de supprimer des features qui sont dépassées : la controverse autour de l’arrêt du support de l'ascii a fait trembler les murs...
Je l'ai dit dans mon premier poste : c'est difficile de faire un choix pour ses users, mais la suppression d'options est -la plupart du temps- quelque chose de positif.

@Marc je crois que quelqu'un avait fait un precompiler qui analysait ton code à la recherche de variables inutilisées, nan? (pas sûr de moi sur ce coup). Sinon, je trouve que perdre 4 octets de ram sur des machines modernes parce qu'on a déclaré une variable inutile, c'est pas cher payé :p

J'utilise rarement les fonctions internes à PB pour callback (j'avais découvert la surpuissance du système bien avant que ce ne soit implémenté, merci Srod!) et j'ai depuis longtemps dev ma propre solution pour ça; donc j'ignore tout des quirks liés à l'implémentation officielle... Mais tout comme la ram au dessus, est ce bien grave de pomper plus de CPU quand on resize? Déjà parce qu'on ne resize pas toutes les deux secondes, mais aussi parce que sur les machines modernes, on est pas à quelques milliers d'instructions prêt.

Comme je ne code pas d'application critique, je vais privilégier un code lisible à un code performant. Et c'est probablement le coût de la structure que j'emploie généralement dans mes programmes : c'est un peu plus lent.

Ça reste un argument complètement valide pour utiliser la boucle d’événements ponctuellement.

@Microdevweb j'ai la même ;3

Tous les autres langages que je connais utilisent exclusivement les callbacks (ça veut pas dire que je connais tous les langages!), Windows utilise des callbacks. Le callback, c'est un gros standard.


Haut
 Profil  
Répondre en citant le message  
 Sujet du message: Re: Le bien coder
MessagePosté: Ven 06/Juil/2018 10:51 
Hors ligne

Inscription: Sam 08/Fév/2014 15:19
Messages: 1348
poshu a écrit:
Sinon, je trouve que perdre 4 octets de ram sur des machines modernes parce qu'on a déclaré une variable inutile, c'est pas cher payé :p

Ca depend de ce qu'on fait, imaginons un tableau déclaré mais jamais utilisé
Code:
Mem_Before = MemoryStatus(#PB_System_FreePhysical)

Dim Forgotten_Array.s(10000,10000)

Mem_After  = MemoryStatus(#PB_System_FreePhysical)

Debug FormatNumber(Mem_Before - Mem_After, 0)

Code:
799,944,704

800 Mo... utilisés pour rien donc inutilisable pour le reste :o

Comme en général les codeurs ont le dernier pc et glonflé à donf en ram, s'ils ne passent pas par le profileur ou tout autre méthode bien carrée, ils ne voient rien.
"Mais pourquoi les utilisateurs râlent parce que ça swapp tout le temps l'appli ?" :mrgreen:

Un bon codeur doit être radin et gratter tout ce qu'il peut en RAM (tout bon programmeur devrait commencer sur une machine sous-dimensionnée)

_________________
Windows 10 x64 - CPU intel i3 - RAM 16Go - Video NVidia GT 620 - 1920x1080
Linux Slackware et Debian 64bits / xfce - (VirtualBox 5)


Haut
 Profil  
Répondre en citant le message  
 Sujet du message: Re: Le bien coder
MessagePosté: Ven 06/Juil/2018 12:01 
Hors ligne
Avatar de l’utilisateur

Inscription: Mer 29/Juin/2011 14:11
Messages: 1485
Localisation: Belgique
C'est une des faiblesse de l'ide de pb, il ne signale pas les variables ,procédure etc non utilisées.

_________________
Linux Mint / Windows 10 64 bits PB: 5.61 ; 5.62 beta


Haut
 Profil  
Répondre en citant le message  
 Sujet du message: Re: Le bien coder
MessagePosté: Ven 06/Juil/2018 12:08 
Hors ligne
Avatar de l’utilisateur

Inscription: Sam 31/Juil/2004 22:32
Messages: 1125
V'la la gueule du tableau aussi xD c'est vraiment un besoin hyper spécifique et oublier un truc aussi massif, c'est quand même une bonne grosse faute.

Sinon, pour la machine bas de gamme, je suis on ne peut plus d'accord, j'ai une tablette chinoise sous windows 10 à 60€, tout ce que je fais doit tourner dessus... Des fois c'est assez chiant, mais c'est un exercice gratifiant à la fin.


Haut
 Profil  
Répondre en citant le message  
 Sujet du message: Re: Le bien coder
MessagePosté: Ven 06/Juil/2018 12:16 
Hors ligne
Avatar de l’utilisateur

Inscription: Dim 09/Oct/2005 16:51
Messages: 8468
Image

_________________
~~~~Règles du forum ~~~~
.: Ar-S :. Tour + portable W10 x64 PB 5.4x / 5.6x
LDV MULTIMEDIA : Dépannage informatique Aude (11) Isère (38)
RESIZER GOLD : Mon logiciel de redimensionnement par lot


Haut
 Profil  
Répondre en citant le message  
 Sujet du message: Re: Le bien coder
MessagePosté: Ven 06/Juil/2018 13:05 
Hors ligne
Avatar de l’utilisateur

Inscription: Lun 17/Déc/2007 12:44
Messages: 1617
Marc56 > une autre méthode pour savoir ce qu'est la variable est d'indenter ça propre variable, je m'explique. On part d'un principe par exemple, toutes variable est en majuscule et les choses importante de la variable séparer par "_" (c'est un exemple).

Ce qui peu me donner par exemple "MAVARIABLE_QUIFAIT_UNTRUC", apres cela ne donne toujours pas son "type", alors pour ma part j'ajoute son type en minuscule au début ce qui me donne donc "iMAVARIABLE_QUIFAIT_UNTRUC", après tu peux aussi ajouter un "_" pour séparer les choses ce qui peut donnée "i_MAVARIABLE_QUIFAIT_UNTRUC".

un define simple avec cette norme perso donnerait (ce n'est pas forcement ce que j'utilise mais ça explique bien) :
Code:
define.i i_MAVARIABLE_QUIFAIT_UNTRUC

Les méthodes sont multiples pour avoir un code clair et de connaitre facilement le type de la variable peut être utile.

après pour tout ce qui est les tableaux ect... rien n’empêche une méthode perso mais simplifier, du style un dim peut être "tab_", une list "lst_" et j'en passe, c'est juste une question de logique personnelle.

cordialement,
GallyHC

PS: je fait parti de ce qui sont contre le fait de 100% unicode, juste sur le fait du chargement de fichier dans des structures (genre les headers). Ou avoir de quoi pouvoir dire a la variable de structure qu'elle prend en compte de l'ASCII.

_________________
Image

Image

Image Official site of PureBasic
Image Official site of SpiderBasic

Configuration : Tower: Windows 7 (Processeur: i7 "x64") (Mémoire: 16Go) (GeForce GTX 760 - 2Go) - PureBasic 5.62 (x86 et x64)


Haut
 Profil  
Répondre en citant le message  
 Sujet du message: Re: Le bien coder
MessagePosté: Ven 06/Juil/2018 13:17 
Hors ligne
Avatar de l’utilisateur

Inscription: Sam 31/Juil/2004 22:32
Messages: 1125
GallyHC a écrit:
PS: je fait parti de ce qui sont contre le fait de 100% unicode, juste sur le fait du chargement de fichier dans des structures (genre les headers). Ou avoir de quoi pouvoir dire a la variable de structure qu'elle prend en compte de l'ASCII.

Mais... Passer à l'unicode n’empêche pas de pouvoir lire de l'ascii. La preuve : pb peut toujours lire de l'ascii. Par contre, passer à l'unicode, c'est moins de taff pour l'équipe de PB qui peut se concentrer sur des trucs plus important, c'est s'assurer que tous les outils seront bien compilés en unicode (toujours pour protéger les gens de leur propre ignorance), c'est aussi rendre les codes plus compatibles : fut une époque où, quand on choppait un code sur un forum, c'était un peu la loterie pour la compatibilité unicode. Bref, ça a beaucoup d'avantage et peu d’inconvénients :p
J'ai lu sur le forum anglais qu'une app compilé en Unicode produisait du son moins bon qu'en ascii... J'ai pas vérifié et j'ai du mal à imaginer comment ça marche (je suis pas dans le code) mais, si c'est le cas, le passage à l'unicode forcé est l'occasion de régler ces petits désagréments aussi.


Haut
 Profil  
Répondre en citant le message  
 Sujet du message: Re: Le bien coder
MessagePosté: Ven 06/Juil/2018 13:42 
Hors ligne
Avatar de l’utilisateur

Inscription: Lun 17/Déc/2007 12:44
Messages: 1617
poshu>

j'ai un header pour les fichiers (par exemple les WAV), je suis obliger de faire des actions inutiles à cause du 100% unicode. je vais faire simple en donnant du code et des exemples.

Avant un simple :
Code:
Structure WaveFileHeader
  chunkid.s{4}
  chunksize.l
  format.s{4}
  fmtchunkid.s{4}
  fmtchunksize.l
  audioformat.u
  numchannels.u
  samplerate.l
  byterate.l
  blockalign.u
  bitspersample.u
  datachunkid.s{4}
  datachunksize.l
EndStructure
Global tabWaveFile.WaveFileHeader

; au niveau injection du fichier dans la structure été :

ReadData(file, tabWaveFile, SizeOf(WaveFileHeader))

; pour l'info du header :

debug tabWaveFile\chunkid

Avec le fait du passage au 100% unicode cela n'est plus du tout possible et on doit passer par une méthode a trouver soit même (je précise bien soit même et qui donne dans mon cas) :

Code:
Structure WaveFileHeader
  chunkid.a[4]
  chunksize.l
  format.a[4]
  fmtchunkid.a[4]
  fmtchunksize.l
  audioformat.u
  numchannels.u
  samplerate.l
  byterate.l
  blockalign.u
  bitspersample.u
  datachunkid.a[4]
  datachunksize.l
EndStructure
Global tabFile.WaveFileHeader

; Déjà l'ajout :
Macro ReadString(structProperty)
   LSet(PeekS(@structProperty, 4, #PB_Ascii), 4, " ")
EndMacro

; au niveau injection du fichier dans la structure (ça n'a pas changer):

ReadData(file, tabWaveFile, SizeOf(WaveFileHeader))

; et donc maintenant pour lire l'info je doit faire

debug ReadString(tabWaveFile\chunkid)

Pourquoi en déclarant un string dans une structure, il doit forcement être unicode? je ne connait pas encore de header de fichier en unicode (même les fichiers texte en unicode), mais par contre l'avoir forcer doit faire modifier le code existant des utilisateurs. A la rigueur si il y avait pour les structure une chose comme "montruc.s-ascii" ou l'on peu ajouter des limites comme "montruc.s-ascii{4}", la pas de problème, mais le fait est que le passage n'a pas arranger les chose par le fait qu'il y a eu des oublis toujours pas corriger.

J'ai bien peur, que tu vois que le futur et que tu vois pas l’utilité du passé. un fichier n'est que des bits mis bout à bout. l'unicode n'est juste qu'une extension de l'ascii mais ne le remplace pas (on à juste ajouter des bits pour encoder plus de caractères).

Bien cordialement,
GallyHC

_________________
Image

Image

Image Official site of PureBasic
Image Official site of SpiderBasic

Configuration : Tower: Windows 7 (Processeur: i7 "x64") (Mémoire: 16Go) (GeForce GTX 760 - 2Go) - PureBasic 5.62 (x86 et x64)


Haut
 Profil  
Répondre en citant le message  
Afficher les messages postés depuis:  Trier par  
Poster un nouveau sujet Répondre au sujet  [ 28 messages ]  Aller à la page Précédente  1, 2

Heures au format UTC + 1 heure


Qui est en ligne

Utilisateurs parcourant ce forum: Aucun utilisateur enregistré et 4 invités


Vous ne pouvez pas poster de nouveaux sujets
Vous ne pouvez pas répondre aux sujets
Vous ne pouvez pas éditer vos messages
Vous ne pouvez pas supprimer vos messages

Rechercher:
Aller à:  

 


Powered by phpBB © 2008 phpBB Group | Traduction par: phpBB-fr.com
subSilver+ theme by Canver Software, sponsor Sanal Modifiye