Torna indietro   Hardware Upgrade Forum > Software > Programmazione

Apple MacBook Air M3: chi deve davvero comprarlo? La recensione
Apple MacBook Air M3: chi deve davvero comprarlo? La recensione
A distanza di circa 8 mesi arriva l’importante aggiornamento dei MacBook Air: nessun cambiamento estetico, ma una revisione hardware interna con l’upgrade al processore M3. Le prestazioni migliorano rispetto alle generazioni precedenti, e questo fa sorgere una domanda spontanea: a chi è rivolto oggi questo laptop? Cerchiamo di capirlo nella nostra recensione 
ASUS ROG Swift OLED PG49WCD: quando QD-OLED e ultrawide si fondono
ASUS ROG Swift OLED PG49WCD: quando QD-OLED e ultrawide si fondono
Da ASUS un monitor particolare ma molto completo: principalmente indirizzato al videogiocatore, può essere sfruttato con efficacia anche per attività creative e di produzione multimediale
Dreame L10s Pro Ultra Heat: la pulizia di casa tutta sostanza
Dreame L10s Pro Ultra Heat: la pulizia di casa tutta sostanza
Il nuovo robot aspirapolvere domestico di Dreame abbina funzionalità complete a un moccio flottante che raggiunge al meglio gli angoli delle pareti. Un prodotto tutto in uno semplice da utilizzare ma molto efficace, in grado di rispondere al meglio alle necessità di pulizia della casa
Tutti gli articoli Tutte le news

Vai al Forum
Rispondi
 
Strumenti
Old 08-09-2007, 16:19   #101
PGI-Bis
Senior Member
 
L'Avatar di PGI-Bis
 
Iscritto dal: Nov 2004
Città: Tra Verona e Mantova
Messaggi: 4553
Dissentire è un sacrosanto diritto. Poi è possibile farlo con o senza argomentazioni. La prima cosa che deve darti uno che discute di orientamento agli oggetti è la definizione di oggetto. Deve perchè ne esiste più d'una. Tentando di aderire ad un'interpretazione umana dei fenomeni ed essendo quest'ultima non precisamente acquisita è giocoforza che ci siano diverse possibilità. Allora, stiamo esaminando l'orientamento agli oggetti. Bene, partiamo dalla definizione di oggetto che per me è: ...

Senza una definizione di oggetto si critica il vento, l'acqua e l'aria, soprattutto quest'ultima nella sua versione fritta.

La superiorità putativa dell'orientamento agli oggetti rispetto ad altre prospettive sta nel suo perchè. L'orientamento agli oggetti è il tentativo di far eseguire ad un calcolatore la rappresentazione umana della soluzione ad un problema. Compito di enorme difficoltà perchè qui andiamo a seminare un orto, quello della cognizione umana dei fenomeni, che è pieno di buche. Che sia questo il suo perchè è un fatto storico, desumibile dagli scritti di Alan Kay, Nygaard e Dahal: cioè coloro che hanno fondato l'orientamento agli oggetti.

E' putativa perchè un conto è dire un altro è fare. Prendi il caso delle gerarchie di classi (la tassonomia del traballante Core Philosophical Differencies). Perchè la maggior parte dei linguaggi orientati agli oggetti ha le classi e ha l'ereditarietà? C'è una ragione specifica. Altro fatto storico. Negli anni '60, quando nasce l'OO, la teoria dei concetti dominante era la c.d. teoria classica, secondo cui un certo ente risultava essere di un tal tipo in base alla presenza nell'entita dell'insieme di caratteristiche definite nel tipo. Tipi diversi possono essere in relazione di genere a specie, dove la specie è tale se, oltre al possesso di tutte le caratteristiche del genere, ne definisce altre.

Dopo tanto ragionare si giunse a scartare (anni '80, l'era della fuzzy-logic) la teoria classica per l'impossibilità logica di definire quali caratteristiche fossero essenziali alla definizione di un tipo (un qualsiasi breviario di psicologia cognitiva te lo dirà, io posso segnalarti la voce "concetto" in Dizionario di psicologia cognitiva di Eysenc).

Ora, se guardi i linguaggi OO di oggi (scala, ruby, chapel, fortress eccetera), noterai la tendenza a sostituire il rapporto di genere a specie - specie ad esemplare, cementato nelle classi con il concetto più dinamico di "trait", che è, in sintesi, un insieme di caratteristiche non necessariamente possedute. E' verificabile, questa faccenda del trait.

Sono problemi come questo delle classi a farmi dire che la superiorità è putativa. Perchè se è logicamente più economico che un uomo descriva un fenomeno nei termini della prospettiva che gli è propria (per la mera considerazione che la trasformazione di prospettiva è un passaggio in più), questa superiorità è vanificata nell'istante in cui, per un'errata interpretazione della congnizione umana dei fenomeni, io mi trovi comunque a dover esprimere la mia visione delle cose in termini che non corrispondano a questa prospettiva naturale.

Io non voglio infierire sui testi che hai citato perchè ho un grande rispetto del pensiero altrui. Lascia tuttavia che proponga questa frase:

"Mother nature has decided to split the human brain into two halves. One half focuses on logic and the other half on emotions."

Queste non sono argomentazioni che fanno bene all'orientamento agli oggetti o alla critica all'orientamento agli oggetti.

Un ottimo e divertente libro di Jhon Hunt (POET), che io consiglio sempre, ci rivela effettivamente l'esistenza di una dualità della mente. A dire il vero è una molteplicità più che una dualità. Altrettanto ottimo, ma meno divertente, è un libro sul ragionamento, di cui ora non ricordo l'autore ma si intitola Il Ragionamento, edito da CEDAM, Padova, il quale ci dice che la logica è quanto di più estraneo possa proporsi per trattare della mente umana. Detta in tre parole, la logica è deduzione (il trarre conclusioni vere) mentre il cervello umano è una macchina induttiva (trae indifferentemente conclusioni vere, false, possibili o impossibili).

In vero, una dualità che a noi interessa per l'analisi dell'orientamento agli oggetti esiste ed è anche piuttosto interessante perchè, applicata, spiega alcuni imbarazzi. La dualità a cui mi riferisco è tra l'acquisizione cosciente della cognizione e la cognizione così acquisita.

Senza star qui ad annoiarvi oltre misura mi limito a dire che l'acquisizione cosciente, volontaria, di conoscenza è un meccanismo procedurale, nel senso che consta di una serie ordinata di attività (mentali). La cognizione in sè, intesa come consapevolezza del significato dei fenomeni, è invece dichiarativa.

Una conseguenza diretta di ciò, utile agli analisti, è che se in un codice sorgente apparentemente costituito di concetti elegantemente espressi nella più piena immediatezza vi trovate tra i piedi qualcosa che puzza di procedurale potete legittimamente desumere che quel pezzo di codice sia il frutto di un ragionamento in atto al momento della stesura del codice. Cioè chi ha scritto il codice ha rappresentato non qualcosa che sapeva ma qualcosa di cui stava acquisendo coscienza.

Quanti abbiano avuto il dispiacere di leggere "Refactoring" di Fowler scoprono qui, adesso (ammesso che non lo sapessero già) una ragione per cui esso può rendersi necessario. Se posso scrivere codice che rappresenta il ragionamento in atto, una volta che tale ragionamento si sia concluso posso anche tradurre quel procedimento nella sua forma dichiarativa. Cioè io scrivo codice procedurale perchè parlo di una cosa di cui non ho piena consapevolezza: sto formando quella consapevolezza mentre scrivo.

Parlo, ovviamente, della presenza di intermezzi procedurali in programmi altrimenti orientati agli oggetti. Un programma volutamente procedurale è la rappresentazione procedurale di un fenomeno che può essere o non essere procedurale.

E non posso lasciarlo così com'è, ci si chiederà. No. L'indagine consapevole sul perchè delle cose che ci porta ad acquisire conoscenza, il ragionamento, è un'attività estremamente dispendiosa. Tanto dispendiosa che, pare, il cervello, potendo, la eviti. Nella descrizione di un fenomeno la quantità di conoscenza pregressa o dedotta, il numero di cose che sono perchè sì e basta, dovrebbe essere più elevata della quantità di conoscenza che è il frutto di un'acquisizione consapevole e contestuale, cioè formata razionalmente nel momento in cui si esprime il fenomeno. Vale a dire che un programma è per lo più espresso attraverso la dichiarazione di entità, caratteristiche e relazioni, tutta materia "statica".

Comunque, e per nascondere il fatto che praticamente non so più di cosa stavo parlando, dirò questo: la difficoltà dell'orientamento agli oggetti sta nell'ambiziosità del suo scopo e nella relativa incertezza delle sue fondamenta. Ma è in questa ambiziosità che va ricercata la sua superiorità. E' questo desiderio di consentire ad un uomo di esprimersi nella programmazione di un calcolatore. Ed è una necessità. I calcolatori hanno un perchè, una ragione per cui l'uomo li ha inventati. Ma mi fermo qui.
__________________
Uilliam Scecspir ti fa un baffo? Gioffri Cioser era uno straccione? E allora blogga anche tu, in inglese come me!
PGI-Bis è offline   Rispondi citando il messaggio o parte di esso
Old 08-09-2007, 16:43   #102
variabilepippo
Senior Member
 
L'Avatar di variabilepippo
 
Iscritto dal: Mar 2007
Messaggi: 1792
Quote:
...Comunque, e per nascondere il fatto che praticamente non so più di cosa stavo parlando, dirò questo: la difficoltà dell'orientamento agli oggetti sta nell'ambiziosità del suo scopo e nella relativa incertezza delle sue fondamenta. Ma è in questa ambiziosità che va ricercata la sua superiorità. E' questo desiderio di consentire ad un uomo di esprimersi nella programmazione di un calcolatore. Ed è una necessità. I calcolatori hanno un perchè, una ragione per cui l'uomo li ha inventati. Ma mi fermo qui.
Un bell'excursus, forse fin troppo digressivo per quelle che sono le necessità di sintesi tipiche di un mezzo quale è un forum, ma che fallisce nel persuadere me (uno che propugna la superiorità quadratica media dell'OOP e dell'OOM) della superiorità dell'orientamento ad oggetti indipendentemente dal contesto. Mi dispiace ma non sono ancora convinto della validità universale del "Se fosse possibile sarebbe sempre opportuno usare la prospettiva orientata agli oggetti". E' quel sempre "ecumenico" che mi fa accapponare la pelle!

Per esempio quando si lavora "vicino" alla macchina imporre aprioristicamente ed acriticamente il modello ad oggetti è quanto meno una forzatura, detto questo sono più che convinto che nella stragrande maggioranza dei casi l'approccio OO porti solo dei benefici.
variabilepippo è offline   Rispondi citando il messaggio o parte di esso
Old 08-09-2007, 17:42   #103
k0nt3
Senior Member
 
Iscritto dal: Dec 2005
Messaggi: 7041
Quote:
Originariamente inviato da PGI-Bis Guarda i messaggi
Comunque, e per nascondere il fatto che praticamente non so più di cosa stavo parlando, dirò questo: la difficoltà dell'orientamento agli oggetti sta nell'ambiziosità del suo scopo e nella relativa incertezza delle sue fondamenta. Ma è in questa ambiziosità che va ricercata la sua superiorità. E' questo desiderio di consentire ad un uomo di esprimersi nella programmazione di un calcolatore. Ed è una necessità. I calcolatori hanno un perchè, una ragione per cui l'uomo li ha inventati. Ma mi fermo qui.
se lo scopo è avvicinarsi al modo di pensare dell'uomo la risposta non può essere von Neumann. c'è qualcosa di intrinsecamente sbagliato in questo tentativo IMHO

ps. particolarmete interessante il post in ogni caso
k0nt3 è offline   Rispondi citando il messaggio o parte di esso
Old 08-09-2007, 18:10   #104
PGI-Bis
Senior Member
 
L'Avatar di PGI-Bis
 
Iscritto dal: Nov 2004
Città: Tra Verona e Mantova
Messaggi: 4553
Io mi ero ripromesso di non scrivere più encicliche di questa risma. Ma mi hai fatto un assist a cui non ho saputo restistere perchè sono questioni assolutamente affascinanti.

L'orientamento agli oggetti (un possibile orientamento agli oggetti) non è un generico avvicinarsi al modo di pensare di un essere umano ma è consentire ad un essere umano di esprimere il proprio pensiero senza trasformazioni intermedie.

La superiorità di questo orientamento agli oggetti non è una possibilità. Per quanto uno possa avvicinarsi alla meccanica di un calcolatore egli, in quanto essere umano, non potrà che descrivere ciò che osserva secondo il punto di vista di un essere umano. Parole come "registro di memoria", "istruzione", "bit" sono inevitabili astrazioni concettuali di ciò che è fisicamente. Inevitabili. Vi è mai capitato di vedere una penna cadere da un tavolo? Bene, chiedete ad un fisico teorico se le penne possono cadere. Vi dirà che la penna in verità non fa un bel niente. La naturale descrizione del fenomeno è tuttavia personificante perchè tale è la tendenza del pensiero umano: noi vediamo delle cose che si muovono, suonano, che cambiano colore... sono tutte proiezioni dell'io. Lo stesso vale per il calcolatore. E' una cricca di atomi variamente manipolati, i quali subiscono delle eccitazioni energetiche... per la verità atomo è un'astrazione... eccetera eccetera. C'è tutta un filosfia che indaga sulla possibilità che l'uomo possa acquisire una conoscenza dell'essere che non sia contaminata dai propri schemi interpretativi.

Io cerco questo orientamento agli oggetti perchè non vedo alternative. Se non sta qui il motivo per cui dovrei usare l'orientamento agli oggetti allora dove sta? Perchè pur con tutte le sue magagne, la prospettiva procedurale, vale a dire l'interpretazione dei fenomeni come sequenze parzialmente ordinate di operazioni elementari su valori immagazzinati in registri di memoria, vanta un'esatta corrispondenza con il modello di funzionamento di un calcolatore.

In questo senso la prospettiva procedurale è verificabile al millesimo di millimetro. Rivolgersi ad altri punti di vista significa abbandonare questa certezza. Ebbene, qual'è il vantaggio offertomi a fronte di questa perdita?

La Human OOP mi dice che il vantaggio sta nell'evitare una trasformazione di prospettiva: io affido al compilatore il compito di tradurre la rappresentazione umana di un fenomeno in rappresentazione procedurale. Trasformazione che, altrimenti, sono costretto a fare io: essendo fisiologicamente costretto ad osservare le cose in termini umani, ogni qualvolta io debba esprimere queste cose in termini diversi dovrò fare una traduzione. Mi sembra che non si possa scampare a questa trappola.

PS: io non cerco nè voglio convincere alcuno di alcunchè. Fatico già a convincere me stesso. Mi preme invece stimolare una visione critica di quanto si sente dire. E c'entra col topic perchè, alla fin fine, io sarei curioso di sapere quale sia l'orientamento agli oggetti a cui fa riferimento il buon Torvalds quando ne critica la realizzazione in C++.
__________________
Uilliam Scecspir ti fa un baffo? Gioffri Cioser era uno straccione? E allora blogga anche tu, in inglese come me!

Ultima modifica di PGI-Bis : 08-09-2007 alle 18:14.
PGI-Bis è offline   Rispondi citando il messaggio o parte di esso
Old 08-09-2007, 20:48   #105
cdimauro
Senior Member
 
L'Avatar di cdimauro
 
Iscritto dal: Jan 2002
Città: Germania
Messaggi: 26107
Quote:
Originariamente inviato da mindwings Guarda i messaggi
Gnome+Eclipse ci girano tranquillamente con 512 mb di ram
Ho specificato KDE perché, per quanto mi riguarda, è l'unico wm decente e che offre un'interfaccia simile a quella di Windows (come look & feel).
Quote:
Se uno usa Kde solitamente usa Kmail che è un ottimo software e non Evolution
KMail non ha tutte le funzionalità di Evolution, e non sono disposto a rinunciarci.
Quote:
con Vista con 512 mb di ram non vai da nessuna parte .Se ci devi usare aero con Vista devi avere una Buona scheda grafica ,
Mi sembra ovvio che non bastino: io voglio usare il sistema al meglio, e non voglio rinunciare a nessuna comodità per consumare meno risorse, come potrei fare eliminando i servizi aggiuntivi di Vista, usando l'interfaccia senza effetti grafici, ecc., e come farei con Linux rinunciando a KDE, Evolution, ecc.
Quote:
in ambiente linux una geforce4 qualunque ti permette di avere gli stessi effetti grafici (io personalmente non li uso , per dovere di cronaca)...
Una scheda grafica di classe DirectX 8, qual è la GF4, NON PUO' realizzare gli stessi effetti grafici di una di classe DX 9, che è il requisito minimo indispensabile per attivare Aero.

Tra l'altro tanta gente confonde la sfocatura delle finestre di Aero con la trasparenza delle altre interfacce grafiche: niente di più diverso.

Speriamo sia volta buona per chiudere questo OT che si trascina da tempo.
Quote:
Già autolesionisti e cerebrolesi ...
C'è qualcuno che ci riesce a programmare in quel modo
che a te pare orrendo
Non metto in dubbio che ci riescano, ma simulare la programmazione a oggetti usando quella procedurale è tanto bello quanto una martellata sulle palle.

Eh, sì, è a dir poco ORRENDO: basti vedere a quali contorsionismi devono scendere a patti pur di utilizzare il paradigma degli oggetti. Già soltanto a guardare il codice sopraggiungono dei conati di vomito...
Quote:
Se non ci riesci non importa
Figurati: come ti dicevo io programmavo a oggetti in assembly quando questa gente nemmeno sapeva cos'era un oggetto.

Ma è una cazzata enorme, perché in realtà NON è programmazione a oggetti, ma procedurale che la simula. I vantaggi della programmazione a oggetti dove sono, se devo usare dei contorsionismi procedurali per simulare ereditarietà e polimorsmo?

Infatti il codice fa comunque pena e compassione, perché la forzatura è evidentissima. Il codice è inguardarbile.
Quote:
qualcuno lo fa e con ottimi risultati ---> Gimp
Ottimi? Se The GIMP è un ottimo risultato allora per PhotoShop dovremmo coniare un nuovo termine...

Questi programmatori dovrebbero capire un concetto a dir poco lapalissiano quando lavorano per realizzare applicazioni che devono usare altre persone: bisogna mettere al centro le esigenze dell'utente.
Poi possono anche sfogarsi come vogliono per raggiungere questi obiettivi.
Quote:
Buon V-Day
Grazie. C'era molta gente: speriamo si muova finalmente qualcosa.
__________________
Per iniziare a programmare c'è solo Python con questo o quest'altro (più avanzato) libro
@LinkedIn Non parlo in alcun modo a nome dell'azienda per la quale lavoro
Ho poco tempo per frequentare il forum; eventualmente, contattatemi in PVT o nel mio sito. Fanboys
cdimauro è offline   Rispondi citando il messaggio o parte di esso
Old 08-09-2007, 20:50   #106
cdimauro
Senior Member
 
L'Avatar di cdimauro
 
Iscritto dal: Jan 2002
Città: Germania
Messaggi: 26107
Quote:
Originariamente inviato da mindwings Guarda i messaggi
Ognuno può usare quello che vuole per scrivere codice...
La differenza sta in quello che scrive, in ciò che crea. Se un programmatore
è talentuoso lo sarà con qualsiasi strumento...
Gli strumenti permetto anche di raggiungere più velocemente e/o comodamente gli scopi prefissi.
Quote:
L'importante è ciò che produce ognuno utilizza lo strumento che più gli conviene.
Ci sono strumenti e strumenti. Puoi continuare a usare l'editor testuale che vuoi, ma se non ha delle funzionalità di rifattorizzazione del codice, la produttività non sarà certo la stessa, pur producendo lo STESSO, ottimo, codice.
Quote:
Puoi avere la racchetta migliore del mondo ma non per questo puoi esprimere il gioco di Federer
Infatti l'idea è esprimere il gioco di Federer con la racchetta migliore al mondo.
__________________
Per iniziare a programmare c'è solo Python con questo o quest'altro (più avanzato) libro
@LinkedIn Non parlo in alcun modo a nome dell'azienda per la quale lavoro
Ho poco tempo per frequentare il forum; eventualmente, contattatemi in PVT o nel mio sito. Fanboys
cdimauro è offline   Rispondi citando il messaggio o parte di esso
Old 08-09-2007, 20:54   #107
cdimauro
Senior Member
 
L'Avatar di cdimauro
 
Iscritto dal: Jan 2002
Città: Germania
Messaggi: 26107
Quote:
Originariamente inviato da mindwings Guarda i messaggi
Anche io all'inizio ho avuto problemi , ma si possono superare
i pregiudizi proprio non li mando giu della serie : " chi usa linux ha tempo da perdere "

Uso con molta soddisfazione sia Xp che Debian Linux
Quelli che tu chiami pregiudizi sono semplicemente il frutto dell'esperienza vissuta.

Io a lavoro dopo un anno e mezzo di sofferenze con Linux sono passato a Windows e sono a dir poco rinato. Adesso sono decisamente più produttivo e sviluppo con maggior comodità.

Comunque stiamo continuando a inquinare il thread con discussioni OT di cui, tra l'altro, qui s'è ampiamente parlato in passato, anche recente: direi di darci un taglio e parlare esclusivamente di programmazione, sfruttando lo spunto datoci da chi ha aperto il thread.
__________________
Per iniziare a programmare c'è solo Python con questo o quest'altro (più avanzato) libro
@LinkedIn Non parlo in alcun modo a nome dell'azienda per la quale lavoro
Ho poco tempo per frequentare il forum; eventualmente, contattatemi in PVT o nel mio sito. Fanboys

Ultima modifica di cdimauro : 08-09-2007 alle 20:58.
cdimauro è offline   Rispondi citando il messaggio o parte di esso
Old 08-09-2007, 20:56   #108
cdimauro
Senior Member
 
L'Avatar di cdimauro
 
Iscritto dal: Jan 2002
Città: Germania
Messaggi: 26107
Quote:
Originariamente inviato da PGI-Bis Guarda i messaggi
La possibilità di fare programmazione orientata agli oggetti si fonda sulla capacità dei compilatori di operare non solo come traduttori simbolici ma anche come trasformatori di prospettiva (da OO a procedurale nel caso di linguaggio OO).

Scrivere a mano ciò che produrrebbe un compilatore a fronte di un codice sorgente OO non è orientamento agli oggetti. Perchè il prodotto finale della compilazione è sempre ed immancabilmente procedurale. Lo è perchè la macchina che dovrà interpretare quel prodotto è meccanicamente vincolata ad un interpretazione procedurale dei fenomeni.
Concordo: è soltanto la simulazione di un processo usando la programmazione procedurale, ma non c'entra niente con quella a oggetti che permettono di usare "nativamente" tanti linguaggi.

D'altra parte basti vedere quella libreria C per "programmare a oggetti" per rendersi conto di quanto lontano sia quest'ultima, e farragginoso il meccanismo introdotto: un vero schifo (e sono molto buono ).
__________________
Per iniziare a programmare c'è solo Python con questo o quest'altro (più avanzato) libro
@LinkedIn Non parlo in alcun modo a nome dell'azienda per la quale lavoro
Ho poco tempo per frequentare il forum; eventualmente, contattatemi in PVT o nel mio sito. Fanboys
cdimauro è offline   Rispondi citando il messaggio o parte di esso
Old 08-09-2007, 20:58   #109
cdimauro
Senior Member
 
L'Avatar di cdimauro
 
Iscritto dal: Jan 2002
Città: Germania
Messaggi: 26107
Quote:
Originariamente inviato da k0nt3 Guarda i messaggi
a parte che questo non diminuisce il potere espressivo del linguaggio perchè qualsiasi cosa volevi fare usando i template la puoi fare in un altro modo... comunque la metaprogrammazione in C esiste e si basa sul preprocessore (anche se minimale)
Codice:
#define SWAP(a, b, type) { type __tmp_c; c = b; b = a; a = c; }

int main()
{
    int a = 3;
    int b = 5;

    printf("a is %d and b is %d\n", a, b);
    SWAP(a, b, int);
    printf("a is now %d and b is now %d\n", a, b);

    return 0;
}
Il preprocessore non fa parte del linguaggio.
Quote:
inoltre se parliamo di C++ i template non sono sempre una soluzione elegante e/o efficiente
http://people.cs.uchicago.edu/~jacob...templates.html
soprattutto quando dice
Infatti i template sono uno strumento che va imparato.
__________________
Per iniziare a programmare c'è solo Python con questo o quest'altro (più avanzato) libro
@LinkedIn Non parlo in alcun modo a nome dell'azienda per la quale lavoro
Ho poco tempo per frequentare il forum; eventualmente, contattatemi in PVT o nel mio sito. Fanboys
cdimauro è offline   Rispondi citando il messaggio o parte di esso
Old 08-09-2007, 21:03   #110
cdimauro
Senior Member
 
L'Avatar di cdimauro
 
Iscritto dal: Jan 2002
Città: Germania
Messaggi: 26107
Quote:
Originariamente inviato da variabilepippo Guarda i messaggi
La possibilità di mappare entità reali in oggetti ti è data dalla presenza di opportuni costrutti sintattici, nulla ti vieta di scrivere macro e strutture adatte a rappresentare oggetti in Assembly. Sono convinto che non ne valga assolutamente la pena (per una lunghissima serie di ragioni), ma tecnicamente si può fare, come è d'altronde dimostrato dai numerosi esempi reperibili on-line.

Considera poi che il C++ è nato come un "C con le classi":



Ed il C non è altro che un Assembly "on steroids":
Quella di usare un altro linguaggio (intermedio) per compilare i sorgenti scritti un altro è una prassi consolidata, perché è una via molto semplice e veloce per ottenere in tempi brevi un compilatore per un nuovo linguaggio.

Ma il rapporto fra i due linguaggi finisce qui.

Ad esempio, anche il primo compilatore Eiffel convertiva il codice in C, ma il codice C prodotto era... procedurale!
Infatti non aveva NULLA a che vedere coi concetti espressi dal codice sorgente Eiffel, che facevano uso di oggetti, contratti, ecc., se non che l'esecuzione genera i risultati che ci si aspetteva dal sorgente in Eiffel.
__________________
Per iniziare a programmare c'è solo Python con questo o quest'altro (più avanzato) libro
@LinkedIn Non parlo in alcun modo a nome dell'azienda per la quale lavoro
Ho poco tempo per frequentare il forum; eventualmente, contattatemi in PVT o nel mio sito. Fanboys
cdimauro è offline   Rispondi citando il messaggio o parte di esso
Old 08-09-2007, 21:05   #111
PGI-Bis
Senior Member
 
L'Avatar di PGI-Bis
 
Iscritto dal: Nov 2004
Città: Tra Verona e Mantova
Messaggi: 4553
Adesso non ho sottomano le specifiche del linguaggio di programmazione C ma, se non ricordo male, il preprocessore è esplicitamente menzionato dunque dovrebbe essere parte del linguaggio di programmazione C (cioè la possibilità di fare pre-processing così come là descritto). Qualcuno con le specifiche sott'occhio può confermare o smentire?
__________________
Uilliam Scecspir ti fa un baffo? Gioffri Cioser era uno straccione? E allora blogga anche tu, in inglese come me!
PGI-Bis è offline   Rispondi citando il messaggio o parte di esso
Old 08-09-2007, 21:06   #112
cdimauro
Senior Member
 
L'Avatar di cdimauro
 
Iscritto dal: Jan 2002
Città: Germania
Messaggi: 26107
Quote:
Originariamente inviato da k0nt3 Guarda i messaggi
per lo meno lui ha dimostrato di saper programmare che ti piaccia o no.
E' una parola grossa per chi si lascia andare a certe dichiarazioni ridicole.
Quote:
per fare un paragone quando un tale di nome zio Bill ha consegnato DOS a IBM, quest'ultima l'ha testato scoprendo oltre 300 bugs in circa 4000 linee di codice una media di tutto rispetto
FONTE: http://www.ordineingegneri.bergamo.i...e02/storia.htm
Il DOS di cui parli l'aveva sviluppato un'altra società e non Gates.
Quote:
per quanto riguarda GIT vi consiglio di conoscerlo prima di giudicarlo.. perchè non è vero che software di quel tipo ce n'è a bizzeffe
Infatti avevo detto un'altra cosa: vatti a rileggere il mio messaggio.
__________________
Per iniziare a programmare c'è solo Python con questo o quest'altro (più avanzato) libro
@LinkedIn Non parlo in alcun modo a nome dell'azienda per la quale lavoro
Ho poco tempo per frequentare il forum; eventualmente, contattatemi in PVT o nel mio sito. Fanboys
cdimauro è offline   Rispondi citando il messaggio o parte di esso
Old 08-09-2007, 21:10   #113
cdimauro
Senior Member
 
L'Avatar di cdimauro
 
Iscritto dal: Jan 2002
Città: Germania
Messaggi: 26107
Quote:
Originariamente inviato da PGI-Bis Guarda i messaggi
Adesso non ho sottomano le specifiche del linguaggio di programmazione C ma, se non ricordo male, il preprocessore è esplicitamente menzionato dunque dovrebbe essere parte del linguaggio di programmazione C (cioè la possibilità di fare pre-processing così come là descritto). Qualcuno con le specifiche sott'occhio può confermare o smentire?
Sì, nel K&R e nell'ANSI C il preprocessore è integrato nelle implementazioni del linguaggio.

Io mi riferisco al fatto che un preprocessore concettualmente NON è legato a uno specifico linguaggio.

Infatti in qualsiasi momento si può integrare un preprocessore in un qualunque linguaggio, senza cambiare di una virgola la sintassi del linguaggio e i compilatori già esistenti.
__________________
Per iniziare a programmare c'è solo Python con questo o quest'altro (più avanzato) libro
@LinkedIn Non parlo in alcun modo a nome dell'azienda per la quale lavoro
Ho poco tempo per frequentare il forum; eventualmente, contattatemi in PVT o nel mio sito. Fanboys
cdimauro è offline   Rispondi citando il messaggio o parte di esso
Old 08-09-2007, 21:14   #114
cdimauro
Senior Member
 
L'Avatar di cdimauro
 
Iscritto dal: Jan 2002
Città: Germania
Messaggi: 26107
Quote:
Originariamente inviato da k0nt3 Guarda i messaggi
ti dirò.. per cose banali non è nemmeno una porcheria. un paio di puntatori a funzione e la tua stuct diventa un "oggetto" che ha relazioni con altri "oggetti"
No, rimane una struct con dei puntatori a funzione.

In soldoni stai continuando a fare quello che facevi anche prima: programmare proceduralmente per modellare la soluzione di un problema.

Infatti il linguaggio non è cambiato: non era oggetti prima e non lo è nemmeno dopo questa "trovata".
Quote:
ovvio che se devi implementare l'ereditarietà e tutto il resto diventa una porcheria, ma per quello infatti ci sono linguaggi apposta
Infatti E' una porcheria, perché se c'è l'esigenza di simulare la programmazione a oggetti mi sembra a dir poco lapalissiano passare a un linguaggio che permetta di farlo "nativamente", con tutti i benefici del caso.
__________________
Per iniziare a programmare c'è solo Python con questo o quest'altro (più avanzato) libro
@LinkedIn Non parlo in alcun modo a nome dell'azienda per la quale lavoro
Ho poco tempo per frequentare il forum; eventualmente, contattatemi in PVT o nel mio sito. Fanboys
cdimauro è offline   Rispondi citando il messaggio o parte di esso
Old 08-09-2007, 21:21   #115
cdimauro
Senior Member
 
L'Avatar di cdimauro
 
Iscritto dal: Jan 2002
Città: Germania
Messaggi: 26107
Quote:
Originariamente inviato da marco.r Guarda i messaggi
Quello che intendo dire e' che le funzionalita' in piu' del C++ vengono ad un costo notevole e, anche discorsi del tipo "il C e' meglio del C++" li trovo ridicoli, posso capire chi invece la mette sul "uso il C perche' secondo me il gioco non vale la candela", soprattutto in certi contesti.
Concordo, e infatti si può decidere liberamente di NON usare certe caratteristiche del C++. Però in un progetto scritto in C non puoi decidere di usare caratteristiche che il linguaggio non ha.

Ecco perché oggi non ha senso utilizzare il C come linguaggio: per male che vada, in un progetto in C++ si può decidere di non usare nessuna caratteristica che il linguaggio offre in più rispetto al C.
Scelta discutibile, ma possibile. Solo che in qualsiasi momento si può cambiare idea e decidere di sfruttarne qualche costrutto.
Quote:
Ad esempio gli iteratori, anche se molto comodi, richiedono una quantita' non banale di codice da scrivere, tanto che nei casi semplici uno non li usa, e ad esempio cicla direttamente sugli indici di un array. La cosa non e' bella perche' se certe forme, che dovrebbero esseer idiomatiche, non vengono usate nei casi semplici, i principianti tendono a non impararle e ad usarle col risultato che non lo faranno neanche nei casi in cui tornerebbe comodo, e rischiano di non capire quando lo fanno gli altri.
Vero. Ecco anche perché preferisco ben altro, come sai.
__________________
Per iniziare a programmare c'è solo Python con questo o quest'altro (più avanzato) libro
@LinkedIn Non parlo in alcun modo a nome dell'azienda per la quale lavoro
Ho poco tempo per frequentare il forum; eventualmente, contattatemi in PVT o nel mio sito. Fanboys
cdimauro è offline   Rispondi citando il messaggio o parte di esso
Old 08-09-2007, 21:26   #116
cdimauro
Senior Member
 
L'Avatar di cdimauro
 
Iscritto dal: Jan 2002
Città: Germania
Messaggi: 26107
Quote:
Originariamente inviato da k0nt3 Guarda i messaggi
io non metto in dubbio la sua conoscenza dell'argomento, secondo me ha un modo di porsi sbagliato, ma questo fa parte del suo carattere
Da quel che scrive la si mette in dubbio, eccome.
Quote:
ecco pensate agli iteratori! il modo sbagliato per risolvere il problema giusto (ed è facile incappare in casi del genere trai programmatori che credono che Dio sia un oggetto) è vero che nel 99% dei casi quando itero su un array non me ne frega niente di sapere quanto è lungo, ma magari mi serve sapere qual'è l'elemento prima, o quello dopo, o quello modulo 2 per 6 chessò
ecco perchè il modo corretto per risolvere il problema è il seguente
Codice:
foreach (j, char c; input)
{
       ...
       char a = c + (input[j%15]/input[j*(j-1)*(j-2)*(j-3)*(j-4)*(j^2)-1]);
       ...
}
con la possibilità di omettere il j nel caso sia superfluo

poi ci sono casi in cui serve definire un modo particolare di iterare su una collezione e lì si usa il buon vecchio pattern Iterator, ma sono casi particolari. l'importante è non sentirsi stupidi a ciclare su array per via del fatto che vanno specificati tutte le volte i limiti dell'array e/o bisogna creare una variabile apposta per tenere il conto dell'indice corrente
Come ti scrissi già un'altra volta, anche il fatto di conoscere per forza di cose la posizione di un elemento durante un processo di iterazione non è sempre necessario: è chiaro che dipende dal tipo di problema da risolvere.

Finora m'è capitato un paio di volte e con Python ho risolto semplicemente facendo uso di un iteratore presente nel linguaggio (è un iteratore che itera gli elementi dell'iteratore passato e restituisce una coppia ordine + elemento dell'iteratore passatogli ).
__________________
Per iniziare a programmare c'è solo Python con questo o quest'altro (più avanzato) libro
@LinkedIn Non parlo in alcun modo a nome dell'azienda per la quale lavoro
Ho poco tempo per frequentare il forum; eventualmente, contattatemi in PVT o nel mio sito. Fanboys
cdimauro è offline   Rispondi citando il messaggio o parte di esso
Old 08-09-2007, 21:29   #117
tomminno
Senior Member
 
Iscritto dal: Oct 2005
Messaggi: 3305
Quote:
Originariamente inviato da variabilepippo Guarda i messaggi
E' un bene, non un male... Un sistema operativo NON deve occupare il minor quantitativo di RAM possibile, non è mica una gara al risparmio, deve piuttosto gestire la memoria nel modo migliore. Fortunatamente Vista utilizza la RAM in modo più aggressivo rispetto ad altri sistemi e nella maggior parte dei casi SuperFetch migliora la prestazioni.
Quindi secondo te il Superfetch influisce anche sui 300MB occupati all'avvio da svchost e dwm? Il tutto su un Vista Home Premium che non ha nemmeno Aero.
Smettiamola con questa storia della gestione ottimizzata della memoria, Vista occupa uno sproposito di memoria e non riesce nemmeno a rendere il computer più veloce di XP.
tomminno è offline   Rispondi citando il messaggio o parte di esso
Old 08-09-2007, 21:29   #118
cdimauro
Senior Member
 
L'Avatar di cdimauro
 
Iscritto dal: Jan 2002
Città: Germania
Messaggi: 26107
Al solito il buon PGI-Bis ha calato l'asso sui paradigmi di programmazione.

Entrambi i post sono da quotare, anche se già qualcosa traspariva dai precedenti linguaggi.

Thanx so much.
__________________
Per iniziare a programmare c'è solo Python con questo o quest'altro (più avanzato) libro
@LinkedIn Non parlo in alcun modo a nome dell'azienda per la quale lavoro
Ho poco tempo per frequentare il forum; eventualmente, contattatemi in PVT o nel mio sito. Fanboys
cdimauro è offline   Rispondi citando il messaggio o parte di esso
Old 08-09-2007, 21:31   #119
cdimauro
Senior Member
 
L'Avatar di cdimauro
 
Iscritto dal: Jan 2002
Città: Germania
Messaggi: 26107
Quote:
Originariamente inviato da tomminno Guarda i messaggi
Quindi secondo te il Superfetch influisce anche sui 300MB occupati all'avvio da svchost e dwm? Il tutto su un Vista Home Premium che non ha nemmeno Aero.
Smettiamola con questa storia della gestione ottimizzata della memoria, Vista occupa uno sproposito di memoria e non riesce nemmeno a rendere il computer più veloce di XP.
Come ho detto prima, sulla STESSA macchina (con 1GB di ram) passando da XP x64 a Vista x64 il sistema era NETTAMENTE più reattivo e veloce.

Dunque la gestione della memoria e il superfetch, almeno per la mia esperienza, hanno influito, eccome, sulle prestazioni della macchina.

Questa, ripeto ancora una volta, è la MIA esperienza.
__________________
Per iniziare a programmare c'è solo Python con questo o quest'altro (più avanzato) libro
@LinkedIn Non parlo in alcun modo a nome dell'azienda per la quale lavoro
Ho poco tempo per frequentare il forum; eventualmente, contattatemi in PVT o nel mio sito. Fanboys
cdimauro è offline   Rispondi citando il messaggio o parte di esso
Old 08-09-2007, 21:52   #120
fek
Senior Member
 
L'Avatar di fek
 
Iscritto dal: Oct 2002
Città: California
Messaggi: 11781
Quote:
Originariamente inviato da k0nt3 Guarda i messaggi
a parte che questo non diminuisce il potere espressivo del linguaggio perchè qualsiasi cosa volevi fare usando i template la puoi fare in un altro modo... comunque la metaprogrammazione in C esiste e si basa sul preprocessore (anche se minimale)
Il preprocessore non fa parte del linguaggio. Ed e' ovvio che non si possono esprimere "in altro modo" in C i concetti a compile time che possono essere espressi in C++ attraverso i template.

Ad esempio non c'e' modo in C di fare questo in maniera altrettanto efficiente:

Codice:
std::sort(vector.begin(), vector.end());
Dove il tipo di vector puo' essere parametrizzato, quindi sconosciuto a priori al momento della scrittura. Qualunque implementazione in C sarebbe meno efficiente e meno mantenibile.

Esprimere un concetto in un linguaggio e' cosa differente dall'implementare qualcosa: tutto puo' essere implementato anche in assembly per ovvi motivi. Ma linguaggi a piu' alto livello sono piu' espressivi e "migliori". Il C++ essendo un superset del C e' piu' "espressivo", ne supporta tutti i costrutti e i paradigmi con la medesima efficienza, quindi e' migliore sotto ogni punto di vista.
fek è offline   Rispondi citando il messaggio o parte di esso
 Rispondi


Apple MacBook Air M3: chi deve davvero comprarlo? La recensione Apple MacBook Air M3: chi deve davvero comprarlo...
ASUS ROG Swift OLED PG49WCD: quando QD-OLED e ultrawide si fondono ASUS ROG Swift OLED PG49WCD: quando QD-OLED e ul...
Dreame L10s Pro Ultra Heat: la pulizia di casa tutta sostanza Dreame L10s Pro Ultra Heat: la pulizia di casa t...
HONOR Magic6 Pro: come funziona Magic Portal, il modo ''intelligente'' di condividere HONOR Magic6 Pro: come funziona Magic Portal, il...
L'innovazione richiede fiducia: Workday si propone come guida nell'era dell'IA L'innovazione richiede fiducia: Workday si propo...
Creato un transistor che può esse...
RocketStar FireStar Drive: un propulsore...
Roscosmos: il lancio del razzo spaziale ...
Italia strategica per Oracle. Arriva la ...
Sam-Bankman Fried: 25 anni di reclusione...
Mobility Analytics di WINDTRE Business p...
Il lander lunare JAXA SLIM si è r...
Warframe conquista l'iPhone: senza soluz...
Marvel Rivals!, l'inaspettato shooter Pv...
Twitch aggiorna le linee guida sui conte...
Galaxy M55 ufficiale: la nuova fascia me...
Google corregge sette vulnerabilit&agrav...
IA: le imprese italiane sono in prima li...
Garmin Dash Cam 57: un'alleata perfetta ...
Elgato Facecam MK2: come rendere ancora ...
Chromium
GPU-Z
OCCT
LibreOffice Portable
Opera One Portable
Opera One 106
CCleaner Portable
CCleaner Standard
Cpu-Z
Driver NVIDIA GeForce 546.65 WHQL
SmartFTP
Trillian
Google Chrome Portable
Google Chrome 120
VirtualBox
Tutti gli articoli Tutte le news Tutti i download

Strumenti

Regole
Non Puoi aprire nuove discussioni
Non Puoi rispondere ai messaggi
Non Puoi allegare file
Non Puoi modificare i tuoi messaggi

Il codice vB è On
Le Faccine sono On
Il codice [IMG] è On
Il codice HTML è Off
Vai al Forum


Tutti gli orari sono GMT +1. Ora sono le: 06:34.


Powered by vBulletin® Version 3.6.4
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Served by www3v