Le guide complet du langage C (Claude Delannoy) > 11. L’opérateur séquentiel
Certes, un tel opérateur pourrait théoriquement être utilisé pour réunir plusieurs instructions en une seule. Dans la pratique, ce n’est pas là le principal usage que l’on fera de cet opérateur séquentiel. En revanche, il interviendra fréquemment dans les instructions de choix ou dans les boucles : là où la syntaxe n’a prévu qu’une seule expression, l’opérateur séquentiel permet d’en placer plusieurs, et partant, d’y réaliser plusieurs calculs ou plusieurs actions.
if (argc > 2 && argv[2][0] == '0')
{
action = 4; color = false;
}
Clairement, cette portion de code peut être écrite de façon usuelle. L’opérateur séquentiel n’a pas vraiment de sens dans le contexte.
printf("%d", a<b ? a : b);
if (a < b)
printf("%d", a);
else
printf("%d", b);
On a une écriture plus compacte sauf que initialement le sens du code est inapparent. Ce morceau de code aurait-il une pertinence ? Quelle pertinence aurait-il pu avoir ?
printf("%d", *(tab+2));
printf("%d", 2[tab]);
En programmation, les tableaux sont conventionnellement indexés en utilisant la syntaxe tab[i]. L’équivalence est admise car elle a un sens intrinsèque dans la conception du langage C. L’identificateur de tableau tab est converti en un pointeur constant sur le premier élément du tableau : on accède à une structure de donnée.
printf("%c", "!=~"[is_good]);
// Ou comme on l'a vu :
printf("%c", is_good["!=~"] ); // Affiche '!' si is_good vaut 0
// '=' si is_good vaut 1
// '~' si is_good vaut 2
Pour moi, ce code est totalement incompréhensible (ou vraiment incroyable, avec mes rudiments du C).
int tab[10] = {[2] = 5};
Au cours de ma lecture du livre « Le guide complet du langage C » de Claude Delannoy, je ne me souviens pas de ce genre de notation (?).
Édition : Ce genre de notation est apparue à partir de C99. La norme C appelle cela « designated initializer ».
L’explication paraît fautive puisque c’est peu probable que cela soit toujours identique à int tab[10] = {0, 0, 5}; en termes d’initialisation de tableau. Cela n’est vrai que pour les tableaux d’entiers de classe statique (les tableaux définis dans une fonction sont de classe automatique et ne sont pas initialisés, les valeurs qui n’ont pas été initialisées explicitement sont, de fait, imprévisibles).
int tab[10]; tab[2] = 5;
Mon niveau n’est pas suffisant pour me faire une idée de ce qui est valide ou pas dans le reste de l’article. Je reste sceptique.
“En revanche, si vous avez des arguments pour me convaincre que je me trompe, je n’aurai aucun mal à dire que j’ai changé d’avis s’ils m’ont convaincu.”
Les commentaires de ce billet sont fermés sur le blog haha.
Bon j’avais rien à dire mais l’ironie était à noter.
Je n’ai pas le même avis sur la conclusion, qui relève du mythe (voir ci-dessous). Il est omis qu’il faut maîtriserplusieurs commandes mais également le shell. D’autant plus qu’il faut pouvoir créer de nouvelles commandes.
À partir du moment où vous maîtrisez ne serait-ce qu’une poignée de commandes Unix, vous apprendrez à les combiner pour résoudre les problèmes de manière efficace.
Les choses sont exposées avec plus de réalisme dans la documentation de GNU Coreutils.
31. Opening the Software Toolbox > 31.1. Toolbox introduction
(An important additional point was that, if necessary, take a detour and build any software tools you may need first, if you don’t already have something appropriate in the toolbox.)
Il faut également prendre en considération la complexité du processus en question pour effectuer une tâche donnée : voir l’article Wiki « ParsingLS » pour avoir un aperçu.
L’article était pour répondre à un besoin particulier.
Mais en effet je préfère largement Anydesk qui est fonctionnel correctement et disponible directement en flatpak. D’ailleurs j’ai mis la petite phrase dans l’intro “A noter que je préfère personnellement Anydesk qui est disponible directement en Flatpak.”
Chtite suggestion. Sur les postes clients Linux dont je dois assurer la télémaintenance en mode graphique, j’utilise Anydesk, qui fonctionne à merveille.
Alors juste un grand merci pour ton article VPN bridgé.
J’ai acheté un WD Cloud il y a quelques années et du jour au lendemain ils ont décrété que l’accès à distance était désactivé. J’ai halluciné quand j’ai vu que le boitier tournait sur une Debian avec un noyau 2.3…. pour un produit sorti en 2016 je crois. Bref…
La seule solution pour moi était de passé par le VPN. J’ai vachement galéré, j’ai tout essayé et je suis tombé sur ton billet. Miracle. En 3 minutes s’était réglé. Bref un grand mais alors un grand grand merci.
Je ne comprends pas bien, Copilot reste une fonctionnalité facultative qu’un développeur peut ou ne pas activer, ne pas l’activer ne règle-t-il pas les craintes soulevées par l’article concernant la propriété du code? Merci
Merci pour l’article c’est très très cool.
Par simple curiosité, il n’existe pas un moyen similaire à celle de la pile cmos pour l’eeprom ? Genre la désouder ou la retirer pour voir ce que ça ferait ?
Je m’étais toujours demandé si c’était safe de brancher des fils sur un composant soudé, ça donne envie d’ouvrir son pc et de tester chez soi pour voir ce que l’on peut extraire comme information !
Les exemples avancés comme justificatifs sont quelque peu douteux.
On fournit deux nombres entiers pour finalement n’en afficher qu’un seul : ce qui est insensé.
Le guide complet du langage C (Claude Delannoy) > 11. L’opérateur séquentiel
Clairement, cette portion de code peut être écrite de façon usuelle. L’opérateur séquentiel n’a pas vraiment de sens dans le contexte.
On a une écriture plus compacte sauf que initialement le sens du code est inapparent. Ce morceau de code aurait-il une pertinence ? Quelle pertinence aurait-il pu avoir ?
En programmation, les tableaux sont conventionnellement indexés en utilisant la syntaxe
tab[i]
. L’équivalence est admise car elle a un sens intrinsèque dans la conception du langage C. L’identificateur de tableautab
est converti en un pointeur constant sur le premier élément du tableau : on accède à une structure de donnée.Pour moi, ce code est totalement incompréhensible (ou vraiment incroyable, avec mes rudiments du C).
Au cours de ma lecture du livre « Le guide complet du langage C » de Claude Delannoy, je ne me souviens pas de ce genre de notation (?).
Édition : Ce genre de notation est apparue à partir de C99. La norme C appelle cela « designated initializer ».
L’explication paraît fautive puisque c’est peu probable que cela soit toujours identique àint tab[10] = {0, 0, 5};
en termes d’initialisation de tableau. Cela n’est vrai que pour les tableaux d’entiers de classe statique (les tableaux définis dans une fonction sont de classe automatique et ne sont pas initialisés, les valeurs qui n’ont pas été initialisées explicitement sont, de fait, imprévisibles).Mon niveau n’est pas suffisant pour me faire une idée de ce qui est valide ou pas dans le reste de l’article. Je reste sceptique.
“En revanche, si vous avez des arguments pour me convaincre que je me trompe, je n’aurai aucun mal à dire que j’ai changé d’avis s’ils m’ont convaincu.”
Les commentaires de ce billet sont fermés sur le blog haha.
Bon j’avais rien à dire mais l’ironie était à noter.
Je n’ai pas le même avis sur la conclusion, qui relève du mythe (voir ci-dessous). Il est omis qu’il faut maîtriser plusieurs commandes mais également le shell. D’autant plus qu’il faut pouvoir créer de nouvelles commandes.
Les choses sont exposées avec plus de réalisme dans la documentation de GNU Coreutils.
Il faut également prendre en considération la complexité du processus en question pour effectuer une tâche donnée : voir l’article Wiki « ParsingLS » pour avoir un aperçu.
L’article était pour répondre à un besoin particulier. Mais en effet je préfère largement Anydesk qui est fonctionnel correctement et disponible directement en flatpak. D’ailleurs j’ai mis la petite phrase dans l’intro “A noter que je préfère personnellement Anydesk qui est disponible directement en Flatpak.”
Chtite suggestion. Sur les postes clients Linux dont je dois assurer la télémaintenance en mode graphique, j’utilise Anydesk, qui fonctionne à merveille.
Bonjour,
Ben super, je suis content que cela puisse servir. J’ai pas mal galéré moi même d’où l’article.
En tout cas bon courage
Alors juste un grand merci pour ton article VPN bridgé. J’ai acheté un WD Cloud il y a quelques années et du jour au lendemain ils ont décrété que l’accès à distance était désactivé. J’ai halluciné quand j’ai vu que le boitier tournait sur une Debian avec un noyau 2.3…. pour un produit sorti en 2016 je crois. Bref… La seule solution pour moi était de passé par le VPN. J’ai vachement galéré, j’ai tout essayé et je suis tombé sur ton billet. Miracle. En 3 minutes s’était réglé. Bref un grand mais alors un grand grand merci.
Merci ^^
Un peu dans la même idée que la série d’article, il y le livre sur Stallman disponible sur Framabook (que j’ai bien aimé pour le coup) : https://archives.framabook.org/docs/stallman/framabook6_stallman_v1_gnu-fdl.pdf
À priori, c’est sa seule méthode de déploiement possible, donc via GitHub ou à la main, autant que ce soit automatisé :)
Mais je suis d’accord avec toi sur l’utilisation du FTP en 2022, c’est dommage ^^
Déployer via github sur un FTP qui n’est pas sécurisé, quelle bonne idée ;(
Le soucis etant :
Qu un developpeur l active ou pas ne change rien au fait qu’il y a un problème de licence.
Je ne comprends pas bien, Copilot reste une fonctionnalité facultative qu’un développeur peut ou ne pas activer, ne pas l’activer ne règle-t-il pas les craintes soulevées par l’article concernant la propriété du code? Merci
n8n n’est pas open source (au sens strict du terme) et utilise une license Fair-code.
Super article !
Excellent, un plaisir à lire. Merci !
Précision : De la mémoire biologique :-)
Merci pour l’article c’est très très cool. Par simple curiosité, il n’existe pas un moyen similaire à celle de la pile cmos pour l’eeprom ? Genre la désouder ou la retirer pour voir ce que ça ferait ?
Tant que tu ne relies pas deux bornes entre elles, il n’y a aucun risque, surtout sur des fils de données :)
Merci pour l’article, c’est super intéressant !
Je m’étais toujours demandé si c’était safe de brancher des fils sur un composant soudé, ça donne envie d’ouvrir son pc et de tester chez soi pour voir ce que l’on peut extraire comme information !