Conseils apprendre un / des (?) langage(s) de programmation

Messages : 0

Inscription : 10 juin 2015 22:44

Profil de l'utilisateur : Élève de lycée

Re: Conseils apprendre un / des (?) langage(s) de programmat

Message par Ewind » 06 juil. 2016 13:53

A cause du nombre de création de matrice / copie en mémoire? Si tu fais M = A+B, tu crées une matrice de la bonne, puis tu boucles sur les coordonnées pour mettre la valeur , si tu fais M = A+B+C Tu crées 2 matrices etc , c'est couteux en accès mémoire non?

Messages : 0

Inscription : 19 avr. 2015 00:08

Profil de l'utilisateur : Élève de lycée

Re: Conseils apprendre un / des (?) langage(s) de programmat

Message par darklol » 06 juil. 2016 13:54

Le problème ne vient pas tellement des accès mémoire en général, mais plutôt des allocations intermédiaires.
ENS Lyon
Ingénieur de recherche

Messages : 9679

Inscription : 30 juil. 2008 16:59

Profil de l'utilisateur : Élève de lycée

Re: Conseils apprendre un / des (?) langage(s) de programmat

Message par fakbill » 06 juil. 2016 16:31

oui voila.
Si on fait M=A+B+C+D le code va faire A+B dans temp puis +C puis... et donc faire 4 fois la boucle au lieu d'une.
La move sematic n'y peut rien et même la RVO n'aide pas.

Ce qu'il faut faire et ce que font les bonnes lib C++ (eigen par exemple) c'est surchargé + et - non pas pour qu'il fasse le travail d'addition ou de soustraction mais pour...tadaaaaaaaaaaaa...qu'ils construisent l'arbre de l'expression mathématique à calculer et rien d'autre. Il n'y a pas de boucle de calculs dans le code de la surcharge de ce +. Cet arbre est ensuite traité par l'opérateur = qui LUI fait le calcul *en une seule boucle*.
Pour implémenter ca, il faut jouer avec les expression templates https://en.wikipedia.org/wiki/Expression_templates
C'est très joli, ca a donné des sueurs froides aux gens qui font les compilo (https://en.wikipedia.org/wiki/Curiously ... te_pattern est un exemple des joies du C++) mais ca fonctionne.

Bien sûr, on ne code JAMAIS ca soit même. Je veux dire par là qu'on utilise une bonne lib qui code ca correctement pour nous (nous étant les gens qui veulent faire du numérique)...ou alors on est développeur d'une tel lib mais c'est un cas rare.

Bref, le C++ comme on l'apprend parfois en école d'ingé en cours d'analyse num c'est de la merde en barre. Ho certes pour des petits calculs ca passe au niveau perfo. Cependant, c'est 99.9999% du temps un mauvaise idée que de coder soit même son type matrice au lieu de prendre une lib qui va bien
Dernière modification par fakbill le 06 juil. 2016 16:33, modifié 1 fois.
Pas prof.
Prépa, école, M2, thèse (optique/images) ->ingé dans le privé.

Messages : 9679

Inscription : 30 juil. 2008 16:59

Profil de l'utilisateur : Élève de lycée

Re: Conseils apprendre un / des (?) langage(s) de programmat

Message par fakbill » 06 juil. 2016 16:32

franchement penser à utiliser les templates pour créer l'arbre de l'expression...c'est beau non? :)
Pas prof.
Prépa, école, M2, thèse (optique/images) ->ingé dans le privé.

Messages : 0

Inscription : 19 avr. 2015 00:08

Profil de l'utilisateur : Élève de lycée

Re: Conseils apprendre un / des (?) langage(s) de programmat

Message par darklol » 06 juil. 2016 16:45

Dans le cas A+B+C en effet ni la RVO ni les move semantics n'aideront, mais dans le cas où tu construis M avec A+B, là tu bénéficies soit de la RVO, soit des move semantics à défaut. Mon explication était quand même assez détaillée.
ENS Lyon
Ingénieur de recherche

Messages : 0

Inscription : 10 juin 2015 22:44

Profil de l'utilisateur : Élève de lycée

Re: Conseils apprendre un / des (?) langage(s) de programmat

Message par Ewind » 06 juil. 2016 16:54

Question sans ( trop) de rapport : A quel moment on apprend de l'info utile? ( car a généralement, que ca soit en prépa, ou vu ce que tu dis en école d'ingé, y a toujours des bliblios qui font mieux)

Avatar de l’utilisateur
np*

Messages : 0

Inscription : 28 nov. 2015 14:49

Profil de l'utilisateur : Élève de lycée

Re: Conseils apprendre un / des (?) langage(s) de programmat

Message par np* » 06 juil. 2016 17:24

Ewind a écrit :Question sans ( trop) de rapport : A quel moment on apprend de l'info utile? ( car a généralement, que ca soit en prépa, ou vu ce que tu dis en école d'ingé, y a toujours des bliblios qui font mieux)
Réponse (ironique) : dans la "vrai vie" !
Réponse (sans se mouiller) : au même moment que l'on apprend les mathématiques utiles, la physique utile, la philosophie utile.

Question complémentaire sérieuse : qu'appelles-tu "de l'info utile" ?
$ $P = N\!P^* ?$ $

Messages : 9679

Inscription : 30 juil. 2008 16:59

Profil de l'utilisateur : Élève de lycée

Re: Conseils apprendre un / des (?) langage(s) de programmat

Message par fakbill » 06 juil. 2016 17:46

en codant des trucs pour soit, soit pour le fun soit au travail...
Je n'ai rien contre le fait d'apprendre À surcharger + de façon naïve pour faire A+B lors d'un cours de C+ MAIS il faut absolument dire aux étudiants que c'est juste un EXEMPLE pour leur apprendre la surcharge et surtout PAS un truc à faire dans la vraie vie. Ce warning est d'une importance capitale et il est très souvent omis :( :(
Pas prof.
Prépa, école, M2, thèse (optique/images) ->ingé dans le privé.

Messages : 0

Inscription : 08 juin 2016 14:26

Profil de l'utilisateur : Élève de lycée

Re: Conseils apprendre un / des (?) langage(s) de programmat

Message par Willy-maitre » 20 juil. 2016 01:36

Je rentre en MPSI, mais je développe déjà dans plusieurs langages. Vas sur Openclassroom.fr Tu apprendras à développer dans énormément de langage.

Messages : 9679

Inscription : 30 juil. 2008 16:59

Profil de l'utilisateur : Élève de lycée

Re: Conseils apprendre un / des (?) langage(s) de programmat

Message par fakbill » 20 juil. 2016 11:09

Oui enfin on apprend pas un langage pour le plaisir...ou alors on est un geek :)
On apprend un langage pour répondre à un besoin.
Willy-maitre : tu dis savoir devel dans plusieurs langages. Fort bien mais peux tu expliquer en qlqs mots les spécificités de ces langages? Par exemple, si tu fais du C et du java : différences entre les deux? cas d'utilisation typiques?
Pas prof.
Prépa, école, M2, thèse (optique/images) ->ingé dans le privé.

Répondre