Prima di cominciare --sento davvero che devo-- devo cominciare con una precisazione, mia. Il mio social-coso preferito è Twitter. Poi ci sono anche su Facebook e mi capita con una certa frequenza di fare un salto su YouTube. Nessun alto, ho provato Mastodon ma mi sembra vuoto (o sono io che non so socializzare (cosa vera in qualche misura, ne sono cosciente)).
Su Facebook, il primo che ho scoperto (grazie Francy!), ho amici che conosco nella realtà e altri che purtroppo no ma sono in qualche misura praticamente indistinguibili dai reali; poi se qualcuno mi chiede l'amicizia propendo in genere per il sì (ma c'è una qualche aleatorietà legata a fattori politici, empatici, oroscopici, altri ancora). Ecco la prassi di chiedere l'amicizia e ottenerla determina la composizione della tua tribù. Vero che ci sono le pagine (credo si chiamino così, per esempio questa di Neil deGrasse Tyson) dove non è 'micissa propriamente detta e non bilaterale (o dovrei dire biunivoca?).
Con Twitter invece è completamente diverso: vedi un tweet che ti piace, guardi la timeline dell'autore e, se porta, lo followi. Niente bisogno di richiesta e relativa (bramata) approvazione. E allora capita che seguo gente che sono --per qualche aspetto-- come vorrei essere io: programmatori davvero nerd, anche funzionali, scienziati, presidenti americani emeriti (uno), giornalisti (che non trovi nei giornali, specie da noi), altri brillanti in altri campo, tanti, anche per cose meno seriose. Col tempo ho trovato diversi accademici, insegnanti o ex-insegnanti (pare che anche nel resto del mondo non sempre sono apprezzati come si dovrebbe e fuggono). Gli insegnanti interagiscono con gli studenti (ovvio) e qualcuno di questi ultimi sono interessanti tanto quanto i prof. E poi capita evolvono, si laureano, diventano membri del set degli insegnanti (ma anche no). In genere questi --sono giovani-- hanno entusiasmo, cose da raccontare (stanno scoprendo il mondo (parte del --) e ce ne rendono partecipi.
Ecco io ho trovato un cinguettio di una studentessa -> dottoranda -> insegnante -> fondatrice di una start-up (di non so cosa ma la zona è quella infamousa). Non è l'unico caso che potrei citare ma una concatenazione di eventi (miei personali) m'inducono a citarla e commentarla. Si tratta di Jean Yang e questo è il tweet: I have many thoughts about the stereotypes people assign to programming languages that get solidified as technical "truths!" .@AriTalking and I wrote an essay about this some years ago. Ariel twitta poco (quest'anno un solo tweet), non l'avevo ancora intercettato, sembra OK anche lui. Ma oggi l'argomento è il saggio C is Manly, Python is for “n00bs”: How False Stereotypes Turn Into Technical “Truths”.
Non mi ci provo a riassumere il saggio (saggio!) è da leggere tutto, fin dall'inizio: "Language-based snobbery litters the software industry". Cita subito i C-isti riguardo il Pascal, Linus Torvalds riguardo al C++ e continua. Ma anch'io ho i miei: quando ho iniziato c'era solo il Fortran (IV) che era il linguaggio serio, il resto tutta robaccia (Cobol, Pl/1, Basic, ...). Io mi ero scritto (praticamente assemblando pezzi di codice copiato da manuali e riviste semi-pubblicitarie) mezza dozzina di subroutines in PMA (Prime Macro Assembler) per la gestione (molto elementare dei files) ma le usavo solo io. Quando è arrivato il Fortran 77 i vecchi lo bannarono. Io intanto --ebbene sì-- il Basic che stava per esplodere con i PC lo evitavo come --OK, mi vergogno adesso, non ne parlo. L'interprete dei comandi su Prime non era programmabile (niente a che vedere con la Shell di Unix) ma c'era un tool --CPL, ma non quello normale, una cosa solo Prime-- e quello era tollerato, a supporto del Fortran. Quando finii sotto Unix mi fotocopiai il (o meglio un) manuale di AWK e creai il mio primo script usabile ma il mio capo di allora me lo fece riscrivere in Fortran (77, ormai si usava solo quello, cioè il compilatore consentiva le convenzioni del IV o 66 solo con opzioni sulla riga di comando).
Con i personal computers arrivarono tanti linguaggi, abitualmente copiati e distribuiti abusivamente ma tanto quelli poi utilizzati erano una minoranza minima. Il Turbo Pascal (lo scoprii in una scuola di ragionieri, versione 3.0) diventò il mio favorito quando il mondo usava il Quick Basic e poi la sua evoluzione il Visual Basic, sotto Windows. I nerds invece erano per il C++, prima il Turbo e poi l'MS. Ma c'era anche altro e le sette erano molto intansigenti, tutte. Anch'io che ero relativamente eretico ma intollerante come tutti. Un giorno mi trovai a modificare uno script Lua, linguaggio mai sentito nominare. Ma in quell'occasione un amico mi disse "cosa ne pensi di Python?", "eh? cos'è?". Sarebbe presto diventato la mia scelta. E lo è ancora oggi, anche se...
Come Jean e Ari sono diventato molto più tollerante, lo so che i linguaggi sono tutti equivalenti, quasi. Per ragioni pratiche all'interno di un ambiente di lavoro piccolo conviene standardizzarsi e limitare le scelte. In genere conviene concentrarsi su Matlab (anzi la versione FOSS Octave) o Python. Sono facili da apprendere, anche per chi dalla scuola arriva con il C++ che non serve per le cose semplici di solito richieste. C'è anche chi è affezionato a Ruby ma l'ambiente non è ricco come quello di Python o Octave. Ah! JavaScript, specie per il Web. Java invece è --secondo me-- complicato, troppo. Haskell l'ho provato ma non sono riuscito a sintonizzarmi, ho una certa età e la mente non è più così elastica (anzi non è che allora lo fosse più di tanto).
Tornando ai contatti Twitter la setta che più di tutte oggi vede negativamente le altre è quella dei lispers, comprendente non solo il Common Lisp ma le sue evoluzioni, Scheme, Guile e varianti. Sono visti con sospetto per converso dagli altri tutti. No, non faccio nomi. Non sono un
Davvero sono tollerante. Da giovane leggendo Rabelais avevo fatto mia la regola dell'Abbazia di Thélème « Fay ce que vouldras ».
Ma poi capita che mi viene da linearizzare (flatten) liste in Python. Risulta non semplice, neanche chiedendo aiuto (al solito) a Stack Overflow. E pensare che con Racket è una funzione di sistema:
$ racket
Welcome to Racket v6.11.
> (flatten '((a b) c (d (e f))))
'(a b c d e f)
>
Sì, in condizioni particolari sono richiesti mezzi speciali.
🔴
Nessun commento:
Posta un commento