Java code

Messages : 0

Inscription : 04 oct. 2017 15:58

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

Re: Java code

Message par Errys » 26 oct. 2017 16:11

On ne le fait "jamais" en pratique parce que c'est quelque chose que l'on fait pendant qu'on apprend. Et il permet de prendre conscience des mechanique des langages qu'on utilise.
Je sais que quand j'ai commencé le C, j'ai pris un peu de temps à intégrer ce genre de mechanique et c'est des exercices comme ceci qui m'ont permis de progresser.

Après, le faire en java... L'intérêt est limité je suis d'accord. C'est plutôt intéressant pour voir le bas-niveau.
Lycée Édouard Branly 2015-2018
LLG HX1 2018-2019
LLG MP*3 2019-2020
Ulm 2020-?

Messages : 9679

Inscription : 30 juil. 2008 16:59

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

Re: Java code

Message par fakbill » 26 oct. 2017 18:56

Non. Justement pas. Par exemple, beaucoup de cours de C++ demandent de coder une classe « matrice » qui de surcharger les opérateurs + - et *. Certes ça apprend à surcharger des opérateurs mais c’est exactement ce qu’il ne faut pas faire en C++. Déjà c’est une très mauvaise idée de coder une classe matrice. On apprend à trouver une bonne lib pour faire ça et on ne recode surtout pas ça à partir de rien. De plus, si on le fait, on ne le fait pas surtout pas comme ça car la perfo est à chier (pour des raisons propres au C++).
On peut parfaitement apprendre un langage tout en apprenant les BONNES pratiques. On peut très bien pondre un exo intéressant et **correct** utilisant la surcharge d’opérateurs. Faire des exo ridicules comparés à la vraie vie n’est jamais une bonne idée, surtout qu’on oublie souvent de bien préciser qu’ils le sont.
En C, c’est un peu différent car le C n’a presque rien dans la lib standard. De ce fait, il est assez difficile de coder une construction ridicule en C++. Ho certes on peut faire une boucle au lieu de prendre strlen mais il faut vraiment être tordu.

En java, en python et dans tous ces langages qui viennent avec une lib std énorme, une grande partie de l’apprentissage du langage réside dans le fait de ***savoir que tel truc existe dans la lib standard***. Surtout pas dans le fait de le recoder.
Pas prof.
Prépa, école, M2, thèse (optique/images) ->ingé dans le privé.

Messages : 0

Inscription : 04 oct. 2017 15:58

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

Re: Java code

Message par Errys » 26 oct. 2017 22:12

Je suis entièrement d'accord avec toi sur le fait que c'est débile de coder quelque chose soit même alors que ça existe déjà dans la lib. Pourquoi recoder une stack/file alors que la std en a déjà des plus optimisé et plus sécurisés ?

Mais d'un point de vue pédagogique, je ne suis pas d'accord avec toi, j'ai appris à coder en me servant de AUCUNE librairie, oui oui, je recodais strlen à la main quand j'en avais besoin.
Maintenant, j'utilise bien évidemment les fonctions de la librairie et les classes mais je sais toujours quel est la complexité d'une opération et comment ça marche derrière les coulisses.
Chose que tu n'acquiert pas en apprenant en python en te servant exclusivement de la librairie (et dans beaucoup d'autres langages).

Il suffit de voir la quantité de personnes qui pensent que certaines opérations de font en temps constant alors qu'elles ont une complexité linéaire...

Après je précise que j'ai commencé à coder cette année et que je n'ai pas forcément beaucoup d'expérience même si je commence à me débrouiller en code. en revanche, j'ai rencontré beaucoup de codeurs qui avaient plusieurs années d'expérience derrière eux et qui n'étaient pas au courant de pas mal de chose essentielles, qui auraient dû être apprise dès le départ.
Lycée Édouard Branly 2015-2018
LLG HX1 2018-2019
LLG MP*3 2019-2020
Ulm 2020-?

Messages : 0

Inscription : 04 oct. 2017 15:58

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

Re: Java code

Message par Errys » 26 oct. 2017 22:14

Et d'ailleurs, pourquoi la surcharge des opérateurs est mauvaise en C++? (Je demande ça pour en apprendre plus pas pour questionner ce que tu dis!)
Lycée Édouard Branly 2015-2018
LLG HX1 2018-2019
LLG MP*3 2019-2020
Ulm 2020-?

Messages : 9679

Inscription : 30 juil. 2008 16:59

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

Re: Java code

Message par fakbill » 28 oct. 2017 14:53

Errys : tu es un bon exemple de personnes qui a compris. Cependant, bcp de comprennent pas et c'est bien normal. En école plus ou moins généraliste, on leur donne un vague cours de C ou de C++ dans lequel on leur montre de mauvaises pratiques. Certains (peu) feront assez d'info pour comprendre que le cours oubliait de parler du principal. D'autres auront pour longtemps une vision biaisée de l'info. Je n'ai rien contre le fait de faire recoder un truc qui existe déjà dans la lib standard **à condition que le cours et le prof insiste bien sur le fait que c'est uniquement pédago et qu'en vrai ou fait std::XX

Les opérateurs en C++ pour les matrices? Simplement car, si on code + et = de façon raisonnable (il y a une façon de faire autrement mais c'est *très* compliqué (voir par exemple la lib eigen)), A+B=C s'exécute en faisant A+B dans temp puis temp dans C. C'est catastrophique en termes de performance car on passe son temps à faire des recopies mémoire pour rien.
Pas prof.
Prépa, école, M2, thèse (optique/images) ->ingé dans le privé.

Messages : 0

Inscription : 04 oct. 2017 15:58

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

Re: Java code

Message par Errys » 29 oct. 2017 01:32

Ah je comprends mieux ton point de vue maintenant. Il est clair que pour quelqu'un qui fait de l'info par contrainte en école c'est pas top.

Et merci pour l'explication par rapport à la surcharge des opérateurs, il est clair que c'est atroce niveau performance. Surtout que ça fausse l'évaluation de la complexité de ton programme ducoup.
Lycée Édouard Branly 2015-2018
LLG HX1 2018-2019
LLG MP*3 2019-2020
Ulm 2020-?

Messages : 0

Inscription : 01 mai 2016 20:09

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

Re: Java code

Message par siro » 29 oct. 2017 10:04

Pour compter le nombre de chiffres, compter la taille de la chaîne de caractères est de loin le plus naturel pour un être humain. Je ne vois pas comment il en serait autrement pour une machine.
Chaque vénérable chêne a commencé par être un modeste gland. Si on a pensé à lui pisser dessus.

Messages : 0

Inscription : 04 oct. 2017 15:58

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

Re: Java code

Message par Errys » 29 oct. 2017 10:43

On demande ici le nombre de chiffres distincts.
Lycée Édouard Branly 2015-2018
LLG HX1 2018-2019
LLG MP*3 2019-2020
Ulm 2020-?

Messages : 0

Inscription : 01 mai 2016 20:09

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

Re: Java code

Message par siro » 29 oct. 2017 11:50

Tu fais quoi comme différence entre nombre de chiffres et nombre de chiffres distincts ?
Chaque vénérable chêne a commencé par être un modeste gland. Si on a pensé à lui pisser dessus.

Messages : 0

Inscription : 04 oct. 2017 15:58

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

Re: Java code

Message par Errys » 29 oct. 2017 13:52

123 a 3 chiffres distincts et 3 chiffres donc il n'y a pas de différence dans ce cas la.
En revanche: 122 a 2 chiffres distincts mais 3 chiffres donc il y a bien une différence.
Lycée Édouard Branly 2015-2018
LLG HX1 2018-2019
LLG MP*3 2019-2020
Ulm 2020-?

Répondre