EquivalentGOTO en programmation scilab

Discutez d'informatique ici !
Patastronch
Membre Irrationnel
Messages: 1345
Enregistré le: 23 Aoû 2005, 00:53

par Patastronch » 01 Juil 2007, 03:50

Dominique Lefebvre a écrit:
Et mes gars utilisent les GOTO essentiellement pour le traitement des exceptions


setjmp et longjmp c 'est pas que pour faire joli hein ?



Dominique Lefebvre
Membre Légendaire
Messages: 8007
Enregistré le: 03 Déc 2005, 13:00

par Dominique Lefebvre » 01 Juil 2007, 11:41

Patastronch a écrit:setjmp et longjmp c 'est pas que pour faire joli hein ?


Eh mais dis moi!!! Quelle différence entre un setjmp, un longjmp et un goto? Ce sont des branchements inconditionnels tous les trois et donc, à la vue des arguments avancés contre le GOTO, je ne vois guère de différence....

Patastronch
Membre Irrationnel
Messages: 1345
Enregistré le: 23 Aoû 2005, 00:53

par Patastronch » 01 Juil 2007, 12:12

Dominique Lefebvre a écrit:Eh mais dis moi!!! Quelle différence entre un setjmp, un longjmp et un goto? Ce sont des branchements inconditionnels tous les trois et donc, à la vue des arguments avancés contre le GOTO, je ne vois guère de différence....



Encore une fois c'est pas la facon dont ca va etre traduit en assembleur qui est important c'est la maniere dont ca s'utilise. Aujourd'hui les compilateurs sont suffisemment bien foutu pour pas que ca fasse du code asssembleur crade derriere.

Un Goto n'est en rien comparable a une sauvegarde de contexte dans la clarté d'utilisation. De meme un Break n'est pas comparable a un Goto bien que ce soit également un branchement inconditionnel. Tiens on va également virer les return des fonctions et les fin de procédures qui sont elles aussi des branchement inconditionnel. PLus serieusement, c est pas le fait que ce soit un branchement inconditionnel qui est genant ... innutile de faire comme si tu l'avais pas compris ...

Il ya des branchements inconditionnels propres, ton incollade fermante a la fin d'un while n'est rien d'autre qu'un goto au debut du while, c 'est pas pour autant que c 'est crade.

Un cas ou Goto s'avere tres utile : La génération de code, comme c est un code qui n'est pas censé etre lu par un humain derriere ou etre compris, l'utilisation du goto n'est plus génante et facilite nettement les cas génératoire. Lex/Yacc en foutent partout d'ailleur et c 'est pas pour autant que ce qui est généré est mauvais, c est juste incompréhensible.

Selon moi cette politique du non au goto viens surtout du fait qu'il est facile de gouter a la facilité du Goto et d'en abuser si on se tolere son utilisation. C'est pour ca que je pense que tant qu'on a pas les bonnes habitude de programmation, il faut tout simplement se l'interdir.
Un goto qui se balade seul dans un code c 'est pas grave, une centaine qui s'entremellent et s'appellent entre eux c'est un code destiné a plus jamais etre rouvert.

Patastronch
Membre Irrationnel
Messages: 1345
Enregistré le: 23 Aoû 2005, 00:53

par Patastronch » 01 Juil 2007, 14:11

Dominique Lefebvre a écrit:Dois-je en conclure que tu penses que je suis incapable de pondre un code correct!


Non, mais qu'il est normal que beaucoup d'informaticiens ne connaissent rien a la physique, de meme que beaucoup de physiciens ne savent pas pas coder.

Dominique Lefebvre a écrit:Qu'appelles-tu "calcul exact"? Parce qu'en physique, avec une règle à calcul ou un SMP, on ne fait que du calcul approché...



Pour prendre un exemple. Je travailles beaucoup avec les proba en ce moment. C est probas se multiplient entre elles et comme tu te doute ya de jolie arrondie au bout de 4 ou 5 multiplication deja. La valeur exact n'est pas importante pour moi, mais parcontre savoir si tel valeur est plus grande que telle valeur est PRIMORDIAL dans les algos sur lesquelles je travaille. Ce probleme est deja plus simple que de renvoyer un nombre en précision pseudo infinie, mais est deja un vrai casse tete et double (voir triple selon les méthodes testées) le temps d'execution de l'algo. Et c est un tres gros probleme puisque je recherche justement des algos "rapide" pour résoudre mon probleme initiale.

On est tous d'accord que le Goto bien utilisé et rarement n'est pas un drame. Mais on est egalement tous d'accord je pense sur le fait qu'un codeur qui prends l'habitude de palier ses problemes par un goto a tendance a en user abusivement. Et je pense sincerement que c'est pour empecher ce second cas de figure qu'il y a une intolérence envers le Goto dans les enseignements informatique.

lapras
Membre Transcendant
Messages: 3664
Enregistré le: 01 Jan 2007, 13:00

par lapras » 01 Juil 2007, 14:15

bon bah au moins maintenant je sais que je dois arrêter d'utiliser des goto dans mes programmes :id:

eusebius
Membre Relatif
Messages: 134
Enregistré le: 28 Avr 2006, 19:53

par eusebius » 01 Juil 2007, 14:53

Patastronch a écrit:On est tous d'accord que le Goto bien utilisé et rarement n'est pas un drame.

Tu cèdes là, je sens que tu cèdes ! :happy2:

lapras a écrit:bon bah au moins maintenant je sais que je dois arrêter d'utiliser des goto dans mes programmes :id:

Oui je crois que le seul truc sur lequel tout le monde est d'accord ici c'est :
Si tu peux faire la même chose sans GOTO, essaie de le faire.


La petite note de l'informaticien "théoricien" (même s'il a pas la cote :-P) : on démontre qu'on peut toujours faire sans GOTO, dans les langages de programmation structurée (disposant de trucs genre for, while, procédures, fonctions, méthodes...), c'est à dire à peu près tous les langages modernes à l'exception des assembleurs (voir la notion de turing-complétude si ça vous amuse...)
On observe d'ailleurs que dans certains langages conçus par des chercheurs en informatique plus que par des ingénieurs ou des scientifiques non-info, il n'y a pas de goto (et même pas de continue/break).

bruce.ml
Membre Rationnel
Messages: 630
Enregistré le: 19 Juin 2007, 00:54

par bruce.ml » 01 Juil 2007, 16:08

eusebius a écrit:On observe d'ailleurs que dans certains langages conçus par des chercheurs en informatique plus que par des ingénieurs ou des scientifiques non-info, il n'y a pas de goto (et même pas de continue/break).


O'Caml power :zen:

Dominique Lefebvre
Membre Légendaire
Messages: 8007
Enregistré le: 03 Déc 2005, 13:00

par Dominique Lefebvre » 01 Juil 2007, 16:16

eusebius a écrit:Tu cèdes là, je sens que tu cèdes ! :happy2:


Oui je crois que le seul truc sur lequel tout le monde est d'accord ici c'est :


La petite note de l'informaticien "théoricien" (même s'il a pas la cote :-P) : on démontre qu'on peut toujours faire sans GOTO, dans les langages de programmation structurée (disposant de trucs genre for, while, procédures, fonctions, méthodes...), c'est à dire à peu près tous les langages modernes à l'exception des assembleurs (voir la notion de turing-complétude si ça vous amuse...)
On observe d'ailleurs que dans certains langages conçus par des chercheurs en informatique plus que par des ingénieurs ou des scientifiques non-info, il n'y a pas de goto (et même pas de continue/break).


Je suis entièrement d'accord..
Toutefois, dans scilab (INRIA :-)) il y a des break (pour le select- case) et même pour interrompre le déroulement d'une boucle : hérésie :ptdr: :ptdr: :ptdr:

bruce.ml
Membre Rationnel
Messages: 630
Enregistré le: 19 Juin 2007, 00:54

par bruce.ml » 01 Juil 2007, 16:42

Scilab c'est pas un langage fait pour les informaticiens. Les informaticiens sérieux utilisent Magma.

Dominique Lefebvre
Membre Légendaire
Messages: 8007
Enregistré le: 03 Déc 2005, 13:00

par Dominique Lefebvre » 01 Juil 2007, 16:46

bruce.ml a écrit:Scilab c'est pas un langage fait pour les informaticiens. Les informaticiens sérieux utilisent Magma.

ça c'est clair! c'est pour les scientifiques... C'est pour rire! C'est un bon outil pour faire des maquettes de simu, c'est tout! Personne ne prétend sérieusement que c'est un outil de programmation pour produire du code en masse !

 

Retourner vers ϟ Informatique

Qui est en ligne

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

Tu pars déja ?



Fais toi aider gratuitement sur Maths-forum !

Créé un compte en 1 minute et pose ta question dans le forum ;-)
Inscription gratuite

Identification

Pas encore inscrit ?

Ou identifiez-vous :

Inscription gratuite