Dennis Ritchie, un père d’UNIX, nous a quittés

Posté par  . Modéré par Benoît Sibaud. Licence CC By‑SA.
149
13
oct.
2011
C et C++

Dennis MacAlistair Ritchie, le créateur du langage C et d’UNIX, est décédé.
Dennis Ritchie est connu comme étant le créateur du langage C, un développeur clef du système d’exploitation UNIX, et le coauteur du célèbre livre référence du langage C, The C Programming Language, communément appelé K/R ou K&R (en référence à ses deux auteurs : Kernighan et Ritchie).

Son invention du langage C et sa participation au développement d’UNIX, au côté de Ken Thompson, ont fait de lui un pionnier de l’informatique moderne. Le langage C reste au début du XXIe siècle, un des langages les plus utilisés, tant dans le développement d’applications que de systèmes d’exploitation. UNIX a aussi eu une grande influence en établissant des concepts qui sont désormais totalement incorporés dans l’informatique moderne.

Il déclara que le langage C « semblait être une bonne chose à faire » et que n’importe qui à sa place aurait fait la même chose ; bien que son collègue des laboratoires Bell, [Bjarne Stroustrup], créateur du C++, répondit que « si Dennis avait décidé de consacrer cette décennie à des mathématiques ésotériques, UNIX aurait été mort‐né. »

Suite au succès d’UNIX, Dennis continua ses recherches dans les systèmes d’exploitation et les langages de programmation, dont notamment les systèmes d’exploitation Plan 9 et Inferno, et le langage de programmation Limbo.

Il est corécipiendaire avec Ken Thompson de l’édition 2011 du Prix japonais et du Prix Turing de 1983.

Source de la biographie : Wikipédia

Nouveautés du langage C dans sa prochaine version C23

118
16
jan.
2023
C et C++

Le C est un langage de programmation développé depuis 1972 par Kenneth Thompson, Brian Kernighan et Dennis Ritchie. Il est, au départ, étroitement lié au développement du système UNIX, mais il a par la suite trouvé de nombreuses autres utilisations.

Il a influencé le développement de plusieurs autres langages dont C++, Objective-C, Java, D et C#.

La version C23, qui sera vraisemblablement finalisée en 2023, apporte son lot de nouveautés.

Après un bref historique de la normalisation du langage, cet article parcourt les principaux changements présents dans cette nouvelle version.

Les coulisses du standard C++

Posté par  (site web personnel) . Édité par Davy Defaud, Benoît Sibaud, ZeroHeure, bubar🦥, M5oul et Anthony Jaguenaud. Modéré par Pierre Jarillon. Licence CC By‑SA.
99
20
août
2016
C et C++

Le C++ a bientôt la quarantaine et pourtant très actif en ce moment avec la finalisation de la prochaine version C++17. Profitons‐en pour faire le point avec une série d’articles sur le C++. Cette première dépêche nous dévoile la face cachée du C++, et donc peut intéresser tous les lecteurs LinuxFr.org. :-)

Évolution du langage C++

Sortie de Qt 5.0

88
22
déc.
2012
C et C++

Qt 5.0 est sorti. C'est une évolution majeure de l'une des bibliothèques C++ les plus utilisées et certainement celle qui couvre le plus de besoins.

Bien qu'étant une version majeure, elle ne casse pas aussi violemment la compatibilité que lors du passage de Qt3 à Qt4. La liste des améliorations et les changements en profondeur dans l'organisation de Qt5 rendent néanmoins pertinent ce changement de version.

Le projet libre le plus emblématique exploitant la puissance de Qt est KDE, mais bien d'autres applications l'utilisent, qu'elles soient libres (VLC, Scribus, Avidemux, etc.) ou propriétaires (Google Earth, Opera, la Freebox V6, Skype, etc.).
Qt Logo

Merci à tous les contributeurs de cette dépêche : Nÿco, reno, Eric Bénard, ZeroHeure, Florent Zara, Philippe Fremy, olivierweb, detail_pratique, Raoul Volfoni, Laurent Pointal, Gof, baud123, ecyrbe, liberforce, Emmanuel C, Yves Bourguignon, tankey, Xavier Claude, Jean Gabes, Alexandre P, Arcaik, jeberger, Olivier, El Titi, Trollgouin, Benoît, RbN et jay.

Le rendu 3D, rétrospective

Posté par  (site web personnel) . Édité par Benoît Sibaud et Julien Jorge. Modéré par Pierre Jarillon. Licence CC By‑SA.
Étiquettes :
86
21
nov.
2022
C et C++

Le 13 novembre 2022 est sorti Vulkan Scene Graph 1.0.0 (VSG). C'est la première version stable de cette bibliothèque en C++ qui fournit un graphe de scène basé sur l'API graphique Vulkan. Son concepteur, Robert Osfield, avait créé et maintenu OpenSceneGraph (OSG), basé sur OpenGL. Vulkan étant devenu la référence, il était temps de mettre à jour OSG en utilisant les toutes dernières fonctionnalités du C++. Comme c'est un sujet touffu, je vous propose dans cette première dépêche de revenir sur l'histoire des graphismes 3D. Dans une deuxième dépêche, nous verrons ce qu'est un graphe de scènes, et dans une troisième, nous nous pencherons plus spécifiquement sur OpenSceneGraph et VulkanSceneGraph.

Le standard C++0x a enfin été voté

Posté par  . Modéré par Lucas Bonnet. Licence CC By‑SA.
Étiquettes :
76
18
août
2011
C et C++

Le nouveau standard du langage C++ a été voté ce vendredi 12 août. Initialement prévu pour 2008 ou 2009, il a pris du retard, notamment à cause de problèmes avec certaines fonctionnalités. Malgré cette date, beaucoup l'appellent quand même C++0x et il suffit de le nommer C++0xB pour que le nom soit conservé. La publication officielle ne devrait cependant pas arriver avant quelques mois.

Heureusement pour les utilisateurs, ces fonctionnalités ont déjà commencé à être implémentées dans les différents compilateurs et bibliothèques standard. Ceci devrait permettre de ne pas attendre trop longtemps avant de pouvoir profiter de ces nouveautés, voire d'en profiter dès à présent pour certaines. Par exemple, sous GCC, il faut passer l'option -std=c++0x au compilateur pour utiliser des évolutions qui sont déjà implémentées.

Une sélection des principales nouveautés est présentée en seconde partie de dépêche.

Merci à moules< pour son aide lors de la rédaction de cette dépêche.

E.T. téléphone Meson

Posté par  . Édité par Julien Jorge, Davy Defaud, bubar🦥, Benoît Sibaud, ZeroHeure et Bruno Michel. Modéré par Pierre Jarillon. Licence CC By‑SA.
Étiquettes :
75
7
oct.
2018
C et C++

Meson est une technologie récente de la catégorie des systèmes de configuration et de gestion de la compilation de projets, à l’instar d’Autotools et de CMake. Nous proposons dans cette dépêche un tour de Meson, avec une explication des technologies en jeu, puis des comparaisons et quelques tests de rapidité et performance. En aucun cas nous ne tomberons dans le cassage des autres technologies et nous essaierons de comparer de manière la plus neutre possible.

Meson a été initié par Jussi Pakkanen en 2013. Frustré par Autotools, insatisfait par CMake, il a décidé de s’attaquer au problème et défini les buts à atteindre. Meson est le fruit de son travail, aidé de la communauté de contributeurs qui s’est formée.

Bien entendu, nous ne sommes pas omniscients et attendons des commentaires pertinents des lecteurs de LinuxFr.org pour corriger toute erreur, dans la joie et la bonne humeur.

Sortie de uchardet 0.0.8 pour la détection de codages de caractères

Posté par  (site web personnel, Mastodon) . Édité par Julien Jorge et Benoît Sibaud. Modéré par Benoît Sibaud. Licence CC By‑SA.
63
21
déc.
2022
C et C++

uchardet est une bibliothèque C/C++ de détection de codage de caractère (par exemple UTF-8 ou ISO-8859-15 sont ce qu’on appelle des « codages de caractères » ou « jeux de caractères ») basée sur des caractéristiques statistiques des langages naturels et membre du projet Freedesktop. Elle peut détecter quelques dizaines de codages de caractères.

Le projet fournit également un outil en ligne de commande pour tester très simplement le codage de vos fichiers ou de flux de texte.

uchardet version 0.0.8 est sortie ce 8 décembre 2022.

Sortie de TinyCC 0.9.26

Posté par  (site web personnel) . Édité par claudex et Florent Zara. Modéré par Florent Zara. Licence CC By‑SA.
61
18
mar.
2013
C et C++

TinyCC est un compilateur C léger et rapide qui, en plus de ces qualités, a deux particularités originales :

  1. il permet de compiler et d'exécuter du code à la volée (option -run) ;
  2. en plus de l'exécutable, il est disponible sous forme de bibliothèque (libtcc) afin d'être embarqué dans d'autres programmes.

TinyCC a été écrit à l'origine par Fabrice Bellard, qui ne participe aujourd'hui plus à son développement. Les nouveaux développements sont assurés par une communauté de développeurs organisés autour d'une liste de diffusion et d'un dépôt Git dont l'une des branches est ouverte aux publications externes. Le vendredi 15 février 2013, l'un de ces développeurs, Thomas Preud'homme a annoncé la sortie d'une nouvelle version du compilateur, estampillée 0.9.26. Nous avons posé quelques questions à Thomas, dont les réponses figurent en deuxième partie de dépêche après l'exposé des nouveautés de cette version.

C++17, Genèse d’une version mineure

Posté par  (site web personnel) . Édité par Benoît Sibaud, Davy Defaud, cracky, palm123, Lucas, Adrien Dorsaz, M5oul, ZeroHeure, Storm, RyDroid et Martin Peres. Modéré par bubar🦥. Licence CC By‑SA.
Étiquettes :
61
2
oct.
2016
C et C++

La série de dépêches C++ continue. Cette seconde dépêche nous amène dans les réunions du comité de standardisation en vue de publier la prochaine version C++17 et nous permettra de vérifier ce titre provocateur (comment ça mineure ?). Cette dépêche peut intéresser tous les lecteurs de LinuxFr.org, pas seulement les développeurs. Les prochaines dépêches seront plus techniques.

Deux collègues discutent : « C++ est enfin sorti », « Trop top », « Va falloir se palucher les 1700 pages du nouveau standard », « Gloups ». Une note repositionnable sur le dessin indique : « Il y en a qui ne connaissent pas encore LinuxFr.org »

Encore un exemple de code spaghetti : Toyota

Posté par  (site web personnel) . Édité par ZeroHeure, palm123, Benoît Sibaud, Nicolas Casanova et BAud. Modéré par tuiu pol. Licence CC By‑SA.
Étiquettes :
59
6
mar.
2014
C et C++

Après plusieurs journaux récents concernant des histoires de mauvaises pratiques de code dans des logiciels de sécurité (goto fail pour Apple et goto cleanup pour GnuTLS, divers patchs monolignes erronés), nous avons maintenant une histoire où de mauvaises pratiques de code dans de l'embarqué ont entraîné un accident grave.

Toyota a mis en vente en 2005 sur le marché son modèle Camry, dont le moteur est contrôlé par de l'électronique et du logiciel. Par exemple la pression sur la pédale de frein est détectée par un capteur que le système doit analyser pour commander le freinage.

Un jour lors d'un freinage périlleux le freinage électronique a échoué à freiner efficacement, entraînant un accident qui a coûté la vie à la conductrice et blessé gravement son amie.

Dans un procès fait à Toyota, deux experts en embarqué ont donné leur avis sur le code source que Toyota avait utilisé dans sa voiture. C'était du code très sale, comme vous pouvez le voir dans la suite de cette dépêche.

NdM : merci à Zarmakuizz pour son journal.

Outils utiles pour développeur

59
3
mar.
2017
C et C++

Le but de cette dépêche est de recenser quelques outils utiles pour les développeurs (pas uniquement C et C++) et de donner accès à des ressources intéressantes pour leur prise en main.

Tout d’abord comment définit‐on un « outil utile » ? Ce sont des logiciels (libres, c’est mieux) qu’il n’est pas obligatoire d’utiliser mais qui permettent de gagner en productivité (ou de moins se prendre la tête avec un bogue). Ces outils sont utilisables indépendamment, mais utilisés ensemble peuvent former un tout qui donne les fonctionnalités d’un environnement de développement intégré.

Il est fort probable que pour certains cette dépêche vienne enfoncer des portes ouvertes. Mais pensez aux nouveaux pour qui elle sera, peut‐être, profitable.

C11 n'est pas encore mort

Posté par  . Édité par Bruno Michel, Benoît Sibaud, baud123, Nÿco et claudex. Modéré par Nÿco.
59
26
déc.
2011
C et C++

La dernière norme du langage C a été publiée le 8 décembre 2011, la pré-version finale étant accepté le 10 octobre, peu avant le décès du regretté Dennis Ritchie à l'origine du langage.

C11 intègre principalement la gestion du multithreading et rend optionnelles certaines fonctionnalités afin de faciliter la conformité des compilateurs vis-à-vis de la norme. La précédente norme C99 a eu beaucoup de mal à s'imposer auprès de certains éditeurs, certains refusant même de l'implémenter (notamment un vendeur d'environnement Basic, situé à Redmond).

Faut‐il continuer à apprendre le C++ ?

58
27
juil.
2018
C et C++

Le C++ est un langage qui a vu ses spécifications s’amonceler et se stratifier au cours des années. Il est encore très utilisé. Mais face à des concurrents comme Rust ou Go, quelle est sa place dans un environnement qui évolue ?

Cette dépêche qui a nécessité beaucoup de discussions, aura, vous le verrez, une forme un peu particulière.

C++17 fixe l’ordre d’évaluation des expressions

Posté par  . Édité par Oliver, Davy Defaud, Benoît Sibaud et palm123. Modéré par claudex. Licence CC By‑SA.
Étiquettes :
56
1
déc.
2016
C et C++

Le C++ est un langage bien présent et depuis longtemps dans les logiciels libres (environnements de bureau, outils bureautiques, navigateurs Web…). L’an 2017 approche à grands pas avec la promesse d’un tout nouveau C++17.

Pour finir l’année, voici le calendrier de l’Avent du C++ avec des dépêches pédagogiques sur ce qui nous attend en 2017. Après deux dépêches de mise‐en‐bouche, nous entrons enfin dans le vif du sujet avec deux spécifications techniques concernant l’ordre d’évaluation des expressions. Allez, c’est parti !   ᕕ(ᐛ)ᕗ

Bjarne propose de changer le C++ pour corriger son livre qu'il tient dans ses mains

Moi, expert C++, j’abandonne le C++

Posté par  (site web personnel) . Édité par Ysabeau 🧶 🧦, Davy Defaud, ZeroHeure, palm123, Pierre Jarillon, Nicolas Casanova et Benoît Sibaud. Modéré par ZeroHeure. Licence CC By‑SA.
Étiquettes :
54
6
juin
2019
C et C++

Ma carrière professionnelle de développeur C a débuté en 1994 et j’ai naturellement adopté avec enthousiasme le C++ en 1999. J’étais un développeur C++ heureux et j’avais considéré la nouvelle version du standard C++11 juste comme une évolution tant attendue. En 2015, je réalise enfin à quel point, il a révolutionné l’écosystème C++ et ses bouleversements dans l’état d’esprit de la communauté. Je me passionne alors pour C++11, C++14, puis C++17, je m’implique beaucoup, je deviens un référent pour mes collègues, je donne des conférences sur ce langage, j’organise des meet‐ups à Paris, je publie de nombreux articles C++ sur LinuxFr.org

En 2018, une expérience change radicalement ma façon d’appréhender le développement logiciel.

Libération de navitia : un calculateur d’itinéraire pour les transports en communs

Posté par  . Édité par Florent Zara, palm123 et Benoît Sibaud. Modéré par ZeroHeure. Licence CC By‑SA.
52
30
avr.
2014
C et C++

La société Canal TP a ouvert sous licence Affero-GPL son produit phare : le calculateur d’itinéraires pour transports en commun Navitia. Il s’agit d’un serveur qui expose une API REST afin d’être intégrée dans divers services (site web, application mobile, client CLI…). Les sources de données acceptées sont le format GTFS souvent utilisé pour diffuser des horaires en OpenData et OpenStreetMap pour les itinéraires piétons.

Le cœur est en C++11 avec une interface en Python pour gérer l’API REST.

En plus de la fonction centrale de calcul des itinéraires, voici certaines autres fonctionnalités :

  • approche à pied, vélo, vélo libre service
  • prochains départs, arrivées (pour l’instant théorique, le temps réel est encore en développement)
  • « isochrones » (terme approximatif qui revient à calculer le temps pour atteindre tous les arrêts depuis un point)
  • service « à proximité »
  • explorer le référentiel de données (par exemple l’ensemble des lignes passant par tel arrêt)

Profileurs mémoire MALT et NUMAPROF

Posté par  (site web personnel) . Édité par Pierre Jarillon, Davy Defaud, palm123 et claudex. Modéré par Pierre Jarillon. Licence CC By‑SA.
Étiquettes :
48
2
sept.
2018
C et C++

Outils de profilage

En calcul à haute performance — HPC (High Performance Computing) —, les problèmes liés à la mémoire deviennent de plus en plus critiques, qu’il s’agisse du contrôle de la consommation mémoire des applications, de la limitation des interactions avec le système d’exploitation (trop nombreuses allocations, trop petites allocations…) et de choix de placement (NUMA) ; et relativement peu d’outils libres permettent de profiler les applications sur ce terrain. Deux outils récemment mis en ligne apportent une part de réponse à ces questions.

La suite de l’article présentera MALT et NUMAPROF plus en détails…

BellePoule - Gestion de compétitions d'escrime

Posté par  (site web personnel) . Édité par BAud, Nils Ratusznik, palm123, claudex, Anonyme, ZeroHeure et Bruno Michel. Modéré par ZeroHeure. Licence CC By‑SA.
Étiquettes :
47
15
mai
2014
C et C++

S'il est un sport dont la gestion des compétitions ne peut se passer de l'outil informatique, c'est bien l'escrime :

Un événement typique rassemblant 140 tireurs engendrera, rien que pour le tour de poules, 1029 opérations mathématiques élémentaires (additions, soustractions, divisions) pour calculer un classement tenant compte du ratio victoires/défaites, des touches données et des touches reçues.

Titre de l'image

Petite difficulté supplémentaire, un match d'escrime est extrêmement rapide et n’excédera jamais plus de 3 minutes en poule. Ce petit millier d'opérations se doit donc d'être réalisé dans les plus brefs délais.

Les solutions logicielles répondant à ce besoin se comptent sur les doigts d'une main. Elle sont toutes fermées, à l'exclusion du système BellePoule dont le code source est publié sous licence GPLv3. C'est également la seule à offrir la dématérialisation des échanges avec les arbitres, par le biais d'un système de feuilles de match électroniques.

Coccigrep, un grep sémantique pour le langage C basé sur Coccinelle

Posté par  (site web personnel) . Modéré par patrick_g. Licence CC By‑SA.
45
2
sept.
2011
C et C++

Lorsque l'on travaille sur un projet C comportant un certain nombre de fichiers et de lignes de code, il arrive fréquemment que l'on se pose des questions comme "Mais où est modifié le champ data de ma structure Packet ?". grep ne suffit pas pour répondre à ce genre de questions car ne comprenant pas C, il ne sait pas, par exemple, que la variable monbopkt est une structure Packet.

coccigrep, basé sur coccinelle qui est un outil très puissant de recherche et de modification automatique de code, est un logiciel libre chargé de répondre à ce genre de questions. Il vient d'être publié en version 1.0rc1, sous licence GPL v3. Il est écrit en Python et s'interface avec les éditeurs Vim et Emacs, ce qui permet de faire les recherches depuis l'éditeur.

Les graphes de scène

Posté par  (site web personnel) . Édité par Julien Jorge. Modéré par devnewton 🍺. Licence CC By‑SA.
Étiquettes :
45
24
nov.
2022
C et C++

Deuxième partie de mon triptyque qui prend pour prétexte la sortie du graphe de scène VulkanSceneGraph pour parler un peu 3D. Dans le volet précédent, nous avons évoqué les bonds technologiques qui ont permis le rendu 3D raster, tel que nous le connaissons aujourd'hui, basé sur OpenGL et Vulkan. Aujourd'hui, parlons de graphes de scènes.

Considérant qu'une scène, c'est la définition graphique d'un monde à représenter à l'écran, un graphe de scène, c'est une structure qui hiérarchise les différents éléments de la scène au sein d'un graphe, car cette représentation est particulièrement pertinente.

Projet Qt5 : lecteur de musique

Posté par  . Édité par Nils Ratusznik, baud123, Nÿco, gst, Florent Zara et Davy Defaud. Modéré par baud123. Licence CC By‑SA.
Étiquettes : aucune
44
28
fév.
2013
C et C++
   
Comme vous avez pu le voir dans cette dépêche, le framework C++ Qt5 est maintenant sorti. Cette dépêche revient sur certaines bases de la programmation C++/Qt, ainsi que ses évolutions à travers un cas concret : la création d’un lecteur de musique. logo QT

EFL 1.1 alpha

Posté par  . Modéré par tuiu pol. Licence CC By‑SA.
Étiquettes :
40
16
nov.
2011
C et C++

Tôt ce matin, on pouvait lire l’annonce de la sortie de la version 1.1 alpha des bibliothèques Enlightenment Foundation Libraries, les EFL. Ces bibliothèques sont la base du gestionnaire de fenêtres et environnement de bureau ultra‐optimisé Enlightenment.

Enlightenment sur téléphone|Enlightenment sur laptop

Voilà quelque temps que le projet Enlightenment a commencé sa marche vers la publication de sa version stable finale, avec les EFL tout d’abord, et Enlightenment, lui‐même, pour conclure. Le voyage a été long, plus de 10 ans, mais le résultat est là. Cette version apporte un certain nombre de corrections de bogues, ainsi que de nouvelles fonctionnalités. La future version 1.1 sera la base d’Enlightenment DR17.

Qt 4.8 est sorti

Posté par  . Édité par Gof, Florent Zara, _PhiX_ et Nÿco. Modéré par j. Licence CC By‑SA.
Étiquettes :
39
19
déc.
2011
C et C++

La nouvelle version de Qt (prononcer « cute » comme mignon en anglais), le framework en C++ derrière KDE et bien d'autres applications libres, est sortie. Celle-ci est la dernière version majeure de la branche 4.x et la prochaine sera la branche 5.

Merci à Gof, Nÿco, _PhiX_ et reno pour leur aide lors de la rédaction de cette dépêche.

GnuTLS ajoute le support de DTLS

Posté par  . Modéré par Xavier Teyssier. Licence CC By‑SA.
Étiquettes :
38
12
avr.
2011
C et C++

GnuTLS est une bibliothèque logicielle libre diffusée sous la licence LGPL 2.1 et plus et écrite en C et C++. GnuTLS implémente les protocoles réseau SSL 3.0, TLS 1.0, TLS 1.1 et TLS 1.2. Ceux-là même utilisés par tous les navigateurs web quand vous surfez en HTTPS.

Une version majeure est en cours de développement, elle ajoute une implémentation du protocole DTLS et améliore la compatibilité avec OpenSSL.