Dans le niouze anglais, j'ai trouvé 2 messages qui intéresseront ceux qui
veulent le GOTO en python.
Beurk diront certains.
Mais ceux qui essayent de migrer de vieilles appli en GW-Basic ou autre
pourraient bien apprécier...
J'ai pas tout compris dans le premier, je vous le livre tel que:
----------------------------------------------------------------------------
-------------------------------
On peut utiliser le goto seulement si on programme avec des numéros de
ligne:
"""
10 import sys
20 real_stdout = sys.stdout
30 class fake_stdout(object): pass
40 fake_stdout.write = lambda x, y: None
50 sys.stdout = fake_stdout()
60 import this
70 sys.stdout = real_stdout
80 d = {}
90 c = 65
100 i = 0
110 d[chr(i+c)] = chr((i+13) % 26 + c)
120 if i == 26: goto(150)
130 i += 1
140 goto(110)
150 if c == 97: goto(180)
160 c = 97
170 goto(100)
180 print "How zen it is:"
190 print "".join([d.get(c, c) for c in this.s])
"""
z = dict((int(x[0]), " ".join(x[1:])) for x in (y.split() for y in (__doc__
or _).strip().splitlines())); k = [0] + sorted(z.keys()); m = dict((b,a) for
a,b in enumerate(k)); l = k[1]
def goto(n): global l; l = k[m[n]-1]
while l and l <= k[-1]: exec z[l]; l = l != k[-1] and k[m[l]+1]
--
Michael Hoffman
----------------------------------------------------------------------------
-------------------------------
Le deuxième est un lien vers un module qui ajoute le goto à python.
http://entrian.com/goto/index.html
Je n'ai pas vérifié si ça marche.
----------------------------------------------------------------------------
-------------------------------
++jm
def draw_items(items): for item in items: item.draw()
On voit bien que le switch se fait (implicitement) par polymorphisme.
-- bruno desthuilliers ruby -e "print ''.split('@').collect{|p| p.split('.').collect{|w| w.reverse}.join('.')}.join('@')" --
bruno modulix
Alex Marandon wrote:
On 2005-02-11, bruno modulix wrote: [...]
z = dict((int(x[0]), " ".join(x[1:])) for x in (y.split() for y in (__doc__ or _).strip().splitlines())); k = [0] + sorted(z.keys()); m = dict((b,a) for a,b in enumerate(k)); l = k[1]
[...]
Non, sérieusement, à quoi ça sert que le BDFL se donne la peine de nous pondre un langage lisible, si c'est pour en faire une pareille horreur? C'est de la perversité, là !-)
Ouaip, on dirait ta signature ;-)
<troll> Ahh... Je me demandais aussi si quelqu'un allait réagir !-)
Tu la veux en Python ?
python -c "print '@'.join('.'.join([w[::-1] for w in p.split('.')]) for p in ''.split('@')])"
Je ne suis pas sûr que ce soit tellement plus clair, note bien !-) </troll>
-- bruno desthuilliers ruby -e "print ''.split('@').collect{|p| p.split('.').collect{|w| w.reverse}.join('.')}.join('@')" --
Alex Marandon wrote:
On 2005-02-11, bruno modulix <onurb@xiludom.gro> wrote:
[...]
z = dict((int(x[0]), " ".join(x[1:])) for x in (y.split() for y in (__doc__
or _).strip().splitlines())); k = [0] + sorted(z.keys()); m = dict((b,a) for
a,b in enumerate(k)); l = k[1]
[...]
Non, sérieusement, à quoi ça sert que le BDFL se donne la peine de nous
pondre un langage lisible, si c'est pour en faire une pareille horreur?
C'est de la perversité, là !-)
Ouaip, on dirait ta signature ;-)
<troll>
Ahh... Je me demandais aussi si quelqu'un allait réagir !-)
Tu la veux en Python ?
python -c "print '@'.join('.'.join([w[::-1] for w in p.split('.')])
for p in 'onurb@xiludom.gro'.split('@')])"
Je ne suis pas sûr que ce soit tellement plus clair, note bien !-)
</troll>
--
bruno desthuilliers
ruby -e "print 'onurb@xiludom.gro'.split('@').collect{|p|
p.split('.').collect{|w| w.reverse}.join('.')}.join('@')"
--
z = dict((int(x[0]), " ".join(x[1:])) for x in (y.split() for y in (__doc__ or _).strip().splitlines())); k = [0] + sorted(z.keys()); m = dict((b,a) for a,b in enumerate(k)); l = k[1]
[...]
Non, sérieusement, à quoi ça sert que le BDFL se donne la peine de nous pondre un langage lisible, si c'est pour en faire une pareille horreur? C'est de la perversité, là !-)
Ouaip, on dirait ta signature ;-)
<troll> Ahh... Je me demandais aussi si quelqu'un allait réagir !-)
Tu la veux en Python ?
python -c "print '@'.join('.'.join([w[::-1] for w in p.split('.')]) for p in ''.split('@')])"
Je ne suis pas sûr que ce soit tellement plus clair, note bien !-) </troll>
-- bruno desthuilliers ruby -e "print ''.split('@').collect{|p| p.split('.').collect{|w| w.reverse}.join('.')}.join('@')" --
bruno modulix
jean-michel wrote:
"bruno modulix" a écrit dans le message de news:420c812a$0$13407$
Non, sérieusement, à quoi ça sert que le BDFL se donne la peine de nous pondre un langage lisible, si c'est pour en faire une pareille horreur? C'est de la perversité, là !-)
Non, c'est simplement que parfois si tu ne peux pas reprendre une vieille appli qui ne tourne plus que sur un vieux PC msdos (qui justement vient de tomber en rade...), tu n'a plus qu'à trouver la solution miracle pour migrer le + vite possible.
Cela implique-t'il de devoir coder aussi salement qu'en GW-Basic ?-) Sérieusement, il n'est de toutes façon pas possible de porter le code 'ligne à ligne', donc autant en profiter pour faire propre, non ?
Pardon ? On n'a pas le temps ?
Bon, tant pis, on passera deux fois plus de temps à débugguer cette horreur qu'à faire la migration proprement, mais c'est vous le chef, chef !-)
Les applications héritées sont une réalité en entreprise.
Je ne le sais que trop bien, hélas :(
Plus personne n'en veux (d'où le beurk), sauf l'utilisateur évidemment.
Cela dit, si tu me trouves un algorithme de migration qui me sort un programme python tout joli à partir d'un vieux code en cobol ou en basic plein de gotos, je suis (très) intéressé...;-)
Je passe !-)
-- bruno desthuilliers ruby -e "print ''.split('@').collect{|p| p.split('.').collect{|w| w.reverse}.join('.')}.join('@')" --
jean-michel wrote:
"bruno modulix" <onurb@xiludom.gro> a écrit dans le message de
news:420c812a$0$13407$626a14ce@news.free.fr...
Non, sérieusement, à quoi ça sert que le BDFL se donne la peine de nous
pondre un langage lisible, si c'est pour en faire une pareille horreur?
C'est de la perversité, là !-)
Non, c'est simplement que parfois si tu ne peux pas reprendre une vieille
appli qui ne tourne plus que sur un vieux PC msdos (qui justement vient de
tomber en rade...), tu n'a plus qu'à trouver la solution miracle pour migrer
le + vite possible.
Cela implique-t'il de devoir coder aussi salement qu'en GW-Basic ?-)
Sérieusement, il n'est de toutes façon pas possible de porter le code
'ligne à ligne', donc autant en profiter pour faire propre, non ?
Pardon ? On n'a pas le temps ?
Bon, tant pis, on passera deux fois plus de temps à débugguer cette
horreur qu'à faire la migration proprement, mais c'est vous le chef,
chef !-)
Les applications héritées sont une réalité en entreprise.
Je ne le sais que trop bien, hélas :(
Plus personne n'en
veux (d'où le beurk), sauf l'utilisateur évidemment.
Cela dit, si tu me trouves un algorithme de migration qui me sort un
programme python tout joli à partir d'un vieux code en cobol ou en basic
plein de gotos, je suis (très) intéressé...;-)
Je passe !-)
--
bruno desthuilliers
ruby -e "print 'onurb@xiludom.gro'.split('@').collect{|p|
p.split('.').collect{|w| w.reverse}.join('.')}.join('@')"
--
"bruno modulix" a écrit dans le message de news:420c812a$0$13407$
Non, sérieusement, à quoi ça sert que le BDFL se donne la peine de nous pondre un langage lisible, si c'est pour en faire une pareille horreur? C'est de la perversité, là !-)
Non, c'est simplement que parfois si tu ne peux pas reprendre une vieille appli qui ne tourne plus que sur un vieux PC msdos (qui justement vient de tomber en rade...), tu n'a plus qu'à trouver la solution miracle pour migrer le + vite possible.
Cela implique-t'il de devoir coder aussi salement qu'en GW-Basic ?-) Sérieusement, il n'est de toutes façon pas possible de porter le code 'ligne à ligne', donc autant en profiter pour faire propre, non ?
Pardon ? On n'a pas le temps ?
Bon, tant pis, on passera deux fois plus de temps à débugguer cette horreur qu'à faire la migration proprement, mais c'est vous le chef, chef !-)
Les applications héritées sont une réalité en entreprise.
Je ne le sais que trop bien, hélas :(
Plus personne n'en veux (d'où le beurk), sauf l'utilisateur évidemment.
Cela dit, si tu me trouves un algorithme de migration qui me sort un programme python tout joli à partir d'un vieux code en cobol ou en basic plein de gotos, je suis (très) intéressé...;-)
Je passe !-)
-- bruno desthuilliers ruby -e "print ''.split('@').collect{|p| p.split('.').collect{|w| w.reverse}.join('.')}.join('@')" --
jean-michel
Sérieusement, il n'est de toutes façon pas possible de porter le code 'ligne à ligne', donc autant en profiter pour faire propre, non ?
Si si c'est possible !
Pas à la main évidemment. Tu traites les sources initiaux (par exemple en basic) avec un utilitaire (en python, of course), et tu obtiens un source résultant. S'il le source initial n'est pas trop varié, et si tu peux respecter la structure algorithmique initiale, ça marche ! J'ai déjà eu à le faire pour migrer du cobol et ça m'a permis de migrer une application de plus de 6000 programmes en moins de deux mois. Impossible à la main ! Et pourtant, le code a bien été porté 'ligne à ligne'.
++jm
Sérieusement, il n'est de toutes façon pas possible de porter le code
'ligne à ligne', donc autant en profiter pour faire propre, non ?
Si si c'est possible !
Pas à la main évidemment. Tu traites les sources initiaux (par exemple en
basic) avec un utilitaire (en python, of course), et tu obtiens un source
résultant. S'il le source initial n'est pas trop varié, et si tu peux
respecter la structure algorithmique initiale, ça marche !
J'ai déjà eu à le faire pour migrer du cobol et ça m'a permis de migrer une
application de plus de 6000 programmes en moins de deux mois. Impossible à
la main ! Et pourtant, le code a bien été porté 'ligne à ligne'.
Sérieusement, il n'est de toutes façon pas possible de porter le code 'ligne à ligne', donc autant en profiter pour faire propre, non ?
Si si c'est possible !
Pas à la main évidemment. Tu traites les sources initiaux (par exemple en basic) avec un utilitaire (en python, of course), et tu obtiens un source résultant. S'il le source initial n'est pas trop varié, et si tu peux respecter la structure algorithmique initiale, ça marche ! J'ai déjà eu à le faire pour migrer du cobol et ça m'a permis de migrer une application de plus de 6000 programmes en moins de deux mois. Impossible à la main ! Et pourtant, le code a bien été porté 'ligne à ligne'.
++jm
Do Re Mi chel La Si Do
Salut !
Pour les fanatiques du GOTO, je signale l'existence du langage GOTO++ (GPP) Plus de renseignements, machine virtuelle, doc, etc, ici : http://gpp.niacland.net
Exemple, un calcul de Pi : ftp://gpp.niacland.net/gpp/archives/pi.gpp
@-salutations -- Michel Claveau
Salut !
Pour les fanatiques du GOTO, je signale l'existence du langage GOTO++ (GPP)
Plus de renseignements, machine virtuelle, doc, etc, ici :
http://gpp.niacland.net
Exemple, un calcul de Pi :
ftp://gpp.niacland.net/gpp/archives/pi.gpp
Pour les fanatiques du GOTO, je signale l'existence du langage GOTO++ (GPP) Plus de renseignements, machine virtuelle, doc, etc, ici : http://gpp.niacland.net
Exemple, un calcul de Pi : ftp://gpp.niacland.net/gpp/archives/pi.gpp
@-salutations -- Michel Claveau
Loïc Joly
bruno modulix wrote:
Ouaip, on dirait ta signature ;-)
<troll> Ahh... Je me demandais aussi si quelqu'un allait réagir !-)
Tu la veux en Python ?
python -c "print '@'.join('.'.join([w[::-1] for w in p.split('.')]) for p in ''.split('@')])"
Je ne suis pas sûr que ce soit tellement plus clair, note bien !-)
Merci, je vien de comprendre la différence entre Ruby et Python : Dans les deux cas, on met des trucs illisibles, mais on ne les met juste pas dans le même ordre...
</troll>
-- Loïc
bruno modulix wrote:
Ouaip, on dirait ta signature ;-)
<troll>
Ahh... Je me demandais aussi si quelqu'un allait réagir !-)
Tu la veux en Python ?
python -c "print '@'.join('.'.join([w[::-1] for w in p.split('.')])
for p in 'onurb@xiludom.gro'.split('@')])"
Je ne suis pas sûr que ce soit tellement plus clair, note bien !-)
Merci, je vien de comprendre la différence entre Ruby et Python : Dans
les deux cas, on met des trucs illisibles, mais on ne les met juste pas
dans le même ordre...
<troll> Ahh... Je me demandais aussi si quelqu'un allait réagir !-)
Tu la veux en Python ?
python -c "print '@'.join('.'.join([w[::-1] for w in p.split('.')]) for p in ''.split('@')])"
Je ne suis pas sûr que ce soit tellement plus clair, note bien !-)
Merci, je vien de comprendre la différence entre Ruby et Python : Dans les deux cas, on met des trucs illisibles, mais on ne les met juste pas dans le même ordre...
</troll>
-- Loïc
Gilles Lenfant
Dans le niouze anglais, j'ai trouvé 2 messages qui intéresseront ceux qui veulent le GOTO en python. Beurk diront certains. Mais ceux qui essayent de migrer de vieilles appli en GW-Basic ou autre
Super !
Comment faire du Python (presque) aussi inmaintenable et illisible que du GWBasic ;)
Au prochain épisode : comment se passer des classes, de la gestion des exceptions, limiter les symboles à 2 caractères, limiter la mémoire utilisable à 64Ko, etc, etc...
C'est beau le progrès !
Plus sérieusement, pour migrer une vieille (probablement plus de 20 ans) application GWBasic en Python (ou autre langage digne de ce nom), il est préférable de reprendre à zéro depuis les specs (if any). A long terme cette approche est plus payante.
-- Gilles
pourraient bien apprécier...
J'ai pas tout compris dans le premier, je vous le livre tel que: ---------------------------------------------------------------------------- ------------------------------- On peut utiliser le goto seulement si on programme avec des numéros de ligne: """ 10 import sys 20 real_stdout = sys.stdout 30 class fake_stdout(object): pass 40 fake_stdout.write = lambda x, y: None 50 sys.stdout = fake_stdout() 60 import this 70 sys.stdout = real_stdout 80 d = {} 90 c = 65 100 i = 0 110 d[chr(i+c)] = chr((i+13) % 26 + c) 120 if i == 26: goto(150) 130 i += 1 140 goto(110) 150 if c == 97: goto(180) 160 c = 97 170 goto(100) 180 print "How zen it is:" 190 print "".join([d.get(c, c) for c in this.s]) """ z = dict((int(x[0]), " ".join(x[1:])) for x in (y.split() for y in (__doc__ or _).strip().splitlines())); k = [0] + sorted(z.keys()); m = dict((b,a) for a,b in enumerate(k)); l = k[1]
def goto(n): global l; l = k[m[n]-1]
while l and l <= k[-1]: exec z[l]; l = l != k[-1] and k[m[l]+1]
Dans le niouze anglais, j'ai trouvé 2 messages qui intéresseront ceux qui
veulent le GOTO en python.
Beurk diront certains.
Mais ceux qui essayent de migrer de vieilles appli en GW-Basic ou autre
Super !
Comment faire du Python (presque) aussi inmaintenable et illisible que
du GWBasic ;)
Au prochain épisode : comment se passer des classes, de la gestion des
exceptions, limiter les symboles à 2 caractères, limiter la mémoire
utilisable à 64Ko, etc, etc...
C'est beau le progrès !
Plus sérieusement, pour migrer une vieille (probablement plus de 20 ans)
application GWBasic en Python (ou autre langage digne de ce nom), il est
préférable de reprendre à zéro depuis les specs (if any). A long terme
cette approche est plus payante.
--
Gilles
pourraient bien apprécier...
J'ai pas tout compris dans le premier, je vous le livre tel que:
----------------------------------------------------------------------------
-------------------------------
On peut utiliser le goto seulement si on programme avec des numéros de
ligne:
"""
10 import sys
20 real_stdout = sys.stdout
30 class fake_stdout(object): pass
40 fake_stdout.write = lambda x, y: None
50 sys.stdout = fake_stdout()
60 import this
70 sys.stdout = real_stdout
80 d = {}
90 c = 65
100 i = 0
110 d[chr(i+c)] = chr((i+13) % 26 + c)
120 if i == 26: goto(150)
130 i += 1
140 goto(110)
150 if c == 97: goto(180)
160 c = 97
170 goto(100)
180 print "How zen it is:"
190 print "".join([d.get(c, c) for c in this.s])
"""
z = dict((int(x[0]), " ".join(x[1:])) for x in (y.split() for y in (__doc__
or _).strip().splitlines())); k = [0] + sorted(z.keys()); m = dict((b,a) for
a,b in enumerate(k)); l = k[1]
def goto(n): global l; l = k[m[n]-1]
while l and l <= k[-1]: exec z[l]; l = l != k[-1] and k[m[l]+1]
Dans le niouze anglais, j'ai trouvé 2 messages qui intéresseront ceux qui veulent le GOTO en python. Beurk diront certains. Mais ceux qui essayent de migrer de vieilles appli en GW-Basic ou autre
Super !
Comment faire du Python (presque) aussi inmaintenable et illisible que du GWBasic ;)
Au prochain épisode : comment se passer des classes, de la gestion des exceptions, limiter les symboles à 2 caractères, limiter la mémoire utilisable à 64Ko, etc, etc...
C'est beau le progrès !
Plus sérieusement, pour migrer une vieille (probablement plus de 20 ans) application GWBasic en Python (ou autre langage digne de ce nom), il est préférable de reprendre à zéro depuis les specs (if any). A long terme cette approche est plus payante.
-- Gilles
pourraient bien apprécier...
J'ai pas tout compris dans le premier, je vous le livre tel que: ---------------------------------------------------------------------------- ------------------------------- On peut utiliser le goto seulement si on programme avec des numéros de ligne: """ 10 import sys 20 real_stdout = sys.stdout 30 class fake_stdout(object): pass 40 fake_stdout.write = lambda x, y: None 50 sys.stdout = fake_stdout() 60 import this 70 sys.stdout = real_stdout 80 d = {} 90 c = 65 100 i = 0 110 d[chr(i+c)] = chr((i+13) % 26 + c) 120 if i == 26: goto(150) 130 i += 1 140 goto(110) 150 if c == 97: goto(180) 160 c = 97 170 goto(100) 180 print "How zen it is:" 190 print "".join([d.get(c, c) for c in this.s]) """ z = dict((int(x[0]), " ".join(x[1:])) for x in (y.split() for y in (__doc__ or _).strip().splitlines())); k = [0] + sorted(z.keys()); m = dict((b,a) for a,b in enumerate(k)); l = k[1]
def goto(n): global l; l = k[m[n]-1]
while l and l <= k[-1]: exec z[l]; l = l != k[-1] and k[m[l]+1]
Gilles Lenfant
Sans oublier la lenteur engendrée par la boucle d'exécution :-)
-- Gilles
Sans oublier la lenteur engendrée par la boucle d'exécution :-)
Sans oublier la lenteur engendrée par la boucle d'exécution :-)
-- Gilles
Bruno Desthuilliers
Salut !
Pour les fanatiques du GOTO, je signale l'existence du langage GOTO++ (GPP) Plus de renseignements, machine virtuelle, doc, etc, ici : http://gpp.niacland.net
Excellent ! Et moi qui pensait qu'on avait touché le fond de l'inutile avec ook!
Pour les fanatiques du GOTO, je signale l'existence du langage GOTO++ (GPP)
Plus de renseignements, machine virtuelle, doc, etc, ici :
http://gpp.niacland.net
Excellent ! Et moi qui pensait qu'on avait touché le fond de l'inutile
avec ook!
Pour les fanatiques du GOTO, je signale l'existence du langage GOTO++ (GPP) Plus de renseignements, machine virtuelle, doc, etc, ici : http://gpp.niacland.net
Excellent ! Et moi qui pensait qu'on avait touché le fond de l'inutile avec ook!