|
|
|
![]() |
|
Strumenti |
![]() |
#141 | |
Senior Member
Iscritto dal: Dec 2005
Città: Istanbul
Messaggi: 1817
|
Quote:
Ad esempio un intero e' un reale, per cui in una gerarchia mi aspetterei di vedere i reali come base degli interi, ma d'altra parte i reali supportano delle operazioni aggiuntive (divisione ad esempio) per cui sembrerebbe il contrario... Cade quindi quello che dovrebbe essere il vantaggio di usare una rappresentazione piu' "umana" (ovvero di essere piu' diretta e comprensibile). Senza contare che quello della OOP e' un modelo particolare, e come tutti i modelli comporta delle semplificazioni/assunzioni/etc. che possono far si' che in alcune circostanze il modello stesso sia sbagliato.
__________________
One of the conclusions that we reached was that the "object" need not be a primitive notion in a programming language; one can build objects and their behaviour from little more than assignable value cells and good old lambda expressions. —Guy Steele |
|
![]() |
![]() |
![]() |
#142 | |
Senior Member
Iscritto dal: Sep 2000
Messaggi: 886
|
Quote:
__________________
1986/2008 - 22 anni di rabbia cancellati in un giorno. Adesso passeranno altri 22 anni.. ![]() |
|
![]() |
![]() |
![]() |
#143 |
Senior Member
Iscritto dal: Nov 2004
Città: Tra Verona e Mantova
Messaggi: 4553
|
Non ti so dire quale sia la prospettiva degli studi matematici. O ingegneristici o filosofici.
Io parlo della ricerca di una prospettiva applicabile alla programmazione. La programmazione è l'attivita di rappresentazione della soluzione di (è vero ![]() In linea di principio poter descrivere la soluzione nella sua forma umana è vantaggioso perchè non comporta una trasformazione dei termini in cui la soluzione è espressa. E' per questo che dico "è superiore alle altre prospettive". Dico che questa superiorità è putativa, cioè non dimostrabile nei fatti, non tanto perchè la prospettiva orientata agli oggetti, in quanto modello, è un'approssimazione ma in quanto la realtà che vorremmo approssimare non è chiara. La prospettiva procedurale è l'approssimazione di una realtà nota: il funzionamento di un calcolatore. La prospettiva orientata agli oggetti è l'approssimazione di un ipotesi: il funzionamento di un essere umano. E' questa natura ipotetica che causa la grande varietà di idee e soluzioni che si percepisce nelle discussioni sull'orientamento agli oggetti. Ed è la stessa ragione per cui vent'anni fa per fare orientamento agli oggetti si dovevano scrivere gerarchie di classi mentre oggi non parliamo neppure più di classe.
__________________
Uilliam Scecspir ti fa un baffo? Gioffri Cioser era uno straccione? E allora blogga anche tu, in inglese come me! |
![]() |
![]() |
![]() |
#144 | |
Senior Member
Iscritto dal: Dec 2005
Messaggi: 7244
|
Quote:
|
|
![]() |
![]() |
![]() |
#145 |
Senior Member
Iscritto dal: Feb 2003
Messaggi: 3571
|
nel libro c how to program dice che le direttive del preprocessore non fanno parte del linguaggio c
Ultima modifica di Hall999 : 10-09-2007 alle 00:46. |
![]() |
![]() |
![]() |
#146 | ||||||
Senior Member
Iscritto dal: Jan 2002
Città: Germania
Messaggi: 26110
|
Quote:
Pre-processore, appunto. ![]() Quote:
![]() Quote:
Anche qui "a naso" servirà qualche macro per gestire l'operazione di ordinamento in maniera "astratta". Quote:
![]() Quote:
Quote:
Codice:
#define STAMPA(CITTA) print "Com'è bello far l'amore da " + CITTA + ' in giù...' ![]() P.S. In Python funzionebbe, ma... non farebbe niente. Il # marca l'inizio di un commento. ![]()
__________________
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 |
||||||
![]() |
![]() |
![]() |
#147 | ||||||
Senior Member
Iscritto dal: Dec 2005
Messaggi: 7244
|
Quote:
Codice:
#includimi stringhe.h int main(int argc, char *argv[]) { return 0; } il termine ha a che fare con il compilatore, non con il linguaggio. il linguaggio è composto da sintassi e semantica. la sintassi mi dice cosa posso scrivere, mentre la semantica mi dice cosa significa quello che ho scritto. la semantica di #include è dire al compilatore di includere la libreria specificata, non vedo cosa gli manca per essere parte del linguaggio Quote:
![]() Quote:
![]() Quote:
Quote:
Quote:
![]() Ultima modifica di k0nt3 : 10-09-2007 alle 13:12. |
||||||
![]() |
![]() |
![]() |
#148 |
Senior Member
Iscritto dal: Nov 2005
Messaggi: 1545
|
|
![]() |
![]() |
![]() |
#149 |
Senior Member
Iscritto dal: Nov 2004
Città: Tra Verona e Mantova
Messaggi: 4553
|
Era una frase sintetica. Le classi ci sono ancora ma dal significato originario di elemento di una gerarchia si è passati all'altro (pur presente) di raggruppamento di esemplari. C'è una crisi dell'ereditarietà. Si vede chiaramente in Chapel, Scala, Newspeak, Fortress. Cioè nelle lingue che nascono adesso.
__________________
Uilliam Scecspir ti fa un baffo? Gioffri Cioser era uno straccione? E allora blogga anche tu, in inglese come me! |
![]() |
![]() |
![]() |
#150 | ||||||||
Senior Member
Iscritto dal: Jan 2002
Città: Germania
Messaggi: 26110
|
Quote:
Ad esempio anche il Pascal ne soffriva; problema risolto poi con delle direttive di preprocessore aggiunte a posteriori (quelle della Borland sono diventate poi lo standard di fatto per tutti i linguaggi di derivazione Pascal). Quote:
![]() Quote:
Quote:
Quote:
Quote:
Quote:
Quote:
Eh, no, non ho bisogno di ripassarlo, perché il K&R lo conosco bene, come conosco bene anche tanta letteratura informatica in merito a linguaggi, interpreti e compilatori, e la differenza fra linguaggio e preprocessore. Comunque basta farti una ricerca e troverai montagne di letteratura in merito: non sono certo io ad arrogarmi il diritto di definire cos'è un preprocessore e cos'è un linguaggio, visto che l'ha già fatto gente ben più illustre di me, e da parecchio tempo. ![]()
__________________
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 |
||||||||
![]() |
![]() |
![]() |
#151 | |
Senior Member
Iscritto dal: Jan 2002
Città: Germania
Messaggi: 26110
|
Quote:
![]()
__________________
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 |
|
![]() |
![]() |
![]() |
#152 |
Senior Member
Iscritto dal: Nov 2004
Città: Tra Verona e Mantova
Messaggi: 4553
|
Python è bello vecchio e, in tutta onestà, è una lingua a cui non ho mai prestato grande attenzione.
Comunqe se ha una sintassi specifica per la definizione di un oggetto (di solito è come quella della classe ma genera un singleton, genera Scala) e un tipo "interfaccia" la cui applicabilità è indipendente da una specifica dichiarazione (a la Ruby o Chapel) allora propone un'alternativa alla gerarchia classica. Che non sia un barbatrucco: qualsiasi linguaggio che definisca un meccanismo introspettivo (la riflessione di Java, ad es.) permette anche di dire che un certo oggetto è un Pippo a prescindere dal fatto che dichiari di avere Pippo come parente e di usarlo come un Pippo. Altro è avere altro è simulare.
__________________
Uilliam Scecspir ti fa un baffo? Gioffri Cioser era uno straccione? E allora blogga anche tu, in inglese come me! |
![]() |
![]() |
![]() |
#153 | |
Senior Member
Iscritto dal: Dec 2005
Messaggi: 7244
|
Quote:
![]() ![]() |
|
![]() |
![]() |
![]() |
#154 | ||
Senior Member
Iscritto dal: Jan 2002
Città: Germania
Messaggi: 26110
|
Quote:
Come linguaggio dinamico, poi, non ha nemmeno bisogno di specificare una classe (o interfaccia) da cui derivare specifiche funzionalità. Voglio dire che se nei miei progetti ho bisogno che gli oggetti che manipolo debbano rispondere a particolari funzionalità, è sufficiente che siano stati definiti degli appositi metodi. Esempio: Codice:
class A: def Stampa(self): print 'Hai invocato il metodo "Stampa" della classe A' class B: def Stampa(self): print 'Questa volta hai invocato il metodo "Stampa" della classe B' def ProvaStampa(Istanza): Istanza.Stampa() ProvaStampa(A()) ProvaStampa(B()) Quote:
![]()
__________________
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 |
||
![]() |
![]() |
![]() |
#156 |
Senior Member
Iscritto dal: Jan 2002
Città: Germania
Messaggi: 26110
|
__________________
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 |
![]() |
![]() |
![]() |
#158 | |
Senior Member
Iscritto dal: Jan 2002
Città: Germania
Messaggi: 26110
|
Quote:
![]() Il tutto dipende soltanto dall'uso che se ne fai: puoi anche sviluppare classi e interfacce dimenticandoti della reflection e della possibilità di definire soltanto dei metodi come interfaccia. Nota bene: potrei anche forzare che un'istanza derivi da una classe che implementa un certo metodo di una certa interfaccia, in modo da eliminare il secondo tipo di utilizzo. In soldoni: prima di chiamare il metodo Stampa posso anche controllare che l'oggetto in questione sia istanza di una "interfaccia" (che in Python si traduce sempre in una classe, visto che supporta l'ereditarietà multipla) ben precisa.
__________________
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 |
|
![]() |
![]() |
![]() |
#159 |
Senior Member
Iscritto dal: Nov 2004
Città: Tra Verona e Mantova
Messaggi: 4553
|
Ho detto no perchè la partita si gioca non sulla possibilità di invocare dei metodi ma sull'appartenenza ad un tipo in base al fatto che abbia o non abbia certe caratteristiche.
Supponendo che una funzione accetti come argomento un Impiegato (perchè usa opera su metodi che sono propri dei soli impiegati), come discrimi in un insieme di Dipendenti chi siano gli impiegati e chi siano gli operai? Attraverso relazioni statiche io passo a quella funzione tutti e soli quei riferimenti che dichiarino di essere Impiegati (o che abbiano il ruolo di, come è solitamente necessario). Attraverso relazioni dinamiche io passo a quella funzione tutti e soli coloro i quali possiedano le caratteristiche di un impiegato, a prescindere dal fatto che dichiarino o meno di esserlo. Tutto qua.
__________________
Uilliam Scecspir ti fa un baffo? Gioffri Cioser era uno straccione? E allora blogga anche tu, in inglese come me! |
![]() |
![]() |
![]() |
#160 |
Senior Member
Iscritto dal: Jan 2002
Città: Germania
Messaggi: 26110
|
Devi scusare la mia ignoranza, ma io lo vedo perfettamente realizzabile in Python senza ricorrere a "barbatrucchi".
![]()
__________________
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 |
![]() |
![]() |
![]() |
Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 14:26.