Re: [gull] Faut-il réhabiliter Perl comme langage de scripting système?

2018-03-12 Par sujet Daniel Cordey



On 12. 03. 18 22:49, Laurent Franceschetti wrote:
Et pour le repoussoir, le Powershell n’est pas l’idée que je me fais 
d’un langage logique d'administration — leur système de pipes à objets 
c’est comme la défunte industrie soviétique: une fois qu’on a enfin 
trouvé un écrou dans le fatras, il faut encore chercher longtemps pour 
trouver le boulon qui va avec, à moins que la livraison ne soit prévue 
que dans le prochain plan quinquennal…


MDR !

Félix a écrit :

>  Il y a des gens qui utilisent LISP! J'ai même vu, en 2017, du Tcl/Tk!!

Tcl est aussi un langage de scripting qui a un certain nombre d'années 
au compteur (30), par rapport au sh/ksh de l'époque c'était déjà un gros 
plus (listes + associative arrays) et il était surtout associé à Tk qui 
était l'un des seul moyen de faire un programme (facilement) avec un GUI 
à l'époque (Je dis facilement parce que l'exercice avec Dtksh était 
hyper lourdingue (pour ceux qui ont connu Motif et les ressources des 
Widgets)). Aujourd'hui, ce fameux couple est toujours vivant mais il a 
perdu de son attrait au détriment de choses comme Python/Tkinter 
(tiens... Tk !). L'avantage de Tcl est qu'il est très peut gourmand en 
mémoire et c'est un bon candidat pour de l'embarquer. Y'a mieux, mais ça 
reste un langage simple. C'est un langage de programmation générale et 
pas forcément le meilleur choix pour faire du sys admin; mais c'est 
parfaitement possible et on peut faire des choses un peu plus 
compliquées qu'en *sh en conservant de la lisibilité et des fonctions de 
"debuging".


dc



___
gull mailing list
gull@forum.linux-gull.ch
http://forum.linux-gull.ch/mailman/listinfo/gull

Re: [gull] Faut-il réhabiliter Perl comme langage de scripting système?

2018-03-12 Par sujet Laurent Franceschetti
Il me semble qu’on touche des points importants ici.


> Le 12 mars 2018 à 14:28, Daniel Cordey  a écrit :
> 
> Oui, mais de l'embarqué a souvent un système vraiment minimum et on a que 
> 'sh' parfois avec quelques commandes. La tendance est à avoir plus de RAM et 
> des cartes SD, mais ce n'est pas garanti et là tu n'as que 'sh' ou des fois 
> seulement du code compilé (Arduino). On ne peut donc pas généraliser et le 
> vrai embarqué aura toujours pas mal de limites.

Cela restera comparativement limité, mais les nouvelles plateformes embarquées 
supportent désormais des langages assez évolués, même si ce sont des versions 
réduites comme MicroPython (par exemple sur micro:bit 
).

Javascript semble désormais aussi un candidat pour l’embrarqué.

>> 
> 
> C'est justement là que Perl prend le relais. Les shells (dont bash) sont des 
> langages de scripting quand même limités et ne sont pas destinés à devenir 
> des langages de programmation généraux. Comme préciser au début de cette 
> discussion, attention à ne pas sur-utiliser bash/sh/*sh. Bash est un langage 
> destiné à exécuter des commandes et a énormément de limitations comme langage 
> de programmation générale (pas de calculs en flottant, pas de binaire, etc.)
> 

C’est là que je mettrais Perl, parce que c’est ce qui se rapproche le plus de 
l’idée que je me fais d’un langage de scripting système.

Mais je dois quand même dire qu'il y a quelque chose dans Perl qui le rend un 
peu problématique, même à mes yeux. Une fois, van Rossum avait dire de certains 
développeurs que « they are too smart for their own good ». Peut-être que le 
créateur de Perl a voulu faire quelque chose de trop sophistiqué, un langage 
avec de très grandes ambitions. Et comme on dit parfois, « le mieux est 
l’ennemi du bien » et le résultat est que cela a fait fuire les programmeurs.

Il y a quelque chose dans Perl, d’avoir desespérément voulu accéder aux plus 
grandes gloires… et de se retrouver en relégation justement à cause de ça. Si 
cela m’était donné à faire ou à refaire, je ne tenterais pas de faire un 
Bucéphale, mais juste un bon cheval de labour, aimable, fiable et prévisible, 
une bonne bête quoi.

En attendant, je suis prêt à reexperimenter avec Perl, mais je suis conscient 
que ce serait à une place dont ses fans ne voudraient pas. Il y a quelque chose 
d’un petit peu triste, mais peut-être une lueur d’espoir: peut-être qu’on 
pourrait redéfinir une approche qui rendrait ce langage plus compréhensible et 
aimable pour des néophytes?


>> 
> 
> Ce n'est pas parce que l'on peut le faire que c'est une bonne idée ou que 
> c'est efficace. Ce genre d'opération s'écrit de manière beaucoup plus lisible 
> et plus simple dans plusieurs autres langages mieux adaptés. Et que se 
> passe-t-il si les enregistrements dans la base contiennent des BLOB en 
> binaire ? Jolie démonstration mais que l'on ne peut hélas pas généraliser.
> 
> C'est bien de savoir écrire ce genre de chose en bash, c'est aussi bien de 
> savoir lire ce code... mais il faut le maintenir. Ce n'est pas (plus) 
> vendable dans une équipe IT aujourd'hui; même le Perl ne trouve plus grâce 
> aux yeux des "agilistes" aujourd'hui. Les outils d'admin dans le domaine des 
> clusters sont écrits en Python/Go/Lua/etc. Bien ? Pas bien ? Peut-être, 
> peut-être pas... C'est juste un fait.
> 

J’aurais tendance à être d’accord. Bien que je sois parfois supris des 
aptitudes des jeunes informaticiens (et des embrasements mystiques pour vim ou 
alors Emacs…), je ne crois pas qu’ils partiraient dans de la programmation « 
dure » en bash.

En effet, ils seraient plutôt dans les langages modernes. C’est la vie, même si 
je pense qu’il y aurait de la place pour une bonne bête de somme pas trop 
ambitieuse, qui pourrait nous faire les tâches répétitives, faire une requête 
dans une base SQL, ou lire un fichier docx ou xlsx au passage.

Et pour le repoussoir, le Powershell n’est pas l’idée que je me fais d’un 
langage logique d'administration — leur système de pipes à objets c’est comme 
la défunte industrie soviétique: une fois qu’on a enfin trouvé un écrou dans le 
fatras, il faut encore chercher longtemps pour trouver le boulon qui va avec, à 
moins que la livraison ne soit prévue que dans le prochain plan quinquennal…

A ce compte, Perl n’est pas si mal…

Bonne soirée,
Laurent


___
gull mailing list
gull@forum.linux-gull.ch
http://forum.linux-gull.ch/mailman/listinfo/gull

Re: [gull] Faut-il réhabiliter Perl comme langage de scripting système?

2018-03-12 Par sujet Daniel Cordey


On 12. 03. 18 11:06, felix wrote:


Sans oublier les languages du web: HTML (3 à 5) et CSS(>=2)!


Langages purement "descriptifs" mais que l'on ne peut pas vraiment 
considérer pour apprendre la programmation. Control-flow ?



( mais, les faire bosser sur LaTeX, pour leur rapports et présentations,
   avec des outils comme gnuplot, dotty... Cela se fait encore beaucoup
   dans les universités et est très utile pour la cohérence et la pérénité
   des documents... -> ``R'' )


Sans compter que l'on peut absolument tout faire avec ça, alors que ce 
n'est pas le cas des logiciels de traîtement de texte. Sauf que, là 
encore, on ne parle d'une "application" d'un ensemble d'outils et pas 
d'une langage de programmation. Qui penserait faire du sys admin en 
Latex ? Ce n'est pas parce que c'est possible (et illisible) que ça a un 
sens.



En effet, l'``administration'' doit concerner l'embarqué, les serveurs
et les desktops... Dans bien des cas, ``bash'' n'est pas installé, soit
pour des raisons de mémoire, soit pour des raisons de sécurité (trop
complexe).


Oui, mais de l'embarqué a souvent un système vraiment minimum et on a 
que 'sh' parfois avec quelques commandes. La tendance est à avoir plus 
de RAM et des cartes SD, mais ce n'est pas garanti et là tu n'as que 
'sh' ou des fois seulement du code compilé (Arduino). On ne peut donc 
pas généraliser et le vrai embarqué aura toujours pas mal de limites.



bash doit cependant occuper une part importante, il devient de plus en
plus un language de programmation...


C'est justement là que Perl prend le relais. Les shells (dont bash) sont 
des langages de scripting quand même limités et ne sont pas destinés à 
devenir des langages de programmation généraux. Comme préciser au début 
de cette discussion, attention à ne pas sur-utiliser bash/sh/*sh. Bash 
est un langage destiné à exécuter des commandes et a énormément de 
limitations comme langage de programmation générale (pas de calculs en 
flottant, pas de binaire, etc.)



utilisant des raccourcis permettant
par exemple une interaction bidirectionnelle avec un sous-process (voire
perl Open2 et perlipc ;)
  ...

   $ ps --sid $(ps ho sid $$) fw


Ce n'est pas parce que l'on peut le faire que c'est une bonne idée ou 
que c'est efficace. Ce genre d'opération s'écrit de manière beaucoup 
plus lisible et plus simple dans plusieurs autres langages mieux 
adaptés. Et que se passe-t-il si les enregistrements dans la base 
contiennent des BLOB en binaire ? Jolie démonstration mais que l'on ne 
peut hélas pas généraliser.


C'est bien de savoir écrire ce genre de chose en bash, c'est aussi bien 
de savoir lire ce code... mais il faut le maintenir. Ce n'est pas (plus) 
vendable dans une équipe IT aujourd'hui; même le Perl ne trouve plus 
grâce aux yeux des "agilistes" aujourd'hui. Les outils d'admin dans le 
domaine des clusters sont écrits en Python/Go/Lua/etc. Bien ? Pas bien ? 
Peut-être, peut-être pas... C'est juste un fait.


dc




___
gull mailing list
gull@forum.linux-gull.ch
http://forum.linux-gull.ch/mailman/listinfo/gull

Re: [gull] Faut-il réhabiliter Perl comme langage de scripting système?

2018-03-12 Par sujet felix
Coucou,

Oui, je vais dire un mot:

On Sat, Mar 10, 2018 at 08:55:28AM +0100, Marc SCHAEFER wrote:
> On Sat, Mar 10, 2018 at 01:07:41AM +0100, Daniel Cordey wrote:

> Plus sérieusement, en ce qui me concerne, dans un cursus de développement
> logiciel aujourd'hui, je proposerais:
> 
>- le C pour appliquer les notions d'architectures des ordinateurs,
>  y compris la portabilité
> 
>- le python pour voir un langage de script générique (appliqués aux
>  calculs mathématiques ainsi qu'au développement Web p.ex. avec Django,
>  le fonctionnel, l'OO)
> 
>- le Java car c'est le langage Entreprise de référence aujourd'hui et
>  la JVM est très importante dans plein de langages
> 
>- le Javascript car c'est l'assembleur portable d'aujourd'hui

Sans oublier les languages du web: HTML (3 à 5) et CSS(>=2)!

( mais, les faire bosser sur LaTeX, pour leur rapports et présentations,
  avec des outils comme gnuplot, dotty... Cela se fait encore beaucoup
  dans les universités et est très utile pour la cohérence et la pérénité
  des documents... -> ``R'' )

> et pour ceux qui vont plus dans la direction "système":
> 
>- bash
Je dirais ``Shell'', avec des challenges utilisant busybox et/ou dash!

En effet, l'``administration'' doit concerner l'embarqué, les serveurs
et les desktops... Dans bien des cas, ``bash'' n'est pas installé, soit
pour des raisons de mémoire, soit pour des raisons de sécurité (trop
complexe).

bash doit cependant occuper une part importante, il devient de plus en
plus un language de programmation... utilisant des raccourcis permettant
par exemple une interaction bidirectionnelle avec un sous-process (voire
perl Open2 et perlipc ;)

Voici comment dialoguer avec un serveur mysql distant (sans port TCP),
en utilisant ssh et bash. 
  $ read tdir < <(mktemp -d)
  $ mkfifo $tdir/fifo.{out,err}
  $ ssh -f -L $tdir/mysqld.sock:/var/run/mysqld/mysqld.sock $sqlhost sleep 5
  $ exec 5> >(exec stdbuf -oL -eL mysql -S $tdir/mysqld.sock -p'myPassword' \
  database >$tdir/fifo.out 2>$tdir/fifo.err )
  $ exec 6<$tdir/fifo.out
  $ exec 7<$tdir/fifo.err 
  $ rm -fR $tdir

  $ echo >&5 'SELECT CURRENT_USER,CURRENT_DATE,CURRENT_TIME;'
  $ while read -t .01 -u 6 sqlout;do echo ">" $sqlout;done
  > CURRENT_USER CURRENT_DATE CURRENT_TIME
  > felix@localhost 2018-03-12 10:48:58
  $ while read -t .01 -u 6 sqlerr;do echo "E:" $sqlerr;done

  $ ps --sid $(ps ho sid $$) fw


> et pour ceux qui vont plus dans l'embarqué:
> 
>- C++
> 
>- assembleur (code bootstrap notamment)
> 
> Quant à Perl, PHP, Ruby, etc, je les proposerais en
> option pour investiguer un axe en particulier (Perl: regexp,
> Moose, Mojolicious), PHP (Laravel), Ruby (On Rails).

Je pense, pour ma part, que PHP devient nécessaire en raison du
nombre d'applications que l'on rencontre tous azimuths.

Ne suis pas fan, bien au contraire, mais il m'a été utile de le
connaître pour debugguer des CMS installés, mais égallement pour
désosser des ``virus'' (venu du froid) qui transforment les
serveurs web en zombies...

Pour ce qui est de Perl, je dois dire que je peux ``penser'' en Perl.
Ce qui rend les scéances de ``Brainstorming'', en solo devant mon
écran, plutôt efficaces. (Ce que je pond n'est pas forcement très
lisible, heureusement, perl regorge d'outils tels que perltidy,
debug et autres critic - merci Xavier Gattuso -...)

> Il y a des gens qui utilisent Caml? :)
Il y a des gens qui utilisent LISP! J'ai même vu, en 2017, du Tcl/Tk!!

-- 
 Félix Hauri  -    -  http://www.f-hauri.ch
___
gull mailing list
gull@forum.linux-gull.ch
http://forum.linux-gull.ch/mailman/listinfo/gull