clros ha scritto:
Ma tu hai mai scritto qualcosa sotto AmigaOS (almeno OS4) in C++?
Purtroppo le API Amiga fanno a cazzotti con il C++, che siano MUI o Reaction, sono stato settimane a far funzionare cavolate solo perchè mi sono ostinato a scriverle in C++. Si possono scrivere "montagne" in C++, soprattuto se usi solo OS4, ma le mie idee prevedono innanzitutto portabilità, quindi il lusso del C++ è qualcosa che non mi posso permettere.
Certe cose su Amiga sono scritte solo in C++, se non sbaglio anche alcuni programmi di OS4 sono scritti in C++, AmiPDF dovrebbe esserlo. Questo significa che si può ;-)
Reaction da OS4 rispetta sicuramente di più l'OOP di quanto non lo facesse prima. Reaction del 3.9 contiene delle incoerenze notevoli, soprattutto per ciò che concerne i metodi pubblici/privati e la loro invocazione senza l'utilizzo di macro. Detto questo, e considerando a monte che alcune cose con BOOPSI/MUI rispettano solo la nomenclatura dell'OOP senza in realtà garantire altro... MUI è sicuramente più OOP di Reaction, ma non lo è sempre stato, si è evoluto nel tempo, ed è quello che sta affrontando anche Reaction adesso. Mi riferisco qui alla gestione delle notificazioni, che su MUI all'inizio non rispettavano l'OOP ma che adesso rispettano (pur mantenendo la compatibilità con i vecchi metodi di gestione della notificazione, che guardacaso, sono riportati in OGNI esempio che trovi sulle guide su internet, questo è il reale problema di Amiga OGGI). Reaction non credo lo faccia ancora...
Più che altro l'OOP è il presente, ma sembra che non venga compresa questa cosa :)
Il futuro sono i linguaggi basati su macchine virtuali... linguaggi che ovviamente sono OOP :)
Allora, bisogna stabilire di cosa stiamo parlando esattamente; di Amiga o di Informatica in generale?
Se stiamo parlando di Amiga, bisogna (purtroppo) rendersi conto che il futuro e il presente da te descritti sono molto lontani, se parliamo di informatica generale, bhe allora in questo contesto non mi interessa affatto anche se devo dire che hai sicuramente ragione.
Partiamo da questo presupposto: da programmatore del 21esimo secolo quale sei per forza di cose (perchè vivi nel 21esimo secolo e non hai la macchina del tempo :D) non devi ignorare quello che ti circonda. Partendo da questo presupposto fondamentale, su Amiga non saranno presenti i linguaggi OOP a macchine virtuali, ma non bisogna ignorare il fatto che sia perfettamente possibile scrivere codice in C++, o in C+MUI rispettando i canoni MUI->OOP. Non sto dicendo che bisogna usare per forza il C++, del resto anch'io ho trovato notevoli problemi, sto solo dicendo che usando il C+BOOPSI/MUI bisognerebbe non ignorare mai i canoni dell'OOP supportati da BOOPSI, quindi un buon corso che faccia vedere come scrivere codice secondo questi canoni sarebbe sicuramente apprezzato da tutti.
Un conto è dire che su Amiga non c'è quasi nulla, un altro è dire che non c'è nulla. Nel primo caso si cerca di sfruttare al massimo quel "quasi", nell'altro invece si reinventa da zero tutto il "quasi". I programmatori Amiga tendono a fare sempre la seconda, quando sarebbe estremamente più produttivo seguire la prima... tutti i miei discorsi si basano su questa osservazione, tienilo a mente :)
1) codice interamente scritto in C;
2) Individuazione delle parti critiche;
3) Eventuale riscrittura delle parti critiche in assembly;
E quindi?Scusa chi ha mai scritto ( o solo pensato) di fare in maniera diversa da quello che stai suggerendo tu?
Io ho solo scritto che per ottimizzare qualcosa in ASM devi conoscerlo tutto, non ti basta solo sapere a cosa servono gli mnemonici l e s se poi non hai la minima idea di tutta l’architettura che sta dietro.
Ma non basta per tutto questo un articolo che faccia degli esempi su come ottimizzare il codice utilizzando c/assembly ppc piuttosto che un intero corso assembly ppc? :) è questo ciò di cui in fin dei conti stiamo discutendo :)
La differenza la fanno davvero gli algoritmi
Io sono straconvinto che non è sempre così.Questo perche' non e' vero che nessun compilatore da codice buono come quello
creato dall'uomo…
Già detto, ma ho anche scritto che non è sempre vero ;-)
C'è differenza tra "non è sempre vero" e "è quasi sempre così", se fosse come nel secondo caso allora un intero corso assembly ppc sarebbe utilissimo, ma come puoi notare non è possibile trovare una cosa simile in alcuna rivista specializzata degli ultimi tempi, il motivo è che vale invece il primo caso, non so se mi sono spiegato ;-)
c'è da tenere conto che il GCC è sviluppato quasi unicamente su macchine X86 e quindi ottimizza meglio codice per X86 rispetto a PPC, per quello probabilmente Andrea ha ottenuto risultati maggiori con l'assembler.
Non so se c’entra qualcosa, ma basta vedere le dimensioni di uno stesso programma compilato con il gcc sotto os4 e sotto x86 (stessa ver del compilatore, stessi parametri, stesso programma – differenza ancora + marcata quando si usa il C++)
Uhm, questo confronto non va molto bene, dovresti confrontare il codice generato da un compilatore gcc per x86 e lo stesso ma in versione scritta direttamente da apple...
Stai confrontando infatti le ottimizzazioni generate dal lavoro dei Frieden con quelle del team gcc, non è molto corretto :)
Anche io credo che un corso di Assembly non interesserebbe a nessuno
Magari un unico articolo vista la tendenza amighista ad adorare l'assembly... ;-)
( e lo stesso dicasi - anche se in misura minore – sul tutorial per la gestione di BOOPSI).
Ti ripeto, su questo non sono d'accordo, su Amiga manca una documentazione moderna, una serie di articoli su BOOPSI/Reaction/MUI ed OOP sarebbe fantastica. Avessi esperienze decennali sull'argomento la scriverei io, ma ci vogliono delle persone veramente qualificate e che pensino al futuro mentre scrivono di queste cose (gente che scrive con MUI e Reaction da 10 anni per intenderci, sapendo come rispettare i canoni OOP, ed omettendo tutti i "trucchetti" che si possono fare con il C ma che distruggono la filosofia OOP)... non è semplice, ed è il problema che attanaglia Amiga oggi.
Su Amiga attualmente non possiamo guardare il futuro perché non abbiamo le basi su cui appoggiarci; è necessario prima costruirle.
Non è sempre così ;-)
E questo si può fare IMHO solo partendo dal basso/medio livello
Lo si è fatto già molte (troppe) volte... adesso ci sono due team di sviluppo (OS4 e MOS team) che lo fanno per noi, vogliamo smetterla di rubargli il lavoro ? :-)