IdentifiantMot de passe
Loading...
Mot de passe oubli� ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les r�ponses en temps r�el, voter pour les messages, poser vos propres questions et recevoir la newsletter

JavaScript Discussion :

Apprendre le Javascript et Node.js from scratch


Sujet :

JavaScript

  1. #161
    Membre Expert
    Homme Profil pro
    Inscrit en
    Octobre 2011
    Messages
    2 910
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Octobre 2011
    Messages : 2 910
    Par d�faut
    OK merci !

  2. #162
    R�dacteur

    Avatar de autran
    Homme Profil pro
    D�veloppeur Java
    Inscrit en
    F�vrier 2015
    Messages
    1 241
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes C�te d'Azur)

    Informations professionnelles :
    Activit� : D�veloppeur Java
    Secteur : High Tech - Multim�dia et Internet

    Informations forums :
    Inscription : F�vrier 2015
    Messages : 1 241
    Billets dans le blog
    55
    Par d�faut
    Un nouvel exercice est disponible ICI pour mettre � profit ce week-end de P�ques
    D�veloppeur Java
    Site Web

  3. #163
    Membre averti
    Homme Profil pro
    �tudiant
    Inscrit en
    F�vrier 2016
    Messages
    40
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 48
    Localisation : France, Seine et Marne (�le de France)

    Informations professionnelles :
    Activit� : �tudiant
    Secteur : High Tech - Multim�dia et Internet

    Informations forums :
    Inscription : F�vrier 2016
    Messages : 40
    Par d�faut
    Merci !

  4. #164
    Membre Expert
    Homme Profil pro
    Inscrit en
    Octobre 2011
    Messages
    2 910
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Octobre 2011
    Messages : 2 910
    Par d�faut
    Merci.

    Cet exercice m'a fait r�fl�chir... Je me suis aper�u qu'on ne pouvait pas modifier une string m�me en JS !!!

  5. #165
    R�dacteur

    Avatar de autran
    Homme Profil pro
    D�veloppeur Java
    Inscrit en
    F�vrier 2015
    Messages
    1 241
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes C�te d'Azur)

    Informations professionnelles :
    Activit� : D�veloppeur Java
    Secteur : High Tech - Multim�dia et Internet

    Informations forums :
    Inscription : F�vrier 2015
    Messages : 1 241
    Billets dans le blog
    55
    Par d�faut
    Le principe c'est :
    Code javascript : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    var chaine = "abc"; 
    console.log(chaine);// affiche --> abc
    chaine += "d";
    console.log(chaine);// affiche --> abcd
    D�veloppeur Java
    Site Web

  6. #166
    Membre Expert
    Homme Profil pro
    Inscrit en
    Octobre 2011
    Messages
    2 910
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Octobre 2011
    Messages : 2 910
    Par d�faut
    Oui c'est finalement ce que j'ai fait en troisi�me solution (apr�s celle des tableaux et de la fonction repeat).

    Je ne sais pas comment cela se passe en JS (je me le demande d'ailleurs) mais en Java une instruction comme "chaine += "d";" ne modifie pas l'objet "chaine", un autre objet string est instanci�... Je crois que c'est pour cela que certains utilise un stringbuffer...

    Je viens de le faire en Java :

    Code Java : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    public class Sapin {
     
        public static void main(String[] args) {
     
            int leavesHeight = 5;
            int trunkHeight = 4;
            int trunkWidth = 3;
     
            String line = "" , sapin = "";
     
            int nbrSpace ;
            int nbrCroix ;
            int tailleLigne ;
     
            //Le feuillage...
            for(int i= 0; i<leavesHeight; i++){
     
                  nbrSpace = leavesHeight-1-i ;
                  nbrCroix = 2*i + 1 ;
                  tailleLigne = nbrSpace + nbrCroix ;
     
                  for(int j=0; j<nbrSpace; j++){    
                    line += " ";    
                  }
     
                  for(int j=nbrSpace; j<tailleLigne; j++){
                    line += "*";  
                  } 
     
                  sapin += line +"\n";
                  line = "";
     
            }
     
            nbrSpace = leavesHeight-1-(trunkWidth-1)/2;
            nbrCroix = trunkWidth ;
            tailleLigne = nbrSpace + nbrCroix ;
     
            for(int j=0; j<nbrSpace; j++) line += " ";        
            for(int j=nbrSpace; j<tailleLigne; j++) line += "*";
            for(int i=0; i<trunkHeight; i++) sapin += line +"\n";
     
     
            System.out.println(sapin);
     
        }
    }

  7. #167
    R�dacteur

    Avatar de autran
    Homme Profil pro
    D�veloppeur Java
    Inscrit en
    F�vrier 2015
    Messages
    1 241
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes C�te d'Azur)

    Informations professionnelles :
    Activit� : D�veloppeur Java
    Secteur : High Tech - Multim�dia et Internet

    Informations forums :
    Inscription : F�vrier 2015
    Messages : 1 241
    Billets dans le blog
    55
    Par d�faut
    @Beginner,

    Non en JavaScript il n'y a pas d'objet StringBuffer.

    Mais cela ne g�ne pas dans cet exercice car comme tu le dis en faisant maString += maString + "chaine"; le compilateur cr�e une nouvelle instance de maString en concat�nant "chaine" avec l'ancienne instance de maString.

    Mais lorsque nous aurons vu les classes en ES6 je ferai un exercice dans lequel il sera demand� de cr�� un objet StringBuffer
    D�veloppeur Java
    Site Web

  8. #168
    Membre Expert
    Homme Profil pro
    Inscrit en
    Octobre 2011
    Messages
    2 910
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Octobre 2011
    Messages : 2 910
    Par d�faut
    Justement j'ai vu un tout petit peu les classes en ES6, �a a l'air vraiment bien, �a me semble plus familier et plus lisible, en JS j'ai du mal � savoir la diff�rence entre fonction et classe, je trouve �a �trange au premier abord surtout quand on a fait un peu de Java...

    Un objet StringBuffer en ES6 �a m'a l'air int�ressant...

  9. #169
    R�dacteur/Mod�rateur

    Avatar de SylvainPV
    Profil pro
    Inscrit en
    Novembre 2012
    Messages
    3 375
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2012
    Messages : 3 375
    Par d�faut
    Il n'y a pas de classes en JavaScript.

    Vous essayez de reproduire un concept servant aux micro-optimisations, un Buffer, en utilisant des aspects haut niveau du langage, les classes ES6 (qui pour rappel ne sont pas des classes dans leur d�finition traditionnelle OOP mais du sucre syntaxique pour faire des objets prototyp�s avec constructeurs). Je suis pr�t � parier mon chapeau que ce StringBuffer fera une contre-perf par rapport � un simple String#concat. Pour que cela soit vraiment int�ressant, il faudrait utiliser les TypedArray comme le fait Node.js et son API Buffer : https://nodejs.org/api/buffer.html

    Rappelons aussi qu'en JavaScript, les primitives sont immutables. Les valeurs primitives sont stock�es dans une autre pile que celle des valeurs par r�f�rence. Pour les primitives, la valeur est directement stock�e � l'emplacement m�moire attribu� pour la variable. Tandis que pour les r�f�rences, ce qui est stock�, c'est un pointeur vers l'emplacement m�moire r�el de l'objet. Manipuler des primitives est donc plus rapide que ce que vous croyez, et beaucoup de micro-optimisations dans d'autres langages n'ont pas lieu d'�tre en JavaScript.

    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    function changeStuff(a, b, c){
      a = "changed";
      b.item = "changed";
      c = {item: "changed"};
    }
     
    var primitive = "unchanged";
    var reference1 = {item: "unchanged"};
    var reference2 = {item: "unchanged"};
     
    changeStuff(primitive , reference1 , reference2 );
     
    console.log(primitive, reference1.item, reference2.item);
    // affiche unchanged changed unchanged

  10. #170
    R�dacteur

    Avatar de autran
    Homme Profil pro
    D�veloppeur Java
    Inscrit en
    F�vrier 2015
    Messages
    1 241
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes C�te d'Azur)

    Informations professionnelles :
    Activit� : D�veloppeur Java
    Secteur : High Tech - Multim�dia et Internet

    Informations forums :
    Inscription : F�vrier 2015
    Messages : 1 241
    Billets dans le blog
    55
    Par d�faut
    Merci Sylvain pour ces explications sans appel

    N�anmoins, utiliser le sucre syntaxique pour faire des classes � l'identique d'autres langages historiquement objet resterait un exercice p�dagogique. Une mesure comparative des c�l�rit�s d�ex�cution pouvant ajouter v�rit� et piment � l'exercice.

    Je suis �galement convaincu que tu as raison en anticipant les r�sultats de ces mesures.
    Dommage, j'aurais bien aim� te voler ton chapeau
    D�veloppeur Java
    Site Web

  11. #171
    Expert confirm�

    Homme Profil pro
    D�veloppeur Web
    Inscrit en
    Septembre 2010
    Messages
    5 418
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Puy de D�me (Auvergne)

    Informations professionnelles :
    Activit� : D�veloppeur Web
    Secteur : High Tech - Multim�dia et Internet

    Informations forums :
    Inscription : Septembre 2010
    Messages : 5 418
    Par d�faut
    Citation Envoy� par autran Voir le message
    N�anmoins, utiliser le sucre syntaxique pour faire des classes � l'identique d'autres langages historiquement objet resterait un exercice p�dagogique.
    D'un autre c�t� javascript a tellement de sp�cificit�s que je ne sais pas si l'on y gagnerait quelque chose, tout au moins j'ai des doutes dans une phase d'initiation au langage. Il y a tellement de choses � voir et qui sont diff�rentes que je ne sais pas si c'est une bonne id�e de vouloir transposer syst�matiquement vers un autre langage que javascript. J'aurais plut�t tendance � dire aux d�butant qu'il est pr�f�rable "d'oublier" les autres langages. Enfin pas tout � fait, il reste l'algorithmie et les concepts g�n�raux, mais pour le reste c'est un langage un peu � part et pour mieux l'apprivoiser peut �tre vaut-il mieux ne pas trop chercher � le comparer point par point.

    Enfin c'est le ressenti que j'ai eu quand je suis pass� de php � javascript. A partir du moment o� je n'ai plus eu le r�flexe de me demander comment j'aurais fait avec mon premier langage, j'ai avanc� beaucoup plus vite en javascript

  12. #172
    Membre Expert
    Homme Profil pro
    Inscrit en
    Octobre 2011
    Messages
    2 910
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Octobre 2011
    Messages : 2 910
    Par d�faut
    Salut,

    Il me faut du temps pour r�fl�chir au message de Sylvain, j'y reviendrai plus tard...

    Sinon pour ce qui est du StringBuffer �a part d'un constat quand m�me : pour faire l'exercice je me suis aper�u qu'on ne pouvait pas changer une string... Par exemple, je ne peux pas (� moins que je me trompe ?) changer le caract�re de rang n, ou bien le supprimer, ou ins�rer un caract�re...

    On peut faire tout �a avec un tableau par exemple... Alors l'id�e ce serait de pouvoir faire cela avec une string... Alors j'ai pens� qu'on pouvait � chaque fois transformer la string en tableau, faire ce qu'on a � faire sur le tableau et transformer le r�sultat en string... Ou bien on utilise � chaque fois juste les fonctions slice, concat... Plus rapide ?

    Dans tous les cas si on avait un tel objet avec certaines des m�thodes de l'objet tableau ce serait plus simple, non ?

  13. #173
    Expert confirm�

    Homme Profil pro
    D�veloppeur Web
    Inscrit en
    Septembre 2010
    Messages
    5 418
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Puy de D�me (Auvergne)

    Informations professionnelles :
    Activit� : D�veloppeur Web
    Secteur : High Tech - Multim�dia et Internet

    Informations forums :
    Inscription : Septembre 2010
    Messages : 5 418
    Par d�faut
    Oui on transforme souvent les chaines de caract�res en tableau avec les m�thodes "split" et ensuite "join" pour concat�ner le r�sultat apr�s traitement.

    Cela dit on peut �galement acc�der aux �l�ments d'une chaine de caract�re avec son index
    Code javascript : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    var s = 'rete ferer';
    alert(s[5]);
    // affiche "f"
    ... mais pour autant on ne peut pas appliquer directement les fonctions sur les tableaux sur une chaine de caract�res (m�me principe que dans d'autres langages).

    Il y a plusieurs exos sur ce sujet dans le tuto javascript mais ils viennent un peu plus tard

  14. #174
    R�dacteur/Mod�rateur

    Avatar de SylvainPV
    Profil pro
    Inscrit en
    Novembre 2012
    Messages
    3 375
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2012
    Messages : 3 375
    Par d�faut
    @autran: c'est bien l� le probl�me, il ne s'agit pas de classes � l'identique d'autres langages historiquement objet. Je le r�p�te, il n'y a pas de classes en JavaScript. C'est pour �a que je d�teste la notation class ES6 : elle induit en erreur les d�veloppeurs quant au fonctionnement r�el des prototypes. J'en ai d�j� beaucoup parl� sur Developpez, et il y a aussi �norm�ment de litt�rature sur ce sujet : https://github.com/joshburgess/not-awesome-es6-classes

    Ceci dit, je ne suis pas oppos� � les pr�senter et � les utiliser pour un exercice. Par contre, il me para�t primordial de les pr�senter en dernier, apr�s avoir fait des exercices sur les prototypes, puis sur les constructeurs, puisque c'est ce qui est utilis� en arri�re-plan par les classes ES6. Si l'�l�ve ne conna�t pas ces notions, il n'a aucune chance de bien comprendre les classes ES6. Je le vois d�j� � l'oeuvre avec mes coll�gues issus du monde Java: depuis qu'on utilise Babel, ils utilisent � tout bout de champ le mot-cl� extends et font des hi�rarchies de classes compl�tement absurdes quand un simple mixin ferait parfaitement le travail.

    @ABCIWEB: m�me avis que toi. Je sais rep�rer de quel langage vient un codeur en regardant un bout de son JS. Mais aucun autre langage ne met en avant tous les atouts propres � JS.

    @Beginner: oui, les String ne peuvent pas �tre chang�es, c'est ce que je veux dire par "les primitives sont immutables". Mais les String disposent de nombreuses m�thodes utilitaires : https://developer.mozilla.org/fr/doc...ring/prototype

  15. #175
    Membre Expert
    Homme Profil pro
    Inscrit en
    Octobre 2011
    Messages
    2 910
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Octobre 2011
    Messages : 2 910
    Par d�faut
    Citation Envoy� par ABCIWEB Voir le message
    Cela dit on peut �galement acc�der aux �l�ments d'une chaine de caract�re avec son index
    Code javascript : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    var s = 'rete ferer';
    alert(s[5]);
    // affiche "f"
    Ah ok si j'ai bien compris c'est �quivalent � : alert(s.charAt(5));

    Ok mais je crois qu'on ne peut pas faire : s[5] = 'a' ; ni s.charAt(5) = 'a' ; d'o� la question du StringBuffer...

    Citation Envoy� par ABCIWEB Voir le message
    ... mais pour autant on ne peut pas appliquer directement les fonctions sur les tableaux sur une chaine de caract�res (m�me principe que dans d'autres langages).
    Oui d'o� peut-�tre une des raisons de l'introduction de la classe StringBuffer en Java... ? En gros une string qu'on peut modifier...

    Citation Envoy� par SylvainPV Voir le message

    @Beginner: oui, les String ne peuvent pas �tre chang�es, c'est ce que je veux dire par "les primitives sont immutables". Mais les String disposent de nombreuses m�thodes utilitaires : https://developer.mozilla.org/fr/doc...ring/prototype
    Ah ok, mais en JS les strings sont des objets ou des primitives ? Ou peut-�tre que la question ne se pose pas en JS... Ah je viens du Java moi (niveau d�butant cela dit)...

  16. #176
    Expert confirm�

    Homme Profil pro
    D�veloppeur Web
    Inscrit en
    Septembre 2010
    Messages
    5 418
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Puy de D�me (Auvergne)

    Informations professionnelles :
    Activit� : D�veloppeur Web
    Secteur : High Tech - Multim�dia et Internet

    Informations forums :
    Inscription : Septembre 2010
    Messages : 5 418
    Par d�faut
    Citation Envoy� par Beginner. Voir le message
    Oui d'o� peut-�tre une des raisons de l'introduction de la classe StringBuffer en Java... ? En gros une string qu'on peut modifier...
    SylvainPV t'a donn� un lien vers les m�thodes disponibles. Et si �a ne suffit pas, comme dit plus haut on peut transformer la chaine en tableau et utiliser les m�thodes des tableaux. En php c'est un peu le m�me principe donc je n'ai pas eu ta frustration Peut-�tre y a t-il plus de similitude entre php et javascript parce que ce sont deux langage web...

  17. #177
    R�dacteur/Mod�rateur

    Avatar de SylvainPV
    Profil pro
    Inscrit en
    Novembre 2012
    Messages
    3 375
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2012
    Messages : 3 375
    Par d�faut
    Les String sont des primitives, mais les primitives sont automatiquement cast�es en leurs �quivalents objets (constructeurs String/Number/Boolean) d�s qu'on utilise une m�thode dessus:
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    "test".toUpperCase()
    530..toFixed(1);
    3.14.toExponential(5)
    true.toString()
    De la m�me fa�on, lorsqu'on utilise un op�rateur, les �quivalents objets sont automatiquement cast�es en leurs valeurs primitives:
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
     
    typeof (new Number(42)) // object
    typeof (new Number(42) * 1) // number
    (new String("hello") + new String(" world")) // "hello world"
    !!(new Boolean(1)) // true

  18. #178
    R�dacteur

    Avatar de autran
    Homme Profil pro
    D�veloppeur Java
    Inscrit en
    F�vrier 2015
    Messages
    1 241
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes C�te d'Azur)

    Informations professionnelles :
    Activit� : D�veloppeur Java
    Secteur : High Tech - Multim�dia et Internet

    Informations forums :
    Inscription : F�vrier 2015
    Messages : 1 241
    Billets dans le blog
    55
    Par d�faut
    @Alain
    Je pense que ton conseil est sage ne pas m�langer les langage pour les d�butant et suivre une progression qui s'appuie sur le langage cible

    @Sylvain
    Je ne voulais pas lancer un troll
    Mais merci pour ces explications techniques et ton retex sur les d�veloppeurs JEE qui arrivent sur JavaScript, parce-qu�il est plus avantageux, mais qui gardent leurs mauvaises mani�res.

    Alors du coup je renonce � cet �xo qui s�av�rerait anti-p�dagogique. Cependant quand j'aurai le temps je ferai une classe ES6 StringBuffer et je le testerai sur mon blog histoire de me faire de nouveaux amis
    Bref c'�tait une fausse bonne id�e....
    D�veloppeur Java
    Site Web

  19. #179
    R�dacteur/Mod�rateur

    Avatar de SylvainPV
    Profil pro
    Inscrit en
    Novembre 2012
    Messages
    3 375
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2012
    Messages : 3 375
    Par d�faut
    @autran: Je ne l'ai pas pris pour un troll, et n'y vois aucune animosit� de ma part ; je tenais juste � souligner ce point de vigilance, parce que je connais par exp�rience toutes les d�viances et incompr�hensions que les classes ES6 peuvent susciter. C'est vrai que l'exemple du StringBuffer me para�t mal choisi, mais on peut sans doute trouver un sujet ad�quat comme exercice pratique pour les classes ES6. Mais avant �a, il faut bosser les exos sur les prototypes, car c'est � la base de tout le reste.

  20. #180
    Invit�
    Invit�(e)
    Par d�faut
    Bonjour � tous, j'ai une question tr�s b�te � laquelle je n'ai jamais trouv� de r�ponse.

    Etant donn� qu'on peut acc�der aux bases de donn�es avec angularJs et $http. et �laborer des m�canismes d'identification
    Etant donn� que le serveur Apache existe

    A quoi sert Node.js ?
    Derni�re modification par Invit� ; 31/03/2016 � 01h02.

Discussions similaires

  1. Les meilleurs livres pour apprendre le JavaScript
    Par vermine dans le forum Livres
    R�ponses: 23
    Dernier message: 10/06/2019, 18h58
  2. Apprendre le Node.JS from scratch
    Par TheSuperGeek dans le forum NodeJS
    R�ponses: 62
    Dernier message: 08/02/2016, 11h25
  3. question linux from scratch
    Par e=mc2 dans le forum Applications et environnements graphiques
    R�ponses: 1
    Dernier message: 06/01/2008, 14h11
  4. [D�butant] Commencer Java "from scratch"
    Par Rakken dans le forum D�buter avec Java
    R�ponses: 7
    Dernier message: 25/04/2007, 09h42
  5. [VB.NET] Cr�er une textbox from scratch
    Par AP dans le forum Windows Forms
    R�ponses: 2
    Dernier message: 07/04/2006, 10h09

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo