jeudi, 25 avril 2024

Pourquoi le langage de programmation C règne toujours

Crédit : Dreamstime

Le langage des programmes C est bien vivant depuis 1972, et il règne toujours comme l’un des fondements essentiels de notre monde parsemé de logiciels.

Mais qu’en est-il des nombreux nouveaux langages qui ont émergé au cours des deux dernières années ? Certains ont clairement été développés pour contester la suprématie de C, tandis que d’autres l’éliminent en tant que sous-produit de leur propre attrait.

Il est difficile de battre C pour l’efficacité, la compatibilité bare-metal et l’ubiquité. Néanmoins, cela vaut la peine de voir comment il se compare à certains des grands concurrents linguistiques.

C contre C

C est souvent comparé à C, le langage qui, comme son nom l’indique, a été produit comme une extension de C. Les différences entre C et C pourraient être caractérisé comme étendu, ou extrême, selon à qui vous demandez.

Tout en restant similaire au C dans sa syntaxe et son approche, le C fournit de nombreuses fonctionnalités vraiment utiles qui ne sont pas disponibles nativement en C : espaces de noms, templates, exceptions, gestion automatisée de la mémoire, etc. Les tâches qui nécessitent des performances de haut niveau, comme les bases de données et les systèmes d’intelligence artificielle, sont souvent écrites en C, en utilisant ces fonctionnalités pour extraire chaque goutte de performance du système.

Même plus, C continue à développer beaucoup plus agressivement que C. Le futur C 23 apporte beaucoup plus à la table consistant en des modules, des coroutines et une bibliothèque standard modularisée pour une collecte plus rapide et un code plus réussi. En revanche, la prochaine variante préparée du C basic, C2x, inclut peu et se concentre sur le maintien de la rétrocompatibilité.

L’important est que tous les avantages du C peuvent également fonctionner comme des inconvénients. Des énormes. Plus vous utilisez de fonctionnalités C, plus vous présentez de complexité et plus il devient difficile d’apprivoiser les résultats. Les concepteurs qui se limitent à un sous-ensemble de C peuvent éviter un certain nombre de ses pires erreurs.

Certains magasins souhaitent se protéger contre cette complexité. L’équipe de développement du noyau Linux, par exemple, évite le C, et bien qu’elle considère désormais Rust comme un langage pour les futurs ajouts au noyau, la majeure partie de Linux sera toujours composée en C.

Choisir le C plutôt que le C est une méthode pour les concepteurs et ceux qui maintiennent leur code pour accueillir le minimalisme imposé et éviter de s’emmêler avec les excès de C. Bien sûr, C a un ensemble abondant de fonctions de haut niveau pour une bonne raison. Mais si le minimalisme convient mieux aux tâches actuelles et futures – et aux groupes de travail-, alors le C a plus de sens.

C contre Java

Après des décennies, Java reste un élément essentiel de l’évolution des logiciels d’entreprise – et un élément essentiel de l’évolution en général. La syntaxe Java tire beaucoup de C et de C. Contrairement à C, cependant, Java n’est pas assemblé par défaut au code natif. Au lieu de cela, le compilateur JIT (juste à temps) de Java compile le code Java à exécuter dans l’environnement cible.

Le moteur JIT optimise les routines au moment de l’exécution en fonction du comportement du programme, permettant de nombreuses classes d’optimisation qui ne sont pas n’est pas possible avec du C assemblé à l’avance. Dans les bons scénarios, le code Java compilé JIT peut approcher ou même dépasser l’efficacité du C.

Et, tandis que le runtime Java automatise la gestion de la mémoire, il est possible pour contourner cela. Apache Glow optimise en partie le traitement en mémoire en utilisant des parties « dangereuses » du runtime Java pour attribuer et gérer directement la mémoire et éviter la surcharge du système de récupération de place de la JVM.

Le « composer une fois, exécuter n’importe où  » L’approche permet également aux programmes Java de maintenir assez peu de modifications pour une architecture cible. En revanche, bien que C ait été porté sur de nombreuses architectures fantastiques, tout programme C donné peut encore nécessiter une personnalisation pour fonctionner correctement sur, état, Windows par rapport à Linux.

Ce mélange de mobilité et de performances élevées, ainsi que avec une énorme communauté de bibliothèques de logiciels et de frameworks, fait de Java un langage et un environnement d’exécution incontournables pour le développement d’applications professionnelles. Là où il déçoit, le C est un domaine où le langage n’a jamais été impliqué : courir près du métal ou travailler directement avec le matériel.

Le code C est assemblé en code fabricant, qui est exécuté par le processus droit. Java est assemblé en bytecode, qui est un code intermédiaire que l’interpréteur JVM transforme ensuite en code de fabricant.

De plus, bien que la gestion automatique de la mémoire de Java soit une vraie bénédiction dans la majorité des situations, le C est bien mieux adapté aux programmes qui doivent faire un usage idéal des ressources mémoire restreintes, du fait que de sa petite taille empreinte préliminaire.

C contre C# et .NET

Près de vingt ans après leur introduction, C# et .NET restent des éléments importants du monde des logiciels d’entreprise . Il a en fait été déclaré que C # et .NET étaient l’action de Microsoft sur Java – un système de compilateur de code géré et un environnement d’exécution universel – et de nombreuses comparaisons entre C et Java sont également valables pour C et C #/. NET.

Comme Java (et dans une certaine mesure Python),. Web utilise la portabilité à travers une gamme de plates-formes et une vaste communauté d’applications logicielles intégrées. Ce ne sont pas de petits avantages étant donné la quantité de développement orienté entreprise qui se produit dans le monde .NET.

Lorsque vous développez un programme en C#, ou tout autre langage .NET, vous avez la possibilité de puiser dans un univers d’outils et de bibliothèques composé pour le runtime .NET.

Un autre Comme Java. L’avantage Web est l’optimisation JIT. Les programmes C# et .NET peuvent être assemblés à l’avance selon C, mais ils sont généralement assemblés juste-à-temps par le runtime .NET et optimisés avec les informations d’exécution. La compilation JIT permet toutes sortes d’optimisations sur place pour un programme .NET en cours d’exécution qui ne peuvent pas être effectuées en C.

Comme C (et Java, dans une certaine mesure), C# et .NET fournissent de nombreuses mécanismes d’accès direct à la mémoire. La pile, la pile et la mémoire système non gérée sont toutes accessibles via les API et les éléments .NET. Et les développeurs peuvent utiliser le mode dangereux dans.NET pour atteindre des performances encore plus élevées.

Cependant, rien de tout cela n’est gratuit. Les éléments gérés et les éléments non sécurisés ne peuvent pas être échangés arbitrairement, et le regroupement entre eux entraîne une dépense d’efficacité. Maximiser les performances des applications .NET signifie maintenir au minimum le mouvement entre les éléments gérés et non gérés.

Lorsque vous ne pouvez pas vous permettre de payer la pénalité pour la mémoire gérée par rapport à la mémoire non gérée, ou lorsque le runtime .NET est un mauvaise option pour l’environnement cible (par exemple, la zone du noyau) ou peut ne pas être disponible du tout, alors C est ce dont vous avez besoin. Et contrairement à C# et.NET, C déverrouille l’accès direct à la mémoire par défaut.

C contre Go

La syntaxe Go doit beaucoup à C– les accolades comme délimiteurs et les déclarations terminées par des points-virgules ne sont que 2 exemples. Les développeurs compétents en C peuvent normalement se lancer directement dans Go sans trop de problèmes, même en tenant compte des nouvelles fonctions Go comme les espaces de noms et la gestion des packages.

Le code lisible faisait partie des objectifs de conception directeurs de Go : Faciliter la prise en main des développeurs accélérez avec n’importe quel travail Go et devenez compétent avec la base de code en peu de temps.

Les bases de code C peuvent être difficiles à comprendre, car elles sont susceptibles de devenir un nid de rats de macros et de #ifdef propres à la fois à un travail et à un groupe fourni. La syntaxe de Go, ainsi que son format de code intégré et ses outils de gestion des tâches, sont indiqués pour éviter ce type de problèmes institutionnels.

Go propose également des bonus comme les goroutines et les canaux , des outils au niveau du langage pour gérer la simultanéité et la transmission de messages entre les parties. C exigerait que de telles choses soient roulées à la main ou fournies par une bibliothèque externe, mais Go les fournit prêtes à l’emploi, ce qui facilite beaucoup la construction d’applications logicielles qui en ont besoin.

Où Go diffère le plus de C sous le capot est dans la gestion de la mémoire. Les objets Go sont automatiquement gérés et ramassés par défaut. Pour la majorité des tâches des programmes, c’est très pratique. Cependant, cela implique également que tout programme nécessitant une gestion déterministe de la mémoire sera plus difficile à écrire.

Go se compose du package risky pour empêcher certains types de Go de gérer sécurités, telles que la lecture et l’écriture de mémoire arbitraire avec un type Pointeur. unsafe est accompagné d’un avertissement indiquant que les programmes écrits avec lui « peuvent être non portables et ne sont pas protégés par les normes de compatibilité Go 1 ».

Go est bien adapté au développement de programmes comme les utilitaires de ligne de commande et les services réseau, car ils n’ont presque jamais besoin de manipulations aussi fines. Cependant, les pilotes de gadgets de bas niveau, les éléments du système d’exploitation de l’espace noyau et d’autres tâches qui exigent un contrôle rigoureux sur la conception et la gestion de la mémoire sont mieux créés en C.

C contre Rust

À certains égards, Rust est une réponse aux dilemmes de gestion de la mémoire produits par C et C, ainsi qu’à de nombreuses autres lacunes de ces langages. Rust se compile en code de périphérique natif, il est donc considéré comme comparable à C en termes de performances. La sécurité de la mémoire par défaut est cependant le principal argument de vente de Rust.

La syntaxe et les règles de collecte de Rust aident les concepteurs à éviter les erreurs courantes de gestion de la mémoire. Si un programme a un problème de gestion de la mémoire qui traverse la syntaxe Rust, il ne compilera tout simplement pas.

Les débutants dans le langage – en particulier issus d’un langage comme C, qui fournit beaucoup d’espace pour de tels bogues – investissent la toute première phase de leur éducation Rust pour découvrir comment apaiser le compilateur. Les défenseurs de Rust affirment que cet inconfort à court terme a un avantage durable : un code plus sûr qui ne compromet pas la vitesse.

L’outillage de Rust améliore également C. La gestion des travaux et des pièces fait partie de la chaîne d’outils fournie avec Rust par défaut, qui est exactement la même que Go. Il existe une méthode recommandée par défaut pour gérer les bundles, organiser les dossiers de tâches et gérer un grand nombre d’autres choses qui, en C, sont au mieux ad hoc, chaque projet et chaque équipe les gérant différemment.

Pourtant, ce qui est présenté comme un avantage dans Rust peut ne pas en ressembler à un développeur C. Les fonctions de sécurité au moment de la compilation de Rust ne peuvent pas être désactivées, donc même le programme Rust le plus mineur doit se conformer aux restrictions de sécurité de la mémoire de Rust. Le C est peut-être moins sûr par défaut, mais il est beaucoup plus polyvalent et indulgent en cas de besoin.

Un autre inconvénient possible est la taille du langage Rust. C a assez peu de fonctions, même en considérant la bibliothèque de base. L’ensemble de fonctions Rust s’étire et continue de croître.

Comme avec C, le plus grand ensemble de fonctionnalités signifie plus de puissance, mais aussi plus de complexité. C est un langage de plus petite taille, mais beaucoup plus facile à modéliser psychologiquement, donc peut-être mieux adapté aux tâches où Rust serait trop.

C contre Python

De nos jours, chaque fois que l’on parle d’avancement logiciel, Python semble toujours entrer dans la discussion. Après tout, Python est « le deuxième meilleur langage pour tout », et incontestablement l’un des plus flexibles, avec d’innombrables bibliothèques tierces disponibles.

Ce que Python met en avant, et là où il diffère le plus du C, c’est privilégiant la rapidité d’avancement à la rapidité d’exécution. Un programme dont la création peut prendre une heure dans un autre langage, comme le C, peut être assemblé en Python en quelques minutes.

D’un autre côté, ce programme peut prendre quelques secondes pour s’exécuter en C, mais une minute pour s’exécuter en Python. (En tant qu’excellente ligne directrice, les programmes Python s’exécutent généralement un ordre de grandeur plus lent que leurs équivalents C.) Pour de nombreuses tâches sur du matériel moderne, Python est assez rapide, ce qui a en fait été crucial pour son adoption.

Une autre distinction majeure est la gestion de la mémoire. Les programmes Python sont entièrement gérés en mémoire par l’environnement d’exécution Python, de sorte que les concepteurs n’ont pas à se soucier des principes fondamentaux d’allocation et de libération de mémoire.

Mais ici encore, la facilité du développeur se fait au détriment de l’efficacité de l’exécution. La composition de programmes C nécessite une attention scrupuleuse à la gestion de la mémoire, mais les programmes résultants sont généralement l’exigence absolue pour la vitesse pure de la machine.

Sous la peau, cependant, Python et C partagent une connexion profonde : le runtime Python de référence est composé en C. Cela permet aux programmes Python d’encapsuler des bibliothèques composées en C et C. De nombreux éléments de la communauté Python de bibliothèques tierces, comme pour l’intelligence artificielle, ont du code C à leur cœur.

Dans dans de nombreux cas, ce n’est pas un problème de C par rapport à Python, mais plutôt de savoir quelles parties de votre application doivent être composées en C et lesquelles en Python.

Si la vitesse de développement est plus importante que la vitesse d’exécution, et si la plupart des parties performantes du programme peuvent être isolées dans des éléments autonomes (au lieu d’être réparties dans tout le code), Python pur ou un mélange de bibliothèques Python et C font un meilleur choix que C seul . Sinon, le C règne toujours.

C contre Carbon

Un autre concurrent possible récent pour C et C est Carbon, un nouveau langage qui est actuellement sous développement lourd.

L’objectif de Carbon est d’être une alternative moderne au C et C, avec une syntaxe simple, des outils contemporains et des stratégies d’organisation du code, et des services aux problèmes auxquels les programmeurs C et C sont confrontés depuis longtemps . Il est également implicite de fournir une interopérabilité avec les bases de code C, afin que le code existant puisse être migré de manière incrémentielle.

Tout cela est un effort bienvenu, car C et C ont traditionnellement eu des outils et des processus primitifs par rapport à des langages plus récemment développés .

Quel est l’inconvénient ? Maintenant, Carbon est un projet spéculatif, pas prêt à distance pour une utilisation en production. Il n’y a même pas de compilateur fonctionnel ; simplement un explorateur de code en ligne. Il faudra un certain temps avant que Carbon ne devienne une option utile pour C ou C, si jamais c’est le cas.

.

Toute l’actualité en temps réel, est sur L’Entrepreneur

LAISSER UN COMMENTAIRE

S'il vous plaît entrez votre commentaire!
S'il vous plaît entrez votre nom ici

xnxx sex download russianporntrends.com hardxxxpics saboten campus freehentai4u.com read manga porn rakhi sex photo ganstagirls.com nani sex video xxx indian girl video download elporno.mobi tamilauntycom bf hd video bf hd video porn555.me anyporn hd tamil beach sex erolenta.com xxx sex boy to boy bustyboobs pakistanixxxx.com nude sexy videos desi sex xvideos.com tubaka.mobi justdesi in free naked dance vegasmpegs.mobi eva grover desi ass lick eroanal.net 69 xvideo 4k xnxx thefuckingtube.com xxii roman numerals translation tamil nayanthara sex sexozavr.com indian porn videos tumblr كلبات سكس porn-arab.net نيك ف الكس y3df comics popsexy.net akhil wife hentai ahri wowhentai.net the sarashina bloodline