2970

grin
avatar

2971

Kevin Kofler (./2967) :
C'est très prévisible quand les logiciels sont codés correctement.
Ce qui est totalement imprévisible.

2972

Je sais qu'on critique beaucoup à PHP son bagage du passé, qui a été gardé pour la rétro compatibilité, c'est pas forcément top, mais j'ai acheté des cours sur l'IA, où tout se fait en python, et ils installent python 2.7 car sinon ça ne passe pas entre les différents outils avec les dernières version, c'est quand même moyen, ça fait 9 ans que python 3 existe, et on se retrouve encore parfois à devoir utiliser python 2.7 (qui est toujours mis à jour, c'est donc que ça ne doit pas être si rare que ça).

2973

C'est quand même assez paradoxal comme industrie : d'un côté, tout le monde est prêt à se jeter sur le dernier machin Javascript à la mode - même s'il est pas fini, qu'il y a des changements majeurs tous les 4 matins et des bugs, et qu'il peut très bien être abandonné sans préavis. De l'autre, les gens rechignent à faire l'effort de passer à Python 3, alors que ça fait très longtemps qu'il est sorti, et que l'absence (partielle) de rétrocompatibilité était le prix à payer pour avoir une base plus saine.

Si j'étais mauvaise langue, je finirais par conclure qu'il y a une allergie intrinsèque à toute forme de professionnalisme grin
avatar
Zeroblog

« Tout homme porte sur l'épaule gauche un singe et, sur l'épaule droite, un perroquet. » — Jean Cocteau
« Moi je cherche plus de logique non plus. C'est surement pour cela que j'apprécie les Ataris, ils sont aussi logiques que moi ! » — GT Turbo

2974

Elle est vraiment super partielle l'absence de retro compatibilité entre Python 2 et Python 3, les changement a faire sont dans la majorité des cas triviaux.

Non je pense que le vraiment probleme est encore une fois l'essence meme chere a certain dans le monde de l'OSS, descendre en fleche un produit parce qu'on ne l'aime pas meme si il est bon, ou mettre en avant un produit parce que qu'on l'aime meme si c'est une sombre merde. Et c'est d'autant plus efficace qu'on est a une position dominante (je ne citerais aucun projet, ni aucune boite, mais vous savez probablement de qui et de quoi je veux parler)
avatar
Proud to be CAKE©®™


GCC4TI importe qui a problème en Autriche, pour l'UE plus et une encore de correspours nucléaire, ce n'est pas ytre d'instérier. L'état très même contraire, toujours reconstruire un pouvoir une choyer d'aucrée de compris le plus mite de genre, ce n'est pas moins)
Stalin est l'élection de la langie.

2975

Arvi89 (./2972) :
Je sais qu'on critique beaucoup à PHP son bagage du passé, qui a été gardé pour la rétro compatibilité, c'est pas forcément top, mais j'ai acheté des cours sur l'IA, où tout se fait en python, et ils installent python 2.7 car sinon ça ne passe pas entre les différents outils avec les dernières version, c'est quand même moyen, ça fait 9 ans que python 3 existe, et on se retrouve encore parfois à devoir utiliser python 2.7 (qui est toujours mis à jour, c'est donc que ça ne doit pas être si rare que ça).
Encore mis à jour, faut le dire vite : Python 2.7 est sorti en 2010 et depuis il n'y a aucune nouvelle fonctionnalité (vu que les versions mineures n'apportent que des corrections de bugs et de sécurité).
Mais c'est sûr, chez Python ils ont toujours promu une évolution très douce, sans forcer les gens à passer à la version 3.
De plus, c'est très facile d'écrire du code qui est compatible à la fois Python 2 et Python 3.

Par contre, à part des projets complètement abandonnés, il n'y a plus aucune lib uniquement Python 2 en pratique, et Python 2 n'est même plus installé par défaut sur plusieurs distribs.
Bref, ton cours n'a vraiment aucune excuse à être resté à la version 2…
avatar
<<< Kernel Extremis©®™ >>> et Inventeur de la différence administratif/judiciaire ! (©Yoshi Noir)

<Vertyos> un poil plus mais elle suce bien quand même la mienne ^^
<Sabrina`> tinkiete flan c juste qu'ils sont jaloux que je te trouve aussi appétissant

2976

Nan, c'est que les outils utilisent python 2.7 et 3.x. (mais ne sont pas tous au même niveau de 3, donc 2.7 est la seule version vraiment compatible entre les 3).
https://www.continuum.io/downloads
http://pytorch.org/
https://kivy.org/docs/installation/installation-linux.html#ubuntu-11-10-or-newer

J'ai essayé de tout mettre en 3.6, c'est chiant, et après j'ai eu des soucis de SDL donc ça n'a pas marché. Et maintenant je ne trouve même pas la lib dans ma nouvelle installation avec 2.7 (installé, mais ça me dit manquant). Pas très user friendly tout ça, pourtant je fais tout comme indiqué ^^

2977

Va installer [url=http://caffe.berkeleyvision.org]Caffe[/ur|.. grin (merde infame a installer)

(au passage c'est pas de l'IA mais des (C) NeuralNetwork c'est pas tout a fait la meme chose)
avatar
Proud to be CAKE©®™


GCC4TI importe qui a problème en Autriche, pour l'UE plus et une encore de correspours nucléaire, ce n'est pas ytre d'instérier. L'état très même contraire, toujours reconstruire un pouvoir une choyer d'aucrée de compris le plus mite de genre, ce n'est pas moins)
Stalin est l'élection de la langie.

2978

Leçons de la journée (enfin, plutôt de la nuit) :
une simple accolade au mauvais endroit suffit à vous rendre fou
Suite à un refactoring (manuel),
{ uint8_t *p; { uint8_t tableau[42]; p = tableau; (...) } fonction(p); } au lieu de { uint8_t *p; { uint8_t tableau[42]; p = tableau; (...) fonction(p); } }Et la plupart du temps, ça fonctionne quand même normalement vu que c'est alloué sur la pile... mais pas tout le temps.
si votre compilateur dit qu'il manque un prototype de fonction mais que ça compile quand même, méfiez-vous
J'ajoute Sleep(42) quelque part pour tester si un truc est sensible au timing, j'ai la flemme de rajouter #include <windows.h>, ça compile quand même avec juste un warning, et ça donne l'impression de fonctionner... sauf que la convention d'appel n'est pas la bonne, du coup ça fait des bugs "rigolos" (dans mon cas, ça faisait foirer aléatoirement la boucle qui contenait l'appel de la fonction)
avatar
Zeroblog

« Tout homme porte sur l'épaule gauche un singe et, sur l'épaule droite, un perroquet. » — Jean Cocteau
« Moi je cherche plus de logique non plus. C'est surement pour cela que j'apprécie les Ataris, ils sont aussi logiques que moi ! » — GT Turbo

2979

-Werror=implicit-function-declaration (les grandes distributions GNU/Linux compilent leurs paquetages avec ça de nos jours).
avatar
Mes news pour calculatrices TI: Ti-Gen
Mes projets PC pour calculatrices TI: TIGCC, CalcForge (CalcForgeLP, Emu-TIGCC)
Mes chans IRC: #tigcc et #inspired sur irc.freequest.net (UTF-8)

Liberté, Égalité, Fraternité

2980

Oh y'avait un warning, c'est juste que je l'ai ignoré à tort.
avatar
Zeroblog

« Tout homme porte sur l'épaule gauche un singe et, sur l'épaule droite, un perroquet. » — Jean Cocteau
« Moi je cherche plus de logique non plus. C'est surement pour cela que j'apprécie les Ataris, ils sont aussi logiques que moi ! » — GT Turbo

2981

Avec le flag, tu ne peux pas l'ignorer. smile
avatar
Mes news pour calculatrices TI: Ti-Gen
Mes projets PC pour calculatrices TI: TIGCC, CalcForge (CalcForgeLP, Emu-TIGCC)
Mes chans IRC: #tigcc et #inspired sur irc.freequest.net (UTF-8)

Liberté, Égalité, Fraternité

2982

intéressant Zerosquare, meci pour le retour, ce genre de merde peut effectivement faire perdre bcp de temps smile

2983

ah oui.
Sinon concernant ta seconde version, ça ne fonctionne toujours pas, si ?
En sortie de portée tu as p qui existe toujours mais qui pointe vers un truc abandonné de la pile ?

2984

Ce n'est pas une super pratique mais si P n'est pas utilisé apres ce n'est pas un probleme.
avatar
Proud to be CAKE©®™


GCC4TI importe qui a problème en Autriche, pour l'UE plus et une encore de correspours nucléaire, ce n'est pas ytre d'instérier. L'état très même contraire, toujours reconstruire un pouvoir une choyer d'aucrée de compris le plus mite de genre, ce n'est pas moins)
Stalin est l'élection de la langie.

2985

Bien sûr, mais du coup autant le garder dans la portée.
EDIT : oui je ne sais pas pourquoi j'ai dit que ça ne fonctionnait pas, évidemment ça fonctionne mais ce n'est pas protégé contre une utilisation future. 'fin bref, c'est pas fiable pour le codeur, voilà cheeky

2986

La première version est bien incorrecte, le compilateur peut (mais n'est pas obligé de) générer du code qui restaure la pile immédiatement pour économiser les 42 octets (intéressant surtout sur une plateforme embarquée et/ou si l'appel de fonction est un appel récursif) et du coup l'écrase avec l'appel de fonction.

La deuxième version est correcte à condition que la fonction appelée n'essaie pas de stocker le pointeur quelque part dans une variable globale ou statique.
avatar
Mes news pour calculatrices TI: Ti-Gen
Mes projets PC pour calculatrices TI: TIGCC, CalcForge (CalcForgeLP, Emu-TIGCC)
Mes chans IRC: #tigcc et #inspired sur irc.freequest.net (UTF-8)

Liberté, Égalité, Fraternité

2987

Elle est correcte mais inutilement dangereuse, c'est tout ce que je voulais dire.

2988

Et tu proposes quoi comme alternative? Si tu utilises malloc et free, ce sera la même chose (use-after-free si la fonction garde le pointeur), si tu omets le free, tu leakes de la mémoire. Il faut savoir ce que fait la fonction appelée avec le pointeur.
avatar
Mes news pour calculatrices TI: Ti-Gen
Mes projets PC pour calculatrices TI: TIGCC, CalcForge (CalcForgeLP, Emu-TIGCC)
Mes chans IRC: #tigcc et #inspired sur irc.freequest.net (UTF-8)

Liberté, Égalité, Fraternité

2989

Un langage comme Rust refuserait tout simplement de compiler ça. Il interdit tout simplement les pointeurs invalides à moins de recourir a un bloc unsafe explicite.
avatar

2990

Zerosquare (./2978) :
Et la plupart du temps, ça fonctionne quand même normalement vu que c'est alloué sur la pile... mais pas tout le temps.
Tiens, c'est rigolo, des accolades sans structure de contrôle/déclaration de fonction déterminent une portée, en C ? Je pensais que c'était simplement ignoré.
avatar

2991

Oui, ça fait ça dans quasiment tous les langages avec une syntaxe à la C .
avatar

2992

(certains abusent meme de ca pour faire des declarations locales, c'est.. assez moche
avatar
Proud to be CAKE©®™


GCC4TI importe qui a problème en Autriche, pour l'UE plus et une encore de correspours nucléaire, ce n'est pas ytre d'instérier. L'état très même contraire, toujours reconstruire un pouvoir une choyer d'aucrée de compris le plus mite de genre, ce n'est pas moins)
Stalin est l'élection de la langie.

2993

Eh ben, je me coucherai moins bête ce soir O_o cela dit, je viens de tester en PHP et ça me rassure : ce n'est pas le comportement observé (je trouvais ça bizarre, j'ai pour habitude de commenter mes structures de contrôles pendant le debug mais en laissant les accolades sans aucun effet de bord... du coup les accolades sont bien ignorées à l'interprétation.
avatar

2994

(Confirmé par ce site : http://g-rossolini.developpez.com/tutoriels/php/cours/?page=syntaxe )
Les blocs d'instructions (une à plusieurs instructions) peuvent être identifiés par des accolades "{}". Dans d'autres langages, cela permet de limiter la portée (scope) d'une variable, mais en PHP cet effet n'est pas pris en compte.
avatar

2995

en C un bloc {} est une instruction composite éventuellement munie de déclarations locales au début.

suffit de voir for et while, ce que tu leur fais exécuter est une "instruction", qu'elle soit simple ou composite.

un autre truc mochissime mais fonctionnel, c'est les labels et goto dans les switch(){}

switch(expr)
{
case 1: blabla; break;
label:
case 2: bloblo; break;
case 4: goto label;
}

on a des trucs encore plus ignobles dans un vieux code pour gagner quelques octets de ROM (de la vraie, sans P devant grin)

2996

Oh, c'est mignon :3
avatar

2997

Godzil (./2992) :
(certains abusent meme de ca pour faire des declarations locales, c'est.. assez moche
Tu trouves ? C'est quelque chose que j'utilise assez couramment, justement pour limiter la portée des variables, et éviter de les déclarer loin de l'endroit où elles sont utilisées.

Dans le cas en question, il y avait une raison : dans le vrai code, la taille du tableau n'était pas fixe, mais renvoyée par une autre fonction. Du coup, déclarer le tableau dans une paire d'accolades évite de devoir utiliser malloc() (ou alloca()) et d'oublier de libérer la mémoire par erreur.

(je vous rassure, je ne fais pas ça dans du code embarqué critique smile)
avatar
Zeroblog

« Tout homme porte sur l'épaule gauche un singe et, sur l'épaule droite, un perroquet. » — Jean Cocteau
« Moi je cherche plus de logique non plus. C'est surement pour cela que j'apprécie les Ataris, ils sont aussi logiques que moi ! » — GT Turbo

2998

Kevin Kofler (./2988) :
Et tu proposes quoi comme alternative?
de déclarer p dans la portée où il est utilisé ? Pourquoi le déclarer au dessus ?!
Zerosquare (./2997) :
Tu trouves ? C'est quelque chose que j'utilise assez couramment, justement pour limiter la portée des variables, et éviter de les déclarer loin de l'endroit où elles sont utilisées.
pencil pencil pencil
Ça fait des paragraphes, je trouve ça très bien.

2999

(mince, Kevin crayonne mon style de code, du coup je me pose des questions grin)
J'avais mal lu, c'est Pen², donc ça va hehe
avatar
Zeroblog

« Tout homme porte sur l'épaule gauche un singe et, sur l'épaule droite, un perroquet. » — Jean Cocteau
« Moi je cherche plus de logique non plus. C'est surement pour cela que j'apprécie les Ataris, ils sont aussi logiques que moi ! » — GT Turbo

3000

(mmm ? Annéfé, tu peux te poser des questions #modui#)