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

Bibliothèque standard C Discussion :

Que peut-on faire avec la bibliothèque standard du C ?


Sujet :

Bibliothèque standard C

  1. #1
    Membre habitué
    Homme Profil pro
    Étudiant
    Inscrit en
    Décembre 2009
    Messages
    172
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Décembre 2009
    Messages : 172
    Points : 191
    Points
    191
    Par défaut Que peut-on faire avec la bibliothèque standard du C ?
    Bonjour à tous,

    Plus j'avance plus je me dis que la bibliothèque standard du C sert à rien à part pour des "Hello World!". Qu'en pensez-vous ?

    Cordialement.

  2. #2
    Expert éminent
    Avatar de Melem
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Janvier 2006
    Messages
    3 656
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Janvier 2006
    Messages : 3 656
    Points : 8 389
    Points
    8 389
    Par défaut
    Je n'ai pas compris. Tu veux dire que la bibliothèque standard du C ne sert à rien d'autre qu'à écrire des petits programmes qui ne servent à rien ? C'est que tu ne connaisses alors pas encore assez le C .

  3. #3
    Membre habitué
    Homme Profil pro
    Étudiant
    Inscrit en
    Décembre 2009
    Messages
    172
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Décembre 2009
    Messages : 172
    Points : 191
    Points
    191
    Par défaut
    Pas cool de mettre mes compétences en C sur le tapis! Tu réussis à faire quelque chose de plus poussé qu'une calculatrice seulement avec la libc toi? Sous UNIX tout est fichier, c'est beau, c'est bien mais sur d'autres systèmes si tu comptes seulement sur la libc tu vas t'amuser! Ne serait-ce que les threads ne sont pas gérés par la libc donc j'ai un peu exagéré en parlant de petits programmes mais le principe est là! Le réseau n'est pas non plus intégré à la libc. Lorsque que tu veux exploiter correctement le système sur lequel ton programme tourne tu dois te tourner vers autre chose, les fonctions du système lui même. (Win32/POSIX etc...). C'est pour cela que je dis que la libc ne sert pas à grand chose. Si tu veux créer une application portable basée sur la libc, c'est possible, tant que ton appli ne dépasse pas le stade de la calculatrice!

  4. #4
    Expert éminent sénior
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 369
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 369
    Points : 41 519
    Points
    41 519
    Par défaut
    Ton "sous Unix tout est fichier", il me fait bien marrer quand je vois que chaque object de synchronisation utilise une fonction d'attente différente (sem_wait / semop, mq_wait, wait/waitpid, etc.).
    SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parlé avant.

    "Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
    Apparently everyone.
    -- Raymond Chen.
    Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.

  5. #5
    Expert éminent
    Avatar de Melem
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Janvier 2006
    Messages
    3 656
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Janvier 2006
    Messages : 3 656
    Points : 8 389
    Points
    8 389
    Par défaut
    Pas cool de mettre mes compétences en C sur le tapis!
    Je ne mets pas tes compétences C sur le tapis. Tu es sans doute compétent, sinon tu ne te serais pas posé toutes ces questions. Tu n'as par contre pas encore assez d'expérience, de ton propre aveu, et c'est pour cela que tu es venu nous voir. Alors, j'essaie juste de te corriger lorsqu'il le faut.

    Tu réussis à faire quelque chose de plus poussé qu'une calculatrice seulement avec la libc toi?
    Ok. Voici quelques idées d'applications 100% portables que tu peux réaliser en C standard :

    - des outils de développement : compilateurs, interpréteurs, assembleurs, etc.
    - des outils de traitement de données :
    --- traitement de l'information : algorithmes de compression, de chiffrement, de déchiffrement, etc.
    --- manipulation de fichiers : convertisseurs de fichiers (wav <-> wma <-> mp3 <-> etc., bmp <-> jpg <-> gif <-> png <-> etc., divx <-> flv <-> mp4 <-> etc., ...), logiciels de compression (déjà évoqué plus haut), parseurs (parseurs de xml, gestionnaires de fichiers de conf, ...), etc.
    --- exploitation de données : des sgbd (systèmes de gestion de bases de données), des dictionnaires, des traducteurs, etc.
    - des logiciels de calcul scientifique (du genre matlab, R, etc.)
    - des applications ludiques (jeux)
    - des interfaces logiciel-matériel (contrôle de périphérique, accès à des ressources physiques, etc.)

    Je peux étendre la liste si ces exemples ne te suffisent pas .

  6. #6
    Expert éminent sénior
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 369
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 369
    Points : 41 519
    Points
    41 519
    Par défaut
    - des interfaces logiciel-matériel (contrôle de périphérique, accès à des ressources physiques, etc.)
    Euh, généralement ça, c'est tout sauf standard.

    Pour le reste, je suis d'accord avec toi
    SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parlé avant.

    "Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
    Apparently everyone.
    -- Raymond Chen.
    Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.

  7. #7
    Membre habitué
    Homme Profil pro
    Étudiant
    Inscrit en
    Décembre 2009
    Messages
    172
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Décembre 2009
    Messages : 172
    Points : 191
    Points
    191
    Par défaut
    Citation Envoyé par Melem Voir le message
    - des outils de développement : compilateurs, interpréteurs, assembleurs, etc.
    - des outils de traitement de données :
    --- traitement de l'information : algorithmes de compression, de chiffrement, de déchiffrement, etc.
    --- manipulation de fichiers : convertisseurs de fichiers (wav <-> wma <-> mp3 <-> etc., bmp <-> jpg <-> gif <-> png <-> etc., divx <-> flv <-> mp4 <-> etc., ...), logiciels de compression (déjà évoqué plus haut), parseurs (parseurs de xml, gestionnaires de fichiers de conf, ...), etc.
    --- exploitation de données : des sgbd (systèmes de gestion de bases de données), des dictionnaires, des traducteurs, etc.
    - des logiciels de calcul scientifique (du genre matlab, R, etc.)
    - des applications ludiques (jeux)
    - des interfaces logiciel-matériel (contrôle de périphérique, accès à des ressources physiques, etc.)
    Si tu réussis à faire tout çà avec des applis un minimum potables qui ne mettent pas 10 000 ans à faire une seule opération avec un seul thread, je veux que tu me donnes des cours de prog! Le pire c'est que tu as osé mettre un IDE dans tes exemples alors que je suis en train d'en développé un en ce moment! Ton prix sera le mien

    Citation Envoyé par Médinoc Voir le message
    Ton "sous Unix tout est fichier", il me fait bien marrer quand je vois que chaque object de synchronisation utilise une fonction d'attente différente (sem_wait / semop, mq_wait, wait/waitpid, etc.).
    Ouai sauf que la on parles SUS/POSIX et non libc

  8. #8
    Expert éminent
    Avatar de Melem
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Janvier 2006
    Messages
    3 656
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Janvier 2006
    Messages : 3 656
    Points : 8 389
    Points
    8 389
    Par défaut
    Si tu réussis à faire tout çà avec des applis un minimum potables qui ne mettent pas 10 000 ans à faire une seule opération avec un seul thread, je veux que tu me donnes des cours de prog! Le pire c'est que tu as osé mettre un IDE dans tes exemples alors que je suis en train d'en développé un en ce moment! Ton prix sera le mien
    - Sur la portabilité : dis-moi ce qui m'empêcherait de réaliser de telles applis de manière 100% portable, avec seulement la lib C. Quelle fonctionnalité me manquerait-il ?

    - Sur la performance : pourquoi ça mettrait 10 000 ans à faire une seule opération ? Le C est un langage compact qui génère du code très performant. Si le C ne peut pas le faire, quel langage le ferait alors ? Je te fais remarquer que toutes les applis que j'ai cité ci-dessus en plus ont déjà existé à l'époque du DOS et des processeurs 16 bits (à part certains convertisseurs de fichiers parce que le format n'existait même pas encore à l'époque ...) et ça ne mettait pas 10 000 ans à faire une opération. On peut faire ces applis en C standard ET avec des performances très élevées ! C'est pour ça que le C a été créé ...

    - Sur les threads : les threads servent surtout à faire autre chose pendant qu'une opération bloquante est également en cours. Multithreader son application n'augmente pas du tout les performances. Tout au contraire, ça décroît les performances. Si tu voulais parler de parallélisation, oui, ça permet d'accroître les peroformances lorsque l'algorithme est parallélisable. Mais va voir un programmeur VB6 par exemple et demande-lui s'il utilise la parallélisation dans ses applications. Ses applis tournent-elles à raison de 10 000 ans / opération ? Alors pourquoi un programme C tournerait moins vite ?

  9. #9
    Membre habitué
    Homme Profil pro
    Étudiant
    Inscrit en
    Décembre 2009
    Messages
    172
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Décembre 2009
    Messages : 172
    Points : 191
    Points
    191
    Par défaut
    Dis moi comment tu réussis à créer un IDE comme visual studio qui vas vérifier et résoudre les macros dans tous les headers ou la bdd, sauvegarder les fichiers nécessaire, mettre à jour le GUI, tenir à jour les modifs faites dans ton fichier par rapport à l'original, faire un truc genre intellisense et compiler ou debugger ton code tout en te permettant de taper 2 lettres d'affilé sans attendre 5 secondes et avec un programme qui tourne de façon linéaire, monothread? Là tu m'étonnes sérieux! Sur un simple fichier c'est encore supportable mais sur un gros projet de 100 voir 1000 headers de 20000 lignes chaqu'un + ton code source de 50 modules si tu utilises les threads seulement pour une raison d'opération bloquante bonne chance!

    Ps : pour les opérations bloquante les entrées/sorties asynchrone existent et les threads sont toujours le plus utilisées!

  10. #10
    Expert éminent
    Avatar de Melem
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Janvier 2006
    Messages
    3 656
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Janvier 2006
    Messages : 3 656
    Points : 8 389
    Points
    8 389
    Par défaut
    Dis moi comment tu réussis à créer un IDE comme visual studio qui vas vérifier et résoudre les macros dans tous les headers, sauvegarder les fichiers nécessaire, mettre à jour le GUI, tenir à jour les modifs faites dans ton fichier par rapport à l'original et compiler ou debugger ton code tout en te permettant de taper 2 lettres d'affilé sans attendre 5 secondes? Là tu m'étonnes sérieux! Sur un simple fichier c'est encore supportable mais sur un gros projet de 100 voir 1000 headers de 20000 lignes chaqu'un + ton code source de 50 modules si tu utilises les threads seulement pour une raison de blocage bonne chance!
    - Premièrement, où est-ce que tu as vu que j'ai dit qu'on peut écrire un IDE de la monstruosité de Visual Studio avec la bibliothèque standard du C seulement ?

    - Deuxièmement, l'utilisation des threads dans ton exemple correspond bien au cas que j'ai évoqué où il est intéressant d'utiliser les threads : on ne va pas attendre la fin du pasring des headers avant de pouvoir faire autre chose = > thread. On ne va pas attendre la fin de la compilation pour pouvoir faire autre chose => process ou thread. A quoi servirait par contre les threads dans les exemples d'applications que j'ai citées ? Turbo C fonctionnait bien sous dos sans multithreading, zip et unzip fonctionnaient bien sous dos sans multithreading, oracle et dbase fonctionnaient bien sous dos sans multithreading, matlab fonctionnait bien sous dos sans multithreading, tu veux d'autres exemples ? La raison pour laquelle on a besoin de multithreading dans un logiciel comme visual studio c'est-à-cause de l'interface graphique : On veut que l'interface graphique soit utilisable pendant qu'une autre opération se déroule en tâche de fond, pas parce qu'un gros logiciel a systématiquement besoin d'être multithreadé.

    Ps : pour les opérations bloquante les entrées/sorties asynchrone existent et les threads sont toujours le plus utilisées!
    Tu ne sais vraiment pas de quoi tu parles.

  11. #11
    Membre habitué
    Homme Profil pro
    Étudiant
    Inscrit en
    Décembre 2009
    Messages
    172
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Décembre 2009
    Messages : 172
    Points : 191
    Points
    191
    Par défaut
    Citation Envoyé par Melem Voir le message
    - Premièrement, où est-ce que tu as vu que j'ai dit qu'on peut écrire un IDE de la monstruosité de Visual Studio avec la bibliothèque standard du C seulement ?
    Donc content qu'on soit d'accord, la libc sert à rendre des applis portables tant qu'elles restent basiques

    Citation Envoyé par Melem Voir le message
    - Deuxièmement, l'utilisation des threads dans ton exemple correspond bien au cas que j'ai évoqué où il est intéressant d'utiliser les threads : on ne va pas attendre la fin du pasring des headers avant de pouvoir faire autre chose = > thread. On ne va pas attendre la fin de la compilation pour pouvoir faire autre chose => process ou thread. A quoi servirait par contre les threads dans les exemples d'applications que j'ai citées ? Turbo C fonctionnait bien sous dos sans multithreading, zip et unzip fonctionnaient bien sous dos sans multithreading, oracle et dbase fonctionnaient bien sous dos sans multithreading, matlab fonctionnait bien sous dos sans multithreading, tu veux d'autres exemples ? La raison pour laquelle on a besoin de multithreading dans un logiciel comme visual studio c'est-à-cause de l'interface graphique : On veut que l'interface graphique soit utilisable pendant qu'une autre opération se déroule en tâche de fond, pas parce qu'un gros logiciel a systématiquement besoin d'être multithreadé.
    On est donc obligé d'utiliser des threads pour que ton appli soit utilisable ou non? CQFD

    PS : Sous DOS, une tache a TOUT le système pour elle lorsqu'elle s'exécute, jusqu'à ce qu'elle se termine. Avec un proc actuel 32 ou 64 bits et avec rien que 4 GIGA de ram à disposition, rajoute moi un GPU et au diable les threads, je te programme un méga jeux 6D! çà fait plus de 10 ans qu'on est passé sur des systèmes préemptifs et tu cites encore ces exemples avec sérieu? dans ce cas les premiers ordi, sous batch peuvent aussi bien revenir sur le tapis et là, plus besoin de libc!!!

    Et au fait, utiliser une interface graphique ne veut aucunement dire que tu fais du multithread! Windows interromps ton thread pour appeler une fonction du même THREAD (en général), pour que son message puisse être traité DANS LE MEME THREAD aucun context switch autre que pour les appels système et aucun thread n'est généré. Techniquement tu restes dans ton winmain mais tu es juste dans la proc que tu as fourni pour la gestion des messages. Il est tout à fait possible de maintenir une appli graphique sans utiliser de threads.

    Citation Envoyé par Melem Voir le message
    Tu ne sais vraiment pas de quoi tu parles.
    pour la deuxième fois, Je ne me permettrai pas de remettre tes compétences ou ton expérience en doute mais j'ai l'impression que tu as tendance à me prendre de haut parce que j'en ai moins que toi! (Ou peut-être parce que je pose des questions?). Si tel est le cas tu devrais éviter ce genre de préjugé parce que qu'un jour malheureusement tu risques de tomber sur quelqu'un qui ne s'est peut-être pas lancé dans la programmation même dès le départ, mais qui a attendu d'avoir une excellente connaissance de son environnement de travail et même préférer faire de l'admin système, pas mal de débogages et hacks (dans le vrai sens du terme) et même quelques stages en réseau avant de toucher au moindre compilo. Je ne déballerai pas ma vie, ce n'est pas mon genre, et j'avoues qu'il est fort probable que je n'ai pas autant d'expérience que toi dans le monde du travail, mais saches que je ne débarques pas non plus!

    Cordialement.

  12. #12
    Expert éminent
    Avatar de Melem
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Janvier 2006
    Messages
    3 656
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Janvier 2006
    Messages : 3 656
    Points : 8 389
    Points
    8 389
    Par défaut
    Donc content qu'on soit d'accord, la libc sert à rendre des applis portables tant qu'elles restent basiques
    Basique ou pas n'est pas le problème. Tu ne peux pas écrire un logiciel aussi basique que le bloc-notes avec seulement la bibliothèque standard du C, mais tu peux écrire un logiciel aussi complexe qu'un sgbd.

    On est donc obligé d'utiliser des threads pour que ton appli soit utilisable ou non?
    Pas du tout. Je te demande de prendre un exemple d'application dans la liste que je t'ai fourni et de me dire pourquoi sans thread l'application mettrait 10 000 ans à faire une opération.

    PS : Sous DOS, une tache a TOUT le système pour elle lorsqu'elle s'exécute, jusqu'à ce qu'elle se termine. Avec un proc actuel 32 ou 64 bits et avec rien que 4 GIGA de ram à disposition, rajoute moi un GPU et au diable les threads, je te programme un méga jeux 6D! çà fait plus de 10 ans qu'on est passé sur des systèmes préemptifs et tu cites encore ces exemples avec sérieu?
    Je n'ai pas compris ce que tu voulais dire par là. Moi ce que je voulais dire par contre c'est qu'on peut développer des applications complexes qui tournent bien même sur des processeurs 16 bits monocoeur sans hyperthreading cadencés à moins de 100 MHz et sans threads, et donc qui ne tourneraient pas plus mal sur nos machines actuelles. De nos jours, on a la possibilité de les de les doter d'interfaces graphiques, d'exploiter le multitâche, le multithreading et la parallélisation mais ça ne veut en aucun cas dire qu'une application monothreadée par exemple c'est systématiquement de la m**de. Et la question était peut-on réaliser des applications utiles et 100% portables avec seulement la bibliothèque standard du C, réponse : oui, pas "est-il possible de développer tous les types d'applications avec seulement la bibliothèque standard du C" ni "les applications écrites avec seulement la lib C sont-elles plus rapides que les applications qui exploitent d'autres bibliothèques en plus", réponse : non évidemment.

  13. #13
    Membre habitué
    Homme Profil pro
    Étudiant
    Inscrit en
    Décembre 2009
    Messages
    172
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Décembre 2009
    Messages : 172
    Points : 191
    Points
    191
    Par défaut
    C'est difficile de se retrouver dans toutes ses discussions!

    Citation Envoyé par Melem Voir le message
    Basique ou pas n'est pas le problème. Tu ne peux pas écrire un logiciel aussi basique que le bloc-notes avec seulement la bibliothèque standard du C, mais tu peux écrire un logiciel aussi complexe qu'un sgbd.
    Si justement c'était çà ma question tu peux vérifier! Je demande quel est l'avantage à utiliser la libC plutôt que l'API Win32 et c'est pour çà que j'en ai conclut que tu peux faire ce que tu veux avec la libC mais tant qu'on en demande pas trop à son appli. Un sgbd sous Windows rien qu'avec la libC, avec un seul thread Autant travailler avec des fichiers textes car je pense que tout l'avantage d'un SGbd sera perdu!

    Citation Envoyé par Melem Voir le message
    Pas du tout. Je te demande de prendre un exemple d'application dans la liste que je t'ai fourni et de me dire pourquoi sans thread l'application mettrait 10 000 ans à faire une opération.
    Tu rigoles ou c'est de la mauvaise foie? Et l'IDE

    Citation Envoyé par Melem Voir le message
    Je n'ai pas compris ce que tu voulais dire par là. Moi ce que je voulais dire par contre c'est qu'on peut développer des applications complexes qui tournent bien même sur des processeurs 16 bits monocoeur sans hyperthreading cadencés à moins de 100 MHz et sans threads, et donc qui ne tourneraient pas plus mal sur nos machines actuelles. De nos jours, on a la possibilité de les de les doter d'interfaces graphiques, d'exploiter le multitâche, le multithreading et la parallélisation mais ça ne veut en aucun cas dire qu'une application monothreadée par exemple c'est systématiquement de la m**de. Et la question était peut-on réaliser des applications utiles et 100% portables avec seulement la bibliothèque standard du C, réponse : oui, pas "est-il possible de développer tous les types d'applications avec seulement la bibliothèque standard du C" ni "les applications écrites avec seulement la lib C sont-elles plus rapides que les applications qui exploitent d'autres bibliothèques en plus", réponse : non évidemment.
    Ce que j'ai voulut dire c'est que tu prends des IDE ou je ne sais quoi qui fonctionnaient sous DOS mais faut voir les conditions dans lesquelles elles faisaient leur boulot et ce qu'on attendait d'une application en ce temps là!

    Maintenant je n'ai pas dit qu'une application avec un seul thread c'est à jeter. L'appli que j'utilise le plus c'est cmd.exe et je ne m'en plains pas! Mais que si tu veux faire une application poussée/correcte aujourd'hui, tu devras forcément revenir à l'API native, posix ou sus sous UNIX et Win32 sous Windows. à la différence que cette dernière n'inclut pas la libc dans ses standards. Donc je le répète ma question ce n'était pas "Que peut-on faire avec la libC", c'était "Que me conseillez vous d'utiliser" et la réponse que j'ai pour l'instant c'est "Tu n'y comprends tu ne sais pas de quoi tu parles! Tu peux faire ce que tu veux avec la libC, (ce qui déjà n'est pas vrai!) on s'en fout des performances ou quoi, ton appli sera portable ( ce dont je me fous un peu!)". Par contre j'en ai déduit que la libC avait ses avantages lorsque tu cherches de la portabilité mais puisque de toute façon la plupart du temps je serai obligé de revenir à l'API Native du système, autant prendre l'habitude de programmer avec de suite pour ne pas être perdu le moment venu! Mais je n'en utiliserai pas moins la libc et elle n'est pas descendu dans mon estime.

  14. #14
    Expert éminent
    Avatar de Melem
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Janvier 2006
    Messages
    3 656
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Janvier 2006
    Messages : 3 656
    Points : 8 389
    Points
    8 389
    Par défaut
    Ca, ça se passe ici. Ici, on parle des applications 100% portables utiles que l'on peut réaliser avec seulement la bibliothèque standard du C.

  15. #15
    Membre émérite
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Octobre 2008
    Messages
    1 515
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Octobre 2008
    Messages : 1 515
    Points : 2 505
    Points
    2 505
    Par défaut
    Ta logique est mauvaise baccali. Ce n'est pas parce que la libc n'offre pas les fonctions avancées que tu cherches, qu'elle ne sert à rien d'utile. En l'occurrence toutes les libs qui offrent des fonctionnalités avancées (comme la libpthread pour reprendre ton exemple) utilisent la libc.

    La libc, c'est la gestion de la mémoire, c'est les I/O, c'est les manipulations de chaine... Toute choses dont personne ne peut se passer.

  16. #16
    Nouveau membre du Club
    Homme Profil pro
    Inscrit en
    Novembre 2011
    Messages
    36
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Novembre 2011
    Messages : 36
    Points : 33
    Points
    33
    Par défaut Il faut reconnaître les limites de la bibliothèque standard du C
    En comparaison avec d'autres langages (par exemple Java), la bibliothèque standard C de la norme ISO est minuscule. Elle fournit un jeu élémentaire de fonctions mathématiques, de manipulation de chaînes de caractères, de conversion de types, et d'entrée/sortie maniant les fichiers et les terminaux. Elle n'inclut pas de base standard de « types de conteneurs » comme le fait la Bibliothèque de Modèles Standard C++ (Standard Template Library) du langage C++). Elle laisse de côté les interfaces graphiques (Graphical User Interface, abr. GUI), les outils réseau, les fonctions de synchronisation entre tâches, et la profusion d'autres fonctionnalités que Java fournit en standard. L'avantage principal d'une petite bibliothèque standard est qu'il est beaucoup plus facile de fournir un environnement fonctionnel pour C ISO que pour les autres langages, et le portage d'applications en langage C vers de nouvelles plateformes est donc relativement rapide.

  17. #17
    Nouveau membre du Club
    Homme Profil pro
    Inscrit en
    Novembre 2011
    Messages
    36
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Novembre 2011
    Messages : 36
    Points : 33
    Points
    33
    Par défaut Cependant Affirmation grave
    Citation Envoyé par baccali Voir le message
    Bonjour à tous,

    Plus j'avance plus je me dis que la bibliothèque standard du C sert à rien à part pour des "Hello World!". Qu'en pensez-vous ?

    Cordialement.
    Cher Baccali, je pense que c'est une affirmation grave et minimaliste sur une langue qui a fait ses preuves depuis de longues années et qui est la base de beaucoup de langages aujourd'hui!

    Vous haïssez le C à ce point pour le banaliser de la sorte!

    Il est vrai que la bibliothèque standard du C est l'une des plus "compactes" mais comme on le dit souvent: "petit marteau casse grand cailloux"... seulement il faut savoir comment l'attraper, c'est à dire comment l'utiliser.

    Pour certains cette "compacité" est un atout pour d'autres c'est un défaut mais ceux qui savent s'en servir font des exploits avec!

  18. #18
    Membre expérimenté
    Profil pro
    Développeur en systèmes embarqués retraité
    Inscrit en
    Mars 2006
    Messages
    946
    Détails du profil
    Informations personnelles :
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Développeur en systèmes embarqués retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2006
    Messages : 946
    Points : 1 351
    Points
    1 351
    Par défaut
    Salut,

    Là, il y a mauvaise foi manifeste, ça:
    Citation Envoyé par baccali Voir le message
    Plus j'avance plus je me dis que la bibliothèque standard du C sert à rien à part pour des "Hello World!". Qu'en pensez-vous ?
    ce n'est pas la même chose que ça:
    Citation Envoyé par baccali Voir le message
    Je demande quel est l'avantage à utiliser la libC plutôt que l'API Win32
    La portabilité va devenir de plus en plus incontournable avec les tablettes et les téléphones, sans parler des futurs besoins pas encore inventés, mais ils y a déjà des gens qui y pensent à comment nous y rendre accros.

    C'est un dialogue de sourds. Tu parles de la forme alors que Melem te parles du fond. Un truc qui a besoin de ressources, un encodeur mp3 par exemple, ça s'écrit idéalement en C, pour les performances. Ensuite, on peut le mettre dans une DLL, lui mettre un bel emballage graphique en ce que tu veux et pourquoi pas l'API windows. Après, on peut croire que l'on programme l'API windows, mais le vrai travail est fait en C.

    A+

    Pfeuh

  19. #19
    Modérateur

    Avatar de Bktero
    Homme Profil pro
    Développeur en systèmes embarqués
    Inscrit en
    Juin 2009
    Messages
    4 481
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur en systèmes embarqués

    Informations forums :
    Inscription : Juin 2009
    Messages : 4 481
    Points : 13 679
    Points
    13 679
    Billets dans le blog
    1
    Par défaut
    La libc est la base du C et comme son nom l'indique, c'est une base qui servira à faire d'autres choses. J'utilise en ce moment la libusb qui est écrite en C et je présume qu'elle utilise la libC.

    On compare à Java ? On compare surtout la multitude de classes écrites avec Java (et non à la base de Java). Dans ce cas, parlons de toute les librairies disponibles pour faire du langage C !

    La portabilité est compliquée ? Normal que ce soit plus difficile d'être portable quand on génère du code machine directement (et non du byte code pour une JVM, JVM qui ne doit pas facile à porter je pense ).



    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Là, il y a mauvaise foi manifeste, ça
    +1

  20. #20
    Membre habitué
    Homme Profil pro
    Étudiant
    Inscrit en
    Décembre 2009
    Messages
    172
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Décembre 2009
    Messages : 172
    Points : 191
    Points
    191
    Par défaut
    Resalut à tous,

    j'arrive un peu tard mais comme le post date et que le dialogue original a été éclaté en plusieurs partie par Melem, j'ai eut du mal à tout suivre.

    En fait dans mon message original je demandais quel était l'avantage d'utiliser la libc plutôt que l'API native du système sous-jacent.

    D'où l'apparente mauvaise foi souligné par Pfeuh

    Mais je ne minimise aucunement le C, c'est mon langage préféré et celui dans lequel je bosse exclusivement (quand je suis pas sous windev au boulot!). Tout ce que je disais, c'est que lorsqu'on n'a pas besoin de faire du code portable, il est souvent plus "efficace" d'utiliser l'API du système plutôt que la libc, pour peu qu'on sache ce que l'on fait. Il est même très souvent impossible de ne se reposer que sur la libc lorsqu'on veut faire des applis poussées donc pourquoi ne pas utiliser l'API native dès le départ?

    Prenons le cas du multithreading. Discipline qui n'est prise en charge que par la dernière norme qui vient à peine de sortir. Avant cela, si on souhaitait en faire, il fallait forcément passer par l'API sous-jacente. (et au passage, ce n'est pas l'API windows ou UNIX qui est basé sur du C, mais l'inverse. La libc n'est que la garantie que ses fonctions seront retrouvée lors d'un changement de système mais ces fonctions utilisent les fonctions de l'API native).

    Donc je disais juste (ou plutôt me demandais juste, à l'époque) que la libc est très utile, lorsque la portabilité est un soucis majeur de portabilité mais qu'en dehors de ça valait mieux utiiser l'API du système. (Ca a un peu dérapé et j'exagérais un peu quand je disais qu'elle servait à rien mais le message de fond c'est çà!)

    Cordialement.

Discussions similaires

  1. [Toutes versions] Que peut on faire avec ce fichier xml
    Par PCBleu dans le forum Excel
    Réponses: 3
    Dernier message: 02/07/2014, 21h29
  2. Que peut-on faire avec internet ?
    Par Invité dans le forum C++Builder
    Réponses: 2
    Dernier message: 23/03/2008, 14h48
  3. Utiliser un pointeur IntPtr d'une BitmapSource WPF - que peut-on faire avec ça ?
    Par BruceWayne dans le forum Windows Presentation Foundation
    Réponses: 2
    Dernier message: 01/06/2007, 18h24
  4. Que peut on faire avec SOAP?
    Par feed_our_vision dans le forum XML/XSL et SOAP
    Réponses: 2
    Dernier message: 19/05/2006, 18h11
  5. Que peut-on faire avec une vue ?
    Par Invité dans le forum Décisions SGBD
    Réponses: 8
    Dernier message: 20/10/2005, 11h13

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