E io non entro nel merito, e` che almeno l'intenzione di avere un'informazione meno bacata non mi puo` non sembrare buona. Tralasciando tutto il resto.
- Scritto da:
>
> - Scritto da: nathan71
> >
> > - Scritto da:
> > > vai vai.
> > >
> > > Poveretti...
> >
> > Perchè non ci illumini tu?

>
> lui è troppo occupato a scrivere sul forum dei
> troll tutto il giorno per poter esprimere
> ragionamenti
> sensati
Quando ci vuole bisogna scrivere anche qui...
Applausi!
Si`, da tempo.
Dal 20 febbraio scorso, lo dissi anche in un vecchio thread dall'altra parte.
Credo sia merito di Nettare: Telecom ha cablato la zona un paio di settimane dopo che si erano resi disponibili quelli di Nettare, ovviamente per evitare concorrenza.
Dal 20 febbraio scorso, lo dissi anche in un vecchio thread dall'altra parte.
Credo sia merito di Nettare: Telecom ha cablato la zona un paio di settimane dopo che si erano resi disponibili quelli di Nettare, ovviamente per evitare concorrenza.
Dice unable to locate eccetera.
Niente proxy e niente TORi, ma Alice pare che non la conosca.
Niente proxy e niente TORi, ma Alice pare che non la conosca.
Che il kernel dei Win 9x fa un gocciolino cacare. Niente di nuovo. Con qualcuno mi dovevo pur sfogare...
No no, affatto.
E` che segui qui, segui li`, stampa questo, fai quell'altro... ogni tanto do' un'occhiata ma se rispondo sempre *veramente* ci perdo tempo. Non sto facendo il prezioso perche` mi state tutti sui fondelli eccetera, e io sono superiore eccetera... no no, scelta pragmatica e anche un po' sofferta.
E` che segui qui, segui li`, stampa questo, fai quell'altro... ogni tanto do' un'occhiata ma se rispondo sempre *veramente* ci perdo tempo. Non sto facendo il prezioso perche` mi state tutti sui fondelli eccetera, e io sono superiore eccetera... no no, scelta pragmatica e anche un po' sofferta.
Giocare a carte, chiaccherare con amici, pisciare il cane fuori, tentare di conquistare il mondo per le 6.
> Ah, ma per moduli intendevo una cosa molto più
> terra-terra: spezzoni di codice, subroutine,
> funzioni da
> riutilizzare.
Eeh... ma anche e specialmente in quei casi di problemi ce ne possono essere parecchi.
> (*) Ops, ho dimenticato di raccontare le mie
> limitate esperienze di programmazione nei
> sotterranei dell'istituto di Fisica, nell'83-84.
> Non saprete mai che vi siete persi.
>
Mah, se e` come ai tempi dei gestionali in COBOL a ragioneria, me lo immagino invece!
Gia` allora la prof si lamentava della carenza di... diceva... linearita`... nei miei listati... cioe` nei listati del mio gruppo, che poi erano miei perche` gli altri giustamente si grattavano.
> In ogni caso, non dò ragione a
> sassofono.
Neanche io sono qui per falsificare i suoi argomenti, infatti sparare sull'assembly obiettando la mancanza di leggibilita` con conseguenze sulla manutenzione e sulla produttivita` e` un po' come sparare sulla croce rossa. Per me pero` e` irrilevante perche` la produttivita` non e` fra i miei obiettivi. Quando dovro` vendere della roba a un tasso di produzione X per far quadrare i conti prendero` sicuramente in considerazione altri linguaggi.
> Sassofono condisce di argomenti le sue personali
> preferenze.
Ho l'impressione che lo stiamo facendo entrambi... e` che poi si fa tardi
> terra-terra: spezzoni di codice, subroutine,
> funzioni da
> riutilizzare.
Eeh... ma anche e specialmente in quei casi di problemi ce ne possono essere parecchi.
> (*) Ops, ho dimenticato di raccontare le mie
> limitate esperienze di programmazione nei
> sotterranei dell'istituto di Fisica, nell'83-84.
> Non saprete mai che vi siete persi.
>

Mah, se e` come ai tempi dei gestionali in COBOL a ragioneria, me lo immagino invece!
Gia` allora la prof si lamentava della carenza di... diceva... linearita`... nei miei listati... cioe` nei listati del mio gruppo, che poi erano miei perche` gli altri giustamente si grattavano.
> In ogni caso, non dò ragione a
> sassofono.
Neanche io sono qui per falsificare i suoi argomenti, infatti sparare sull'assembly obiettando la mancanza di leggibilita` con conseguenze sulla manutenzione e sulla produttivita` e` un po' come sparare sulla croce rossa. Per me pero` e` irrilevante perche` la produttivita` non e` fra i miei obiettivi. Quando dovro` vendere della roba a un tasso di produzione X per far quadrare i conti prendero` sicuramente in considerazione altri linguaggi.
> Sassofono condisce di argomenti le sue personali
> preferenze.
Ho l'impressione che lo stiamo facendo entrambi... e` che poi si fa tardi
No no a volte ci sono... e` il solito discorso di perdere tutto il giorno qui.
> > In realta` no. Perche' il bug potrebbe essere
> > tranquillamente nelle barriere tra un modulo e
> > l'altro che ha costruito.
>
> Le mie esperienze di programmazione (*) sono
> troppo limitate per capire cosa intendi
> esattamente. Attenderò che arrivi alex.tg per
> sentire che ne
> dice.
Intende che un linguaggio hi-level ti impone (o meglio suggerisce con forza) un paradigma, un modello da seguire, che stabilisce il modo in cui sorgenti diversi interagiscono e che e` progettato per limitare al minimo i molti inconvenienti a cui potresti andare incontro tentando di legarli.
Con l'assembly uno invece puo` al massimo suggerire una "forma normale" che aiuti a prevenire questi problemi, solo che non lega la sua sintassi a questa forma, e quindi l'assemblatore non puo` controllare quel che poi il programmatore decide di fare (per scelta o per errore).
> Ma infatti la difficoltà di quest'approccio sta
> nel dedurre il flusso del programma leggendo
> righe, ed è ovvio che un linguaggio ad alto
> livello condensa più operazioni in meno
> righe.
http://0x44.com/tmp/text_reader.txt
Infatti e` un linguaggio molto logorroico. Ma non direi che e` cosi` difficile da dedurre...
> È ovvio che alex.tg ha sviluppato a tal punto
> l'abilità-abitudine di leggere il flusso
> direttamente dal codice macchina, che per lui la
> cosa non rappresenta alcun problema, come chi sa
> leggere la musica sente il brano riprodursi come
> da un disco mentre passa l'occhio su quelle che
> per me sono cacchine di
> mosca.
Forse c'e` del vero, ma io non sono affatto un fenomeno. A ogni modo, resta vero che non ho detto e non diro` mai "venite tutti a programmare in Linoleum che e` la panacea di tutti i mali".
> > tranquillamente nelle barriere tra un modulo e
> > l'altro che ha costruito.
>
> Le mie esperienze di programmazione (*) sono
> troppo limitate per capire cosa intendi
> esattamente. Attenderò che arrivi alex.tg per
> sentire che ne
> dice.
Intende che un linguaggio hi-level ti impone (o meglio suggerisce con forza) un paradigma, un modello da seguire, che stabilisce il modo in cui sorgenti diversi interagiscono e che e` progettato per limitare al minimo i molti inconvenienti a cui potresti andare incontro tentando di legarli.
Con l'assembly uno invece puo` al massimo suggerire una "forma normale" che aiuti a prevenire questi problemi, solo che non lega la sua sintassi a questa forma, e quindi l'assemblatore non puo` controllare quel che poi il programmatore decide di fare (per scelta o per errore).
> Ma infatti la difficoltà di quest'approccio sta
> nel dedurre il flusso del programma leggendo
> righe, ed è ovvio che un linguaggio ad alto
> livello condensa più operazioni in meno
> righe.
http://0x44.com/tmp/text_reader.txt

Infatti e` un linguaggio molto logorroico. Ma non direi che e` cosi` difficile da dedurre...
> È ovvio che alex.tg ha sviluppato a tal punto
> l'abilità-abitudine di leggere il flusso
> direttamente dal codice macchina, che per lui la
> cosa non rappresenta alcun problema, come chi sa
> leggere la musica sente il brano riprodursi come
> da un disco mentre passa l'occhio su quelle che
> per me sono cacchine di
> mosca.
Forse c'e` del vero, ma io non sono affatto un fenomeno. A ogni modo, resta vero che non ho detto e non diro` mai "venite tutti a programmare in Linoleum che e` la panacea di tutti i mali".
Multiculturalismo a Bruxelles
Ad
https://www.davidicke.com/article/513643/firemen-flee-attacked-migrant-youths-multicultural-molenbeek
“They call us for small fires and attack us while we want to help.”
> > decifrabili di "blobbismo". Anche il C ha
> > rivestito in tempi andati un ruolo di assembly
> > multipiattaforma, e tutto sommato ha avuto un
> > discreto successo.
>
> Il C pero` non e` mai stato realmente assembly,
> veniva chiamato assembly multipiattaforma piu`
> per la sua funzione che per
> altro.
Ne derivava senza troppi fronzoli e con pochi compromessi; distingue gli incrementi e i decrementi dalle addizioni algebriche, ha la possibilita` di accedere ai bytes degli operandi (di puntarli singolarmente) e gli mancava l'operazione di rotazione binaria piu` perche` il processore su cui si basava non l'aveva, che perche`... su tutte queste cose se ne fossero analizzate seriamente le implicazioni sulla portabilita`.
Linoleum, sia come vuoi che sia, considerato una cosina interessante o un obbrobrio da temere, fa gia` di piu` per garantire la portabilita`: pone chiaro che se cambia la wordsize architetturale lo stesso listato non sara` direttamente compatibile; e non permette di accedere a singoli bytes (o anche bits) se non via sequenze di load-modify-store che si basano su una notazione completamente big-endian, perche` in questo modo puo` rendersi invulnerabile a un cambio di endianness.
> > vero - considero discretamente self-commenting.
>
> Ma non lo sono. Ci metto la mano sul fuoco che
> non lo
> sono.
Va bene, va bene, prendiamola come opinione personale. Anche per me il cinese non e` leggibile, ma pei cinesi...
> ma hanno il pregio di essere limitate ad uno
> scope ben preciso e quindi di non essere
> globali.
La differenza fra l'atteggiamento tuo (classico e rispettabilissimo) e il mio (piu` permissivo e discutibile) e` che tu favorisci un'impostazione intrinsecamente legata a regole ben precise, io invece preferisco che sia il programmatore, di caso in caso, a darsi (o non darsi) regole. E` in fondo veramente un discorso a monte.
> E invece dovrebbero perche'...
> ...o vengono usati (da te o da qualche libreria
> che stai usando nel codice) e ti esponi ai
> rischi...
Rischi che mi piace correre...
> ...oppure replichi a mano il lavoro meccanico che
> fa il compilatore e quindi sei un
> deficiente.
...anche perche` il compilatore, ancora oggi nel 2008, sembra ancora piu` deficiente di me quando traduco un listato in venti minuti senza neanche senza premurarmi di evitare banali caricamenti ridondanti. E non nego che la cosa mi stupisca. Spero infatti si diano una mossa perche` fra l'altro non disprezzo il C++ e ammiro molto il Java.
E` che hanno ambiti diversi da Linoleum.
Non puoi proprio pensare che coesistano?
> Io spero, SPERO, che nessuno oltre a te lo usi.
Parentesi filosofica. Mi fai sentire in colpa. Ma cosi` come esiste l'assembly nativo per determinati usi, ed esistono tanti altri linguaggi, Linoleum non fa differenza e non dovresti vederlo come un'eresia.
...
cut, non so te ma io mi sono un po' rotto. Non perche` tu m'abbia fatto incazzare, no no per carita`, ti capisco. Ma e` inutile, sprechi fiato a convincere i testoni come me.
> > rivestito in tempi andati un ruolo di assembly
> > multipiattaforma, e tutto sommato ha avuto un
> > discreto successo.
>
> Il C pero` non e` mai stato realmente assembly,
> veniva chiamato assembly multipiattaforma piu`
> per la sua funzione che per
> altro.
Ne derivava senza troppi fronzoli e con pochi compromessi; distingue gli incrementi e i decrementi dalle addizioni algebriche, ha la possibilita` di accedere ai bytes degli operandi (di puntarli singolarmente) e gli mancava l'operazione di rotazione binaria piu` perche` il processore su cui si basava non l'aveva, che perche`... su tutte queste cose se ne fossero analizzate seriamente le implicazioni sulla portabilita`.
Linoleum, sia come vuoi che sia, considerato una cosina interessante o un obbrobrio da temere, fa gia` di piu` per garantire la portabilita`: pone chiaro che se cambia la wordsize architetturale lo stesso listato non sara` direttamente compatibile; e non permette di accedere a singoli bytes (o anche bits) se non via sequenze di load-modify-store che si basano su una notazione completamente big-endian, perche` in questo modo puo` rendersi invulnerabile a un cambio di endianness.
> > vero - considero discretamente self-commenting.
>
> Ma non lo sono. Ci metto la mano sul fuoco che
> non lo
> sono.
Va bene, va bene, prendiamola come opinione personale. Anche per me il cinese non e` leggibile, ma pei cinesi...

> ma hanno il pregio di essere limitate ad uno
> scope ben preciso e quindi di non essere
> globali.
La differenza fra l'atteggiamento tuo (classico e rispettabilissimo) e il mio (piu` permissivo e discutibile) e` che tu favorisci un'impostazione intrinsecamente legata a regole ben precise, io invece preferisco che sia il programmatore, di caso in caso, a darsi (o non darsi) regole. E` in fondo veramente un discorso a monte.
> E invece dovrebbero perche'...
> ...o vengono usati (da te o da qualche libreria
> che stai usando nel codice) e ti esponi ai
> rischi...
Rischi che mi piace correre...
> ...oppure replichi a mano il lavoro meccanico che
> fa il compilatore e quindi sei un
> deficiente.
...anche perche` il compilatore, ancora oggi nel 2008, sembra ancora piu` deficiente di me quando traduco un listato in venti minuti senza neanche senza premurarmi di evitare banali caricamenti ridondanti. E non nego che la cosa mi stupisca. Spero infatti si diano una mossa perche` fra l'altro non disprezzo il C++ e ammiro molto il Java.
E` che hanno ambiti diversi da Linoleum.
Non puoi proprio pensare che coesistano?
> Io spero, SPERO, che nessuno oltre a te lo usi.
Parentesi filosofica. Mi fai sentire in colpa. Ma cosi` come esiste l'assembly nativo per determinati usi, ed esistono tanti altri linguaggi, Linoleum non fa differenza e non dovresti vederlo come un'eresia.
...
cut, non so te ma io mi sono un po' rotto. Non perche` tu m'abbia fatto incazzare, no no per carita`, ti capisco. Ma e` inutile, sprechi fiato a convincere i testoni come me.
> Come gestire codice assembly. Negli anni
> sessanta/settanta ci sono state diverse imprese
> che sono fallite perche' la loro codebase era in
> assembly.
Be', io ho la pretesa che un certo tipo di assembly possa essere relativamente molto piu` mantenibile che l'assembly nativo di che so... un vetusto MC6510, magari. Con questo, non ho difficolta` a credere che non abbiano retto il passo. E` chiaro che i linguaggi ad alto livello, che TUTTAVIA non disprezzo affatto, abbiano vantaggi netti in termini di produttivita`. Non e` in discussione.
> Vedi, un altro vantaggio dello scrivere codice ad
> alto livello e` che e` molto piu`
> autodocumentante di un blob
> assembly.
Ovvio. Tuttavia, non essere troppo digitale. C'e` blob e blob e ci sono livelli piu` o meno decifrabili di "blobbismo". Anche il C ha rivestito in tempi andati un ruolo di assembly multipiattaforma, e tutto sommato ha avuto un discreto successo. Io con la versione 2 includero` diversi esempi fatti per essere particolarmente leggibili, e che - incredibile ma vero - considero discretamente self-commenting. Sono esempi e sono brevi, ma anche sulla scala di progetti intermedi penso si potranno ottenere risultati interessanti in termini di mantenibilita`. Oh, poi i tempi sono cambiati, e` vero, e roba scritta Linoleum ha senso come codebase solo in certi ambiti di nicchia, il che non lo nega nessuno e tantomeno io. Il discorso iniziale verteva esclusivamente sulla velocita`.
> Inoltre anche una sola riga di assembly la
> considero piu` complicata di una riga di c++
> perche' per capire la riga di assembly devi
> leggere un numero imprecisato di righe precedenti
Comprensibile ma va be', quello succede anche in altri linguaggi, ovunque ci siano dipendenze dalle istruzioni precedenti.
> per capire cosa contengono stack e registri,
> l'analisi rischia addirittura di diventare
> globale e non statica se ci sono dei label di
> mezzo
Pero` stack e registri non sono spauracchi e non dovrebbero esserlo. Forse consideri la loro incarnazione vista in moduli che fanno della compattezza e della performance i loro punti chiave e che per forza di cose devono risparmiare bytes e cicli col contagocce. Ma piu` in generale, se non hai un caso del genere, sono aspetti la cui rilevanza si puo` autolimitare nella stesura del codice. E d'altronde io trovo utile averli a disposizione e controllarli in ogni punto, ed e` forse la ragione principale per cui sto producendo questo aggeggio. Altrimenti mi accontentavo di inserire paragrafi assembly nei punti chiave di un'implementazione in C++. Poi, ovvio, non pretendo che nessuno usi Linoleum oltre a me.
> Intanto scriversela che funzioni in modo
> semidecente non e` per nulla ovvio.
Vero, ma come per un po' tutto esistono modelli collaudati.
> Specialmente
> se lo si vuole fare in assembly.
Anche qui continuo a pensare che c'e` modo e modo di rendere piu` o meno leggibile un listato che e` basato sull'assembly di istruzioni per la maggior parte atomiche.
> Seconda cosa sara` sempre una gestione di memoria
> stile C, il che significa che se la usi
> intensivamente sei
> fottuto.
Mah, a mio parere dipende da come la implementi. Ci possono essere una heap dinamica per uso sporadico e diversi banchi statici per uso intensivo, accomunati da una stessa interfaccia, che e` come ho idea di impostare la cosa (e in parte l'ho gia` impostata, anche se e` ancora un'implementazione frettolosa molto migliorabile).
> Terza cosa il codice che la usa avra` bisogno di
> un livello di indirezione extra (come in C/C++)
> tutto a carico del programmatore - in
> assembly.
Vero. Indirezione che tuttavia, se gestita all'esterno delle fasi in cui il tempo e` un fattore critico, in definitiva non troverei molto influente.
> Quarto se sbaglia (cosa che succede piu`
> facilmente, essendo assembly) sovrascrivera` i
> tag del gestore della memoria precipitando il
> programma
> nell'indebuggabilita`.
Vero, ma personalmente valuto piu` importante la maggior capacita` di controllo. E` un punto di vista (ed e` produttivamente perdente, per carita`).
> Cosa c'e` nei registri conta molto se devi capire
> cosa cazzo sta facendo il
> programma.
Conta, ma se di registri ne hai solo cinque (semplificazione tragica ma utile e necessaria), per come il dizionario li lascia vedere all'applicazione essi sono tutti general-purpose, il loro comportamento e` equalizzato su tutte le piattaforme, e la sintassi delle modalita` d'indirizzamento segue un modello coerente, l'individuazione del ruolo di ciascun registro mi risulta mica tanto difficile. A meno che il listato non sia ottimizzato all'estremo e magari usando sorgenti dedicati a una specifica piattaforma.
> In cosa ti riferivi sopra, alle ottimizzazioni
> tue sul codice C++ o a quelle del
> compilatore?
Alle mie ottimizzazioni. La versione _opt e` ottimizzata ragionandoci su`. L'altra e` fatta ancora "a mano" ma riflette una traduzione molto piu` immediata e meccanica delle istruzioni C.
> Come ti ho detto l'uso per calcoli
> di quel tipo e` un caso d'uso anni '60,
La cosa mi rattrista.
ps.
abbi pazienza il ritardo, contrattempo mentre scrivevo.
> sessanta/settanta ci sono state diverse imprese
> che sono fallite perche' la loro codebase era in
> assembly.
Be', io ho la pretesa che un certo tipo di assembly possa essere relativamente molto piu` mantenibile che l'assembly nativo di che so... un vetusto MC6510, magari. Con questo, non ho difficolta` a credere che non abbiano retto il passo. E` chiaro che i linguaggi ad alto livello, che TUTTAVIA non disprezzo affatto, abbiano vantaggi netti in termini di produttivita`. Non e` in discussione.
> Vedi, un altro vantaggio dello scrivere codice ad
> alto livello e` che e` molto piu`
> autodocumentante di un blob
> assembly.
Ovvio. Tuttavia, non essere troppo digitale. C'e` blob e blob e ci sono livelli piu` o meno decifrabili di "blobbismo". Anche il C ha rivestito in tempi andati un ruolo di assembly multipiattaforma, e tutto sommato ha avuto un discreto successo. Io con la versione 2 includero` diversi esempi fatti per essere particolarmente leggibili, e che - incredibile ma vero - considero discretamente self-commenting. Sono esempi e sono brevi, ma anche sulla scala di progetti intermedi penso si potranno ottenere risultati interessanti in termini di mantenibilita`. Oh, poi i tempi sono cambiati, e` vero, e roba scritta Linoleum ha senso come codebase solo in certi ambiti di nicchia, il che non lo nega nessuno e tantomeno io. Il discorso iniziale verteva esclusivamente sulla velocita`.
> Inoltre anche una sola riga di assembly la
> considero piu` complicata di una riga di c++
> perche' per capire la riga di assembly devi
> leggere un numero imprecisato di righe precedenti
Comprensibile ma va be', quello succede anche in altri linguaggi, ovunque ci siano dipendenze dalle istruzioni precedenti.
> per capire cosa contengono stack e registri,
> l'analisi rischia addirittura di diventare
> globale e non statica se ci sono dei label di
> mezzo
Pero` stack e registri non sono spauracchi e non dovrebbero esserlo. Forse consideri la loro incarnazione vista in moduli che fanno della compattezza e della performance i loro punti chiave e che per forza di cose devono risparmiare bytes e cicli col contagocce. Ma piu` in generale, se non hai un caso del genere, sono aspetti la cui rilevanza si puo` autolimitare nella stesura del codice. E d'altronde io trovo utile averli a disposizione e controllarli in ogni punto, ed e` forse la ragione principale per cui sto producendo questo aggeggio. Altrimenti mi accontentavo di inserire paragrafi assembly nei punti chiave di un'implementazione in C++. Poi, ovvio, non pretendo che nessuno usi Linoleum oltre a me.
> Intanto scriversela che funzioni in modo
> semidecente non e` per nulla ovvio.
Vero, ma come per un po' tutto esistono modelli collaudati.
> Specialmente
> se lo si vuole fare in assembly.
Anche qui continuo a pensare che c'e` modo e modo di rendere piu` o meno leggibile un listato che e` basato sull'assembly di istruzioni per la maggior parte atomiche.
> Seconda cosa sara` sempre una gestione di memoria
> stile C, il che significa che se la usi
> intensivamente sei
> fottuto.
Mah, a mio parere dipende da come la implementi. Ci possono essere una heap dinamica per uso sporadico e diversi banchi statici per uso intensivo, accomunati da una stessa interfaccia, che e` come ho idea di impostare la cosa (e in parte l'ho gia` impostata, anche se e` ancora un'implementazione frettolosa molto migliorabile).
> Terza cosa il codice che la usa avra` bisogno di
> un livello di indirezione extra (come in C/C++)
> tutto a carico del programmatore - in
> assembly.
Vero. Indirezione che tuttavia, se gestita all'esterno delle fasi in cui il tempo e` un fattore critico, in definitiva non troverei molto influente.
> Quarto se sbaglia (cosa che succede piu`
> facilmente, essendo assembly) sovrascrivera` i
> tag del gestore della memoria precipitando il
> programma
> nell'indebuggabilita`.
Vero, ma personalmente valuto piu` importante la maggior capacita` di controllo. E` un punto di vista (ed e` produttivamente perdente, per carita`).
> Cosa c'e` nei registri conta molto se devi capire
> cosa cazzo sta facendo il
> programma.
Conta, ma se di registri ne hai solo cinque (semplificazione tragica ma utile e necessaria), per come il dizionario li lascia vedere all'applicazione essi sono tutti general-purpose, il loro comportamento e` equalizzato su tutte le piattaforme, e la sintassi delle modalita` d'indirizzamento segue un modello coerente, l'individuazione del ruolo di ciascun registro mi risulta mica tanto difficile. A meno che il listato non sia ottimizzato all'estremo e magari usando sorgenti dedicati a una specifica piattaforma.
> In cosa ti riferivi sopra, alle ottimizzazioni
> tue sul codice C++ o a quelle del
> compilatore?
Alle mie ottimizzazioni. La versione _opt e` ottimizzata ragionandoci su`. L'altra e` fatta ancora "a mano" ma riflette una traduzione molto piu` immediata e meccanica delle istruzioni C.
> Come ti ho detto l'uso per calcoli
> di quel tipo e` un caso d'uso anni '60,
La cosa mi rattrista.
ps.
abbi pazienza il ritardo, contrattempo mentre scrivevo.
> se anche fosse gestibile non è portabile
Le sequenze di LM per le divisioni e le moltiplicazioni in 64-bit non sono strutturalmente supportate da una versione a 32 bit di Linoleum (per ovvi motivi, se no sarebbe una versione per unita` 64). A parte quello, tutto il resto e` FATTO per essere portabile.
O si da` aria alla bocca e basta qui?
Le sequenze di LM per le divisioni e le moltiplicazioni in 64-bit non sono strutturalmente supportate da una versione a 32 bit di Linoleum (per ovvi motivi, se no sarebbe una versione per unita` 64). A parte quello, tutto il resto e` FATTO per essere portabile.
O si da` aria alla bocca e basta qui?
> No, perche' sarebbero comunque 16 minuti contro
> mezz'ora. Troppo poco considerato i costi di
> sviluppo e manutenzione di un coso in
> pseudo-assembly.
E dai, quanto pensi che sia difficile la manutenzione di codice Linoleum?
> E sei fortunato che praticamente
> lo stai usando per applicazioni anni '60, se
> facevi qualcosa di moderno non erano 95 righe
> contro 350 erano 95 righe contro
> 3500.
Ma ridai, non arrampicarti troppo sugli specchi. Vuoi che inserisca righe vuote anche nei sorgenti Java e C? O che compatti quelle del sorgente Linoleum? O che elimini certe tag che evidenziano l'architettura load-store? Poi si che diventa ingestibile, ma davvero pensi che scrivere quattro righe al posto di una sia meno mantenibile? A prescindere da come sono organizzate?
> Certo basta microgestire cosa c'e` sullo stack,
> in che ordine e cosa ho messo in quali registri,
> possibilmente allocando tutto staticamente
> perche' gestire qualsiasi operazione di
> allocazione dinamica diventa
> un'impresa.
Basta scriversi una libreria di gestione dell'heap, MA porca miseria! Non e` chiaro? Devo spiegare anche queste sciocchezze? Ma si scherza per davvero?
E l'ordine dei registri conta solo dove devi davvero ottimizzare, il resto e` come discesti te, una traduzione e una lettura TRIVIALE. Abbi pazienza l'alzata di voce...
> E` ovvio, la versione non ottimizzata non e`
> ottimizzata.
*sigh*
Non hai capito.
La MIA versione non era ottimizzata, era una traduzione passo passo del tutto TRIVIALE delle istruzioni C. E` quanto chiunque farebbe - senza pensarci un attimo, neanche minimamente a possibili ottimizzazioni nell'allocazione dei registri - se dovesse tradurre quel codice in assembly.
> mezz'ora. Troppo poco considerato i costi di
> sviluppo e manutenzione di un coso in
> pseudo-assembly.
E dai, quanto pensi che sia difficile la manutenzione di codice Linoleum?
> E sei fortunato che praticamente
> lo stai usando per applicazioni anni '60, se
> facevi qualcosa di moderno non erano 95 righe
> contro 350 erano 95 righe contro
> 3500.
Ma ridai, non arrampicarti troppo sugli specchi. Vuoi che inserisca righe vuote anche nei sorgenti Java e C? O che compatti quelle del sorgente Linoleum? O che elimini certe tag che evidenziano l'architettura load-store? Poi si che diventa ingestibile, ma davvero pensi che scrivere quattro righe al posto di una sia meno mantenibile? A prescindere da come sono organizzate?
> Certo basta microgestire cosa c'e` sullo stack,
> in che ordine e cosa ho messo in quali registri,
> possibilmente allocando tutto staticamente
> perche' gestire qualsiasi operazione di
> allocazione dinamica diventa
> un'impresa.
Basta scriversi una libreria di gestione dell'heap, MA porca miseria! Non e` chiaro? Devo spiegare anche queste sciocchezze? Ma si scherza per davvero?
E l'ordine dei registri conta solo dove devi davvero ottimizzare, il resto e` come discesti te, una traduzione e una lettura TRIVIALE. Abbi pazienza l'alzata di voce...
> E` ovvio, la versione non ottimizzata non e`
> ottimizzata.
*sigh*
Non hai capito.
La MIA versione non era ottimizzata, era una traduzione passo passo del tutto TRIVIALE delle istruzioni C. E` quanto chiunque farebbe - senza pensarci un attimo, neanche minimamente a possibili ottimizzazioni nell'allocazione dei registri - se dovesse tradurre quel codice in assembly.
Vieni anche tu in gita in Africa!
Ad
https://www.ilmessaggero.it/AMP/italia/luca_tacchetto_italiano_scomparso_burkina_faso-4209268.html
Le popolazioni locali ti accoglieranno così bene che scomparirai letteralmente dal resto del mondo! Lasciati alle spalle la civiltà occidentale, gli smartphone, la ruota e il fuoco!
O se le operazioni di cui viene misurato il tempo, nel loop piu` interno (come era intesa essere), fossero ripetute milioni di volte.
Il fatto che il programma Linoleum ti sembri non gestibile e` un'opinione su cui generalmente gravano fossilizzazioni mentali; ci sono ALTRI modi di organizzarsi oltre alla gerarchia degli oggetti e all'indentazione in programmazione strutturata.
A ogni modo, la cosa che mi ha stupito e` che il modo in cui ho disposto le istruzioni e allocato i registri nella versione non ottimizzata e` letteralmente stupido.
ps.
devo andare per un po', casomai torno dopocena
-----------------------------------------------------------
Modificato dall' autore il 01 marzo 2008 19.37
-----------------------------------------------------------
Il fatto che il programma Linoleum ti sembri non gestibile e` un'opinione su cui generalmente gravano fossilizzazioni mentali; ci sono ALTRI modi di organizzarsi oltre alla gerarchia degli oggetti e all'indentazione in programmazione strutturata.
A ogni modo, la cosa che mi ha stupito e` che il modo in cui ho disposto le istruzioni e allocato i registri nella versione non ottimizzata e` letteralmente stupido.
ps.
devo andare per un po', casomai torno dopocena
-----------------------------------------------------------
Modificato dall' autore il 01 marzo 2008 19.37
-----------------------------------------------------------
1. Se mi rispondi continuamente tendi a non fermarmi dal bighellonare.
2. Ieri sera ho avuto un caso di programma nato vecchio che ha predato e spolpato a sangue C#, Java 5 e C++.
la cosa m'ha un po' stupito a dire il vero.
I compilatori hi-level si fanno le seghe mentali.
2. Ieri sera ho avuto un caso di programma nato vecchio che ha predato e spolpato a sangue C#, Java 5 e C++.
la cosa m'ha un po' stupito a dire il vero.
I compilatori hi-level si fanno le seghe mentali.