[ninux-not-wireless] Primo linguaggio di programmazione

federico la morgia super_treje at hotmail.com
Tue Aug 19 13:32:41 CEST 2014


Rispondo in linea.

> Date: Tue, 19 Aug 2014 11:00:24 +0200
> From: massimiliano at null.net
> To: not-wireless at ml.ninux.org
> Subject: Re: [ninux-not-wireless] Primo linguaggio di programmazione
> 
> On 18/08/2014 21.55, federico la morgia wrote:

> Io da Signor Nessuno non posso che prendere atto delle tue affermazioni 
> ma mi piacerebbe capire come un software interpretato o eseguito 
> attraverso una virtual machine possa avere un runtime migliore di un 
> software compilato e/o scritto in Assembly.
> 
Perchè la JVM traduce in assembly il codice in bytecode e prima ancora traduce il bytecode il codice sorgente.Si passa dal bytecode in modo tale che lo stesso codice possa essere eseguito su hardware differenti senza precedentemente aver dovuto scrivere tante volte il codice sorgente per quante piattaforme tu vuoi che venga eseguito.L'importante per Java è che sulla piattaforma sulla quale lo vuoi eseguire esista una JVM.
Con il C sei costretto a ricompilarti il codice sorgente ed in certi casi anche a modificarlo quando vuoi portarlo su altre piattaforme.Esempi lampanti sono i firmware openwrt delle antenne, 1 firmware per ogni famiglia di antenne su cui deve essere caricato, eppure il codice sorgente di openwrt è sempre quello o cambia poco tra una piattaforma e l'altra !Se ipoteticamente fosse stato fatto in Java o in Python si avrebbe 1 solo codice per TUTTE le antenne.


> Poter dialogare a basso livello per scrivere delle routine critiche 
> potrebbe velocizzare l'applicazione ?
> 
Dipende.Da cosa dipende ?Dipende dalla tua bravura nell'ottimizzare le routine/metodi/funzioni che vengono utilizzati maggiormente.Attualmente difficilmente si riesce a scrivere un codice manualmente (scritto correttamente non alla cacchio di cane) più ottimizzato di quanto farebbe un ottimo compilatore.D'altra parte dipende anche dal campo di utilizzo avere o meno la possibilità/vantaggio di andare a toccare funzioni/routine di basso livello.Mi vengono in mente tutta una serie di framework/middleware di altissimo livello che si poggiano su altri frameworks.Esempi : da Spring, a Struts, ad Hibernate agli application server GlassFish o JBoss ai frameworks di interfaccia grafica web RichFaces/Icefaces/JSF, ecc.ecc.ecc. milioni di altri casi anche per la sicurezza di accesso (JAAS).Se tu pensi che sia utile andare a mettere mano a funzioni di base su cui poggia tutta questa roba pensando di migliorare il tutto secondo me, oltre a fare un grandissimo casino, vai sicuramente a peggiorare il tutto !Esempio di modifiche a "basso livello" : la definizione di File con conseguente modifica per gli accessi in lettura e scrittura.Se modifichi quella classe che è molto a basso livello rispetto ai framework scritti in precedenza che usi per semplificarti la vita per creare ad esempio vasti programmi in tecnologia J2EE, perchè pensi di migliorare l'accesso ai files, è facile che se tocchi quella libreria File di java.io poi non funzioni più nulla oppure funzionerà peggio di quello che credi!Mentre se tu progetti la tua applicazione e la implementi correttamente andando ad utilizzare correttamente le strutture dati (array,liste,code,pile,ecc.ecc.) che meglio sfruttano il tuo hardware ed evitano o di utilizzare troppa cpu o troppa memoria o troppa rete, ecc.ecc.ecc. secondo me rendi migliore il tuo programma.Se dopo tutto ciò il tuo programma risulta non essere scattante come pensavi allora è solamente un sottodimensionamento dell'hardware, insomma hai cannato l'analisi del progetto su dove doveva girare tutto sto bandone di software che per fare quello di cui avevi in mente ci voleva minimo una macchina più potente !Altrimenti per fare tutto basterebbe sempre e comunque un cellulare di 10 anni fà !

> 
> Perche' pensi che dare la possibilita' ad un utente normale di fare cose 
> che sono sempre di competenza degli addetti ai lavori perche' 
> prettamente tecniche puo' essere una cosa sbagliata ?
> 
Come no ! Come dice sempre Fish a chi non sa mettere le mani sulle antenne : le mani nel c...o se le devono mettere le persone prima di toccare senza sapere cosa stranno facendo !Ed io concordo ancora di più nella programmazione !Sto parlando di situazioni di "produzione" a casa sul proprio pc tutti possono mettere mano ovunque ! Tanto male che vada si imputtana tutto così tanto che si formatta e buona notte al secchio !
> 
> Hai qualche URL per capire cosa bisognerebbe studiare ?
> 

io farei un sunto di ciò : 
Per capire un minimo le piattaforme di calcolatorihttp://www.dis.uniroma1.it/~ciciani/DIDATTICA/CALCOLATORI-I/info.htmlhttp://www.pmar.it/ce2/index.html
Per capire un minimo sia la trasmissione dei segnali (cavo, fibra, etere) che di reti di calcolarihttp://net.infocom.uniroma1.it/corsi/Telecomunicazioni_Inf/telem.htm
Per capire come sono fatti i sistemi operativi (principalmente si usa il linguaggio C)http://www.dis.uniroma1.it/~quaglia/DIDATTICA/SO-I/http://www.dis.uniroma1.it/~quaglia/DIDATTICA/SO-II/http://www.dis.uniroma1.it/~quaglia/DIDATTICA/SO-III/
Da questo punto in poi si può decidere dove proseguire se verso i servizi oppure verso la programmazione a "basso livello" o programmazione scientifica e di che tipo.

> Non riesco ad impararlo, ha una sintassi che non mi piace, ho problemi 
> ad utilizzare i puntatori e qualche altra cosa.
> 
> Mi piace tantissimo l'Assembly e se riuscissi a studiarlo come si deve...
> 
Personalmente la sintassi più ostica che io ho difficoltà ad imparare perchè la ritengo "poco pratica" per la mia forma mentis è il Python, per l'indentazione, mentre Python e Java Script per la tipizzazione debole del linguaggio che la ritengo una zappata sui piedi rispetto alla tipizzazione forte che si ha su C e Java, ed altri linguaggi.
Secondo me l'assembly ti piace perchè non conosci nient'altro e sono sicuro che se tu dovessi fare una cosa in assembly utile impazziresti.Ti faccio un esempio stupido e banale che ti invito a farlo in assembly.Io in java per collegarmi ad un sito internet e scaricarmi il contenuto uso queste semplici istruzioni dentro al main (ad esempio) : 

URL miaURL = new URL("http://www.ninux.org");
BufferedReader in = new BufferedReader(new InputStreamReader(miaURL.openStream()));
String inputLine;
while ((inputLine = in.readLine()) != null){
   System.out.println(inputLine);}in.close();
Questo metodo legge il contenuto della URL e te la stampa a schermo (una sorta di browser testuale estremamente primitivo e primo di links).Ora ti sfido a realizzare queste 6 righe di codice in assembly e vediamo quante righe escono fuori e soprattutto se per te tutta la fatica che farai per realizzare questa banalità in assembly può essere utile a qualcuno vista la potenza di altri linguaggi di programmazione!



> 
> In un contesto Ninux stiamo cercando di migliorare un discorso a livello 
> di Telematica, di Comunicazione, Liberta' etc.
> 
> In questo contesto di programmazione, di base informatica invece che si 
> puo' fare ?

Il discorso non si sposta di una virgola se lo approfondisci correttamente !Le cose a basso livello sempre in C le farai ed i servizi sempre in linguaggi ad alto livello utilizzando montagne di framework e middleware dovrai usare per non impazzirti e reinventarti ogni volta la ruota da solo !Poi l'invito mio è quello di non credere alle mie parole ed a documentarti massicciamente su tutto.Già solamente cercando su wikipedia tutte le tecnologie/framework/middleware/linguaggio che ho scritto su questa email andando a capire a cosa servono, perchè sono stati creati, come funzionano, ti accorgeresti di come ti sei autolimitato andando a fossilizzarti ed infognarti da solo con l'assembly.
Buono studio !
P.S. : Bisogna invogliare le persone a mettere i quotidiani sulle finestre !
http://images.corrieredelmezzogiorno.corriereobjects.it/campania/fotogallery/puglia/2014/03/Foto_scuola_1/img_Foto_scuola_1/8_672-458_resize.jpg
http://images.corrieredelmezzogiorno.corriereobjects.it/campania/fotogallery/puglia/2014/03/Foto_scuola_1/img_Foto_scuola_1/9_672-458_resize.jpg
http://www.elettrosmog.com/elettrosmog1.jpg
http://t1.gstatic.com/images?q=tbn:ANd9GcT5pTQvQE9tlRA1j1CgFe40mHghbYQdY8Itz9rE_LH9KMj55kaNBg

http://images.corriere.it/salute/dizionario/img/Salute/Volume3/Media/elettrosmog2-app_gallery.jpg

Nuovo gadget per il 2015 che consiglio contro le radiazioni : http://www.auroraproject.it/Galleria%20immagini/250px-Ragazzo_con_cappello_di_stagnola.jpg


> _______________________________________________
> Not-wireless mailing list
> Not-wireless at ml.ninux.org
> http://ml.ninux.org/mailman/listinfo/not-wireless
 		 	   		  
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://ml.ninux.org/pipermail/not-wireless/attachments/20140819/e983ed91/attachment-0001.html>


More information about the Not-wireless mailing list