« Programmation C/Bibliothèque standard » : différence entre les versions

Un livre de Wikilivres.
Contenu supprimé Contenu ajouté
m ortho
Tpierron (discussion | contributions)
mAucun résumé des modifications
Ligne 1 : Ligne 1 :
{{Programmation C}}
{{Programmation C}}


La bibliothèque standard du langage C n'est pas ce qui se fait de mieux en la matière. Contrairement au C++, les fonctions proposées sont relativement pauvres, surtout en ce qui concerne la gestion des chaines de caractères. Comparé à un langage tout en un, comme Python, Ruby, C# ou Java, les fonctions qui suivent, peuvent paraitre archaïques, issues d'une époque où l'optimisation primait grandement sur la simplicité d'utilisation.
La bibliothèque standard du langage C n'est pas ce qui se fait de mieux en la matière. Contrairement au C++, les fonctions proposées sont relativement pauvres, surtout en ce qui concerne la gestion des chaines de caractères. Comparé à un langage tout en un, comme Python, Ruby, C# ou Java, les fonctions qui vont suivre, peuvent paraitre archaïques, bien qu'issues d'une époque où l'optimisation primait grandement sur la simplicité d'utilisation.


Espérer concevoir une application d'envergure avec ces seules fonctions est extrêmement pénible. Il est plus que conseillé de se tourner vers des bibliothèques de plus haut niveaux. Il en existe heureusement beaucoup, mais bien évidemment rien de standard et dont la seule énumération nécessiterait un ouvrage entier.
Espérer concevoir une application d'envergure avec ces seules fonctions nécessite une extrême rigueur. Il est plus que conseillé de se tourner vers des bibliothèques de plus haut niveaux, afin d'alléger votre labeur. Il en existe heureusement beaucoup, mais bien évidemment rien de standard et dont l'énumération exhaustive est hors de la portée de cet ouvrage.


Qui plus est la gestion correcte, exhaustive et pertinente des erreurs est un point à ne pas sous-estimer. Un bon algorithme devrait idéalement traiter '''d'abord''' les cas normaux, '''puis''' les cas exceptionnels (typiquement les cas d'erreurs). Mélanger le code qui sera exécuté dans 10% des cas, dans le code qui sera exécuté dans 90% des cas, donne une impression confuse et difficile à appréhender de la structure du programme. Hélas, non seulement le C n'offre aucun moyen pour gérer efficacement ce problème (pas de mécanisme d'exception), mais les codes d'erreurs sont au mieux non-standard (différent d'une fonction à l'autre), au pire '''très''' pénible à exploiter. La structure de votre programme en sera forcément impactée, un des défis les plus difficiles à surmonter en C, sera de le garder lisible.
Qui plus est, un point particulièrement sensible en C est la gestion correcte, exhaustive et pertinente des erreurs. Il s'agit d'un point à ne pas sous-estimer : mélanger le code qui sera exécuté dans 10% des cas, dans celui qui le sera dans 90% des cas, donne une impression confuse et difficile à appréhender de la structure du programme. Hélas, non seulement le C n'offre aucun moyen pour gérer efficacement ce problème (pas de mécanisme d'exception), mais les codes d'erreurs sont au mieux non-standard (différent d'une fonction à l'autre), au pire '''très''' pénible à exploiter (variable <code>errno</code>). La structure de votre programme en sera forcément impactée, un des défis les plus difficiles à surmonter en C, sera de le garder lisible.

Version du 19 décembre 2004 à 05:22


La bibliothèque standard du langage C n'est pas ce qui se fait de mieux en la matière. Contrairement au C++, les fonctions proposées sont relativement pauvres, surtout en ce qui concerne la gestion des chaines de caractères. Comparé à un langage tout en un, comme Python, Ruby, C# ou Java, les fonctions qui vont suivre, peuvent paraitre archaïques, bien qu'issues d'une époque où l'optimisation primait grandement sur la simplicité d'utilisation.

Espérer concevoir une application d'envergure avec ces seules fonctions nécessite une extrême rigueur. Il est plus que conseillé de se tourner vers des bibliothèques de plus haut niveaux, afin d'alléger votre labeur. Il en existe heureusement beaucoup, mais bien évidemment rien de standard et dont l'énumération exhaustive est hors de la portée de cet ouvrage.

Qui plus est, un point particulièrement sensible en C est la gestion correcte, exhaustive et pertinente des erreurs. Il s'agit d'un point à ne pas sous-estimer : mélanger le code qui sera exécuté dans 10% des cas, dans celui qui le sera dans 90% des cas, donne une impression confuse et difficile à appréhender de la structure du programme. Hélas, non seulement le C n'offre aucun moyen pour gérer efficacement ce problème (pas de mécanisme d'exception), mais les codes d'erreurs sont au mieux non-standard (différent d'une fonction à l'autre), au pire très pénible à exploiter (variable errno). La structure de votre programme en sera forcément impactée, un des défis les plus difficiles à surmonter en C, sera de le garder lisible.