💾 Archived View for unbon.cafe › lejun › posts › 20240402_script.gmi captured on 2024-08-25 at 00:09:32. Gemini links have been rewritten to link to archived content
⬅️ Previous capture (2024-05-10)
-=-=-=-=-=-=-
J'ai juste besoin de calculer moyenne, quartiles, et écart-type, par groupes, sûrement que ça doit pouvoir se faire rapidement en bash. (LeJun, 2024)
Un script est un programme construit pour être interprété via une interface visible aux personnes utilisant un appareil – Voir le concept Read-Eval-Print Loop. C'est un outil que l'on pourrait décrire comme permettant de coordonner l'usage d'autres programmes plus spécialisés et performants dans des tâches précises. Cette différence de spécialisation serait par ailleurs une des raisons justifiant la dichotomie de nomenclature entre script et programme, ces derniers impliquant une étape de compilation – Cette différence n'est évidemment pas stricte, et est largement criticable.
C'est récemment dans le cadre de rapports financiers[1] que cette distinction m'est apparue : impossible pour moi de programmer en Bash ce qui aurait été un script en R tant les fonctions que je considérais comme acquises nécessitent une réelle réflexion en amont. Plutôt que de la programmation, mon niveau se limite à du script à partir de fonctions programmées, de la construction à haut niveau sur des langages de bas niveau… Conséquence probable d'une exposition aux interfaces graphiques à l'usage très visuel plutôt que de la logique de stockage et manipulation de la donnée même.
Les scripts shell ont comme avantage indéniable leur portée : Bash, qui est le shell Unix, est disponible sur la quasi-totalité des systèmes d'exploitation depuis 1989 ce qui leur donne un avantage majeur en terme de reproductibilité[2]… pour peu qu'aient été suivis les standards POSIX… et que l'appareil ai l'interprète adéquat. À l'opposé, un programme compilé n'est interpreté qu'une seule fois et peut ensuite être réutilisé sans interprète ce qui peut faciliter sa portabilité selon le contexte de développement. Et c'est sans faire mention des multiples dépendances évoluant avec le temps[3].
Si un script shell permet de facilement manipuler du texte[4][5], notamment avec sed[6] ou grep[7], on se retrouve vite limité dès qu'il s'agit de nombres[8]. Quelle solution dès lors ? Accepter l'idée d'interfaces, utiliser un script Bash conduisant à un script d'analyse R et faisant lien avec ledger[9], et voir les script shell comme des programmes à fonction de coordination… Encore que[10].
[1] Rapport financier, LeJun 2022
[2] Reproductibilité, LeJun 2024
[3] Python extension commands in git - request for policy change, corbet 2012
[5] Graphe capsule, LeJun 2023
[7] Global Regular Expression Print, LeJun 2023
[8] Stop writing shell scripts, Grayson 2021