torna ad essere corsi base, Re: [Soci SLIP] Android e Java [Era: corsi base]

loredana llcfree a gmail.com
Mar 15 Gen 2013 12:05:04 CET


Il soggetto iniziale di questo thread è sempre più appropriato, perciò
lo ripristino.

Apro un inciso:
Fra l'altro, ieri sera stavo vedendo la tv (in windows) e ho usato
gmail con firefox per uno dei messaggi. Così credo di aver capito
perché si tende a non cambiare il soggetto per adeguarlo al contenuto
dei messaggi: in windows bisogna davvero andare a scoprire come fare,
stesso vale per vedere l'header dei messaggi. Così come mi è stato
chiaro a suo tempo perché gli studenti stampassero chili di carta
senza numerare le pagine, con le conseguenze ovvie quando si
mischiano: perché in windows non è di default numerare le pagine e
molti studenti, ma non solo loro, non sanno più come si fa. Siccome
poi sono in molti, allora bisogna per forza che abbiano ragione loro e
numerare le pagine certo non serve a niente, vuoi mettere quanto più
moderno e potente sia un blocco di carta che al primo giro non si può
più leggere? E' anche ovvio perché in tanti non si sappia più
scrivere, organizzare il pensiero: in windows basta cliccare, e dalla
rete basta copiare, malamente, senza capire, con una facilità mai
vista prima.
Chiudo l'inciso e torno al therad originale.

On 1/14/13, Lucio Crusca <lucio a sulweb.org> wrote:
> In data lunedì 14 gennaio 2013 20:20:17, loredana ha scritto:
>> Non è pubblicità condividere il codice sorgente de software libero, è
>> il principio stesso su cui il software libero si basa (una delle 4
>> libertà fondamentali).
>
> Come vedi da quel software che ti ho segnalato, io sviluppo soluzioni molto
>
> specifiche su misura del cliente, tipicamente non possono interessare a
> nessun
> altro fuorché il cliente. Al limite potrebbero essere usate da altri come
> mio
> curriculum, quindi sarebbe pubblicità.

"Preciso, non discuto" significa che non mi lascio trascinare nella
polemica personale ma non smetto di ribadire quello che è sbagliato.
Lo faccio perché anch'io so che qualcosa di utile ne viene sempre
fuori (lo so per esperienza, lo saprei anche se nessuno me lo dicesse,
così come so per esperienza che una buona parte di una generazione
cresciuta e pasciuta all'ombra del grande fratello spesso non sa
neppure più lontanamente cosa significhi discutere, ma questo non
significa che non lo possa riscoprire e che non lo farà).

Perciò, ci tengo a precisare:

Lucio, e tutti, rilasciare il codice sorgente non lo si fa perché
debba servire a qualcuno per farci esattamente la stessa cosa.
Significa dare ad una comunità l'opportunità di studiarlo e
modificarlo e decidere se e come usarlo. Senza curarsi a chi possa
esser utile, insomma. E' questo lo scopo del software libero. Capisco
che possa andare contro il senso comune di molti, ma ciò non toglie
che sia esattamente questo che si intende per software liibero.

Sviluppare codice usando software libero senza poi rilasciare quel
codice NON è la stessa cosa, anzi, è l'opposto di quel che si intende
per software libero. E' quello che io sottolineo ogni tanto in questa
lista e altrove, indicandolo con un termine un po' forte ma
sostanzialmente esatto, che va dritto al punto, come "rubare alla
comunità", cioè a noi tutti, cosa che viene fatta a piene mani, dagli
individui in su. Questo è l'opposto del software libero, dei principi
su cui si basa e della ragione per cui il software libero è nato nel
1984, grazie ad un solo uomo a cui fischieranno spesso le orecchie. Il
software aperto è un'altra cosa, è venuto molto dopo e non ha nessun
obbligo così stringente verso la comunità, cioè noi tutti.

Chi sviluppa non è obbligato a sviluppare software libero, ma se
pretende di essere creduto quando dice che lo fa, allora non può
esimersi dal rilasciare il codice. Altrimenti sta ovviamente ciurlando
nel manico.

Il poterlo fare o meno, nel tuo caso e in generale, dipende dalla
licenza con cui hai rilasciato il codice ai tuoi clienti. Ora, a me
onestamente stupirebbe molto  se tu fossi riuscito a rilasciare tutto
o anche in parte il codice che produci con una licenza libera nel
senso definito da chi ha definito le licenze libere e perciò qualche
competenza ce l'ha. So quanto sia difficile fare una cosa del genere
in Italia, anche negli ambienti in teoria più ricettivi.

Perciò, se è così (hai rilasciato con licenza libera e quindi ci puoi
mostrare il codice), bene, molto bene. Se non è così, pace, ma allora
rientri, come tutti o quasi, nella categoria di chi usa il software
libero per sviluppare software non libero, sia esso open o
proprietario (se non puoi rilasciare il codice, di sicuro è
proprietario). Questo, usar esoftware libero per scrivere codice
proprietario, non ha ovviamente nulla a che vedere con il software
libero. E DEVI DIRLO, SE è così, quando insegni ad altri e ti rivolgi
ad altri su una lista di software libero (da statuto, di cui sei
presiedente), altrimenti propaghi una falsità, menti sapendo ben di
mentire. Come fanno in tanti. Per carità, sei certamente in buona
compagnia. Ma non come fanno tutti. Il rischio di incrociare qualcuno
che ti ricordi come stanno davvero le cose c'è. Se scrivi a Stallman
te lo ricorda lui, insieme alla tua responsabilità personale per
quello che fai TU, indipendentemente da quello che fanno gli altri. Ma
senza andare troppo lontano, con me in lista, questo non è un rischio,
è una certezza. Per questo dico che prima o poi la smetterai. Perché
so che non la smetto io e sono in pieno diritto nel farlo, su una
lista di software libero. E, a livello personale, quello che piace
tanto a te, sappi che con me non funziona attaccare come un torello, a
me non fa nessun effetto, un po' di compassione (nel senso di patire
con, in questo caso, con te), neppure un briciolo di rabbia. L'unica
cosa che mi fa effetto è dimostrarmi che mi sbaglio in quel che dico e
scrivo e finora posso dirti che in questo thread non è successo.

> "Il resto" no mica l'ho mai detto, altri portabili come Java esistono. Sei
> tu
> che hai detto che Java non è portabile perché l'agenzia delle entrate ha
> fatto
> un ottimo lavoro e comunque ne è uscita una schifezza (con altre parole, ma
> il
> concetto era quello). Certamente non sono portabili Fortran77 e C. Perl lo è
>
> in parte in quanto puramente interpretato,

Se il C non fosse portabile non esisterebbe il software libero nè il
kernel linux. Non esisterebbe neppure il codice proprietario,
compilato con compilatori liberi o no, che si installa tutto usando
solo binari, se è per questo.

La libreria in assoluto più usata, al momento, è gnu libc

http://www.gnu.org/software/libc/

Se invece vuoi un applicativo, prendi emacs. Ovviamente, ce ne sono
moltissimi altri. QUALSIASI linguaggio che sia compilato o
interpretato permette di sviluppare applicazioni portabili da un
sistema all'altro. Compreso il fortran 77 (lo avevo fatto io, ma non è
questo che conta, lo può fare chiunque lo sappia fare). Tutti i
linguaggi moderni (assembler e linguaggi macchina a parte) sono
compilati o interpretati o vengono con il loro corredino di macchina
virtuale, come java e derivati. Se il compilatore ha un back end per
architteture diverse, allora ogni applicazione sviluppata in quel
linguaggio e compilata con quel compilatore gira su tutte quelle
architetture. Sentito parlare di cross-compilazione? Prendi debian. Ma
forse tu non sai su quante architetture diverse gira debian. Ma prendi
anche solo una distribuzione qualsiasi. Mica uno si installa i
sorgenti e ricompila. Come mai può usare i binari? Grazie,
sostanzialmente, a gnu libc. E infatti è proprio quello ciò di cui si
cerca di fare a meno e android lo dimostra in pieno. Non ce n'e' alcun
bisogno, di farne a meno, nulla ma proprio nulla vieta di usare la
versione per sistemi embedded e di sviluppare le relative applicazioni
con gli strumenti liberi (debian supporta arm da sempre, per esempio),
nulla ma proprio nulla impone di limitare il kernel linux, di non
usare un root file system standard, etc, vale a dire nulla ma proprio
nulla costringe,da un punto di vista tecnico, ad usare un sdk e delle
api proprietarie, come nel caso di android.. E' una scelta ben
precisa, quella di android, e per motivi a me fin troppo ovvi. Punto.
Punto nel senso che basta per me, per te, per tutti star a vedere
quello che succede, inutile discutere io e te su questo aspetto
all'infinito. Stiamo a guardare in quale direzione evolvono android,
gmail, google etc. Tenendo in conto le pressioni a cui sono
sottoposti, da una parte e dall'altra e come devino la rotta in
funzione di queste o quelle.

Per questo star a vedere, basta documentarsi. Facendo molta attenzione
a quello che circola in italiano e rifacendosi il più possibile agli
originali, a meno che non si tratti si traduzioni ufficiali,
verificate e controllate da un'intera comunità. Persino nexus si
affida alla traduzione di goole per l'articolo di Stallman sul
guardian più volte citato in questo thread. E vi lascio immaginare con
quale sottigliezza il traduttore automatico distingua free as in
freedom da free as in free beer... o altro. Che ci caschi Nexus la
dice lunga anche su Nexus. Questo è un vero peccato, ma è così.

Se vuoi smentire, fa pure. Accomodati. Attento a quello che scrivi,
però, perché resta in archivio. Non mi stancherò di sottolinearlo
perché non mi stanco di ripetere tutte le vote che posso che la rete
non va trattata con leggerezza, quello che si scrive resta e si
dovrebbe imparare a scrivere con il retro-pensiero che tutti possono
leggere, perché è davvero così, né potrebbe essere altrimenti. La rete
insegna ad essere responsabili, se si capisce fino in fondo cos'è la
rete.

Forse adesso è il caso per te di smettere di scrivere in buona o
cattiva fede falsità così palesi. Nel primo caso rivelano ignoranza,
nel secondo che probabilmente la bile ti fa smettere di ragionare.
Una debolezza da curare. In ogni caso, l'informatica non la riscrivi
tu a modo tuo perché a te piace java. I compilatori e la loro funzione
non li cancelli tu, E neppure decidi tu, a seconda della tua
convenienza, cosa sia il progetto GNU o il software libero o la
portata della teoria di Turing.  Quelli esistono al di fuori di te.
Per quanto strilli e per quanto ti danni, a chi ti legge resta sempre
la possibilità di verificare di persona, se lo vuol fare. E' solo
basandosi sulla pigrizia e sull'ignoranza che si può continuare a
mentire alla gente. Ma non sempre e non tutti restano pigri ed
ignoranti, qualsiasi sia l'argomento che finisce per interessarli.
Questo dovrebbe indurre tutti alla prudenza (e alla calma). Si parla
di cose che stanno in rete e in terra e prima ancora in tutti i testi
di informatica su cui si formano tutti gli informatici e che ognuno
può verificare, mica del sesso degli angeli in cui si crede a chi si
vuole o dei testimoni di geova.
Si parla di quel che esiste!

> Java è portabile, ma in più è compilato
> e
> il binario compilato è pure lui portabile.

Java inoltre offre qualsiasi
> funzionalità si possa immaginare. Allo stesso modo di Java sono portabili
> anche altri linguaggi (Clojure, Groovy, Scala, ...), ma guarda il caso sono
>
> tutti linguaggi che alla fine compilano eseguibili per la Java Virtual
> Machine.

Anche TUTTI, ma proprio TUTTI i linguaggi per cui c''è un compilatore,
libero o proprietario che sia, per una virtual java machine, così come
per una virtual o real machine. Dai, smetti di aggrovigliarti su un
errore di fondo. Non arriverai ad aver ragione. Piuttosto fai come
faccio io, quando mi fanno capire dove sbaglio: sono riconoscente
perché posso imparare qualcosa di nuovo. Spesso correggere un'idea
errata ha conseguenze profonde e benefiche, passato il bruciore
dell'amor proprio ferito. Anche quel bruciore è un ottimo segno e fa
bene. Aiuta a sbagliare meno per sentirlo meno, cioè spinge ad
imparare. Questo fa sempre bene, a sè e agli altri.

> Intendevo farti notare che discutere e precisare sono la stessa cosa. E
> anche
> che a 16 anni bussarono alla porta di casa mia due testimoni di geova. Dopo
> circa 15 minuti di discussione mia mamma, passando dietro di me, disse che
> avevano trovato quello giusto. Dopo 25 minuti decisero di andarsene di loro
> volontà, io non li mandai via.

Va bene, al via le sciocchezze. Solo una volta, per far notare quanto
tutto ciò sia stupido e davvero non c'entri niente, Allora, mia nonna
è morta quando io avevo undici anni. era lei che diceva che da grande
avrei fatto l'avvocato e che la lingua non ha le ossa ma se le fa
rompere. Ero per altre cose una brava bambina (soprattutto perché i
miei lavoravano e mica sapevano quel che facevo), ma "ripondevo". Ora,
la lingua non ha le ossa ma se le fa rompere non perché io insulti,
come chi mi legge o ascolta sa, perché per troppi è inaccettabile
sentirsi dire un pezzetto di verità o accettare che l'errore è non
solo inevitabile, ma utilissimo per imparare, e che imparare fa un
pochino male subito, quando si deve ammettere con se stessi e gli
altri che ci si è sbagliati, ma un gran bene poi.

Tornando ora alle sciocchezze, come vedi, ho cominciato prima (11 <
16), sono più vecchia e perciò ho più pratica, non mi hanno ancora
rotto le ossa, ma ci hanno provato in tanti. In tanti, anche, si sono
ritrovati a riconoscere non che avevo ragione io, ma che quello che
dicevo corrispondeva alla realtà delle cose. Rompere le ossa a me,
perciò, non sarebbe servito a molto, la realtà se ne restava lì, bella
integra, perché il prossimo la notasse e se ne occupasse. Alo setsso
modo, molte altre volte mi sono corretta io, perché quello che mi
dicevano corrispondeva alla realtà delle cose. E' così che ho imparato
tutto quello che so e che continuo ad imparare ogni giorno.

Però io non sono più né faccio più quello che continui a fare tu, da
quando ti conosco (in lista). Io non attacco le persone, neanche
quando proprio se lo meriterebbero, non ne ho bisogno. Le persone e
rispetto, sempre. A me interessano i problemi, interessa e diverte
risolvere problemi. So che si fa meglio in tanti, purché si voglia
collaborare a risolvere problemi, e non invece scendere come galletti
nell'arena o a stare sugli spalti a far scommesse e tifo.

Forse la smetterò, ma solo dopo di te o
> quando
> tu inizierai a dire cose dettate da conoscenza reale, non inventate e
> dedotte
> dalla teoria della macchina di turing, che, per quanto valida, è una teoria.

Sei maledettamente in errore, qui. Quella di Turing non è una teoria
qualsiasi che si è inventato qualcuno un mattino. E' la teoria che
definisce in modo completo cosa sia calcolabile e cosa no, perciò
l'intera scienza dell'informazione. Se mai la studierai e ne capirai
la portata, ne trarrai un enorme vantaggio per capire quello che fai
tutti i giorni (e la smetterai con questa storia di java come
linguaggio particolare, ma questo è niente in confronto a quante altre
cose ti saranno ovvie).

Ti renderai anche conto di quanto sia stupido ricordare che nessuno
usa una macchina di Turing perché non è utile. Non la si usa perché
non è lo strumento giusto per programmare in generale, così come non
lo è più il inguaggio macchina (all'inizio c'era solo quello, però, ed
è con quello che Turing ha programmato il primo calcolatore fisico su
cui ha potuto mettere le mani a Manchester, anche a quel tempo c'erano
quelli che credevano di esser più bravi perché facevano un errore in
meno di lui programmandolo...).

Non si usa la macchina di Turing per programmare così come nessuno si
sognerebbe di usare un linguaggio di programmazione (anche se sono
tutti universali, nel senso di Turing, cioè equivalenti alla macchina
universale di Turing per quel che concerne quel che possono o meno
"calcolare") per dimostrare qualcosa in teoria. I inguaggi di
programmazione sono troppo "oscuri", pieni di fronzoli inutili per
questo scopo. Invece per le dimostrazionii si usano la macchina di
Turing o altri formalismi, tutti equivalenti, perché catturano
l'essenza stessa di cosa significhi "calcolare" (non in senso
numerico, in senso algoritmico, di calcolo meccanico). Ma questi
formalismi mancano dei fronzoli che aiutano a programmare. Mancano dei
fronzoli, e hanno tutto l'essenziale: questo ne fa lo strumento adatto
per capire.

Per ogni cosa c'è lo strumento giusto, non c'è un solo strumento. Se
ti limitassi a dire che java è comodo per certe applicazioni nessuno,
non certo io, si prenderebbe la briga di perder tempo a discutere se
sia vero o meno. Non fai che ripetere ovvietà, quando dici che java è
comodo per cose per cui fortran non lo è. Non è un'osservazione acuta,
non è qualcosa che interessi discutere. E' il resto che dici che è
falso e va perciò corretto (non per te, se ti ostini a non voler
capire, per tutti gli altri che ci leggono). E per questo che continuo
con le "precisazioni".

Quanto alla teoria di Turing, vi siete mai chiesti come fate a
"parlare" ad un calcolatore, cioè a ferraglia inanimata, facendogli
fare quel che volete? Se la studiate, lo capite. il trucco sta tutto
nel poter usare simboli a cui corrisponde un evento fisico e nel
poterli combinare in modo infinito. Di quei simboli ne bastano due, a
cui corrispondono due diversi eventi fisici, che possono essere
distinti, così come possiamo distinguere 0 da 1.
Con i simboli si codificano tutte le istruzioni e i dati. Siccome i
simboli sono facilmente manipolabili, Turing ha definito l'intera
scienza dell'informazione (cosa sia possibile calcolare
"meccanicamente", cioè con una macchina, e cosa no) usando
l'equivalente del linguaggio macchina (quando non esistevano i
calcolatori e neppure il  linguaggio macchina, ovviamente), ma per una
macchina universale, la macchina universale di Turing, appunto. Non
dico che tutti si debbano entusiasmare per questo capolavoro, ma
negarne la portata è davvero solo e soltanto segno di ignoranza
profonda sull'argomento.

Loredana




Maggiori informazioni sulla lista Soci