Category Archives: Storielle

Storie varie sul rutilante mondo dell’informatica

TIL anche questo

If you are the smartest person in the room, then you are in the wrong room.
Confucius

E sì! 🐳 Certo. E quelli di reddit, dove la cit. ha un’altra attribuzione, al solito la sanno lunga e disquisiscono, qui.

Se con una piccola astrazione consideriamo il Web come un ambiente (cioè con case) e un social come una di queste e chi seguo su Twitter come una stanza risulta –per quanto mi riguarda– confermata la saggezza di Confucio e Richard.

Sì perché –oggettivamente– seguo nerds che davvero rockzs! 💥 👽
Anzi se avessi tempo potrei seguirne tanti altri.

Alle volte qualcuno esagera, come oggi. Ho provato a resistere, pensare alle funzioni nella programmazione funzionale, ma niente da fare: devo dirvelo, se del caso non leggete.

Ci sono cose che avrei potuto inventare io se non ci fosse qualcuno che mi ha preceduto, vedi Peano, l’HTML, cioè il Web, per dirne un paio. Altre invece sono meno auto-evidenti, non ci sarei mai arrivato, la Relatività Generale, ma anche quella ristretta, o la saga di Diskworld, per dire.

Ecco un caso di quest’ultima classe, qui.

Partiamo dall’immagine, di autore ignoto anche se meriterebbe fama imperitura. Riesce a visualizzare un concetto che è –come dire…– forse non solo per me. E la sua applicazione! Io che sono vecchio ricordo certe discussioni Google vs. Yahoo dove c’era chi citava [autocensura qui] e –OK, discordi da piola dietro un fiasco di barbera.

Tornando al tweet poi, certo, di lì si parte seguendo il link proposto e si viene condotti alla scoperta di tutto un mondo da nerds mooolto più smart di me.

OK, è tutto quello che volevo dire. E il Web e Twitter come parte dello stesso rockzs! 💥 👽

Forse è solo per me, forse no, chissà. Ah! posso smettere quando voglio, nèh! Forse 😋

🤩

Annunci

Capita solo a me?

Una storiella di cosa mi è capitato ieri pomeriggio. E poi ho continuato a pensarci; mi tornava in mente a tradimento, anche la notte. Per cui racconto tutto anche se non ci faccio una bella figura 😯 ma chissene 🧙‍

Tutto è partito da questo tweet: Finally someone explained monads in a way that is actually possible to understand.

Seguendo il link si finisce su Quora, qui: How would you explain the purpose and benefit of monads to a non-programmer?

Panicz è un tipo tosto, già visto altre volte, è un little [non tanto little] schemer 😁
Il post è lungo e impegnativo. Parte bene anche se –secondo me– prende la cosa un tantino troppo alla lunga, dai siamo tutti programmatori, magari non consapevoli ma sì, yepp.

Inizia con l’esempio del calcolo del fattoriale in pseudo-assembly. Ehi! quando io ho cominciato, in Fortran, si programmava così 👽
Anche l’evoluzione dell’esempio è quasi-Fortran, mi sa che in futuro ne riparlo.
Panicz poi introduce l’astrazione ed ecco Haskell

factorial 0 = 1
factorial n = n * factorial(n - 1)

che possiamo ridurre a

factorial n = fold (*) [1..n]

Però una cosa: Note that the above formulation is ambiguous, because we don’t know the order in which expressions should be reduced. If we interpret the expression as (((a ▽ b) ▽ c) ▽ d), we get a left fold, and if we interpret it as (a ▽ (b ▽ (c ▽ d))), we get a right fold.

Ecco qui mi sono perso. Cerrrto colpa mia, solo mia ma… adesso vi conto.

Non ho resistito e ho lanciato GHCi

OK, come previsto ma con (-) si ha

Verifico, è semplice e poi c’è la definizione lì sopra delle due funzioni… E qui il dramma: il -7 non mi viene.

In questi casi so benissimo che sono io che sto sbagliando, che basterebbe scrivere su carta (come si faceva una volta, come dovrei fare sempre, mi conosco, so di essere pasticcione…) e tutto diventa chiaro, così:

(2 - (3 - (4 - 10)))

e ovviamente

Ma non sono stato così razionale. Ho risolto mentalmente l’equazione, sbagliando di nuovo 👿

Panico 👿
No, non mi sono ricordato che in questi casi devo smettere, andare a farmi un caffè o due passi, ho ben quattro cani che adorano le passeggiate anche se sono in aperta campagna, volendo possono farsele da soli, anche se non è notte e non si deve necessariamente abbaiare.

Insomma, non me lo so spiegare ma ci ho messo parecchio prima di decidermi a operare passo-passo, così

(2 - (3 - (4 - 10))) =
(2 - (3 - (-6))) =
(2 - (3 + 6)) =
(2 - 9) =
-7

OK! E sì le parentesi più esterne non sono necessarie ma l’abitudine –mia, il Lisp.

C’è un ulteriore motivo (recondito direi, se sapessi cosa vuol dire) che mi ha panicato e continua a panicarmi: il tutorial che sto seguendo alla fine di ogni lezione propne esercizi; di solito semplici ma Haskell non sono ancora riuscito a farlo mio, è diverso dagli altri linguaggi. Gli esercizi sono senza soluzione, e chissà se quello che ho scritto è vero. Poi proseguendo di solito si scopre che la soluzione viene data nelle trattazioni successive. Intanto panico 👿

Ma sono uscito fuori tema. Stavo scrivendo delle monadi come le vede Panicz.

Panicz ci racconta delle notazioni algebriche: it may or may not be useful to know that mathematicians call a set with an associative operation a semigroup. […] Of course, mathematicians also came up with a name for semigroups with identity element: they are called monoids. (Moreover, if the each element has its inverse element, then this structure is called a group, and is the subject of study of a vast branch of algebra called Group theory.)

For example, strings with concatenation operation form a monoid, where the empty string is the neutral element. But perhaps more importantly, functions with the operation of function composition form a monoid, where the neutral element is of course the identity function. Sì ho saltato la parte relativa all’elemento neutro.

Having the notion of identity element solves yet another problem. Recall the formulation of fold that I gave above. It did not specify what should the value of a fold over an empty list be. Intuitively, the sum of all the elements of an empty list should be 0, for example. For the same reason, the product of all elements of an empty list should be 1.

However, the idea of folding is not limited to monoid, or not even to the things of the same kind. The variants of fold that are most commonly used in Haskell take an additional argument, the “initial value” e, so that, for example, you can understand foldl ▽ e [a,b,c,d] as ((((e ▽ a) ▽ b) ▽ c) ▽ d) and foldr ▽ e [a,b,c,d] as (a ▽ (b ▽ (c ▽ (d ▽ e)))).

Altra digressione qui su version control, poi si passa al lambda calculus, salto che c’è spiegato bene di là. Mica finisce qui, ci sono le callbacks e la pyramid of doom.

E poi:

Monads, finally
So far we have seen that we can usually avoid the pyramid of doom rather easily by introducing new syntactic forms to our language. However, for some reason many programmers do not like to use languages whose syntax is based on s-expressions and prefer other syntaxes that correspond better to their whims. Since these syntaxes make the introduction of new syntactic forms to the language really difficult, they come up with other means to avoid the pyramid of doom.

They suggest that it is a good idea to have a single special form that is able to convert nesting into sequencing, that is implicitly parameterized with some sort of composition operator (this special form is called “do-notation” in Haskell and “for-comprehension” in Scala). The implicit parametrization occurs with the help from the type system (for example, in Haskell it makes use of the mechanism called type classes).

Salto i dettagli, e arrivo al dunque. [T]he developers of Haskell decided that its sequencing operator should be parameterized not only with the composition operator (which is written as >>= and pronounced “bind” in Haskell), but there should also be a “unit” operator that does nothing interesting — or to be more precise, it does nothing in some particular sense (it is called return in Haskell, probably to confuse programmers with background in imperative programming).

Arguably, there are some “monadic laws” that ought to be satisfied by these operators. […]

These laws may remind you the definition of monoids. This should explain at least some bit of the popular phrase “monads are just monoids in the category of endofunctors, what’s the problem?”.

The problem is that neither the notion of category, nor the notion of an endofunctor gives any clues whatsoever with regard to sequencing. […] Salto polemica su IO. E:

TL; DR they allow to replace nesting with sequencing in languages that have a poor support for macros but offer sufficiently elaborate type systems. And they probably allow some programmers to look smart. The name “monad” is terrible, because it focuses on some irrelevant (and unnecessary) details, giving no clue of the purpose whatsoever (truly, the name “sequencing” would be way better).

Insomma Panicz è chiaro ma forse troppo polemico. E, per quanto mi riguarda, mi conferma che le mie difficoltà con Haskell non sono solo mie. Ma insisto, quando il gioco si fa duro… (inizio-cit.) 😉

🤩

Pipes, ovvero qual è il titolo di questo post?

Devo una risposta a un giovane nerd davvero über (anche se feroce sostenitore di JavaScript, ma gli passerà (con il tempo) (forse)). In breve la risposta è sì.

Non ricordo da dove siamo partiti (sapete la RAM, la mia) ma siamo finiti che su come si fanno adesso le cose io ormai sono rassegnato, personalmente ci rinuncio e mi occupo solo di programmazione funzionale (Haskell, anche se è tutt’altro che semplice, troppo matematicoso).

In particolare Windows, non ci riesco più. È cambiato da quando lo usavo io –XP– e ha cambiato gli utenti. Per esempio il vantaggio di Octave (per i ricchi MatLab) rispetto a Python è l’ambiente integrato, fai tutto lì dentro, tutto a portata di mouse. Python invece… Uh! ecco, eravamo partiti di lì. E io dicevo che ultimamente con Numpy, Scipy, Matplotlib, Pandas &co. sarà dura per gli altri.

Ma mi hanno detto che sono legato ai tempi della linea di comando 😡
Che è la vera verità. Ovviamente.

Avrei anche potuto raccontare di quando sul TTY avevi un solo processo in foreground, altri potevi lanciarli in background con l’opzione &, i giovani non capirebbero. Mi sono invece lanciato a magnificare la potenza e l’eleganza della shell, per esempio le pipes:

(mica è facile trovare un esempio semplice e significativo nella history 😐)

Visto che ormai ero lanciato ho dichiarato che si potrebbe fare ancora oggi, con gli script autoprodotti, per esempio con questo: Leggere dati in formato CSV con impostazioni locali.

Sul momento non ho fatto una demo volante, ma adesso arriva. Anzi eccola qui:

Visto? e questi sono gli scripts python:

somma.py

import fileinput

somma = 0
for line in fileinput.input():
    somma += int(line)
print(somma)

prodotto.py

import fileinput

prodotto = 1
for line in fileinput.input():
    prodotto *= int(line)
print(prodotto)

E, ovviamente, si può fare di più, per fare la somma dei quadrati dei dati uso

quadrati.py

import fileinput

for line in fileinput.input():
    n = int(line)
    quad = n * n
    print(quad)

ed ecco

Sì, anche con Windows, dove cat si chiama type. Ma questa è solo una demo da completare, un inizio.
A contarla tutta, mentre io parlavo, GG (posso usare ancora una volta il vecchio nick?) ha risposto a tutte le mails sul telefono, bravissimo a scrivere con i soli pollici. Li ho opponibili anch’io ma non ci riuscirei mai. Ecco.

🤩

Funzioni e programmazione funzionale

Prima di iniziare vorrei precisare che non mi sto lamentando, anzi è tutto OK, sto imparando cose nuove (Haskell! 😁). Però –come risulterà tra poco– un po’ di comprensione, una metaforica pacca sulla spalla, un bacio sulla guancia dalla mamma (o da Miss Universo) credo di meritarmela. Tutta.
Adesso vi conto.

Questa mattina stavo seguendo la lezione di Haskell, anzi l’esercitazione con esercizi. Niente di impossibile ho due prof davvero über. Ma sono solo e in certi momenti mi sembra di essere abbandonato anche da Sua Pastosità il Prodigioso FSM, sempre sia condito, RAmen.

L’esercizio in oggetto richiedeva di contare gli elementi dispari di una lista di interi, la funzione della disparità è data, odd, quella standard.

Uh! facile (mi sono detto) e mi sono messo a scrivere. Non ho salvato i tentativi, diversi e tutti disastrosi. Mi capita anche che quando la REPL tenta di aiutarmi con messaggi d’errore lunghi mi butta giù; comincio a leggerli ma poi vedo che sono tanti e sta ancora parlando della terza riga… 😡

E pensare che so come dovrei fare in questi casi. Usare il metodo Ugo™. Non so se anche voi lo chiamate così, probabilmente no, magari non conoscete nemmeno Ugo del metodo Ugo™. Che dice: quando hai troppi puntatori aggrovigliati stacca qualche minuto, fai una pausa, due passi o un caffè.

OK, quando ho ripreso ho scritto:

countOdds :: [Int] -> Int
countOdds [] = 0
countOdds (x:xs) 
  | odd x     = 1 + countOdds xs
  | otherwise = countOdds xs

E mi è subito sembrata bella, chissà… sì! è OK! 💥

Cioè se la lista è vuota ritorna 0 altrimenti controlla il primo termine e se è dispari si setta a 1 e richiama se stessa con il resto della lista incrementandosi per ogni occorrenza vera. Semplice vero. Con Haskell (mi sto accorgendo) questo è un modo abituale, solo che … (tra poco arriva).

L’esercizio precedente era anche più complesso, bisognava definire un accumulatore, ma a lezione c’era stato un esempio simile e io ho usato quello come traccia, modificandolo (male! lo so!).

E molto probabilmente è stato lui a portarmi fuori strada. A non vedere la semplicità, l’immediatezza della soluzione, percorrere la lista –ricorsivamente, ovvio– contando i dispari.

Poi ho continuato a pensarci e sono capitombolato su quella del calcolo del fattoriale di un esercizio precedente. A dire il vero questa l’ho vista tante volte che la scrivo in modo automatico (male! lo so!). E comunque è matematica pura, non codice 😁

fact :: Int -> Int
fact 1 = 1
fact n = n * fact (n-1)

Perché non m’è venuta in mente al momento opportuno? Perché sono molto simili, basta aggiungere una condizione di verifica.

Adesso non per giustificarmi ma vorrei ricordare che io ho una certa età; ho cominciato con il Fortran e poi attraversato una lista di linguaggi lunga così.

Avete presente il Fortran, quello di una volta? C’erano le funzioni ma il programmatore tipo (sì, anch’io) non le usava, preferiva le subroutines (le procedures del Pascal e Delphi, diciamo funzioni che tornano void) tanto gli argomenti erno passati per indirizzo. E c’erano i commons.

Ecco in questi giorni (ne ho raccontato qualcosa nelle ultime due Storielle) sono stato alle prese con codice vecchio. Scritto in modo mooolto diverso da come si usa con la FP. E che non vale la pena di aggiornare; il codice dovrebbe avere una scadenza come gli antibiotici e gli alimentari. E anche il vino, salvo casi particolari. E anche io. Ma ci provo 😋

🤢

em – elementary math

Una storiella  solo per vecchi;   per tutti, dai;  solo per me 😊

Ero con due compagni di sventura a ravanare di cose di ‘puters e salta fuori che si deve valutare una quantità tipo 437 / 36. Io m’impadronisco del portatile, non mio ma già usato, so cosa c’è, e vado:

12 con il resto di 5. Sì, serviva così, roba di interi. A volte la memoria fa strani scherzi, non ho pensato a bc:

OK, ci sarebbero anche altri modi ma credo basti. C. interviene con “con il Vax si calcolavano direttamente queste espressioni”. Al che mi sono sentito che stavo dicendo “anche da noi”. Notare non “con Linux (o Unix) ma ‘da noi'”.

Per fortuna non hanno chiesto come, non lo ricordavo (la memoria…).

Invece è facile, semplicissimo, somma, sottrazione, moltiplicazione, elevazione a potenza, divisione e modulo (resto):

Le espressioni possono essere più complesse, usando se del caso le parentesi

Da ricordarsi che ^ è sinonimo di *.

Si può fare uno script che renda più amichevole l’espressione? Certo!
Però parecchi dei caratteri che vorremmo utilizzare sono metacaratteri, la shell li interpreta e si dovrebbero escapare. Propongo invece di sostituire le parentesi tonde con le quadre, usare x (o X) per la moltiplicazione e ^ per l’elevazione a potenza. Semplicissimo 3 righe (di cui la seconda raccomandata ma non strettamente necessaria), ecco em:

#!/bin/bash
F=$@
echo $(( `echo $F | sed 's/\^/**/g ; s/x/*/gi ; s/\[/(/g ; s/]/)/g'` ))

Sì, per sed parecchi caratteri sono metacaratteri, da escapare.

Resta un mistero: con il Vax, cioè VMS com’era?

🤢

I social, i ‘puters & ecsel

Vale fare un post un po LOLLoso ma in cui dico cose che vorrei— devo dire?
Certo è il mio blog; ci sono tanti blog, ma questo è il mio blog (quasi-cit.) 😊

L’altro giorno eravamo in tre (due vecchi e un trentenne+) al bar a pranzo verso l’una. Si parlava di dati e software per gestirli e noi vecchi siamo out; almeno quando entra in gioco ecsel™.

Poi il tavolino di fianco (quelli piccoli rotondi, avete presente vero?) si libera e viene immediatamente conquistato da due signore (rockzs! 💥, come vedremo subito). Nell’attesa che il cameriere sbaracchi una delle due tira fuori (indovina?) il telefono e comincia a mostrare e raccontare all’altra cosa e come aveva fatto.

C’era rumore e non si sentiva niente ma sono rimasto incantato a guardarla a bocca aperta 😯 Molto più sexy di quel che dicevano i miei due amici. Perché non doveva essere la solita galleria di foto o la pagina di Facebook, in quei casi si manda un messaggio con dentro “guarda qua!”. E se non arriva subito la risposta con “bello” e faccine sorridenti si rimanda. Fino a quando serve.

Io che sono ormai fuori non ho il telefono, per scelta. Ma mi affascina, ci vedo il successore del ‘puter di adesso. Ho già visto diverse successioni. Mi sono perso le prime generazioni, anche le schede le ho viste solo al Poli, ma dai mini in poi tutti. Fino all’aiFon (escluso).

Poi ieri trovo questo tweet (non seguo Larry, non so chi l’ha ritwittato) che –come dire– OK, eccolo: Why am I so excited about today’s big astronomy news? Well let me tell ya’ 1/22.

Larry è OK, ha interessi diversi dai miei altrimenti lo followerei 😋

Però non so se avete visto: 1/22. Ecco, secondo me –secondo me, nèh— questo è un uso di Twitter che non avrei mai immaginato. E sembra che questo sia il parere anche di altri, non solo mio: 1/22?

Purtroppo pare che i blogs stiano morendo; si dice da tanto tempo ma forse questa volta è vero per davvero 😡

🤢

Commedia per programmatori

Un’idea che lascio a chi potesse interessare con licenza Creative Common, nel sapore che volete. O anche senza cit. del tutto. Se interessa.

Ha di bello che è roba di vita vissuta, forse non tanto originale, cosa già cista e sentita, ma è così.

C’è solo l’idea, tutta da sviluppare, cosa che esula dalle mie capacità. Vado.

tehBoss: quando finisci la nuova versione che stai sviluppando?

me: se non capitano imprevisti oggi dovrei finire…

tehBoss: quindi domani possiamo usarla per l’elaborazione di *** con le nuove opzioni 😊

me: ahemmm… il test… sai…

[sipario]

Preghiera e raccomandazione: non dev’essere una tragedia.
Voglio l’happy ending 😊

In principio, ovvero cosa mi sono perso

C’è questo post di (Mike) Fogus sui primi tempi di Apple. Il post tratta di Pascal at Apple, ma anche d’altro. A me interessa principalmente l’altro.

Esperimento qui: provo a inerire (embed) dei tweets, chissà… 😉

Per quanto mi ricordo qui da noi l’Apple ][ non è stato come in America. Ho un paio –abbondante– di amici che ce l’avevano, tutti nerds, G ci ha fatto la tesi, G se l’era portato al Poli e lo usava lì (all’epoca era quello che oggi si chiama post-doc); entrambi autoassemblati, case di legno, monitor che oggi farebbe sgiai. F invece (ma forse era più tardi) l’aveva originale e poi ha continuato a seguirne l’evoluzione fino al MacIntosh (allora si chiamava così). A proposito del Mac ricordo perfettamente quella volta che per tutta la durata del viaggio G mi ha rintronato con le meraviglie di Lisa di cui aveva visto la demo a Milano; lui era un commerciale, un rappresentante di prefabbricati, vedeva il computer in modo diverso, quello che poi sarebbe diventato normale per tutti, prima dell’aiFon che poi è diventato il telefono.
OK, sono OT, mi riprendo.

Fogus lo seguo da tempo sul blog (sì stanno morendo, anche il suo) ma c’è su Twitter, molto attivo, anche per questa storia conviene seguire lì i cinguettii; non usa un tag particolare ma il 20 luglio è tutto per quell’argomento.

All’epoca io ero già impegnato in altre cose (Fortran su Prime, un mini, tipo PDP11) e mi sono perso tutta l’alba dei Personal Computer (quasi, vedi sotto). Ma per intanto qualche cit.

Da noi, qualche tempo dopo, si sarebbe fatto tutto ib Basic. E VisiCalc, il progenitore di Excel. Non sono mai riuscito a padroneggiare né l’uno né l’altro.

e, notevole per me

Sia il C (chissà dov’è finita la mia copia del K&R?) che il Lisp li ho scoperti all’inizio degli anni ’80, dopo il Pascal che sul Prime non funzionava; non funzionava neanche il Lisp del quale avevo avuto un nastro via ahumm-ahumm da R –chissà se si può dire, ormai dovrebbe essere in prescrizione? A proposito: ci sono siti dove trovi (quasi) tutta la documentazione del Prime ma niente sul Lisp; anche l’amico AP non ne sa niente. Vuoi vedere che il nastro era di una beta? Termine che allora non si usava. In realtà ci ho fatto molto poco, l’imbeccata me l’aveva data Doug Hofstadter (GEB e Le Scienze) ma ero isolato, non c’era il Web. E poi ero alle prese con il debug.

Sì, vale anche per qualche tempo dopo per HP. Il sistema operativo era piccolissimo e indistinguibile dal linguaggio: tutti usavano il Basic, il Pascal c’era ma si evitava con cura.

OK, tutte cose che mi sono perso. Come pure mi sono perso l’M20 Olivetti, con il PCOS, vita brevissima ma ha venduto tantissimo, subito sostituito dall’M24 compatibile IBM, cioè Micro$oft ma allora si diceva IBM.
Io intanto ero alle prese con il Fortran, avendo come riferimento il VAX di DEC; allora era solo un miraggio, dopo sarebbe diventato un protagonista importante e infine un guaio: gli utenti Digital rimanevano legati a VMS considerandolo molto migliore –secondo loro– di Unix.

L’interprete dei comandi Primos (la shell si direbbe oggi) non era programmabile (lo satebbe diventato in futuro, verso la fine) e allora si usava il CPL, un po’ come Bash di adesso ma molto meno versatile e senza i tools di supporto.

Il mio primo incontro/scontro con i PC è stato particolare, esotico: modificare un porogramma su VIC 20, antenato di Amiga, in Forth. Sì anche lì la faceva da padrone il Basic ma se avevi bisogno di strizzare fino all’ultimo byte il Forth era decisamente meglio.

Ma era giunta l’epoca di MS-DOS. No, non ne voglio parlare. E nenache di ToolBook, Director e Flash. Neanche del Basic, quick e Visual. Ma c’è stato anche il Pascal, Turbo, Borland e poi Delphi.

Adesso invece 👿 è cambiato tutto. Tutti che lavorano per l’online, con cose che non so e non voglio sapere.
O cose anche più strane, sistemi embedded, da ficcare in ogni dove. Un po’ di tempo fa ho visto gente di IBM commossa perché qualcuno ha nominato Roscoe (googlato per sapere come si scrive(va), cosa fosse non lo so). Intanto pare che Android… ma forse è solo gossip.

Tanto io sono vecchio 😜

Embed del tweet ancora da perfezionare 😐

:mrgreen:

A proposito di statistica (e altro, soprattutto altro)

Ci sono le catene di Sant’Antonio (diffidate!), non mi riguardano e ci sono le catene di tweets che a volte ci casco. Come oggi; adesso vi conto.

Non so chi ha cominciato ritwittando questo cinguettio: Very disappointing. The future for R and Python (IMHO) is collaborating on shared performance computing libraries using C/C++/LLVM.
Sì, certo: a volte –come in questo caso– 140 caratteri non bastano, non si capisce cosa voglia dire ma c’è il link a un altro tweet.
Prima però una precisazione: Wes non lo seguo, non ho il tempo anche se dovrei. Si presenta così: Craftsman of data analysis tools. Creator of Pandas. 🎉 OOPS! 😯  folowato 😎
Chi me l’ha proposto? temo che non lo sapremo mai; no ‘spetta, si tratta di risalire di due giorni nella tw-line, ce la posso fare. Uh! è stato
Jake VanderPlas 🚀; OK, sempre del giro NumPy. Bisognerebbe avere molto più tempo, ci sarebbero un sakko di nerds über assay!

Come dicevo prima di auto-interrompermi Wes linka questo: Really disappointed by this @infoworld article comparing #rstats and #python.
L’articolo molto deludente è qesto: Python vs. R: The battle for data scientist mind share.

A me da l’impressione di essere un giornalista come ce ne sono tanti in Rai e nei quotidiani italiani. Non essere del mestiere; parlare di cose che non fa tutti i giorni.
Ma forse sono troppo severo; il motivo del post è che dimentica almeno un terzo linguaggio usato per le analisi statistiche: il foglio di calcolo tipo Excel. Quando serve la media (e lo scarto quadratico medio per far vedere che si è approfondito) a volte (non sempre ma capita) che si finisce lì.
E se mi è consentito un ricordo storico: uno dei motivi dell’esplosione dei ‘puters come sono adesso è stato 1-2-3 della Lotus. Excel è venuto dopo e l’ha sostituito ma il primo è stato il Lotus (veniva sempre chiamato così) che aveva come antenato VisiCalc (pre-PC IBM).
Non di minore influenza per il decollo del PC (allora si chiamavano così, per personal computer) è stato WordStar, ws per tutti.

Questi ricordi sono tornati a tormentarmi in seguito al post su Unix. Ah! anche quello è venuto da un suggerimento, grazie prof! 🍓 🎵 😁

Potrei chiarire il percorso del tormentone: di solito si finisce di usare non quello che si vorrebbe ma quello che ha deciso il capo (magari dopo aver parlato con il commerciale), vedi Basic contro {Turbo|Borland} Pascal, p.es. Con Unix era ancora più complesso, veniva giudicato difficile dai vecchi e troppo caro dai commerciali; il capo non avrebbe mai chiesto a me (ma c’è capo e capo, mai fare di tutt’erba un fascio, (vedi anche sotto)).
Al tempo io mi pensavo che il  calcolatore  computer servisse per fare calcoli 😯

Ah! ‘ncora ‘na roba: R non l’ho mai affrontato; oltretutto sono davvero niubbo per quanto riguarda la statistica. E –una volta– avevo chi sapeva tutto quando serviva. Usava –tenetevi forte– APL e le sue evoluzioni; AP se mi leggi un saluto! 🍓 🎵 😁

:mrgreen:

Logistica informatizzata

nikon-small-world-butterfly-scales
Visto l’altro giorno, forse mi faccio dei nemici ma devo raccontarla 😜
Ormai tutti hanno il telefono che fa tutto quello che una volta si faceva con il computer.
Ormai si possono semplificare tante operazioni con internet –e il telefono ce l’ha– eliminando inutili passaggi umani.

Ecco il mio caso: per gestire gli ordini di una clientela stabile e ampiamente conosciuta fino all’anno scorso –uh! due anni ormai– si faceva l’ordine al telefono. Nel caso in oggetto l’ordine (in dialetto piemontese comand, pronuncia cumand) è semplice, basta identificarsi, precisare il codice del prodotto (sono pochi e mnemonici, mica l’Ikea) e il quintalaggio (termine tecnico). Va da se che è sempre urgente, non devi precisarlo che perderesti solo tempo. Chi riceveva la telefonata compilava un modulo che fotocopiava e passava al magazzino.
Visto che tutti hanno il telefono e internet si può informatizzare? Certo, semplicissimo, prima di subito. Fatto! 😄

Per i primi tempi si può adottare una procedura provvisoria: chi riceve la telefonata che continua ad arrivare compila l’ordine nell’app –previo inserimento del codice cliente– e racconta della nuova procedura automatizzata, quando sei comodo ti mandiamo il nostro tecnico…
Poi stampa l’ordine, 2 copie di cui una per il magazzino, fatto anche questo.

Ormai la fase provvisoria dovrebbe essere passata, da tempo. No, non esattamente: il cliente trova molto bello che l’app abbia anche l’interfaccia vocale.

Non vale nemmeno la differenza che via ‘puter non si è legati all’orario d’ufficio, mi dicono.
Funziona; l’informatizzazione va introdotta dolcemente, un po’ alla volta, adattandola alle condizioni ambientali 😜

:mrgreen: