Journal Une structure partiellement constante en C++

Posté par  (site web personnel) . Licence CC By‑SA.
Étiquettes :
27
6
juil.
2018

Hop, quelques réflexions sur un langage non réflexif.

Si on veut un tableau de taille statique, on peut utiliser depuis C++11 la classe std::array<T, N>.

std::array<long, 5> my_array{{1, 2, 3, 5, 8}};

Si on veut forcer ce tableau à ne contenir que des constantes utilisables à compile-time, on a la possibilité de marquer cette déclaration constexpr.

constexpr std::array<long, 5
(…)

vcpkg, un gestionnaire de bibliothèque pour C++

Posté par  (Mastodon) . Édité par Davy Defaud, Nÿco et Benoît Sibaud. Modéré par bubar🦥. Licence CC By‑SA.
Étiquettes :
20
25
avr.
2018
C et C++

Depuis 2016, Microsoft développe vcpkg, un outil bien sympathique qui permet de télécharger et compiler un ensemble de bibliothèques et leurs dépendances. Jusqu’à présent, cet outil était disponible uniquement pour la plate‐forme Windows. Depuis le 24 avril 2018, cet outil prend également en charge les plates‐formes GNU/Linux et macOS. vcpkg est publié sous licence MIT.

Une limite cependant est que la compilation des bibliothèques sur GNU/Linux est uniquement statique. La raison invoquée est qu’il est plus compliqué d’utiliser des bibliothèques sur GNU/Linux (LD_LIBRARY_PATH, rpath, etc.) que sous Windows, où l’on peut tout mettre dans un seul répertoire.

Quoi qu’il en soit, c’est une bonne nouvelle. Même si les paquets des distributions resteront une source privilégiée pour obtenir les fichiers de développement d’une bibliothèque, vcpkg offre une alternative intéressante pour ceux qui voudraient tout construire en statique de manière à fournir un seul binaire pour toutes les variantes de GNU/Linux.

Journal Un tap tempo en ligne de commande

Posté par  (site web personnel) . Licence CC By‑SA.
Étiquettes :
39
19
fév.
2018

Bonjour à tous,

j'aimerai vous présenter mon dernier petit projet : TapTempo.

C'est un détecteur de tempo en ligne de commande. L'utilisateur frappe une touche en cadence régulière et le programme en déduit le tempo correspondant. Il est affiché en nombre de battements équivalent par minute (ou BPM en anglais).

La plupart des logiciels audio-numériques ainsi que beaucoup de d'instruments électroniques ont cette fonctionnalité, mais ça me rebutait de lancer un gros logiciel ou de me déplacer vers mon (…)

C++17 libère size(), data() et empty()

Posté par  (site web personnel) . Édité par David Marec, Benoît Sibaud, Oliver, Davy Defaud, palm123, gbdivers, whity, claudex, audionuma et kp. Modéré par Davy Defaud. Licence CC By‑SA.
Étiquettes :
36
17
mar.
2018
C et C++

Cette évolution est dans la continuité de la libération de begin() et end() en C++11. Ces trois nouvelles fonctions, size(), data() et empty(), avaient été oubliées lors des deux dernières évolutions. Le C++17 corrige le tir.

Tout d’abord, nous allons revenir sur les raisons de cette évolution. Puis, nous détaillerons ce qu’apporte chacune de ces trois fonctions. Et, pour conclure, nous verrons comment on va pouvoir les utiliser.

Les fonctions empty(), data() et size() sortent de la prison « class » et rejoignent les fonctions begin() et end() qui les accueillent. Ces deux dernières fonctions accueillent également string_view. Derrières les barreaux de la prison des spécifications techniques, Unified-Call-Syntax va devoir y rester trois ans pour tenter de sortir avec C++20

Journal 'Markdown presentation processor' (ou de l'intérêt des fichiers texte).

Posté par  (site web personnel) . Licence CC By‑SA.
22
25
fév.
2018

Cherchant à réaliser une présentation vidéo, et utilisant déjà par ailleurs Writer de Libre Office, je me suis naturellement tourné vers Impress pour cela. C'est peut-être un très bon logiciel dans le genre, mais, personnellement, le fait de devoir m'occuper, en même temps, et du contenu, et de sa mise en forme, le peu de motivation que je pouvais avoir disparaissait comme neige au soleil. C'est la première fois que je rédigeais une telle présentation, et c'est le genre (…)

Forum général.petites-annonces Changements mineurs dans le créateur/gestionnaire de projets mk-project.

Posté par  (site web personnel) . Licence CC By‑SA.
0
17
nov.
2017

Description de mk-project

mk-project prend la forme d'une barre de menu:

  • Projects
  • Terminals
  • Targets
  • Configuration
  • Info

Et de 2 sortes de terminaux, implémentés grâce a libvte-2.91.

Make terminal

Ici l'on voit la sortie des nombreux make targets que mk-project implémentes, si vous utilisez l'élément du menu Targets afin de lancer les commandes que vous voulez.

Edit terminal

Ce notebook de terminaux servira aux utilisateurs de ed, vim, emacs…

Afin d'éditer des fichiers car l'ont peut bien sur ajouter des onglet/terminaux (…)

Journal Compilateur trop intelligent

Posté par  (site web personnel) . Licence CC By‑SA.
Étiquettes :
30
1
nov.
2017

Une belle illustration des decisions radicales que peut prendre l'optimiseur de clang quand il rencontre des comportements indéfinis :

exemple en c++ sur https://gcc.godbolt.org

L'explication se trouve ici , je ne spoile pas pour ceux qui veulent trouver tout seuls comment le compilateur a choisi d'effacer le disque dur.

Journal Calculs numériques en précision absolue.

Posté par  (site web personnel) . Licence CC By‑SA.
Étiquettes :
13
28
sept.
2017

Introduction

La lecture de ce journal m'a remémoré une bibliothèque de calcul numérique que j'ai développée et qui pourrait peut-être en intéresser quelques-uns ici.

J'ai rarement utilisé les nombres flottants à cause de leur précision limitée, et les entiers se sont parfois révélés inadaptés de par leur intervalles limités. Aussi ai-je développé une bibliothèque de gestion d'entiers dynamiques, et, en m'appuyant sur cette dernière, une bibliothèque de gestion de nombres rationnels qui prend en charge les 4 opérations mathématiques de (…)

Journal Pythran 0.8.2 — compilation de noyaux scientifiques écrits en Python

Posté par  (site web personnel) . Licence CC By‑SA.
Étiquettes :
38
14
sept.
2017

Mâtin, quel journal !

Pythran est bien vivant
Un vrai compilateur !
Et heure après heure,
Le bonheur vient en codant !

Mais des mois s’écoulèrent,
Sans que je postasse,
Le moindre mot dans l’air,
Ça manque un peu de classe

Et là, tout à coup, soudainement, surgit la version 0.8.2 de Pythran. Que s’est‐il passé depuis mon dernier soliloque sur LinuxFr.org ? Allez, plongeons dans le journal des modifications, mais avant ça, un petit rappel sur Pythran, par l’exemple.

Vous voyez ce bout (…)

Journal Un Python qui rivalise avec du C++

15
27
août
2017

Rencontre avec un code de calcul scientifique open-source - écrit en Python - qui tente de rivaliser avec du C++ sur des supercalculateurs, spectralDNS!

Quelques liens:

La publication initiale : https://arxiv.org/pdf/1602.03638v1.pdf
Une seconde publication : https://arxiv.org/pdf/1607.00850.pdf
Une publication plus récente : https://arxiv.org/pdf/1701.03787v1.pdf
Le dépôt GitHub : https://github.com/spectralDNS/spectralDNS

Première réaction?

Je ne sais pas quelle est votre première réaction. Moi j'y croyais pas trop. Puis j'ai potassé les articles, j'ai fait quelques tests avec le code, j'ai contacté l'auteur principal, et (…)

Forum Programmation.autre [Umbrello] sélection multiple

Posté par  . Licence CC By‑SA.
Étiquettes :
1
31
août
2017

J'essaie d'utiliser Umbrello, l'outil de KDE qui permets de générer un modèle objet à partir d'un code source (C++ dans mon cas) et a priori le dernier open source avec un potentiel correct (non, dia ne fait pas le taf. Il y avait bien bouml mais d'une part il n'est plus libre et la dernière version freeze anyway. Quant à son fork, il faut mingw pour le compiler, hors, la, pas de bol je suis au taf sous windows, et (…)

Journal Code natif et Node.js - parser et préprocesseur XML

Posté par  (site web personnel) . Licence CC By‑SA.
10
1
sept.
2017

Histoire de diversifier mon activité, et aussi parce que j'aime bien me lancer des défis, j'ai décidé de me mettre à Node.js. Cependant, compte tenu de ma faible appétence pour Javascript, lui préférant de loin C++, j'ai bien entendu cherché un moyen de coder pour Node.js avec mon langage fétiche. Et c'est tout à fait possible, grâce aux addons. Bon, ce n'était pas vraiment une surprise, n'ayant jusqu'à présent jamais rencontré d'environnement d'exécution logiciel qui (…)