[Linux-Biella] R: R: [blog]Programmazione ad oggetti
Raffaele Salmaso
raffaele.salmaso a gmail.com
Mar 2 Dic 2008 15:46:43 CET
Marco Vallini wrote:
> On Tue, Dec 2, 2008 at 3:04 PM, Raffaele Salmaso <raffaele.salmaso a gmail.com
>> wrote:
>
>>> Okkio solo che per essere oggetti puro: devi poter programmare
>>> esclusivamente ad oggetti e non in modo procedurale, se così è, hai
>> ragione,
>>> altrimenti no.
>
>> Ma anche no.
>
>
> allora questa è la teoria secondo te :-)
import sys
def main():
sys.stdio.write('hello\n')
if __name__ == '__main__':
main()
questo è ad oggetti o procedurale?
>> Che significa programmare ad oggetti?
>> E' l'usare gli oggetti, entità che incapsulano degli stati e che
>> esportano delle funzionalità nascondendo l'implementazione.
>> Occhio che java non è a oggetti[1], almeno in forma completa; indi non
>> usatelo come esempio di linguaggio ad oggetti.
> ???
ecco, '???' che significa?
>> Quello che ti risulterebbe difficile è programmare in modo funzionale,
> perchè è ad oggetti puro?? :)
no, ma manco per un cippo, per non dire altro
non è quello di sicuro il problema
funzionale è una cosa
oggetti è un'altra
ed entrambi possono coesistere tranquillamente
funzionale indica semplicemente che una funzione non ha effetti
collaterali e stati interni
il fatto è che python ha dei costrutti funzionali (uno su tutti:
lambda), ma non forza la regola di non avere effetti collaterli e non
avere stati interni (oltre ad avere anche delle strutture di controllo
del flusso di programma - altrimenti detto gli if, while, for ecc)
>> python non è il massimo, anche se un minimo di supporto lo ha.
>
> perchè non è proprio oggetti puro?? :)
perché non forza a dover scrivere stronzate come in java
class Main {
public static void main(...) { ... }
}
e magari mettere le funzioni tutte statiche in una classe (non aperta,
ovviamente...) per simulare un modulo...
>> Ocio che programmare ad oggetti non è mettere tutto dentro una classe...
>> Quello è java...
>
>
> questa è una tua interpretazione...
ok, dammi la tua definizione di 'programmazione ad oggetti'
e al 99% sarà la descrizione di quello che java pensa sia
'programmazione ad oggetti'
>>> Quello che è sicuro è che c++ non è oggetti puro. :-)
>> E non ci prova neanche.
>> Ed è decisamente meglio così
> ???
'???' cosa?
Sul 'non ci prova neanche'? Non è a oggetti perché non ha le closure (le
si possono simulare tranquillamente con un po di sforzo con le classi,
ma non sono la stessa cosa). Non è a oggetti perché le classi non sono
first class (non le puoi passare in giro ecc). Non è a oggetti perché ha
dei tipi che non sono oggetti (tipo int, long, double, char...)
Sul 'è decisamente meglio così'? Il c++ ha degli obiettivi ben precisi
(immensi, ma precisi), e per quegli obiettivi certe cose sarebbero un
problema, anche se in effetti farebbero comodissimo (infatti uso il
pitone per lavoro e c per quando serve l'assoluta efficienza che non
raggiungo con strutture dati di più alto livello)
>>> Le nuove versioni del pitone magari si. :-)
>> Il pitone è sempre stato ad oggetti.
>> I moduli sono oggetti
>> Le funzioni sono oggetti
>> I metodi sono funzioni, indi oggetti
>> Le classi sono oggetti
>> ;)
>>
--
()_() | That said, I didn't actually _test_ my patch. | +----
(o.o) | That's what users are for! | +---+
'm m' | (Linus Torvalds) | O |
(___) | raffaele at salmaso punto org |
Maggiori informazioni sulla lista
Linux