Partage
  • Partager sur Facebook
  • Partager sur Twitter

A quoi sert cette ligne ?

Sujet résolu
    25 janvier 2023 à 17:51:35

    Bonjour à tous,

    Pourriez-vous me dire à quoi sert cette ligne de code c++.

    using namespace std;

    Merci d'avance.

    • Partager sur Facebook
    • Partager sur Twitter
      25 janvier 2023 à 17:57:07

      Salut,

      ça sert à dire que toutes les fonctions std pourront être écrites sans std::  dans le code qui suit. 

      • Partager sur Facebook
      • Partager sur Twitter

      Recueil de code C et C++  http://fvirtman.free.fr/recueil/index.html

        25 janvier 2023 à 17:58:33

        Fvirtman a écrit:

        Salut,

        ça sert à dire que toutes les fonctions std pourront être écrites sans std::  dans le code qui suit. 


        Merci beaucoup pour ta réponse.
        • Partager sur Facebook
        • Partager sur Twitter
          25 janvier 2023 à 18:12:17

          Salut,

          Par contre, ce n'est pas forcément une bonne idée que de l'utiliser, pour toute une série de raisons..

          Je développe ce point de vue ==>ICI<==.  Peut être serais tu bien inspiré de lire cette réponse ;)

          • Partager sur Facebook
          • Partager sur Twitter
          Ce qui se conçoit bien s'énonce clairement. Et les mots pour le dire viennent aisément.Mon nouveau livre : Coder efficacement - Bonnes pratiques et erreurs  à éviter (en C++)Avant de faire ce que tu ne pourras défaire, penses à tout ce que tu ne pourras plus faire une fois que tu l'auras fait
            25 janvier 2023 à 19:49:18

            koala01 a écrit:

            Salut,

            Par contre, ce n'est pas forcément une bonne idée que de l'utiliser, pour toute une série de raisons..

            Je développe ce point de vue ==>ICI<==.  Peut être serais tu bien inspiré de lire cette réponse ;)


            Merci beaucoup ! Très instructif.
            • Partager sur Facebook
            • Partager sur Twitter
              26 janvier 2023 à 11:44:08

              Il faut surtout éviter de mettre des using dans du nouveau code qui est destiné à être lu/modifié par d'autres.

              Si c'est en apprenant à programmer pour tester un truc vite fait, qui n'utilise que le bibliothèque standard et qui va à la poubelle après, ça n'a guère d'importance (*).

              Un argument contre : le "principe de moindre suprise"

              Si on tombe sur du code qui dit   cout << "hello";   on peut se demander si cout est une variable utilisateur, ou "le vrai cout", c-a-d std::cout.

              Donc si c'est le vrai cout, c'est préférable de l'écrire std::cout pour ne pas avoir à se poser la question quand on relit.

              (*) j'entends dans le fond  "les bonnes pratiques gnagna". Si il n'y avait que ça dans le code des débutants qui soit contraire aux soi-disant bonnes pratiques des professionnels... Tiens voila une liste

              https://en.wikipedia.org/wiki/List_of_software_development_philosophies

              EDIT : pour être taquin, le fait est que les problèmes de sécurité avec C et C++ (cf les déclarations de la NSA) sont dûs au mauvais usage (forcément) de ces langages (dangereux) par lesdits professionnels de la profession. Faut pas chercher d'autres coupables. Comme le dit Stroustrup, si ces derniers utilisaient correctement le langage en laissant tomber leurs vieilles pratiques et en profitant des nouveautés qui sont ajoutées dans le standard C++ pour tenter d'améliorer les choses, ça irait (beaucoup ?) mieux. Mais bon, le poids des habitudes, on a toujours fait comme ça, t'inquiète ça va marcher tu vas pas m'apprendre mon job avec tes nouveautés qui servent à rien.

               

              -
              Edité par michelbillaud 26 janvier 2023 à 12:09:59

              • Partager sur Facebook
              • Partager sur Twitter
                26 janvier 2023 à 18:21:16

                Nous sommes tout à fait d'accord :D

                C'est d'ailleurs bien la raison qui m'a incité à écrire que "ce n'est pas forcément une bonne idée", et de donner un lien qui explique ce point de vue ;)

                Par contre, si on ne prend pas le plis de donner les "bonnes" habitudes aux débutants sous prétexte que "ca a toujours fonctionné comme cela, je ne vois pas pourquoi je changerais mes habitudes", ben, il semble clair que les bonnes habitudes ne finiront jamais par s'imposer :'(

                • Partager sur Facebook
                • Partager sur Twitter
                Ce qui se conçoit bien s'énonce clairement. Et les mots pour le dire viennent aisément.Mon nouveau livre : Coder efficacement - Bonnes pratiques et erreurs  à éviter (en C++)Avant de faire ce que tu ne pourras défaire, penses à tout ce que tu ne pourras plus faire une fois que tu l'auras fait
                  26 janvier 2023 à 20:47:53

                  Il y a plein de bonnes pratiques à apprendre, et ce n'est humainement pas possible de les pratiquer toutes en même temps dès le début.

                  Imagine, tu veux apprendre le piano, et on va t'emmerder dès que tu tapes trois notes, parce tu ne tiens pas comme il faut (ton dos, bordel !), tu n'appuies pas exactement au bon endroit, ni avec la bonne force (pas comme ça les doigts !), tu n'es pas exactement sur le temps etc. Alors que si tu dois devenir concertiste, ce qui est bien sûr le destin inéluctable de tout musico débutant, il faut absolument prendre toutes ces bonnes habitudes.

                  C'est pour ça que le premier exemple "Hello World" devrait tout de suite être internationalisé. Faut en prendre l'habitude.

                  https://erri120.github.io/posts/2022-05-05/

                  Dans ce genre de circonstances, la seule pédagogie qui marche consiste à "passer plusieurs couches", pour montrer des choses, et une fois qu'on a compris de quoi il s'agit, y revenir au niveau "meilleure façon de faire", avec explication du pourquoi. Entre le moment où le débutant découvre quelque chose, et celui où il prend des habitudes - ce qui suppose une répétition -, il y a quand même de la marge. Bref, on donne des bonnes pratiques autant que possible, mais c'est pas forcément à la première heure.

                  Non, ceux qui ont pris de mauvaises habitudes, c'est les professionnels qui font les mêmes trucs pendant des années, et qui ne veulent pas en décoller :-)

                  -
                  Edité par michelbillaud 26 janvier 2023 à 21:00:19

                  • Partager sur Facebook
                  • Partager sur Twitter
                    26 janvier 2023 à 22:46:48

                    Oui, je sais bien...

                    disons qu'il y a des bonnes pratiques qui nécessitent des connaissances ne serait-ce que pour pouvoir comprendre de quoi on parle alors pour ce qui est de std::, si l'apprenant sait que "ca fait partie du nom", il en sait déjà pour comprendre que on écrit std::cout...

                    On n'est même pas forcément obligé de lui parler d'espace de noms ni de nom pleinement qualifié dans un premier temps, et ca ne rend pas forcément le code plus compliquéà lire ou à écrire ;)

                    Par contre, si on ne lui parle pas non plus (du moins, dans un premier temps) de la directive using namespace std; , cela fait surtout une "mauvaise pratique" qu'il n'apprendra même pas et contre laquelle nous n'aurons pas à nous battre par la suite pour lui faire accepter ce status de "mauvaise pratique".

                     L'un dans l'autre, même sans forcément vouloir apprendre les *** bonnes *** pratiques aux étudiants, si on pouvait déjà au moins essayer de ne pas leur en apprendre (trop) de (trop) mauvaises, ce serait peut-être déjà pas si mal, qu'en penses tu  ?

                    -
                    Edité par koala01 26 janvier 2023 à 22:52:59

                    • Partager sur Facebook
                    • Partager sur Twitter
                    Ce qui se conçoit bien s'énonce clairement. Et les mots pour le dire viennent aisément.Mon nouveau livre : Coder efficacement - Bonnes pratiques et erreurs  à éviter (en C++)Avant de faire ce que tu ne pourras défaire, penses à tout ce que tu ne pourras plus faire une fois que tu l'auras fait
                      27 janvier 2023 à 0:01:56

                      En y repensant, c'est marrant que ça fasse autant d'histoire avec C++, alors qu'on n'en parle pas tant avec Python, Java, etc qui ont les mêmes mécanismes d'espaces de nommage.

                      Ps ta question est biaisée. Ne pas en faire des tonnes au début sur des bonnes pratiques à propos de mécanismes que l'apprenant ne comprend absolument pas à ce moment là, ce n'est pas "lui apprendre de mauvaises pratiques". On lui apprend autre chose, au lieu de le tanner avec des mystères supplémentaires.

                      --- EDIT:

                      B. Stroustrup, à qui on ne pourra quand même pas reprocher de ne pas connaître C++, ni de faire fi des bons usages (outre qu'il a inventé le langage, c'est un moteur pour la sécurisation de C++), a le bonheur d'enseigner régulièrement la programmation à des débutants (et le malheur de le faire en C++), voila l'exemple qu'il donne

                      https://www.stroustrup.com/bs_faq2.html#simple-program

                      <<

                      How do I write this very simple program?

                      Often, especially at the start of semesters, I get a lot of questions about how to write very simple programs. Typically, the problem to be solved is to read in a few numbers, do something with them, and write out an answer. Here is a sample program that does that:

                      	#include<iostream>
                      	#include<vector>
                      	#include<algorithm>
                      	using namespace std;
                      
                      	int main()
                      	{
                      		vector<double> v;
                      
                      		double d;
                      		while(cin>>d) v.push_back(d);	// read elements
                      		if (!cin.eof()) {		// check if input failed
                      			cerr << "format error\n";
                      			return 1;	// error return
                      		}
                      
                      		cout << "read " << v.size() << " elements\n";
                      
                      		reverse(v.begin(),v.end());
                      		cout << "elements in reverse order:\n";
                      		for (int i = 0; i<v.size(); ++i) cout << v[i] << '\n';
                      
                      		return 0; // success return
                      	}

                       >>

                      Dans les observations sur ce programme, voila ce qu'il dit des espaces de noms

                      • This is a Standard ISO C++ program using the standard library. Standard library facilities are declared in namespace std in headers without a .h suffix.
                      C'est tout.
                      ---
                      un peu plus loin, on trouve un mini-exemple
                      <<

                      In C++, main() need not contain an explicit return statement. In that case, the value returned is 0, meaning successful execution. For example:

                      	#include<iostream>
                      
                      	int main()
                      	{
                      		std::cout << "This program returns the integer value 0\n";
                      	}
                      

                       >>

                      la logique est probablement que cet exemple est plus court à écrire avec std::cout plutot que cout avec un using namespace std;  :-)

                      -
                      Edité par michelbillaud 27 janvier 2023 à 19:43:24

                      • Partager sur Facebook
                      • Partager sur Twitter

                      A quoi sert cette ligne ?

                      × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
                      × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
                      • Editeur
                      • Markdown