Pourquoi les programmeurs systèmes sont-ils trop attachés au C ?
Pourquoi les programmeurs systèmes sont-ils trop attachés au C ?
Que doit proposer un langage moderne pour les attirer ?
« Le bon vieux langage C », un terme souvent utilisé par l’un de mes amis pour qualifier ce langage système créé en 1970, qui malgré le rythme d’évolution de l’informatique et la sortie des langages modernes demeure le favori des programmeurs systèmes.
Pourquoi ceux-ci restent-ils autant attachés au C en dépit des avancées majeures qui ont permis la création de nouveaux langages riches et flexibles ces dernières décennies ?
Jonathan Shapiro, un chercheur du département des sciences informatiques de l’université Johns Hopkins, dans un article essaye de répondre à cette question en proposant des solutions pour un remplaçant du C.
Les langages de programmation récents comme ML ou Haskell fournissent des types nouveaux, plus forts et expressifs que ceux des langages systèmes comme C ou Ada. Constate Shapiro. Mais, ces langages sont ignorés par les développeurs systèmes.
Pour Shapiro, ce manque d’intérêt serait en quelque sorte dû au fait que les langages de programmation modernes ont été développés au prix d’un niveau prohibitif de l’abstraction.
Les programmeurs systèmes adopteront un nouveau langage si celui-ci leur offre une plus grande facilité dans la compréhension et la maintenance des programmes assez complexes qu’ils écrivent. Ce qu’ils attendent, c’est un langage qui préserve l’état, la gestion du stockage, la représentation et le contrôle de bas niveau. Explique Shapiro.
La solution que propose celui-ci est BitC. BitC n’est pas l’implémentation d’un nouveau langage de programmation. Il a pour objectif de fusionner les progrès de langages de programmation modernes en laissant de coté le polymorphisme et autres sémantiques mathématiques, avec les exigences de la programmation système, tout en fournissant des performances comparables à C.
BitC combine donc les concepts de programmation fonctionnelle de ML et Haskell avec la proximité de l’interaction matérielle des langages de bas niveau comme C.
Les concepts qui ont donné naissance à BitC sont-ils suffisants pour attirer le programmeur système ? Que doit fournir un langage moderne pour se positionner comme une véritable alternative à C ?
:fleche: le site de BitC
Source : Article de Jonathan Shapiro
Parce que le C est le langage par excellence
Bonjour,
La langage C est très proche de l'électronique sur lequel il fonctionne. La notion de pointeurs est facilement assimilable à la notion de bus d'adresses et la notion de variables à la notion de bus de données. Pour des raisons de performances, j'ai déjà optimisé l'assembleur d'un code C, je vous déconseille d'essayer de faire pareil avec du C#, enfin après que le MSIL se soit compilé sur votre plateforme bien sur ;)
Les types de bases répondent aux besoins de variables de taille différentes. Des types plus complexes sont superflus et diminuent les performances et prennent plus de place. On peux toujours créer des structures ou classes pour cela.
Pour revenir sur la notion de soi disante sécurité, il faut savoir que soit on fait de la sécurité, soit on fait de la performance. Et comme dirait Benjamin Franklin : "Ceux qui sont prêts à sacrifier une liberté essentielle pour acheter une sûreté passagère, ne méritent ni l’une ni l’autre." Par exemple, pourquoi interdire les pointeurs si leur incrémentation permet de réaliser des FFT plus rapide. Au programmeur de savoir ce qu'il fait. Sinon, c'est comme manger sans couteau par crainte du risque de se couper lol.
Pourquoi un autre langage, quel apport ? A mon avis, il faudrait que le support physique et les modes de fonctionnement changent pour éventuellement trouver un langage plus adapté.
Une large communauté, des librairies éprouvées, des millions de codes comme autant de preuves de son efficacité, sans conteste le langage C est le langage par excellence et ce n'est pas prêt de changer :ccool: