HERETIQUE !
Concretement ca m'est arrive de mettre des gotos dans mon code.
le but etait de faire un 'break' sur plusieurs boucle en C. apart rajouter des variables booleenne un peu partout, je ne connais pas d'autre facon de faire.
Aaaaah ! Allumez le bûcher, il sont plusieurs !
Non, sérieusement, comme tu l'as dit, tu peux ajouter des variables booléennes. Ou utiliser un while, beaucoup de boucles for sont des whiles déguisés par fénéantise bien souvent...
Chouette ! tapons sur les physiciens : ce sont des mecs qui pondent du code abjecte (genre des lignes de 300 caractères bourrées d'opérateurs ternaires et de goto), dans des langages pourris (LabView me voici), avec des outils pitoyable (C:\programme.new, C:\programme.old, C:\programme.old.old, etc. en guise de contrôle de version).
Mais il faut les comprendre, programmer n'est pas leur métier, et ils n'ont _jamais_ le temps d'apprendre à faire ça correctement, car à chaque instant ça les retarderait dans la recherche en physique. Donc en gagnant un peu de temps à chaque fois, ils en perdent énormément sur le long terme, mais c'est un problème courant de la prise de décision.
Par contre, une société d'informatique qui embaucherait un physicien avec de telles pratiques (selon ce que dit godrik) serait elle absolument coupable.
P.S. Hitman_alias, sur un autre sujet, dans certains cas, de très belles choses peuvent être réalisé avec des goto. Regarde par exemple le code source de l'interpréteur de bytecode de OCaml. Sans goto il est impossible d'obtenir la performance qui est celle de ce programme, alors même qu'ils sont utilisé d'une manière très propre (et il y en a beaucoup).
Je jetterai un oeil, ça m'intrigue une utilisation propre des gotos... Surtout que je suis en train de réaliser "mon" (Enfin, pour mes users adorés) propre langage de script. Et pas de goto pour l'instant, non (En plus, ça m'obligerait à faire une passe supplémentaire)... Par contre, du foreach, il y en a toutes les sauces (normal pour un langage destiné à manipuler des arborescences dynamiques d'objets).
Il faudra beaucoup pour me convaincre d'implémenter le goto, déjà que les users ont des requêtes étranges (J'ai dû concevoir un système d'indirection dans la partie gauche des affectations pour pouvoir couvrir certains de leurs besoins, c'est dire... Ah, des variables à identifiants dynamiques...).
Sinon, dans mon cas, c'est de l'interprété, au moins je tape sur l'utilisateur en direct live de l'exécution. Je suis en train de tendre entre un mélange improbable d'XSLT et de shell... Le pire, c'est que ça marche...
D'ailleurs, ça fonctionne tellement bien que je pense m'éditer une version "custom" et diffuser ça en GNU.
dnob700
Le long terme... Ah, ça... "Nan, mais ça serait bien si on prenait en charge du XML directement en sortie en en entrée du workflow, pour la diffusion et la création de plugins, ça serait beaucoup mieux, il suffirait de livrer le XSLT qui va bien ^_^" "Oui, mais XSLT, il faut savoir s'en servir -_-"... Hélas...
hitman_alias_47 : si tu veux changer d'avis sur les goto, va voir comment c'est utilisé dans le code de linux ou celui de mpfr.
Pour l'exemple cité, un goto avec un label bien foutu c'est beaucoup plus lisible que l'ajout de variables booléenne à chaque boucle. Bien sur, il ne faut pas non plus sombrer dans l'excès inverse... notamment s'il n'y a qu'un seul niveau d'imbrication pour la boucle.
Dans le cas de linux, le goto est utilisé de la manière suivante :
- tu as plusieurs allocations compliqués à faire (qui vont potentiellement échouer)
- tu les fais dans l'ordre, puis vient la manipulation des données, et enfin la désallocation dans l'ordre inverse.
Les goto servent alors à sauter au moment où on a un problème d'allocation à l'endroit à partir du quel tu dois partir pour désallouer tout ce que tu avais réussi à allouer avant.
C'est le seul moyen propre que je connaisse pour faire ça. Au moins, tu es sûr avec ça de fortement limiter les risques de fuite mémoire.
Pour finir, je ne fois pas pourquoi tu fournirais un goto dans un langage de script développé par tes soins (tu as des tonnes de choses plus intelligente à fournir avant...).
PS : il n'y a pas que sur le forum linux que les threads dérivent complètement. ![]()
le source de linux comme code propre, on a déjà vu mieux ... (mais je troll).
Pour désallouer, une technique simple est de toujours initialiser tes pointeurs à NULL, ainsi ta désallocation ne pose pas de problème (tu désalloue tout, de toutes manières, free(NULL) est un nop).
dnob700 : je suis assez d'accord avec ta première phrase.
Pour la seconde, le problème est surtout de ne pas oublier de free. J'ai déjà vu de nombreux :
if ( (x = machin_alloc()) == NULL)
{
printf("Prout !\n");
return ;
}
pas de bol pour tout ce qui a été alloué par la fonction avant...
Quand tu as une succession de tests comme ça à faire, tu finis fatalement par oublier un free sur un truc avant un des return... ![]()
"tu finis fatalement par oublier"
Non. A moins d'être un vilain bidouilleur.
Tu as la prétention de pondre 1 Mloc sans faire un seul oubli toi ? ![]()
Je délègue au garbage collector :D
Salut !
Je vois que mon sujet a eu beaucoup de réponses, merci a tous même si certaines sont complètement HS
Je suis donc allé voir la conseillère d'orientation, je lui ai demandé si c'était possible d'aller en L pour faire de la programmation, elle m'a conseillé d'aller en STG (ça m'a étonné au départ) car la 2nde année d'STG , on peut choisir soit STG communication soit STG informatique de gestion(c'est donc ça qui m'interesse), pour ensuite aller en BTS développeur informatique ou BTS administrateur réseau ou bien DUT(pour la programmation de sites web).
J'aimerai bien faire soit BTS développeur d'applications ou alors DUT(pour les sites web) qui me plait bien aussi.
Vous en pensez quoi ? C'est une bon choix d'aller en STG et faire les études citées plus haut pour faire de la programmation ?
Merci ![]()
BTS développeur informatique, je connais pas.
Par contre, la suite logique d'un parcourt STG informatique, c'est BTS informatique de gestion d'après moi.
Après, je n'ai pas suivit ce cursus, donc je peux être dans le faux.
En BTS ig, tu feras du développement spécifique (ou pas) à la gestion de l'entreprise. Ça peut être en C, Java, PHP, etc. en fonction de/des entreprise(s) dans la/lesquelles tu feras ton/tes stage(s).
Pareil, le BTS administrateur réseau je connais pas, l'équivalent qui me semble le plus proche que je connaisse c'est BTS Réseaux et Télécoms (ou quelque chose dans le genre).
Et après ça, si t'es encore motivé pour les études, ET que tu te trouves dans la tête de classe ET que tu est "curieux" (dans le sens ou tu sauras développer des compétences par toi même), tu auras peut être l'occasion d'intégrer une Licence pro.
(enfin, là je t'ai donné les critères de la licence que j'ai suivie, sachant qu'il y avait dans ma promo des BTS ig, des BTS rt et des DUT info (ce que j'ai fait))
Ok merci pour les infos
Donc toi tu as fait un DUT info et maintenant tu fais quoi ?
Une licence professionnelle DA2I : http://da2i.univ-lille1.fr/
Venant d'un DUT, c'était assez "facile" dans le sens où le programme est la suite logique du programme de DUT. Mais l'effectif, c'est 50% DUT, 25% BTS et 25% Licence générale (environ)
C'est donc une licence orientée développement web et/ou administration système.
Mais malgré le fait que j'ai trouvé le programme "facile" on avait quand même BEAUCOUP de boulot (projets/TPs/etc.) Donc faut avoir une certaine motivation pour bosser comme ça 4ans après le bac (parce que j'avais suivit un autre parcours pendant 1 an après le bac
)
C'est normal : la licence professionnelle est un "DUT" pour personnes issues de la fac. Pour moi, c'est redondant avec un DUT.
Ca m'a l'air très intéressant ce que tu fais !
Le développement web me plaît beaucoup, plus encore que la programmation.
Donc je peux aussi faire cette license DA2I avec un BTS ...
J'aurai plus de débouchés vers une license pro ou en école d'ingénieur en prenant le BTS ou le DUT (pour travailler dans le dévelloppement web) ?
Heu, pour les écoles d'ingé, probablement DUT, mais c'est réservé aux majors de promo.
Pour la licence pro, selon la licence DUT ou BTS c'est équivalent.
Ok
Merci pour tout ![]()
Je suis en DUT Genie electrique et informatique industrielle.
On a fait du VHDL et là on fait du langage C.