-
Vabbe'...Scritto daaltgutente che non utieneil 2013-02-02 23:09:04.0 alle 2013-02-02 23:09:04.0Trollate totali: 11540mentre Lich torna a leggersi il manuale di Java, io torno a modificare i sorgenti del set d'istruzioni IA-32 per L.in.oleum, 'che` da quando hanno tolto la NTVDM mi tocca renderle ricompilabili con MASM32 invece di TASM. E ho scoperto che MASM32 non supporta push e pop multiple come "push eax ebx" seguite da "pop ebx eax", macche`, le vuole separate in "push eax", "push ebx", "pop ebx", "pop eax". Mafanculo, ora ho fior di occorrenze da splittare con le macro.
-
Re: Vabbe'...Scritto daNon Autenticatoil 2013-02-03 03:45:34.0 alle 2013-02-03 03:45:34.0Scritto da: altg
> mentre Lich torna a leggersi il manuale di Java, io torno a modificare i sorgenti del set d'istruzioni IA-32 per L.in.oleum,
Torna a farti le seghe piuttosto.-
Re: Vabbe'...Scritto da:
> > mentre Lich torna a leggersi il manuale di Java, io torno a modificare i sorgenti del set d'istruzioni IA-32 per L.in.oleum,
>
> Torna a farti le seghe piuttosto.
Quoto, ascolta i consigli dell'esperto
!
`"la realta' non e' cosi' terrificante come vogliono farti credere" - Giambo ` - Wakko che cita Giambo-
Re: Vabbe'...Scritto daaltgutente che non utieneil 2013-02-03 12:26:14.0 alle 2013-02-03 12:26:14.0Trollate totali: 11540> > > mentre Lich torna a leggersi il manuale di Java, io torno a modificare i sorgenti del set d'istruzioni IA-32 per L.in.oleum,
> >
> > Torna a farti le seghe piuttosto.
>
> Quoto, ascolta i consigli dell'esperto
!
Quello l'ho fatto poi, prima di dormire.
La prima attivita` non escludeva la seconda.
Ho finito poi stamani di splittare tutte quelle push/pop. L'unica cosa rimastami poco chiara (che non ricordo bene) mentre intanto ripassavo tutto il set d'istruzioni, e` il pattern del modulo in virgola mobile, che fa cosi`...subpattern macro fprem fstsw ax sahf jpe $ - 6 endm
Jump on parity even, 6 byte piu` in alto, cioe` a fprem. Mi ricordo vagamente che fprem era un remainder "parziale", e probabilmente dev'essere ripetuto sugli operandi nello stack della FPU finche` uno dei bit della parola di stato del coprocessore, passato nei flag della CPU, risulta nel flag di parita` in stato "odd", che per qualche ragione segnala la fine dei passaggi del calcolo. All'atto pratico l'istruzione e` intesa calcolare, per esempio, 15.5 % 10.0 = 5.5. Il modulo con operandi in virgola mobile, appunto. Ma c'era il problema che il sorgente era rimasto in una condizione strana, probabilmente perche` tempo fa avevo fatto casino per distrazione senza poi provare a riassemblarlo: al posto di fprem avevo ri-scritto "subpattern", cioe` infilato la macro nella macro stessa. TASM a quanto pare non segnalava quest'assurdita`, ma MASM giustamente fallisce con un "nesting level too high" dopo essere entrato in loop. Ora mi chiedo se la ricostruzione sia giusta. Boh.-
Re: Vabbe'...Scritto daaltgutente che non utieneil 2013-02-03 12:44:19.0 alle 2013-02-03 12:44:19.0Trollate totali: 11540> > > > mentre Lich torna a leggersi il manuale di Java, io torno a modificare i sorgenti del set d'istruzioni IA-32 per L.in.oleum,
> > >
> > > Torna a farti le seghe piuttosto.
> >
> > Quoto, ascolta i consigli dell'esperto
!
>
> Quello l'ho fatto poi, prima di dormire.
> La prima attivita` non escludeva la seconda.
>
> Ho finito poi stamani di splittare tutte quelle push/pop. L'unica cosa rimastami poco chiara (che non ricordo bene) mentre intanto ripassavo tutto il set d'istruzioni, e` il pattern del modulo in virgola mobile, che fa cosi`...
>
>> subpattern macro > fprem > fstsw ax > sahf > jpe $ - 6 > endm >
>
> Jump on parity even, 6 byte piu` in alto, cioe` a fprem. Mi ricordo vagamente che fprem era un remainder "parziale", e probabilmente dev'essere ripetuto sugli operandi nello stack della FPU finche` uno dei bit della parola di stato del coprocessore, passato nei flag della CPU, risulta nel flag di parita` in stato "odd", che per qualche ragione segnala la fine dei passaggi del calcolo. All'atto pratico l'istruzione e` intesa calcolare, per esempio, 15.5 % 10.0 = 5.5. Il modulo con operandi in virgola mobile, appunto. Ma c'era il problema che il sorgente era rimasto in una condizione strana, probabilmente perche` tempo fa avevo fatto casino per distrazione senza poi provare a riassemblarlo: al posto di fprem avevo ri-scritto "subpattern", cioe` infilato la macro nella macro stessa. TASM a quanto pare non segnalava quest'assurdita`, ma MASM giustamente fallisce con un "nesting level too high" dopo essere entrato in loop. Ora mi chiedo se la ricostruzione sia giusta. Boh.
Si direbbe di si`.
- fprem
va ripetuto finche` C2 e` zero;
- fstsw ax
passa in AX la parola di stato;
-sahf
passa gli 8 flag alti nei flags della CPU mappando C2 a PF.
Il tutto prende 6 bytes (D9 F8, 9B DF E0, 9E), sicche` -6 bytes dall'IP del salto. Pero` bisognera` che mi appunti di collaudarla appena ho rimesso in funzione la libreria di runtime che puo` dumpare i risultati. Se avete suggerimenti o vedete sviste, ditelo.
-
Re: Vabbe'...Scritto dail 2013-02-03 13:02:07.0 alle 2013-02-03 13:02:07.0Trollate totali: 2001Scritto da: altg
> > > > mentre Lich torna a leggersi il manuale di Java, io torno a modificare i sorgenti del set d'istruzioni IA-32 per L.in.oleum,
> > >
> > > Torna a farti le seghe piuttosto.
> >
> > Quoto, ascolta i consigli dell'esperto
!
>
> Quello l'ho fatto poi, prima di dormire.
> La prima attivita` non escludeva la seconda.
>
> Ho finito poi stamani di splittare tutte quelle push/pop. L'unica cosa rimastami poco chiara (che non ricordo bene) mentre intanto ripassavo tutto il set d'istruzioni, e` il pattern del modulo in virgola mobile, che fa cosi`...
>
>> subpattern macro > fprem > fstsw ax > sahf > jpe $ - 6 > endm >
>
> Jump on parity even, 6 byte piu` in alto, cioe` a fprem. Mi ricordo vagamente che fprem era un remainder "parziale", e probabilmente dev'essere ripetuto sugli operandi nello stack della FPU finche` uno dei bit della parola di stato del coprocessore, passato nei flag della CPU, risulta nel flag di parita` in stato "odd", che per qualche ragione segnala la fine dei passaggi del calcolo. All'atto pratico l'istruzione e` intesa calcolare, per esempio, 15.5 % 10.0 = 5.5. Il modulo con operandi in virgola mobile, appunto. Ma c'era il problema che il sorgente era rimasto in una condizione strana, probabilmente perche` tempo fa avevo fatto casino per distrazione senza poi provare a riassemblarlo: al posto di fprem avevo ri-scritto "subpattern", cioe` infilato la macro nella macro stessa. TASM a quanto pare non segnalava quest'assurdita`, ma MASM giustamente fallisce con un "nesting level too high" dopo essere entrato in loop. Ora mi chiedo se la ricostruzione sia giusta. Boh.
Non capisco perché ti ostini a investire tempo su queste cose.
Salvo casi molto molto particolari oramai usare l'assembly per qualsiasi cosa che non sia un microcontrollore ha poco senso. Alla fine è solo tempo che perdi e che non ti porta da nessuna parte. Quello che eventualmente impari non puoi usarlo comunque.
Stessa cosa per il voler a tutti i costi fare via software quello che una qualsiasi scheda video da 15 euro comprata su eBay sa fare molto meglio di quanto tu possa mai fare e lo fa in hardware.
Meglio è se impieghi il tempo ad imparare qualcosa che ti può tornare utile... chessò... sai qualcosa di PHP... magari prova ad informarti su qualche framework che ti semplifichi e accorci il lavoro come Symfony o simili.
Se proprio vuoi giocare con assembly e affini allora buttati sui microcontrollori. Lì ha ancora senso e in genere il loro assembly è di gran lunga più semplice della porcheria che negli anni è diventato l'Intel che vuole mantenere una retrocompatibilità inutile che complica solo le cose e si trascina dietro errori di progettazione che risalgono all'8086 e relativi salti mortali per evitarli.
Ma davvero... perdere tempo sull'assembly di qualsiasi PC "avanzato" ha senso solo in lavori molto molto settoriali di cuoi probabilmente non farai mai parte comunque.-
Re: Vabbe'...Scritto da: Renton Thurston
> Non capisco perché ti ostini a investire tempo su queste cose.
Potrebbe diventare un mantainer di gcc, cercano sempre gente là
.
Young professional woman and busy mom.-
Re: Vabbe'...Scritto dail 2013-02-03 13:11:56.0 alle 2013-02-03 13:11:56.0Trollate totali: 2001Scritto da: ::1
> Scritto da: Renton Thurston
> > Non capisco perché ti ostini a investire tempo su queste cose.
>
> Potrebbe diventare un mantainer di gcc, cercano sempre gente là
.
Oppure potrebbe andare a lavorare per NVidia o ATI... così mischia la sua passione per l'interfacciamento a basso livello hardware-software e quella per la grafica 3D... imparando ad implementare in hardware gli algoritmi che ora implementa in software.-
Re: Vabbe'...Scritto daNon Autenticatoil 2013-02-03 14:25:40.0 alle 2013-02-03 14:25:40.0> lavorare
-
-
-
Re: Vabbe'...Scritto daavvelentaniCubicolarioil 2013-02-03 13:12:27.0 alle 2013-02-03 13:12:27.0Trollate totali: 18184Scritto da: Renton Thurston
> Se proprio vuoi giocare con assembly e affini allora buttati sui microcontrollori.
I microcontrollori vengono normalmente programmati in C. Anche i PIC scrausi a 8bit.
Potrebbe comprare un FPGA e farsi una implementazione hardware di linoleum
I think happiness is love
- Vladimir Putin-
Re: Vabbe'...Scritto dail 2013-02-03 13:14:03.0 alle 2013-02-03 13:14:03.0Trollate totali: 2001Scritto da: avvelentani
> Scritto da: Renton Thurston
> > Se proprio vuoi giocare con assembly e affini allora buttati sui microcontrollori.
>
> I microcontrollori vengono normalmente programmati in C. Anche i PIC scrausi a 8bit.
Se vuoi si. Ma puoi sempre fare tutto in assembly e ha ancora un senso farlo.
> Potrebbe comprare un FPGA e farsi una implementazione hardware di linoleum
Anche.-
Re: Vabbe'...Scritto daavvelentaniCubicolarioil 2013-02-03 13:17:42.0 alle 2013-02-03 13:17:42.0Trollate totali: 18184Scritto da: Renton Thurston
> Scritto da: avvelentani
> > Scritto da: Renton Thurston
> > > Se proprio vuoi giocare con assembly e affini allora buttati sui microcontrollori.
> >
> > I microcontrollori vengono normalmente programmati in C. Anche i PIC scrausi a 8bit.
>
> Se vuoi si. Ma puoi sempre fare tutto in assembly e ha ancora un senso farlo.
Non credo.
I think happiness is love
- Vladimir Putin-
Re: Vabbe'...Scritto dail 2013-02-03 13:19:20.0 alle 2013-02-03 13:19:20.0Trollate totali: 2001Scritto da: avvelentani
> Scritto da: Renton Thurston
> > Scritto da: avvelentani
> > > Scritto da: Renton Thurston
> > > > Se proprio vuoi giocare con assembly e affini allora buttati sui microcontrollori.
> > >
> > > I microcontrollori vengono normalmente programmati in C. Anche i PIC scrausi a 8bit.
> >
> > Se vuoi si. Ma puoi sempre fare tutto in assembly e ha ancora un senso farlo.
>
> Non credo.
Neanche io. Ma non capisco che centri la religione.
-
Re: Vabbe'...Scritto daNon Autenticatoil 2013-02-03 13:37:23.0 alle 2013-02-03 13:37:23.0Scritto da: avvelentani
> Scritto da: Renton Thurston
> > Scritto da: avvelentani
> > > Scritto da: Renton Thurston
> > > > Se proprio vuoi giocare con assembly e affini allora buttati sui microcontrollori.
> > >
> > > I microcontrollori vengono normalmente programmati in C. Anche i PIC scrausi a 8bit.
> >
> > Se vuoi si. Ma puoi sempre fare tutto in assembly e ha ancora un senso farlo.
>
> Non credo.
vallo a raccontare alla siemens
-
Re: Vabbe'...Scritto daavvelentaniCubicolarioil 2013-02-03 13:39:42.0 alle 2013-02-03 13:39:42.0Trollate totali: 18184Scritto da:
> Scritto da: avvelentani
> > Scritto da: Renton Thurston
> > > Scritto da: avvelentani
> > > > Scritto da: Renton Thurston
> > > > > Se proprio vuoi giocare con assembly e affini allora buttati sui microcontrollori.
> > > >
> > > > I microcontrollori vengono normalmente programmati in C. Anche i PIC scrausi a 8bit.
> > >
> > > Se vuoi si. Ma puoi sempre fare tutto in assembly e ha ancora un senso farlo.
> >
> > Non credo.
>
> vallo a raccontare alla siemens
>
>

vendono fondi di magazzino a prezzi da gioielleria.I think happiness is love
- Vladimir Putin-
Re: Vabbe'...Scritto daNon Autenticatoil 2013-02-03 17:26:44.0 alle 2013-02-03 17:26:44.0Scritto da: avvelentani
> Scritto da:
> > Scritto da: avvelentani
> > > Scritto da: Renton Thurston
> > > > Scritto da: avvelentani
> > > > > Scritto da: Renton Thurston
> > > > > > Se proprio vuoi giocare con assembly e affini allora buttati sui microcontrollori.
> > > > >
> > > > > I microcontrollori vengono normalmente programmati in C. Anche i PIC scrausi a 8bit.
> > > >
> > > > Se vuoi si. Ma puoi sempre fare tutto in assembly e ha ancora un senso farlo.
> > >
> > > Non credo.
> >
> > vallo a raccontare alla siemens
> >
> >

>
> vendono fondi di magazzino a prezzi da gioielleria.
non ne dubito, resta il fatto che i loro plc sono la punta del mercato mondiale dei controllori industriali ed AWL è una specie di assembly
-
-
-
-
-
Re: Vabbe'...Scritto daNon Autenticatoil 2013-02-03 14:26:51.0 alle 2013-02-03 14:26:51.0> Potrebbe comprare un FPGA e farsi una implementazione hardware di linoleum





-
Re: Vabbe'...Scritto daaltgutente che non utieneil 2013-02-03 17:54:40.0 alle 2013-02-03 17:54:40.0Trollate totali: 11540> > Potrebbe comprare un FPGA e farsi una implementazione hardware di linoleum

>
>




┌─█▐──



─┐
└───────────────┘
-
Re: Vabbe'...Scritto daNon Autenticatoil 2013-02-03 18:00:32.0 alle 2013-02-03 18:00:32.0> > > Potrebbe comprare un FPGA e farsi una implementazione hardware di linoleum

> >
> >




>
> ┌─█▐──



─┐
> └───────────────┘





Comunque non è una buona idea?-
Re: Vabbe'...Scritto daaltgutente che non utieneil 2013-02-03 18:08:53.0 alle 2013-02-03 18:08:53.0Trollate totali: 11540> > > > Potrebbe comprare un FPGA e farsi una implementazione hardware di linoleum

> > >
> > >




> >
> > ┌─█▐──



─┐
> > └───────────────┘
>
>




>
> Comunque non è una buona idea?
Mah, non saprei. Se una FPGA e` quel che un tempo era un ULA, non dovrebbe essere competitiva con un microprocessore fatto & finito in termini di prestazioni. Magari mi sbaglio. Non mi dispiacerebbe una "L.in.oleum machine", ma potrebbe solo sveltire un po' l'esecuzione dura & cruda. Il modulo di run-time richiederebbe comunque, poi, l'essere reimplementato, e non certo in hardware visto che e` parte integrante delle applicazioni compilate.
Al di la` di tutto, lo vedo prematuro: a volte cambio ancora il set d'istruzioni. Dovrei aver finito ma considera che l'ultima aggiunta risale all'ottobre scorso (due istruzioni chiamate PSH.i e POP.i, push instance e pop instance, che a seconda delle circostanze salvano il puntatore a un vettore di stato o lo clonano insieme ai suoi eventuali "figli", e che servono a salvare e ripristinare velocemente il binding di un'interfaccia insieme allo stato dell'implementazione di quell'interfaccia).-
Re: Vabbe'...Scritto daNon Autenticatoil 2013-02-03 18:13:19.0 alle 2013-02-03 18:13:19.0> > > > > Potrebbe comprare un FPGA e farsi una implementazione hardware di linoleum

> > > >
> > > >




> > >
> > > ┌─█▐──



─┐
> > > └───────────────┘
> >
> >




> >
> > Comunque non è una buona idea?
>
> Mah, non saprei. Se una FPGA e` quel che un tempo era un ULA, non dovrebbe essere competitiva con un microprocessore fatto & finito in termini di prestazioni. Magari mi sbaglio. Non mi dispiacerebbe una "L.in.oleum machine", ma potrebbe solo sveltire un po' l'esecuzione dura & cruda. Il modulo di run-time richiederebbe comunque, poi, l'essere reimplementato, e non certo in hardware visto che e` parte integrante delle applicazioni compilate.
>
> Al di la` di tutto, lo vedo prematuro: a volte cambio ancora il set d'istruzioni. Dovrei aver finito ma considera che l'ultima aggiunta risale all'ottobre scorso (due istruzioni chiamate PSH.i e POP.i, push instance e pop instance, che a seconda delle circostanze salvano il puntatore a un vettore di stato o lo clonano insieme ai suoi eventuali "figli", e che servono a salvare e ripristinare velocemente il binding di un'interfaccia insieme allo stato dell'implementazione di quell'interfaccia).
Nel frattempo i membri della community stanno così
in attesa delle modifiche definitive?-
Re: Vabbe'...Scritto daaltgutente che non utieneil 2013-02-03 18:14:54.0 alle 2013-02-03 18:14:54.0Trollate totali: 11540> > > > > > Potrebbe comprare un FPGA e farsi una implementazione hardware di linoleum

> > > > >
> > > > >




> > > >
> > > > ┌─█▐──



─┐
> > > > └───────────────┘
> > >
> > >




> > >
> > > Comunque non è una buona idea?
> >
> > Mah, non saprei. Se una FPGA e` quel che un tempo era un ULA, non dovrebbe essere competitiva con un microprocessore fatto & finito in termini di prestazioni. Magari mi sbaglio. Non mi dispiacerebbe una "L.in.oleum machine", ma potrebbe solo sveltire un po' l'esecuzione dura & cruda. Il modulo di run-time richiederebbe comunque, poi, l'essere reimplementato, e non certo in hardware visto che e` parte integrante delle applicazioni compilate.
> >
> > Al di la` di tutto, lo vedo prematuro: a volte cambio ancora il set d'istruzioni. Dovrei aver finito ma considera che l'ultima aggiunta risale all'ottobre scorso (due istruzioni chiamate PSH.i e POP.i, push instance e pop instance, che a seconda delle circostanze salvano il puntatore a un vettore di stato o lo clonano insieme ai suoi eventuali "figli", e che servono a salvare e ripristinare velocemente il binding di un'interfaccia insieme allo stato dell'implementazione di quell'interfaccia).
>
> Nel frattempo i membri della community stanno così
>
> in attesa delle modifiche definitive?
Non ho idea di come stiano, non oso metterci piede da tempo.
Non prima di avere qualcosa di valido da presentare almeno per farmi perdonare.
-
-
-
-
Re: Vabbe'...Scritto da: altg
> > > Potrebbe comprare un FPGA e farsi una implementazione hardware di linoleum
> >
> >




>
> ┌─█▐──



─┐
> └───────────────┘
LÖL
!
`"la realta' non e' cosi' terrificante come vogliono farti credere" - Giambo ` - Wakko che cita Giambo
-
-
-
-
Re: Vabbe'...Scritto daNon Autenticatoil 2013-02-03 13:19:47.0 alle 2013-02-03 13:19:47.0Scritto da: Renton Thurston
> Scritto da: altg
> > > > > mentre Lich torna a leggersi il manuale di Java, io torno a modificare i sorgenti del set d'istruzioni IA-32 per L.in.oleum,
> > > >
> > > > Torna a farti le seghe piuttosto.
> > >
> > > Quoto, ascolta i consigli dell'esperto
!
> >
> > Quello l'ho fatto poi, prima di dormire.
> > La prima attivita` non escludeva la seconda.
> >
> > Ho finito poi stamani di splittare tutte quelle push/pop. L'unica cosa rimastami poco chiara (che non ricordo bene) mentre intanto ripassavo tutto il set d'istruzioni, e` il pattern del modulo in virgola mobile, che fa cosi`...
> >
> >> > subpattern macro > > fprem > > fstsw ax > > sahf > > jpe $ - 6 > > endm > >
> >
> > Jump on parity even, 6 byte piu` in alto, cioe` a fprem. Mi ricordo vagamente che fprem era un remainder "parziale", e probabilmente dev'essere ripetuto sugli operandi nello stack della FPU finche` uno dei bit della parola di stato del coprocessore, passato nei flag della CPU, risulta nel flag di parita` in stato "odd", che per qualche ragione segnala la fine dei passaggi del calcolo. All'atto pratico l'istruzione e` intesa calcolare, per esempio, 15.5 % 10.0 = 5.5. Il modulo con operandi in virgola mobile, appunto. Ma c'era il problema che il sorgente era rimasto in una condizione strana, probabilmente perche` tempo fa avevo fatto casino per distrazione senza poi provare a riassemblarlo: al posto di fprem avevo ri-scritto "subpattern", cioe` infilato la macro nella macro stessa. TASM a quanto pare non segnalava quest'assurdita`, ma MASM giustamente fallisce con un "nesting level too high" dopo essere entrato in loop. Ora mi chiedo se la ricostruzione sia giusta. Boh.
>
> Non capisco perché ti ostini a investire tempo su queste cose.
>
> Salvo casi molto molto particolari oramai usare l'assembly per qualsiasi cosa che non sia un microcontrollore ha poco senso. Alla fine è solo tempo che perdi e che non ti porta da nessuna parte. Quello che eventualmente impari non puoi usarlo comunque.
>
> Stessa cosa per il voler a tutti i costi fare via software quello che una qualsiasi scheda video da 15 euro comprata su eBay sa fare molto meglio di quanto tu possa mai fare e lo fa in hardware.
>
> Meglio è se impieghi il tempo ad imparare qualcosa che ti può tornare utile... chessò... sai qualcosa di PHP... magari prova ad informarti su qualche framework che ti semplifichi e accorci il lavoro come Symfony o simili.
>
> Se proprio vuoi giocare con assembly e affini allora buttati sui microcontrollori. Lì ha ancora senso e in genere il loro assembly è di gran lunga più semplice della porcheria che negli anni è diventato l'Intel che vuole mantenere una retrocompatibilità inutile che complica solo le cose e si trascina dietro errori di progettazione che risalgono all'8086 e relativi salti mortali per evitarli.
>
> Ma davvero... perdere tempo sull'assembly di qualsiasi PC "avanzato" ha senso solo in lavori molto molto settoriali di cuoi probabilmente non farai mai parte comunque.
symfony è un gran framework, decisamente, ma che symfony semplifichi e accorci il lavoro è proprio una gran wakkata
magari i comandi di console permettono di risparmiarsi una discreta quantità di codice ripetitivo quando devi affrontare cose semplici
quando le cose si fanno discretamente complesse il tempo impiegato a fare le cose symfony-like diventa esponenziale rispetto allo scratch
comunque quoto sui microcontrollori
il problema però, wakka, è che tu ragioni in un'ottica lavorativa e produttiva, aka "cosa conviene studiare per essere sul mercato del lavoro e portarsi una quantità ragionevole di soldini a casa"
il pisano pazzo ragiona in un'ottica fankazzista, "cosa conviene inventarsi per consumare una marea di tempo e far passare la giornata"
in quest'ottica diviene utile anche tentare di costruire un cluster di C64 che lavorino in parallelo alla simulazione dell'espansione dell'universo
-
Re: Vabbe'...Scritto dail 2013-02-03 13:35:53.0 alle 2013-02-03 13:35:53.0Trollate totali: 2001Scritto da:
> symfony è un gran framework, decisamente, ma che symfony semplifichi e accorci il lavoro è proprio una gran wakkata
>
> magari i comandi di console permettono di risparmiarsi una discreta quantità di codice ripetitivo quando devi affrontare cose semplici
>
> quando le cose si fanno discretamente complesse il tempo impiegato a fare le cose symfony-like diventa esponenziale rispetto allo scratch
Questo è vero per qualsiasi framework che ti obblighi a fare le cose con un certo ordine e in un certo modo. Certo inserire codice PHP direttamente nelle pagine HTML è decisamente più svelto da implementare che stare a separare l'accesso ai dati dal business-layer dal resto del codice dalla presentazione... però alla fine rende tutto molto più chiaro e semplice quando devi riprendere in mano le cose o quando stai lavorando in gruppo ad uno stesso progetto o quando vuoi cambiare una query o una regola che è usata in mille pagine senza dover toccare le singole pagine.
Come tutto ha i suoi vantaggi e i suoi svantaggi.
Conoscere il framework bene però ti aiuta molto e ti predispone a fare le cose in un dato modo ordinato che alla fine poi paga (in senso di produttività, ma anche di piacere nello sviluppare), per questo ha senso investire il proprio tempo in questo senso... anche perché se un giorno devi mettere mano ad un progetto Symfony creato da qualcun altro se non sai nemmeno cos'è non ne esci vivo.
> il problema però, wakka, è che tu ragioni in un'ottica lavorativa e produttiva, aka "cosa conviene studiare per essere sul mercato del lavoro e portarsi una quantità ragionevole di soldini a casa"
>
> il pisano pazzo ragiona in un'ottica fankazzista, "cosa conviene inventarsi per consumare una marea di tempo e far passare la giornata"
Capisco molto bene il suo legame con il passato e il fatto che ci impiega così tanto tempo per ragioni "sentimentali" e di "ricordi". Volevo solo però mostrargli che alla fine perdere una giornata su un nuovo algoritmo per renderizzare in software cose che in WebGL ottieni gratis alla fine è del tutto inutile... sia per gli altri che per lui... perché magari fra qualche anno si guarda indietro e si dice "cazzo... ho impiegato anni della mia vita ad imparare e approfondire cose che non mi sono servite (né mai mi serviranno) a niente quando invece potevo... chessò... studiarmi qualcosa che almeno per un po' mi sarebbe stata utile quando ne avevo bisogno". Siccome io detesto perdere tempo ad imparare cose inutili e so come ci si sente quando si deve prendere una "valigia di conoscenza" riempita in anni di lavoro e frizione di neuroni e buttarla nel cesso immagino sia lo stesso anche per altri... alex.tg incluso.-
Re: Vabbe'...Scritto da: Renton Thurston
> Siccome io detesto perdere tempo ad imparare cose inutili e so come ci si sente quando si deve prendere una "valigia di conoscenza" riempita in anni di lavoro e frizione di neuroni e buttarla nel cesso immagino sia lo stesso anche per altri... alex.tg incluso.
È questo il tuo problema. Non riesci a imparare per il gusto di imparare. Con questo ragionamento avremmo un immobilismo del software senza eguali.Young professional woman and busy mom.-
Re: Vabbe'...Scritto dail 2013-02-03 13:47:42.0 alle 2013-02-03 13:47:42.0Trollate totali: 2001Scritto da: ::1
> Scritto da: Renton Thurston
> > Siccome io detesto perdere tempo ad imparare cose inutili e so come ci si sente quando si deve prendere una "valigia di conoscenza" riempita in anni di lavoro e frizione di neuroni e buttarla nel cesso immagino sia lo stesso anche per altri... alex.tg incluso.
>
> È questo il tuo problema. Non riesci a imparare per il gusto di imparare. Con questo ragionamento avremmo un immobilismo del software senza eguali.
Non credo sia "un mio problema". Imparare per il gusto di imparare puoi anche farlo... non per niente mi sto studicchiando Go e sto guardando con interesse Dart e Scala... ma ci sono cose che ha più senso impararsi di altre. Non ha senso perdere tempo su linguaggi o tecniche che non hanno futuro. Questo vale per linguaggi e tecniche passate quando per linguaggi e tecniche odierni.
Chiaro che nessuno è un mago e nessuno può prevedere il futuro perciò di tratta di una valutazione che uno deve fare "a proprio rischio e pericolo" soprattutto sulle cose nuove.
Imparare per imparare lo fai quando di programmazione non sai niente e vuoi incominciare a farti una cultura generale circa cosa c'è attorno a te e come usarlo. Quando hai messo da parte una certa quantità di esperienza in un certo numero di linguaggi che vanno dal basso all'alto livello non ti serve metterti a studiare anche Fortran per sapere che non ti servirà mai... anche perché sai che se mai dovesse servirti tempo qualche settimana o, in alcuni casi, qualche ora e sai usare anche quello.
Alla fine uno deve scegliersi cosa approfondire e cosa invece lasciare da parte... ci sono semplicemente troppe cose in giro per il mondo e non è possibile studiarsele tutte. Scegliere bene come investire il proprio tempo alla fine è la parte più difficile e dipende da quali sono i tuoi goal.
Per esempio... se ti interessa solo fare soldi allora ha probabilmente più senso studiarsi COBOL che studiarsi Dart.-
Re: Vabbe'...Scritto da: Renton Thurston
> Scritto da: ::1
> > Scritto da: Renton Thurston
> > > Siccome io detesto perdere tempo ad imparare cose inutili e so come ci si sente quando si deve prendere una "valigia di conoscenza" riempita in anni di lavoro e frizione di neuroni e buttarla nel cesso immagino sia lo stesso anche per altri... alex.tg incluso.
> >
> > È questo il tuo problema. Non riesci a imparare per il gusto di imparare. Con questo ragionamento avremmo un immobilismo del software senza eguali.
>
> Imparare per imparare lo fai quando di programmazione non sai niente e vuoi incominciare a farti una cultura generale circa cosa c'è attorno a te e come usarlo.
Se così fosse uno che entra nel mondo del lavoro nel 1990 non avrebbe mai conosciuto l'esplosione di nuovi linguaggi, runtimes, e tecnologie che abbiamo oggi.
Tornando all'assembly, non c'è l'uso pratico nel mercato del lavoro attuale se non per una nicchia ristrettissima, ma permette ad alex di conoscere dettagli che gli permetterebbero, se solo non avesse il paraocchi, di sviluppare una alternativa concreta a llvm, portando lino su più architetture, con differenti output e documentando il tutto con esempi per gli sviluppatori interessati a scrivere linguaggi alternativi al c, tipo il sottoscritto che non ha però il tempo di farlo.Young professional woman and busy mom.-
Re: Vabbe'...Scritto daaltgutente che non utieneil 2013-02-03 14:12:26.0 alle 2013-02-03 14:12:26.0Trollate totali: 11540> > > > Siccome io detesto perdere tempo ad imparare cose inutili e so come ci si sente quando si deve prendere una "valigia di conoscenza" riempita in anni di lavoro e frizione di neuroni e buttarla nel cesso immagino sia lo stesso anche per altri... alex.tg incluso.
> > >
> > > È questo il tuo problema. Non riesci a imparare per il gusto di imparare. Con questo ragionamento avremmo un immobilismo del software senza eguali.
> >
> > Imparare per imparare lo fai quando di programmazione non sai niente e vuoi incominciare a farti una cultura generale circa cosa c'è attorno a te e come usarlo.
>
> Se così fosse uno che entra nel mondo del lavoro nel 1990 non avrebbe mai conosciuto l'esplosione di nuovi linguaggi, runtimes, e tecnologie che abbiamo oggi.
> Tornando all'assembly, non c'è l'uso pratico nel mercato del lavoro attuale se non per una nicchia ristrettissima, ma permette ad alex di conoscere dettagli che gli permetterebbero, se solo non avesse il paraocchi, di sviluppare una alternativa concreta a llvm, portando lino su più architetture, con differenti output e documentando il tutto con esempi per gli sviluppatori interessati a scrivere linguaggi alternativi al c, tipo il sottoscritto che non ha però il tempo di farlo.
Ma non trovate che manchi un anello di congiunzione tra l'alto livello e l'assembly nativo (quello specifico di una piattaforma)? Java ha il bytecode, e il C originariamente era stato concepito come una specie di gradino leggermente superiore all'assembly MA multipiattaforma. Pero` il C e` fatto male in quel senso, gli mancano delle cose e ne aggiunge di inutili, perche` ad esempio non si astrae dalla endianness delle parole del processore, perche` siccome sull'architettura che usavano all'epoca non esisteva l'istruzione di rotazione dei bit allora non fu inclusa neanche nel C, perche` non ha una virtual machine ad astrarre l'ambiente operativo del sistema ospite, e un sacco di altre limitazioni che L.in.oleum mira a risolvere.-
Re: Vabbe'...Scritto dail 2013-02-03 14:19:47.0 alle 2013-02-03 14:19:47.0Trollate totali: 2001Scritto da: altg
> > > > > Siccome io detesto perdere tempo ad imparare cose inutili e so come ci si sente quando si deve prendere una "valigia di conoscenza" riempita in anni di lavoro e frizione di neuroni e buttarla nel cesso immagino sia lo stesso anche per altri... alex.tg incluso.
> > > >
> > > > È questo il tuo problema. Non riesci a imparare per il gusto di imparare. Con questo ragionamento avremmo un immobilismo del software senza eguali.
> > >
> > > Imparare per imparare lo fai quando di programmazione non sai niente e vuoi incominciare a farti una cultura generale circa cosa c'è attorno a te e come usarlo.
> >
> > Se così fosse uno che entra nel mondo del lavoro nel 1990 non avrebbe mai conosciuto l'esplosione di nuovi linguaggi, runtimes, e tecnologie che abbiamo oggi.
> > Tornando all'assembly, non c'è l'uso pratico nel mercato del lavoro attuale se non per una nicchia ristrettissima, ma permette ad alex di conoscere dettagli che gli permetterebbero, se solo non avesse il paraocchi, di sviluppare una alternativa concreta a llvm, portando lino su più architetture, con differenti output e documentando il tutto con esempi per gli sviluppatori interessati a scrivere linguaggi alternativi al c, tipo il sottoscritto che non ha però il tempo di farlo.
>
> Ma non trovate che manchi un anello di congiunzione tra l'alto livello e l'assembly nativo (quello specifico di una piattaforma)? Java ha il bytecode, e il C originariamente era stato concepito come una specie di gradino leggermente superiore all'assembly MA multipiattaforma. Pero` il C e` fatto male in quel senso, gli mancano delle cose e ne aggiunge di inutili, perche` ad esempio non si astrae dalla endianness delle parole del processore, perche` siccome sull'architettura che usavano all'epoca non esisteva l'istruzione di rotazione dei bit allora non fu inclusa neanche nel C, perche` non ha una virtual machine ad astrarre l'ambiente operativo del sistema ospite, e un sacco di altre limitazioni che L.in.oleum mira a risolvere.
Questo lo conosci? http://llvm.org/
Sta avendo un discreto successo.
-
Re: Vabbe'...Scritto daaltgutente che non utieneil 2013-02-03 15:49:10.0 alle 2013-02-03 15:49:10.0Trollate totali: 11540> > > > > > Siccome io detesto perdere tempo ad imparare cose inutili e so come ci si sente quando si deve prendere una "valigia di conoscenza" riempita in anni di lavoro e frizione di neuroni e buttarla nel cesso immagino sia lo stesso anche per altri... alex.tg incluso.
> > > > >
> > > > > È questo il tuo problema. Non riesci a imparare per il gusto di imparare. Con questo ragionamento avremmo un immobilismo del software senza eguali.
> > > >
> > > > Imparare per imparare lo fai quando di programmazione non sai niente e vuoi incominciare a farti una cultura generale circa cosa c'è attorno a te e come usarlo.
> > >
> > > Se così fosse uno che entra nel mondo del lavoro nel 1990 non avrebbe mai conosciuto l'esplosione di nuovi linguaggi, runtimes, e tecnologie che abbiamo oggi.
> > > Tornando all'assembly, non c'è l'uso pratico nel mercato del lavoro attuale se non per una nicchia ristrettissima, ma permette ad alex di conoscere dettagli che gli permetterebbero, se solo non avesse il paraocchi, di sviluppare una alternativa concreta a llvm, portando lino su più architetture, con differenti output e documentando il tutto con esempi per gli sviluppatori interessati a scrivere linguaggi alternativi al c, tipo il sottoscritto che non ha però il tempo di farlo.
> >
> > Ma non trovate che manchi un anello di congiunzione tra l'alto livello e l'assembly nativo (quello specifico di una piattaforma)? Java ha il bytecode, e il C originariamente era stato concepito come una specie di gradino leggermente superiore all'assembly MA multipiattaforma. Pero` il C e` fatto male in quel senso, gli mancano delle cose e ne aggiunge di inutili, perche` ad esempio non si astrae dalla endianness delle parole del processore, perche` siccome sull'architettura che usavano all'epoca non esisteva l'istruzione di rotazione dei bit allora non fu inclusa neanche nel C, perche` non ha una virtual machine ad astrarre l'ambiente operativo del sistema ospite, e un sacco di altre limitazioni che L.in.oleum mira a risolvere.
>
> Questo lo conosci? http://llvm.org/
> Sta avendo un discreto successo.
um...
A occhio, da un lato hai il codice C-like e dall'altro una forma intermedia universale che pero` e` difficilissima da leggere. Essenzialmente Lino mira ad essere umanamente leggibile anche in forma low-level. Guarda, a essere sinceri all'inizio avevo pensato anch'io a una cosa che - almeno visivamente - si presentava con l'IF di LLVM, e ai tempi (1999) si chiamava BULK. La derivazione e` nel codice genetico di Linoleum ancora oggi: le sigle di BULK sono ancora nel set d'istruzioni di L.in.oleum. Ad esempio l'assegnazione si chiama SET, la moltiplicazione si chiama "internamente" MUL.f, MUL.n o MUL.i a seconda che sia a virgola mobile, intera senza segno, intera con segno, l'assegnazione sullo stack si chiama SES (SEt on Stack), eccetera... ma BULK non era fatto per essere leggibile, mentre L.in.oleum ha operazioni simboliche in una forma compatta e secondo me molto comprensibile, e la versione 3 arriva anche a portare un po' di struttura (un minimo di blocchi condizionali, tanto per de-spaghettificare tutto quel che ha senso de-spaghettificare, cioe` gran parte di quel che non ha senso ottimizzare per estrema compattezza).
ps. quindi concludendo, la prima occhiata alle differenze tra LLVM e Linoleum mi porta a pensare che:
- al concetto di set d'istruzioni universale e cross-platform ci avevo pensato io con BULK nel '99, quattro anni prima di LLVM;
- eccetto che io poi ho preso una strada completamente diversa, invece di far si` che BULK facesse da intermediate form e che il programmatore continuasse a usare altri linguaggi come front-end, ho inventato Linoleum come forma leggibile e gestibile dell'intermediate form;
- io ho poi concepito un ambiente di run-time astratto, cosa che non ho capito bene se LLVM faccia o si limiti a tradurre il codice assembly duro e crudo.
Ma mi sembrano due bestie piuttosto diverse.
**Modificato dall'autore il 03.02.2013 15:56**-
Re: Vabbe'...Scritto dail 2013-02-03 16:19:27.0 alle 2013-02-03 16:19:27.0Trollate totali: 2001Scritto da: altg
> um...
>
>
>
> A occhio, da un lato hai il codice C-like e dall'altro una forma intermedia universale che pero` e` difficilissima da leggere.
Nessuno deve leggerla. Non è programmare direttamente in meta-assembly lo scopo di LLVM, né essere facile da capire per creature con meno di 20 piedini.
> Essenzialmente Lino mira ad essere umanamente leggibile anche in forma low-level.
Giusto. E questo perché? Perché dai per scontato che qualcuno, oggi, voglia ancora programmare il proprio PC in assembly (o meta-assembly). Perciò è ovvio che vuoi farlo facile da leggere e da capire.
Il tuo progetto IMO può essere utile in due modi:
- o come meta-assembly cross-platform per microcontrollori (PIC, ARM, ...) dove ancora esiste qualcuno che apprezzi un linguaggio del genere
- o come layer intermedio fra un linguaggio ad alto livello che "compila" in Lino e un processore qualsiasi supportato da Lino, ovvero una cosa simile a LLVM
> Guarda, a essere sinceri all'inizio avevo pensato anch'io a una cosa che - almeno visivamente - si presentava con l'IF di LLVM, e ai tempi (1999) si chiamava BULK. La derivazione e` nel codice genetico di Linoleum ancora oggi: le sigle di BULK sono ancora nel set d'istruzioni di L.in.oleum. Ad esempio l'assegnazione si chiama SET, la moltiplicazione si chiama "internamente" MUL.f, MUL.n o MUL.i a seconda che sia a virgola mobile, intera senza segno, intera con segno, l'assegnazione sullo stack si chiama SES (SEt on Stack), eccetera... ma BULK non era fatto per essere leggibile, mentre L.in.oleum ha operazioni simboliche in una forma compatta e secondo me molto comprensibile, e la versione 3 arriva anche a portare un po' di struttura (un minimo di blocchi condizionali, tanto per de-spaghettificare tutto quel che ha senso de-spaghettificare, cioe` gran parte di quel che non ha senso ottimizzare per estrema compattezza).
Non metto in dubbio che sia un bel linguaggio, che sia comprensibile e facile da usare una volta che te lo sei imparato. Né che tu ci sia giustamente affezionato o giustamente fiero.
Metto in dubbio che, così com'è, ovvero stand-alone, possa servire a qualcuno. Come ho detto qui sopra... ci sono ancora nicche dove potrebbe essere usato, ma finché vuoi tenerlo come oggetto stand-alone o vuoi tenerlo fuori dai microcontrollori dubito che qualcuno giorno senza la necessità di usarlo per qualcosa di concreto sui PC.
Vuoi sapere un altro settore che mi è appena venuto in mente in cui il tuo Lino potrebbe essere davvero utile? Nel kernel di Linux. Ci sono parti che sono scritte in assembly puro e che per ogni nuovo processore vanno riscritte da capo. Se le avessero scritte in Lino basterebbe solo aggiungere quell'architettura a Lino e ricompilare per il nuovo processore. Lì avrebbe senso anche stand-alone. Magari spingi in questa direzione... parlane con Linus. Fate due esperimenti. Se ho ragione il tuo Lino avrà un successo bestiale.
-
Re: Vabbe'...Scritto daaltgutente che non utieneil 2013-02-03 16:51:54.0 alle 2013-02-03 16:51:54.0Trollate totali: 11540> > um...
> >
> >
> >
> > A occhio, da un lato hai il codice C-like e dall'altro una forma intermedia universale che pero` e` difficilissima da leggere.
>
> Nessuno deve leggerla. Non è programmare direttamente in meta-assembly lo scopo di LLVM, né essere facile da capire per creature con meno di 20 piedini.
>
> > Essenzialmente Lino mira ad essere umanamente leggibile anche in forma low-level.
>
> Giusto. E questo perché? Perché dai per scontato che qualcuno, oggi, voglia ancora programmare il proprio PC in assembly (o meta-assembly). Perciò è ovvio che vuoi farlo facile da leggere e da capire.
Non ci vedo tutta questa bestiaccia nell'assembly. Una volta che hai fior di librerie, un progetto applicativo lo costruisci a botte di chiamate a funzioni e subroutine di libreria, e strumenti per gestire lo stato (vettori di stato, closures...). Quel che ti manca alla fine non e` cosi` tanto, fra i punti piu` "devianti" c'e` che in Lino non hai la serializzazione automatica delle espressioni, non scrivi:
a = b + c
ma
a = b;
a + c;
e il register naming te lo fai a mano. Pero` in entrambi i casi puoi intervenire a fondo e ottimizzare in modi che un compilatore e` ben difficile che veda. E non e` poi cosi` difficile, a meno che tu non detesti fare 'ste cose a mano e vabbe', allora Lino non ti piacera` mai, ma io non ti costringo davvero a usarlo...
> Il tuo progetto IMO può essere utile in due modi:
> - o come meta-assembly cross-platform per microcontrollori (PIC, ARM, ...) dove ancora esiste qualcuno che apprezzi un linguaggio del genere
Avrebbe un'utilita` che non lo sfrutta del tutto, anzi lo sfrutta in minima parte, ma immagino si possa fare. I sistemi embedded di capacita` molto ridotte non sarebbero probabilmente in grado di far girare la virtual machine, o non avrebbe senso tentare di implementarcela se non in forma minimalista (cosa che e` prevista comunque: c'e` una forma minima che taglia quasi tutte le interfacce col sistema ospite). Ma si`, puo` fare quella parte.
> - o come layer intermedio fra un linguaggio ad alto livello che "compila" in Lino e un processore qualsiasi supportato da Lino, ovvero una cosa simile a LLVM
Cosa che hanno gia` provato a fare nei primi anni dopo la prima release di Lino. Un certo Vladimir Klicik aveva scritto un pre-processore ad alto livello che emetteva codice L.in.oleum, si chiamava Backslash. Fu azzoppato dal fatto che l'autore non ebbe piu` tempo di seguirlo e io cominciai a... spostare il pavimento.
Comunque e` possibile, si`. Forse non vedi poi la controparte del mero sorgente L.in.oleum, che e` la sua virtual machine dedicata, quel che chiamo modulo di run-time. E` molto compatto e molto astratto (ci perde in flessibilita`, questo e` vero), e permette a L.in.oleum di astrarsi non soltanto dall'architettura del processore, ma anche da quella del sistema operativo ospite. E` molto spartano e nel suo modo di funzionare ridefinisce gran parte di come un'applicazione concretizza richieste al sistema sottostante, che e` un aspetto non trascurabile: c'e` molta inventiva, o re-inventiva ponderata, anche nel modulo di run-time e nel funzionamento della parte che s'interfaccia col codice L.in.oleum, parte che si chiama non a caso isokernel.
> > Guarda, a essere sinceri all'inizio avevo pensato anch'io a una cosa che - almeno visivamente - si presentava con l'IF di LLVM, e ai tempi (1999) si chiamava BULK. La derivazione e` nel codice genetico di Linoleum ancora oggi: le sigle di BULK sono ancora nel set d'istruzioni di L.in.oleum. Ad esempio l'assegnazione si chiama SET, la moltiplicazione si chiama "internamente" MUL.f, MUL.n o MUL.i a seconda che sia a virgola mobile, intera senza segno, intera con segno, l'assegnazione sullo stack si chiama SES (SEt on Stack), eccetera... ma BULK non era fatto per essere leggibile, mentre L.in.oleum ha operazioni simboliche in una forma compatta e secondo me molto comprensibile, e la versione 3 arriva anche a portare un po' di struttura (un minimo di blocchi condizionali, tanto per de-spaghettificare tutto quel che ha senso de-spaghettificare, cioe` gran parte di quel che non ha senso ottimizzare per estrema compattezza).
>
> Non metto in dubbio che sia un bel linguaggio, che sia comprensibile e facile da usare una volta che te lo sei imparato.
Quello ci ho pensato io a metterlo in dubbio, fino almeno alla versione 3 che sta arrivando alla fine della sua costruzione. La versione 3 delinea un linguaggio tutto sommato niente male, entro limiti che io stesso mi sono imposto. Come mi ci trovero` con la versione 3 poi lo faro` sapere quando avro` cominciato a farci qualcosa d'interessante.
> Né che tu ci sia giustamente affezionato o giustamente fiero.
Fiero lo saro` solo alla fine, forse. Affezionato si`, ma soprattutto prima di mollarlo devo avere buone ragioni se no e` tutto veramente lavoro buttato. Se a volte ho avuto la tentazione di mollarlo e` stato piu` che altro perche` i miei interessi si erano allontanati dall'informatica in generale, non perche` non lo ritenessi di per se` degno di sopravvivere.
> Metto in dubbio che, così com'è, ovvero stand-alone, possa servire a qualcuno.
Serve a me.
> Come ho detto qui sopra... ci sono ancora nicche dove potrebbe essere usato, ma finché vuoi tenerlo come oggetto stand-alone o vuoi tenerlo fuori dai microcontrollori dubito che qualcuno giorno senza la necessità di usarlo per qualcosa di concreto sui PC.
Sara` stata una mia impressione ma ho faticato a tenere indietro la gente dopo la prima versione. Dalla versione 2 ho cominciato una campagna di silenzio con avvisi intermittenti: "fermi", "aspettate", "non e` pronto", "e` embrionale", "e` vernice fresca". Non vorrei che lo usassero finche` non lo considero sintatticamente stabile, perche` poi se la prendono quando le cose smettono di funzionare passando da una versione all'altra. Gia` adesso m'e` toccato rendere il compilatore 3 retrocompatibile con la versione 2.
Oddio, la cosa non m'e` del tutto dispiaciuta, visto che posso posporre il porting del compilatore stesso alla versione 3. Infatti e` ancora in Linoleum 2, compilato da se` stesso nella versione che supporta anche il codice v3.
> Vuoi sapere un altro settore che mi è appena venuto in mente in cui il tuo Lino potrebbe essere davvero utile? Nel kernel di Linux. Ci sono parti che sono scritte in assembly puro e che per ogni nuovo processore vanno riscritte da capo. Se le avessero scritte in Lino basterebbe solo aggiungere quell'architettura a Lino e ricompilare per il nuovo processore. Lì avrebbe senso anche stand-alone. Magari spingi in questa direzione... parlane con Linus. Fate due esperimenti. Se ho ragione il tuo Lino avrà un successo bestiale.
Sissi`, ma non adesso. Se no mi salta addosso tutta la comunita` Linux quando esce la versione 4 non retrocompatibile. Spero non debba mai uscire, ma non si sa mai.
Fra un po' magari si`.
-
-
-
-
Re: Vabbe'...Scritto daavvelentaniCubicolarioil 2013-02-03 14:24:49.0 alle 2013-02-03 14:24:49.0Trollate totali: 18184Scritto da: altg
> Ma non trovate che manchi un anello di congiunzione tra l'alto livello e l'assembly nativo (quello specifico di una piattaforma)?http://en.wikipedia.org/wiki/GNU_Assembler

http://en.wikipedia.org/wiki/Llvm

I think happiness is love
- Vladimir Putin-
Re: Vabbe'...Scritto daaltgutente che non utieneil 2013-02-03 15:23:31.0 alle 2013-02-03 15:23:31.0Trollate totali: 11540> > Ma non trovate che manchi un anello di congiunzione tra l'alto livello e l'assembly nativo (quello specifico di una piattaforma)?
>
>http://en.wikipedia.org/wiki/GNU_Assembler

.globl _start .text _start: movl $len, %edx movl $msg, %ecx movl $1, %ebx movl $4, %eax int $0x80 movl $0, %ebx movl $1, %eax int $0x80 .data msg: .ascii "Hello, world!\n" len = . - msg
Boh? Dove sarebbe cross-platform? Assume che esistano registri da eax a edx, e che il dispatcher di sistema sia sull'interrupt 80h? Quello e` pressoche` assembly nativo, o l'esempio e` sbagliato?
>http://en.wikipedia.org/wiki/Llvm

E` interessante. L.in.oleum non e` inteso essere un back-end, comunque non e` molto dissimile. Mi chiedo se esistesse nel 2001, LLVM.-
Re: Vabbe'...Scritto daaltgutente che non utieneil 2013-02-03 15:24:58.0 alle 2013-02-03 15:24:58.0Trollate totali: 11540> > > Ma non trovate che manchi un anello di congiunzione tra l'alto livello e l'assembly nativo (quello specifico di una piattaforma)?
> >
> >http://en.wikipedia.org/wiki/GNU_Assembler

>
>.globl _start > > .text > _start: > movl $len, %edx > movl $msg, %ecx > movl $1, %ebx > movl $4, %eax > int $0x80 > > movl $0, %ebx > movl $1, %eax > int $0x80 > .data > msg: > .ascii "Hello, world!\n" > len = . - msg
>
> Boh? Dove sarebbe cross-platform? Assume che esistano registri da eax a edx, e che il dispatcher di sistema sia sull'interrupt 80h? Quello e` pressoche` assembly nativo, o l'esempio e` sbagliato?
>
> >http://en.wikipedia.org/wiki/Llvm

>
> E` interessante. L.in.oleum non e` inteso essere un back-end, comunque non e` molto dissimile. Mi chiedo se esistesse nel 2001, LLVM.
Ah, no:
Initial release 2003
Troppo tardi, ero gia` partito e ora non mollo certo per loro.-
Re: Vabbe'...Scritto daavvelentaniCubicolarioil 2013-02-03 17:38:31.0 alle 2013-02-03 17:38:31.0Trollate totali: 18184Scritto da: altg
> > > > Ma non trovate che manchi un anello di congiunzione tra l'alto livello e l'assembly nativo (quello specifico di una piattaforma)?
> > >
> > >http://en.wikipedia.org/wiki/GNU_Assembler

> >
> >.globl _start > > > > .text > > _start: > > movl $len, %edx > > movl $msg, %ecx > > movl $1, %ebx > > movl $4, %eax > > int $0x80 > > > > movl $0, %ebx > > movl $1, %eax > > int $0x80 > > .data > > msg: > > .ascii "Hello, world!\n" > > len = . - msg
> >
> > Boh? Dove sarebbe cross-platform? Assume che esistano registri da eax a edx, e che il dispatcher di sistema sia sull'interrupt 80h? Quello e` pressoche` assembly nativo, o l'esempio e` sbagliato?
No, opcode e nomi dei registri sono tutti dipendenti dall'architettura, gas si limita ad assemblare per qualunque architettura esistente. E` il backend di gcc che internamente ha una sua rappresentazione dell'assembly che pero` e` solo parzialmente indipendente dall'architettura per questioni di ottimizzazione.
> >
> > >http://en.wikipedia.org/wiki/Llvm

> >
> > E` interessante. L.in.oleum non e` inteso essere un back-end, comunque non e` molto dissimile. Mi chiedo se esistesse nel 2001, LLVM.
>
> Ah, no:
>
> Initial release 2003
>
> Troppo tardi, ero gia` partito e ora non mollo certo per loro.
L'importante non e` chi inizia per primo ma chi finisce per primo.I think happiness is love
- Vladimir Putin-
Re: Vabbe'...Scritto daaltgutente che non utieneil 2013-02-03 17:41:21.0 alle 2013-02-03 17:41:21.0Trollate totali: 11540> > > > > Ma non trovate che manchi un anello di congiunzione tra l'alto livello e l'assembly nativo (quello specifico di una piattaforma)?
> > > >
> > > >http://en.wikipedia.org/wiki/GNU_Assembler

> > >
> > >.globl _start > > > > > > .text > > > _start: > > > movl $len, %edx > > > movl $msg, %ecx > > > movl $1, %ebx > > > movl $4, %eax > > > int $0x80 > > > > > > movl $0, %ebx > > > movl $1, %eax > > > int $0x80 > > > .data > > > msg: > > > .ascii "Hello, world!\n" > > > len = . - msg
> > >
> > > Boh? Dove sarebbe cross-platform? Assume che esistano registri da eax a edx, e che il dispatcher di sistema sia sull'interrupt 80h? Quello e` pressoche` assembly nativo, o l'esempio e` sbagliato?
>
> No, opcode e nomi dei registri sono tutti dipendenti dall'architettura, gas si limita ad assemblare per qualunque architettura esistente. E` il backend di gcc che internamente ha una sua rappresentazione dell'assembly che pero` e` solo parzialmente indipendente dall'architettura per questioni di ottimizzazione.
>
> > >
> > > >http://en.wikipedia.org/wiki/Llvm

> > >
> > > E` interessante. L.in.oleum non e` inteso essere un back-end, comunque non e` molto dissimile. Mi chiedo se esistesse nel 2001, LLVM.
> >
> > Ah, no:
> >
> > Initial release 2003
> >
> > Troppo tardi, ero gia` partito e ora non mollo certo per loro.
>
> L'importante non e` chi inizia per primo ma chi finisce per primo.
Non e` un concorrente per L.in.oleum in ogni caso, non ha lo stesso ruolo.
-
-
-
-
-
-
Re: Vabbe'...Scritto dail 2013-02-03 14:27:27.0 alle 2013-02-03 14:27:27.0Trollate totali: 2001Scritto da: ::1
> > Imparare per imparare lo fai quando di programmazione non sai niente e vuoi incominciare a farti una cultura generale circa cosa c'è attorno a te e come usarlo.
>
> Se così fosse uno che entra nel mondo del lavoro nel 1990 non avrebbe mai conosciuto l'esplosione di nuovi linguaggi, runtimes, e tecnologie che abbiamo oggi.
Appunto, ce ne sono fin troppi. Il tempo è limitato... o ti impari cose che è probabile un giorno ti servano o mi spiace ma stai perdendo tempo. Uno può anche studiarsi le cose perché gli piacciono o per "cultura generale" ma è bene che sia cosciente di questo.
> Tornando all'assembly, non c'è l'uso pratico nel mercato del lavoro attuale se non per una nicchia ristrettissima, ma permette ad alex di conoscere dettagli che gli permetterebbero, se solo non avesse il paraocchi, di sviluppare una alternativa concreta a llvm, portando lino su più architetture, con differenti output e documentando il tutto con esempi per gli sviluppatori interessati a scrivere linguaggi alternativi al c, tipo il sottoscritto che non ha però il tempo di farlo.
Allora lo sviluppi come alternativa a LLVM, ma temo che la cosa richieda un sacco di lungo lavoro gratis. Fra l'altro... perché un'alternativa a LLVM? Ci sono problemi in LLVM che Lino risolve o affronta in modo innovativo? Perché alla fine è questo il punto... o permetti allo sviluppatore di essere più produttivo (scrivendo meno codice in meno tempo ad esempio) oppure di fargli piacere quello che fa (evitando di farlo perdere nei dettagli inutili ad esempio) o hai altri vantaggi... oppure stai solo reinventando l'acqua calda.-
Re: Vabbe'...Scritto da: Renton Thurston
> Scritto da: ::1
> > > Imparare per imparare lo fai quando di programmazione non sai niente e vuoi incominciare a farti una cultura generale circa cosa c'è attorno a te e come usarlo.
> >
> > Se così fosse uno che entra nel mondo del lavoro nel 1990 non avrebbe mai conosciuto l'esplosione di nuovi linguaggi, runtimes, e tecnologie che abbiamo oggi.
>
> Appunto, ce ne sono fin troppi. Il tempo è limitato... o ti impari cose che è probabile un giorno ti servano o mi spiace ma stai perdendo tempo. Uno può anche studiarsi le cose perché gli piacciono o per "cultura generale" ma è bene che sia cosciente di questo.
Imparare diversi approcci alla soluzione dei problemi è la chiave per inventare cose nuove, imho.
> > Tornando all'assembly, non c'è l'uso pratico nel mercato del lavoro attuale se non per una nicchia ristrettissima, ma permette ad alex di conoscere dettagli che gli permetterebbero, se solo non avesse il paraocchi, di sviluppare una alternativa concreta a llvm, portando lino su più architetture, con differenti output e documentando il tutto con esempi per gli sviluppatori interessati a scrivere linguaggi alternativi al c, tipo il sottoscritto che non ha però il tempo di farlo.
>
> Allora lo sviluppi come alternativa a LLVM, ma temo che la cosa richieda un sacco di lungo lavoro gratis. Fra l'altro... perché un'alternativa a LLVM? Ci sono problemi in LLVM che Lino risolve o affronta in modo innovativo? Perché alla fine è questo il punto... o permetti allo sviluppatore di essere più produttivo (scrivendo meno codice in meno tempo ad esempio) oppure di fargli piacere quello che fa (evitando di farlo perdere nei dettagli inutili ad esempio) o hai altri vantaggi... oppure stai solo reinventando l'acqua calda.
Il diverso livello di astrazione può permettere o meno alcune ottimizzazioni facendo assunzioni sul codice che non possono essere fatte in un caso o nell'altro.
Ma se non c'è lo sviluppo di una alternativa e una comparativa non lo sapremo mai.Young professional woman and busy mom.-
Re: Vabbe'...Scritto daaltgutente che non utieneil 2013-02-03 15:33:11.0 alle 2013-02-03 15:33:11.0Trollate totali: 11540> Ma se non c'è lo sviluppo di una alternativa e una comparativa non lo sapremo mai.
Appunto.
Comunque, a me piace anche il fatto che L.in.oleum e` un prodotto che ho delineato in tutti i dettagli, cosi` come mi piaceva. Per me e` piacevole usare una cosa che controllo pienamente, dove se un certo aspetto non mi garba lo correggo senza dover chiedere il permesso a nessuno. Poi questo comportamento allontana chi lo vorrebbe usare a parte me, ed e` quel che e` successo, ma pazienza... spero solo che col tempo le modifiche radicali si facciano molto meno probabili.
-
-
Re: Vabbe'...Scritto daaltgutente che non utieneil 2013-02-03 15:28:30.0 alle 2013-02-03 15:28:30.0Trollate totali: 11540> Allora lo sviluppi come alternativa a LLVM, ma temo che la cosa richieda un sacco di lungo lavoro gratis. Fra l'altro... perché un'alternativa a LLVM? Ci sono problemi in LLVM che Lino risolve o affronta in modo innovativo? Perché alla fine è questo il punto... o permetti allo sviluppatore di essere più produttivo (scrivendo meno codice in meno tempo ad esempio) oppure di fargli piacere quello che fa (evitando di farlo perdere nei dettagli inutili ad esempio) o hai altri vantaggi...
Per capire se ci siano questioni innovative in L.in.oleum rispetto a LLVM, e quanti siano i casi del contrario, bisognerebbe aspettare che Lino abbia raggiunto una forma stabile, cosa che sta facendo con la versione 3. A ogni modo saranno sempre dei prodotti diversi, concepiti indipendentemente l'uno dall'altro fin dalla nascita, quindi e` molto probabile che non s'intersechino in molti punti.
> oppure stai solo reinventando l'acqua calda.
Visto che Lino e` del 2001 e LLVM del 2003, potrei casomai dire il contrario, anche se a me non interessa criticare altri per "reinventare". Voi avete un blocco mentale sul reinventare che a me sembra veramente ottuso.
-
-
Re: Vabbe'...Scritto daNon Autenticatoil 2013-02-03 14:37:08.0 alle 2013-02-03 14:37:08.0> Tornando all'assembly, non c'è l'uso pratico nel mercato del lavoro attuale se non per una nicchia ristrettissima, ma permette ad alex di conoscere dettagli che gli permetterebbero, se solo non avesse il paraocchi, di sviluppare una alternativa concreta a llvm, portando lino su più architetture
Questo sì che lo quoto!
-
-
-
Re: Vabbe'...Scritto daNon Autenticatoil 2013-02-03 13:54:27.0 alle 2013-02-03 13:54:27.0Scritto da: ::1
> Scritto da: Renton Thurston
> > Siccome io detesto perdere tempo ad imparare cose inutili e so come ci si sente quando si deve prendere una "valigia di conoscenza" riempita in anni di lavoro e frizione di neuroni e buttarla nel cesso immagino sia lo stesso anche per altri... alex.tg incluso.
>
> È questo il tuo problema. Non riesci a imparare per il gusto di imparare. Con questo ragionamento avremmo un immobilismo del software senza eguali.
bisogna anche portare a casa la pagnotta
io ad esempio preferisco studiare cose che mi portino un ritorno economico, infatti ho messo un attimo da parte l'arduino in attesa di trovare un momento libero
-
-
Re: Vabbe'...Scritto daNon Autenticatoil 2013-02-03 13:41:12.0 alle 2013-02-03 13:41:12.0Scritto da: Renton Thurston
> Scritto da:
> > symfony è un gran framework, decisamente, ma che symfony semplifichi e accorci il lavoro è proprio una gran wakkata
> >
> > magari i comandi di console permettono di risparmiarsi una discreta quantità di codice ripetitivo quando devi affrontare cose semplici
> >
> > quando le cose si fanno discretamente complesse il tempo impiegato a fare le cose symfony-like diventa esponenziale rispetto allo scratch
>
> Questo è vero per qualsiasi framework che ti obblighi a fare le cose con un certo ordine e in un certo modo. Certo inserire codice PHP direttamente nelle pagine HTML è decisamente più svelto da implementare che stare a separare l'accesso ai dati dal business-layer dal resto del codice dalla presentazione... però alla fine rende tutto molto più chiaro e semplice quando devi riprendere in mano le cose o quando stai lavorando in gruppo ad uno stesso progetto o quando vuoi cambiare una query o una regola che è usata in mille pagine senza dover toccare le singole pagine.
> Come tutto ha i suoi vantaggi e i suoi svantaggi.
>
> Conoscere il framework bene però ti aiuta molto e ti predispone a fare le cose in un dato modo ordinato che alla fine poi paga (in senso di produttività, ma anche di piacere nello sviluppare), per questo ha senso investire il proprio tempo in questo senso... anche perché se un giorno devi mettere mano ad un progetto Symfony creato da qualcun altro se non sai nemmeno cos'è non ne esci vivo.
fatti assumere well-done-software evangelist da un qualche sindacato di sviluppatori software allora, perchè le aziende ci sentono solo dall'orecchio del "prima di subito" purtroppo
-
Re: Vabbe'...Scritto daNon Autenticatoil 2013-02-03 14:30:11.0 alle 2013-02-03 14:30:11.0> Capisco molto bene il suo legame con il passato e il fatto che ci impiega così tanto tempo per ragioni "sentimentali" e di "ricordi". Volevo solo però mostrargli che alla fine perdere una giornata su un nuovo algoritmo per renderizzare in software cose che in WebGL ottieni gratis alla fine è del tutto inutile...
Forse inutile, ma non del tutto. De Alfaro diceva che almeno una volta nella vita occorre smontare il giocattolo per capire come funziona.
> sia per gli altri che per lui... perché magari fra qualche anno si guarda indietro e si dice "cazzo... ho impiegato anni della mia vita ad imparare e approfondire cose che non mi sono servite (né mai mi serviranno) a niente quando invece potevo... chessò... studiarmi qualcosa che almeno per un po' mi sarebbe stata utile quando ne avevo bisogno". Siccome io detesto perdere tempo ad imparare cose inutili e so come ci si sente quando si deve prendere una "valigia di conoscenza" riempita in anni di lavoro e frizione di neuroni e buttarla nel cesso immagino sia lo stesso anche per altri... alex.tg incluso.
-
Re: Vabbe'...Scritto dail 2013-02-03 14:32:09.0 alle 2013-02-03 14:32:09.0Trollate totali: 2001Scritto da:
> Forse inutile, ma non del tutto. De Alfaro diceva che almeno una volta nella vita occorre smontare il giocattolo per capire come funziona.
Certo. Ma per capire come funziona non serve mica reimplementarlo. Basta smontarlo.-
Re: Vabbe'...Scritto daNon Autenticatoil 2013-02-03 14:43:06.0 alle 2013-02-03 14:43:06.0> > Forse inutile, ma non del tutto. De Alfaro diceva che almeno una volta nella vita occorre smontare il giocattolo per capire come funziona.
>
> Certo. Ma per capire come funziona non serve mica reimplementarlo. Basta smontarlo.
Smontarlo e rimontarlo.
-
-
-
-
-
Re: Vabbe'...Scritto daaltgutente che non utieneil 2013-02-03 13:50:48.0 alle 2013-02-03 13:50:48.0Trollate totali: 11540> > > > > mentre Lich torna a leggersi il manuale di Java, io torno a modificare i sorgenti del set d'istruzioni IA-32 per L.in.oleum,
> > > >
> > > > Torna a farti le seghe piuttosto.
> > >
> > > Quoto, ascolta i consigli dell'esperto
!
> >
> > Quello l'ho fatto poi, prima di dormire.
> > La prima attivita` non escludeva la seconda.
> >
> > Ho finito poi stamani di splittare tutte quelle push/pop. L'unica cosa rimastami poco chiara (che non ricordo bene) mentre intanto ripassavo tutto il set d'istruzioni, e` il pattern del modulo in virgola mobile, che fa cosi`...
> >
> >> > subpattern macro > > fprem > > fstsw ax > > sahf > > jpe $ - 6 > > endm > >
> >
> > Jump on parity even, 6 byte piu` in alto, cioe` a fprem. Mi ricordo vagamente che fprem era un remainder "parziale", e probabilmente dev'essere ripetuto sugli operandi nello stack della FPU finche` uno dei bit della parola di stato del coprocessore, passato nei flag della CPU, risulta nel flag di parita` in stato "odd", che per qualche ragione segnala la fine dei passaggi del calcolo. All'atto pratico l'istruzione e` intesa calcolare, per esempio, 15.5 % 10.0 = 5.5. Il modulo con operandi in virgola mobile, appunto. Ma c'era il problema che il sorgente era rimasto in una condizione strana, probabilmente perche` tempo fa avevo fatto casino per distrazione senza poi provare a riassemblarlo: al posto di fprem avevo ri-scritto "subpattern", cioe` infilato la macro nella macro stessa. TASM a quanto pare non segnalava quest'assurdita`, ma MASM giustamente fallisce con un "nesting level too high" dopo essere entrato in loop. Ora mi chiedo se la ricostruzione sia giusta. Boh.
>
> Non capisco perché ti ostini a investire tempo su queste cose.
>
> Salvo casi molto molto particolari oramai usare l'assembly per qualsiasi cosa che non sia un microcontrollore ha poco senso. Alla fine è solo tempo che perdi e che non ti porta da nessuna parte. Quello che eventualmente impari non puoi usarlo comunque.
Mi sembra strano che vi ostiniate a pensare che sia cosi` scemo da voler investire tempo su una cosa che non ha speranze. L.in.oleum non e` assembly specifico, e` assembly generico, multipiattaforma. Idealmente, e` fatto perche` quel che lo compone sia riutilizzabile efficacemente sulla maggior parte delle architetture, mantenendo pero` il livello piu` basso possibile. Non e` una perdita di tempo imparare come si fa register naming, si vettorializzano le matrici, si usa un framebuffer, si implementa una heap locale, in cosa si traducono le closures, come funziona il call stack... insomma tutti i concetti che non sono legati a un'architettura particolare, ma che stanno sotto a tutto quel che si trova gia` pronto in alto livello. A me in particolare piace implementare la piu` vasta parte possibile di quel che costituisce l'ambiente di run-time di L.in.oleum in L.in.oleum stesso. Lo vedo molto piu` elegante che so, del fatto che il parser del PHP sia scritto in C, e non in PHP. Tu non la vedi quest'eleganza? Il compilatore di L.in.oleum e` scritto in L.in.oleum, compila se` stesso; e fino alla piu` fondamentale delle librerie di run-time, e` sempre codice L.in.oleum.
Poi ovviamente l'assembly di cui sopra e` la traduzione del set d'istruzioni universale nell'implementazione specifica dei processori della famiglia x86. Vero, quella questione su fprem ha una durata limitata nel tempo: finche` esistono processori x86 abbastanza diffusi da giustificarne la presenza, ma L.in.oleum in se` e` molto piu` longevo.
> Stessa cosa per il voler a tutti i costi fare via software quello che una qualsiasi scheda video da 15 euro comprata su eBay sa fare molto meglio di quanto tu possa mai fare e lo fa in hardware.
Perche` se lo fai in hardware ti leghi a un hardware che tra qualche anno potrebbe non esserci piu`. I core aumentano gia`, e mi chiedo se fra un po', con processori che so... a 200 core, avra` un senso avere processori separati per la grafica CON IL LORO MODO DI FARE LE COSE, separato da quello del processore principale. Non mi sembra un dubbio da poco.
> Meglio è se impieghi il tempo ad imparare qualcosa che ti può tornare utile... chessò... sai qualcosa di PHP... magari prova ad informarti su qualche framework che ti semplifichi e accorci il lavoro come Symfony o simili.
Perche` PHP e` valido per fare siti internet, mentre L.in.oleum e` valido anche per fare il client che s'interfaccia a un server. E in tal caso che lavoro vorresti accorciarmi? Certo se mi mettessi a fare siti a ripetizione potrei occuparmi di symfony eccetera, ma finche` me ne capita uno ogni morte di papa...
> Se proprio vuoi giocare con assembly e affini allora buttati sui microcontrollori. Lì ha ancora senso e in genere il loro assembly è di gran lunga più semplice della porcheria che negli anni è diventato l'Intel che vuole mantenere una retrocompatibilità inutile che complica solo le cose e si trascina dietro errori di progettazione che risalgono all'8086 e relativi salti mortali per evitarli.
Quei salti mortali in L.in.oleum non li vedi neanche perche` li fa lui per te. Su altre architetture che quei salti mortali non li fanno ma ne fanno altri, non vedi gli altri. In ogni caso non ti tangono, cosi` come non ti tangono in Java.
> Ma davvero... perdere tempo sull'assembly di qualsiasi PC "avanzato" ha senso solo in lavori molto molto settoriali di cuoi probabilmente non farai mai parte comunque.
Se mi occupassi solo di assembly specifico ti darei ragione, ma l'assembly specifico, a parte quando devo ritoccare il set d'istruzioni di L.in.oleum, non lo tocco "seriamente" dal 2001. Lo so bene anch'io che e` praticamente inutile inchiodare un sorgente alle peculiarita` di un'architettura solo per fare qualche ottimizzazione in piu`.
-
-
-
-
-