Caractéristiques de la programmation C qui la rendent unique (et meilleure)

Caractéristiques de la programmation C qui la rendent unique (et meilleure) / La programmation

Le langage de programmation C est la mère de tous les langages de programmation modernes. 10 langages de programmation que vous n’avez probablement jamais entendu parler. 10 langages de programmation que vous n’avez probablement jamais entendu parler de fidèle à la science de la communication avec un ordinateur. Vous allez… Lire la suite. Presque toutes les langues utilisées aujourd'hui incluent plusieurs fonctionnalités apparues pour la première fois dans la langue C. Il a été largement utilisé pour écrire des logiciels destinés aux plus petits micro-ordinateurs intégrés, aux plus grands ordinateurs centraux et aux superordinateurs..

Les applications écrites en C couvrent une grande variété de logiciels système, logiciels de bureau, logiciels d’entreprise, bases de données, etc. Vous feriez bien de commencer une carrière en programmation. 10 emplois de programmation informatique en demande actuellement 10 emplois de programmation informatique en cours Exigez la demande tout de suite, étant donné que l'attribution d'un travail de programmation peut être difficile dans le paysage actuel, envisagez de vous concentrer sur l'une des concentrations suivantes pour améliorer vos chances de réussite. Lire la suite avec une connaissance des bases de C.

Une brève histoire de C

Le développement du langage C est très étroitement associé à Unix. Il a été développé vers 1972, avec d’autres ajouts effectués au cours des années suivantes..

Avant que C ne soit développé, le système d'exploitation Unix avait été développé pour l'ordinateur PDP-7 à l'aide de son langage d'assemblage. Plus tard, un compilateur pour C a été construit sur cette plate-forme, utilisant à nouveau le langage assembleur. À cette époque, C était conçu pour faciliter le développement d’Unix lui-même. À l'aide de ce compilateur, Unix a été complètement réécrit en C pour l'ordinateur PDP-11. Et encore une fois, le compilateur en langage C a été réécrit en C (aidé, bien sûr, par l’excellent Lex et yacc outils), complétant ainsi le processus d’amorçage C / Unix.

La principale raison pour laquelle Unix a été réécrit en C était pour la portabilité. Depuis des langages d'assemblage pour différentes architectures de processeur. Petit guide sur le fantastique processeur Threadripper AMD Un bref guide sur le fantastique processeur Thread AMD AMD AMD était dans le désert depuis plusieurs années, mais est de retour avec une énorme explosion. Le Threadripper AMD est l’un des processeurs grand public le plus puissant du marché, mais est-il bon pour vous? Read More sont différents, le portage du système d'exploitation Unix sur chacun aurait constitué un effort considérable. En développant un langage des systèmes comme C, et en réécrivant le système d'exploitation Unix en C, cet effort a été réduit de plusieurs ordres de grandeur.

Une fois que le langage a été développé, il a été reconnu qu’il pouvait être utilisé pour écrire beaucoup plus que des logiciels système. Et ainsi, C a commencé à être utilisé pour écrire des logiciels tels que des serveurs de fichiers, des serveurs de bases de données, des piles de réseau, des logiciels de bureau et (plus tard) des serveurs Web. Comment transformer un appareil Android en serveur Web Comment transformer un appareil Android en Web Serveur Hébergez votre propre serveur Web simplement et à moindre coût avec un smartphone ou une tablette Android. Lire la suite, etc.

En 1978, Brian Kernighan et Dennis Ritchie ont publié le livre Le langage de programmation C. Ce livre a servi d'informel Spécification du langage C pendant de nombreuses années jusqu'en 1989, année où C fut officiellement normalisé par ANSI. La dernière version de C est C11, publiée en 2011..

Voyons maintenant quelques fonctionnalités de C qui le rendent unique.

C vs C ++: sont-ils liés?

Comme des logiciels plus complexes ont été développés en C, il a été reconnu que des concepts orientés objet, tels que l’encapsulation, le polymorphisme, etc., aideraient à gérer la complexité. Cela a conduit au développement de C ++ en tant que sur-ensemble de C.

C ++ a été construit en ajoutant certaines fonctionnalités pour écrire un logiciel orienté objet, tout en maintenant la compatibilité avec C. Il a été développé avec l’idée de amélioration progressive - apporter des modifications compatibles au langage C afin que les modules C et C ++ puissent être combinés dans le même programme et compilés avec le même compilateur. Cela a permis de réutiliser d'anciens modules basés sur C avec un minimum de modifications dans un programme plus volumineux écrit à l'aide de concepts orientés objet..

Un programme C peut, en théorie, être compilé par un compilateur C ++ sans aucune modification. Dans la pratique, toutefois, une vérification de type plus stricte appliquée par C ++ entraîne des erreurs, nécessitant certaines modifications du code..

Petit nombre de mots-clés

La langue C a été une petite langue malgré son pouvoir. En effet, il ne déclare que 32 mots en tant que mots clés ayant une signification spécifique. En revanche, C ++ déclare 82 mots-clés, Java a 50 mots-clés réservés et javascript 63. Et COBOL déclare 357 mots-clés. Imaginez le mal de tête de devoir se rappeler et éviter un si grand nombre de mots-clés!

Aucun type de chaîne explicite

Contrairement à la plupart des autres langages modernes. Pour créer une application Android, vous devez apprendre ces 7 langages de programmation. Pour créer une application Android, vous devez apprendre ces 7 langages de programmation. Quel langage de programmation convient le mieux pour créer des applications Android? Cela dépend de votre historique de programmation et des langues avec lesquelles vous vous sentez le plus à l'aise. Heureusement, vous avez des options. En savoir plus, comme Java, C ++ et JavaScript, C ne fournit pas de type distinct pour les chaînes. Une chaîne est considérée comme un tableau de caractères se terminant par un 0 caractère (noté “\ 0”). La longueur de la chaîne est désignée par une convention: le nombre de caractères jusqu’à la 0 caractère. Vous êtes libre de l'ignorer et de compter ou de stocker au-delà de la “\ 0”. Ce manque de type de chaîne et la convention ont abouti à de nombreux bugs au fil des ans, connus sous le nom de débordement de tampon.

En fait, le premier ver à avoir frappé Internet, le Morris Internet Worm, est le résultat d'un tel bogue dans un logiciel système crucial appelé le doigt démon.

Voici un exemple d'un tel bug. Cela illustre à quel point il est facile d’introduire de tels bogues dans un programme. Le programme compile bien, mais se bloque à cause du débordement de tampon.

# comprendre  main () char * buf = "bonjour le monde"; buf [12] = 'a'; printf ("% s \ n", buf);  

En revanche, la plupart des langages modernes fournissent un type de chaîne explicite qui rend de tels manigances impossibles. Même C ++, qui compile bien le code ci-dessus, fournit une explication std :: string type.

Manipulation de pointeur

Un pointeur est une référence à un emplacement de mémoire. C est complètement flexible pour lire et écrire des emplacements de mémoire arbitraires. Cette flexibilité a un coût considérable et a été à l’origine de nombreux bugs sur tout le spectre logiciel. Parmi les problèmes les plus notables affectant l’ensemble de l’Internet figurent de tels bogues dans les serveurs Web, les serveurs de messagerie et les serveurs ftp. Même aujourd'hui, il y a parfois des reportages sur des bugs causés par le référencement et la mise à jour d'emplacements de mémoire invalides.

L'infâme SSL HeartBleed Un bogue de sécurité découvert en 2014 résultait d'une mauvaise gestion des emplacements des pointeurs et illustrait l'importance cruciale d'une bonne gestion des pointeurs en C.

Même les BSOD occasionnels (“écran bleu de la mort”) les erreurs rencontrées sur les systèmes Windows sont probablement également dues à une gestion incorrecte du pointeur.

Les langages autres que C ++ n'autorisent pas la manipulation de pointeur et ne sont donc pas vulnérables à cette classe de bogues..

Les tableaux et les pointeurs sont interchangeables

En C, les références et les pointeurs sont interchangeables. Le langage autorise l'utilisation d'une référence de tableau. Procédure d'utilisation d'une liste de tableaux Java. Procédure d'utilisation d'une liste de tableaux Java. Une liste de colonnes Java est un tableau redimensionnable à usage général. Il fournit la plupart des fonctionnalités généralement attendues des tableaux dans d'autres langues. Dans cet article, vous apprendrez à configurer et utiliser un dictionnaire. Lisez Plus lorsqu'un pointeur est requis, et inversement. Bien que cela permette de puissantes manipulations, il en est résulté de nombreux bogues infâmes..

Large utilisation de “définir” Les macros

Les macros sont utilisées pour substituer un nom à un développement différent. Ils peuvent être utilisés pour modifier la définition d'un nom au moment de la compilation ou pour remplacer un nom simple par une extension plus longue. Le système macro C prend en charge ifdef conditionnels qui permettent la compilation conditionnelle. C’est un moyen par lequel un logiciel est porté sur différentes architectures et systèmes d’exploitation. Les noms génériques sont définis et substitués à la compilation avec des extensions différentes pour des conditions différentes.

Il est également possible d'inclure ou d'éliminer des sections entières de code de la compilation à l'aide de ces macros Vous avez un clavier Razer? Enregistrer des macros est-il facile avec Synapse Vous avez un clavier Razer? L'enregistrement de macros est facile avec Synapse Si vous utilisez des périphériques Razer sans tirer parti du logiciel Synapse, vous manquez. Voici comment utiliser efficacement les macros et comment elles peuvent dynamiser votre jeu. Lire la suite .

Ils sont obsolètes mais disponibles en C ++. D'autres langages tels que Java, JavaScript, python, etc. n'offrent pas une installation similaire.

Modules encapsulés dans des fichiers

C n’a pas le concept de classe et n’appuie donc pas la notion de visibilité séparée publique, privée et protégée. La seule encapsulation fournie par C est celle des fichiers. Les fonctions, les variables globales et les types définis dans un fichier source ne sont visibles dans ce fichier que si les noms sont exportés. Les mots-clés statique et externe sont fournis dans le but de contrôler la visibilité des noms de variable et de fonction.

En revanche, d’autres langages tels que C ++, Java et Python supportent généralement les classes, ainsi que l’encapsulation associée aux classes..

Bibliothèques externes

Outre les constructions de langage de base, des fonctionnalités plus complexes en C sont déléguées à des bibliothèques externes. La manipulation des chaînes, les mathématiques, les entrées-sorties, les réseaux, etc. sont tous fournis par des bibliothèques externes. En revanche, les autres langues sont généralement accompagnées d'une bibliothèque de modules bien fournie, avec le langage lui-même..

Et cela couvre certaines caractéristiques de base du langage C, en particulier celles qui le distinguent des autres langages.

Avez-vous travaillé avec C? Cela vous a plu ou auriez-vous préféré travailler avec une autre langue? S'il vous plaît expliquer dans les commentaires ci-dessous.

En savoir plus sur: Programmation.