View Full Version : Piano di studi informatico
sonicologico
29-05-2007, 15:16
Ciao a tutti:D
Ho iniziato a programmare per hobby circa un'annetto fa col visula basic.
Trovandomi spiazzato in determinate problematiche elementari chiedevo un consiglio dai piu' esperti.
Non è che abbia sbagliato a inizare col visual basic?
Ho capito in un predecente post che la strada da fare dovrebbe essere nel ricercare la base dei linguaggi per poi logicamente saper affrontare con più disinvoltura determinate problematiche.
Pensavo di seguire questo iter come letto in diversi 3d
Pascal -> C -> Java -> PHP -> C++
Grazie in anticipo dei consigli :)
Ciao!!!
^TiGeRShArK^
29-05-2007, 15:32
secondo me dovresti iniziare con java.
Il pascal oggi come oggi a livello lavorativo che io sappia è quasi inutile (una volta era molto in voga il delphi..ma pascal pure non mi pare).
Il C è inutile perchè inizieresti con un linguaggio non Object Oriented.
Il Java è Object Oriented e ti risparmia in buona parte i casini della gestione della memoria ed è + ad alto livello rispetto al c++.
sonicologico
29-05-2007, 15:45
Ciao Tiger :D
Grazie..non sai quanto mi siano utili queste informazioni...dato che non sono giovanissimo :( e ho bisogno di ottimizzare il mio tempo.
Di interessante su java oggi ho letto che un qualsiasi programma sviluppato puo' girare indistintamente su win,linux e mac...che figata :sofico:
Grazie delle info;)
Ciao a tutti:D
Ho iniziato a programmare per hobby circa un'annetto fa col visula basic.
Trovandomi spiazzato in determinate problematiche elementari chiedevo un consiglio dai piu' esperti.
Non è che abbia sbagliato a inizare col visual basic?
Ho capito in un predecente post che la strada da fare dovrebbe essere nel ricercare la base dei linguaggi per poi logicamente saper affrontare con più disinvoltura determinate problematiche.
Pensavo di seguire questo iter come letto in diversi 3d
Pascal -> C -> Java -> PHP -> C++
Grazie in anticipo dei consigli :)
Ciao!!!
guarda, io ti darei un consiglio differente, il java è ottimo ma partirei più dal c/c++ per cominciare. nel tuo caso, cioè di una persona che ha già rudimenti di programmazione, da c++ direttamente. é vero che è un linguaggio compilato e non managed ma è molto strutturato e didattico per quanto riguarda il paradigma ad oggetti.
sonicologico
29-05-2007, 15:59
Azz...la cosa si complica piacevolmente :p
grazie anche a te funky
Ammetto di essere sull'onda dell'emozione ma... per le ciabatte di giosafatte, se vuoi abbracciare il mondo dell'orientamento agli oggetti lascia perdere C++. E non perchè non si possa esercitare questa magnifica arte in C++ ma perchè ti devi ingrufolare in pinzillacchere che in tutta onestà fan proprio passare la voglia.
sonicologico
29-05-2007, 16:32
...infatti..so che è sicuramente osare troppo..ma cerco la strada più utile e appassionante già dai primi passi..se no quasi a 40 anni mi passa la voglia.:rolleyes:
Grazie anche a te PGI:)
Io ora come ora consiglierei Java -> C++ -> C
sonicologico
29-05-2007, 19:41
O...una cosa è sicura dovrei iniziare con java stando ai vostri consigli ..poi si vede come si evolve il tutto :stordita:
Grazie anche a te cionci :D
Fenomeno85
30-05-2007, 07:43
C# e C++ se si vuole partire in OOP
altrimenti un buon C :)
Java lo detesto data la sua bellissima non portabilità tra versioni differenti di VM
~§~ Sempre E Solo Lei ~§~
Java lo detesto data la sua bellissima non portabilità tra versioni differenti di VM
E' una cosa normale, avviene anche per il C# e per il C++. Prova a compilare un codice con STL su un compilatore che non le supporta.
Prova ad eseguire un codice C# compilato sulla versione 2.0 dell'sdk sul runtime della 1.0.
La JVM non è altro che un componente del sistema operativo, come il runtime .Net. Tra l'altro ti chiede anche di essere aggiornato, quindi meglio di così...
Fenomeno85
30-05-2007, 10:45
E' una cosa normale, avviene anche per il C# e per il C++. Prova a compilare un codice con STL su un compilatore che non le supporta.
Prova ad eseguire un codice C# compilato sulla versione 2.0 dell'sdk sul runtime della 1.0.
La JVM non è altro che un componente del sistema operativo, come il runtime .Net. Tra l'altro ti chiede anche di essere aggiornato, quindi meglio di così...
compilare sul 2 e portarlo sull'1 è normale e ovvio, ma se compilo sull'1 la portabilità sul 2 ci dovrebbe essere
~§~ Sempre E Solo Lei ~§~
E' senz'altro vero che ci sono delle incompatibilità nel passaggio da versioni minori a versioni maggiori che causano difficoltà nell'esecuzione di programmi "vecchi" su piattaforme "nuove".
Non ne farei tuttavia un caso generale perchè la retrocompatibilità è oggetto di specifiche e pedanti attenzioni da parte di Sun.
redcloud
30-05-2007, 13:40
Mi sono trovato bene seguendo questo percorso
Pascal (costretto a studiarlo al liceo, puoi evitare di studiarlo se hai più di 13 anni)
C -> C++ -> Java -> C#
dopodichè, per cultura personale, viene il resto :D
sonicologico
30-05-2007, 14:54
Grazie a tutti raga...ogni riflessione è un grande giovamento.
Ogni punto di vista diverso mi fa anche capire (nel mio piccolo) su quali direzioni guardare :D
Per ora sto leggendo molto qua è la' ...grazie ancora :fagiano:
^TiGeRShArK^
30-05-2007, 15:49
C# e C++ se si vuole partire in OOP
altrimenti un buon C :)
Java lo detesto data la sua bellissima non portabilità tra versioni differenti di VM
~§~ Sempre E Solo Lei ~§~
:mbe:
scusa quali enormi e insormontabili problemi di portabilità avresti avuto con java?
Onestamente l'accusa che java non sia portabile è la prima volta che la sento in anni e anni.
Grazie a tutti raga...ogni riflessione è un grande giovamento.
Ehh, aspetta, aspetta. Sento già che stiamo per iniziare a rifletterci a pesci in faccia... :D
^TiGeRShArK^
30-05-2007, 16:41
Ehh, aspetta, aspetta. Sento già che stiamo per iniziare a rifletterci a pesci in faccia... :D
:mad: :mad: :mad:
:asd:
sonicologico
30-05-2007, 16:58
Ehh, aspetta, aspetta. Sento già che stiamo per iniziare a rifletterci a pesci in faccia... :D
Si infatti :asd: ....già ho capito che il piano studi va fatto in base a quello che si vuole fare e dove si vuole arrivare...e vi pare poco ? :cool: ...non esiste un percorso oggettivo..del tipo studia c++ e saprai fare tutto benissimo....come ho sempro sentito dire a dx e a manca.
E cmq oggi rispetto ad anni fà ci sono un casino di percorsi diversi....c'è da dire anche questo :)
:cincin:
Fenomeno85
30-05-2007, 18:46
:mbe:
scusa quali enormi e insormontabili problemi di portabilità avresti avuto con java?
Onestamente l'accusa che java non sia portabile è la prima volta che la sento in anni e anni.
alcuni plug in sviluppati in eclispe, un ambiente di sviluppo del polimi
~§~ Sempre E Solo Lei ~§~
Si infatti :asd: ....già ho capito che il piano studi va fatto in base a quello che si vuole fare e dove si vuole arrivare...e vi pare poco ? :cool: ...non esiste un percorso oggettivo..del tipo studia c++ e saprai fare tutto benissimo....come ho sempro sentito dire a dx e a manca.
E cmq oggi rispetto ad anni fà ci sono un casino di percorsi diversi....c'è da dire anche questo :)
:cincin:
no non esistono percorsi oggettivi, ma a me sembra comunque più logico iniziare da pascal (tanto non lo fai di lavoro) o dal c. per poi passare alla programmazione ad oggetti con java (c++ sta in mezzo ma si può anche saltare in fondo).
se non erro è proprio l'obiettivo che si pone questo e-book gratuito http://mindview.net/CDs/ThinkingInC/beta3
alcuni plug in sviluppati in eclispe, un ambiente di sviluppo del polimi
~§~ Sempre E Solo Lei ~§~
da quello che dici non hai nemmeno idea di cosa sia java... C# è un bel linguaggio, peccato che sia multipiattaforma solo per finta visto che le cose più importanti sono brevettate (windows.form :muro: )
E finalmente si aprono le danze.
-Sì, dai, riflettiamoci su...
disse Tizio roteando il bastone
-Sì, sì, rifletto anch'io...
rispose Caio con il crick in mano...
I libri di Eckel valgono quanto costano.
^TiGeRShArK^
30-05-2007, 19:52
alcuni plug in sviluppati in eclispe, un ambiente di sviluppo del polimi
~§~ Sempre E Solo Lei ~§~
è li il problema è l'Eclipse Rich Client Platform che dalla versione 2.x alla versione 3.x ha completamente cambiato specifiche o la Java VM? ;)
Non mettiamo in giro leggende metropolitane x favore se le cose di cui parlate non le avete prima provate di persona :D
P.S. ricordo che ancora ci sono in giro per le API classi che discendono da Java 1.0.. come la famigerata classe Vector che nonostante sia stata sostituita praticamente in tutto e per tutto da ArrayList, introdotta nella versione 1.2, ancora è in giro a far bestemmiare le persone che si chiedono quale delle due usare per le liste :p
^TiGeRShArK^
30-05-2007, 19:54
no non esistono percorsi oggettivi, ma a me sembra comunque più logico iniziare da pascal (tanto non lo fai di lavoro) o dal c. per poi passare alla programmazione ad oggetti con java (c++ sta in mezzo ma si può anche saltare in fondo).
se non erro è proprio l'obiettivo che si pone questo e-book gratuito http://mindview.net/CDs/ThinkingInC/beta3
è inutile ripetere..
nell'era della programmazione ad oggetti è assolutamente inutile imparare un approccio procedurale dato ke poi una volta abituati a pensare in quel modo sarà molto + difficile imparare a ragionare ad oggetti.
E visto che non lo fa x lavoro piuttosto che il Pascal a 'sto punto è MOLTO meglio il ruby o il Python se vogliamo rimanere nell'ottica Object Oriented.
Solo ke imho è + produttivo iniziare con Java vista l'ottima documentazione disponibile.. il ke non è assolutamente da sottovalutare :D
^TiGeRShArK^
30-05-2007, 19:55
E finalmente si aprono le danze.
-Sì, dai, riflettiamoci su...
disse Tizio roteando il bastone
-Sì, sì, rifletto anch'io...
rispose Caio con il crick in mano...
I libri di Eckel valgono quanto costano.
io aggiungo il "rutto tonante" :O
:asd:
sonicologico
30-05-2007, 19:55
no non esistono percorsi oggettivi, ma a me sembra comunque più logico iniziare da pascal (tanto non lo fai di lavoro) o dal c. per poi passare alla programmazione ad oggetti con java (c++ sta in mezzo ma si può anche saltare in fondo).
se non erro è proprio l'obiettivo che si pone questo e-book gratuito http://mindview.net/CDs/ThinkingInC/beta3
Grazie K0nt..ma è tutto in inglese ...vabon che bisogna impegnarsi..ma per ora anche se sto scaricando non mi sento di tradurre per cominciare a capire da dove muovermi.
Ma php come mai non lo ha citato nessuno.....credo da ignorante che il futuro sta oramai nella programmazione web :stordita: ...è un idea stupida partire da li ad esempio?
^TiGeRShArK^
30-05-2007, 20:01
Grazie K0nt..ma è tutto in inglese ...vabon che bisogna impegnarsi..ma per ora anche se sto scaricando non mi sento di tradurre per cominciare a capire da dove muovermi.
Ma php come mai non lo ha citato nessuno.....credo da ignorante che il futuro sta oramai nella programmazione web :stordita: ...è un idea stupida partire da li ad esempio?
ehmm..
ora come ora nel mercato italiano stanno andando di moda le JSP nelle varie incarnazioni (le ho viste soprattutto usate col framework STRUTS e qualche volta con SPRING o Java Server Faces).
PHP e ASP.NET generalmente sono usati da realtà che hanno esigenze diverse. (Ad esempio il VBullettin usato in questo forum è basato su PHP).
Dimenticavo..
la conoscenza dell'inglese cmq da un ottimo valore aggiunto dato ke la maggior parte degli articoli tecnici sono scritti in quella lingua :p
sonicologico
30-05-2007, 20:02
E finalmente si aprono le danze.
-Sì, dai, riflettiamoci su...
disse Tizio roteando il bastone
-Sì, sì, rifletto anch'io...
rispose Caio con il crick in mano...
I libri di Eckel valgono quanto costano.
hehehhe..bellissima questa...o raga andateci piano :sofico: parlate di cose allucinanti per me...tipo :
è li il problema è l'Eclipse Rich Client Platform che dalla versione 2.x alla versione 3.x ha completamente cambiato specifiche o la Java VM?
è come se un talebano nella sua lingua mi stesse dicendo tranquillamente "prendi pure questo pacchetto regalo confezionato per te appositamente...e appena fai 100 metri esplodi creando un cratere di 5o metri di diametro in terra" :D
:hic: :cincin:
Fenomeno85
30-05-2007, 20:10
è li il problema è l'Eclipse Rich Client Platform che dalla versione 2.x alla versione 3.x ha completamente cambiato specifiche o la Java VM? ;)
Non mettiamo in giro leggende metropolitane x favore se le cose di cui parlate non le avete prima provate di persona :D
P.S. ricordo che ancora ci sono in giro per le API classi che discendono da Java 1.0.. come la famigerata classe Vector che nonostante sia stata sostituita praticamente in tutto e per tutto da ArrayList, introdotta nella versione 1.2, ancora è in giro a far bestemmiare le persone che si chiedono quale delle due usare per le liste :p
ehm non so che sia ma usando lo stesso eclipse con versione 1.5 funziona, con la 6 no .. da qui deduco che è java a creare problemi :) che poi sia altro allora ho sbagliato. Per l'ambiente di sviluppo che usiamo del poli è sviluppato totalmente in java da quello che so :)
Per k0nt3 ma chi ha mai detto che c# è portabile? trovami la frase grazie.
~§~ Sempre E Solo Lei ~§~
^TiGeRShArK^
30-05-2007, 20:16
hehehhe..bellissima questa...o raga andateci piano :sofico: parlate di cose allucinanti per me...tipo :
è come se un talebano nella sua lingua mi stesse dicendo tranquillamente "prendi pure questo pacchetto regalo confezionato per te appositamente...e appena fai 100 metri esplodi creando un cratere di 5o metri di diametro in terra" :D
:hic: :cincin:
:asd:
Eclipse Rich Client Platform:
http://wiki.eclipse.org/index.php/Rich_Client_Platform
In pratica sarebbe un toolkit messo a disposizione da Eclipse (Il più famoso IDE (Integrated Development Editor ~= Ambiente di sviluppo integrato) Java) per realizzare applicazioni basate sulla stessa tecnologia utilizzata da quest'editor.
E' usato con successo da svariati produttori software e alla NASA ormai praticamente TUTTE le missioni vengono gestite dalla loro applicazione Maestro, appunto basata su Eclipse RCP :p
Per maggiori informazioni guarda pure il link (però vedi ke è in inglese :p)
^TiGeRShArK^
30-05-2007, 20:21
ehm non so che sia ma usando lo stesso eclipse con versione 1.5 funziona, con la 6 no .. da qui deduco che è java a creare problemi :) che poi sia altro allora ho sbagliato. Per l'ambiente di sviluppo che usiamo del poli è sviluppato totalmente in java da quello che so :)
Per k0nt3 ma chi ha mai detto che c# è portabile? trovami la frase grazie.
~§~ Sempre E Solo Lei ~§~
boh..
questo non ho idea..
cmq un minimo di sbattimento per passare da una versione all'altra di java è praticamente normale ke ci sia..
La nostra applicazione (compilata con java 1.4.2) gira perfettamente con Java 6.
Gli unici problemi sono dovuti al differente layout causato dalla migliore gestione del look and feel nativo di java 6.
Riguardo alla compatibilità del codice invece le cose possono essere + pesanti..
Tipo quei geni avevano chiamato tutte le Enumeration enum con Java 1.4.2..
Peccato però ke da Java 5 in poi enum sia diventata, con l'introduzione delle Enumeration, una parola riservata :p
E ovviamente mi sono dovuto sbattere a sostituire migliaia di occorrenze sparse per tutto il codice :muro:
cmq se ti capita informati su qual'è il problema preciso che ora mi hai fatto incuriosire :D
Anke se da quello che dici la principale indiziata resta sempre la eclipse RCP dato che le versioni pre-java 6 non so se erano perfettamente compatibili con Java 6 :p
Fenomeno85
30-05-2007, 20:24
boh..
questo non ho idea..
cmq un minimo di sbattimento per passare da una versione all'altra di java è praticamente normale ke ci sia..
La nostra applicazione (compilata con java 1.4.2) gira perfettamente con Java 6.
Gli unici problemi sono dovuti al differente layout causato dalla migliore gestione del look and feel nativo di java 6.
Riguardo alla compatibilità del codice invece le cose possono essere + pesanti..
Tipo quei geni avevano chiamato tutte le Enumeration enum con Java 1.4.2..
Peccato però ke da Java 5 in poi enum sia diventata, con l'introduzione delle Enumeration, una parola riservata :p
E ovviamente mi sono dovuto sbattere a sostituire migliaia di occorrenze sparse per tutto il codice :muro:
cmq se ti capita informati su qual'è il problema preciso che ora mi hai fatto incuriosire :D
Anke se da quello che dici la principale indiziata resta sempre la eclipse RCP dato che le versioni pre-java 6 non so se erano perfettamente compatibili con Java 6 :p
cerco di informarmi :) perché anche se l'ambiente di sviluppo è fatto e venduto dal poli e ci sto facendo su la tesina .. i codici sorgenti e il grande capo non sono visibili :D
~§~ Sempre E Solo Lei ~§~
La I di IDE in Eclipse non sta per Integrato ma per Integrale. Quel programma è crusca informatica.
^TiGeRShArK^
30-05-2007, 20:30
La I di IDE in Eclipse non sta per Integrato ma per Integrale. Quel programma è crusca informatica.
qualche volta dovresti provare ad imparare ad usarla veramente quella crusca :D
A me ha dato parecchie soddisfazioni una volta imparate le shortcut..
certo .. ogni tnt mi si intrecciano le dita quando faccio ALT+SHIFT+S+R però mi genera tutti i getters e i setters delle variabili che gli dico io :p
^TiGeRShArK^
30-05-2007, 20:31
cerco di informarmi :) perché anche se l'ambiente di sviluppo è fatto e venduto dal poli e ci sto facendo su la tesina .. i codici sorgenti e il grande capo non sono visibili :D
~§~ Sempre E Solo Lei ~§~
si tranquillo non mi interessa il codice :p
mi interessa solo cercare di capire quale può essere il problema dato che solitamente il passaggio a livello di VM (e non di codice) da una versione all'altra di java è *quasi* indolore.
(dove il quasi va da 0 a N a seconda della legge di Murphy :asd: )
AnonimoVeneziano
30-05-2007, 20:31
In università ti fanno sempre partire dal C in genere.
Credo perchè in complesso sia il linguaggio più semplice , comprende tutto quello che serve per programmare , ma niente di + . L'OOP può essere un concetto complesso per chi non ha mai programmato in vita sua, in particolare può sfuggirne la necessità se non si è mai provato a fare neanche un piccolo programmino e si rischia di impararlo come semplice "sintassi" del linguaggio.
Io , sarò vetusto , ma fare C --> Java --> C++ --> Quello che vuoi mi sembra la scelta migliore.
Metto Java prima perchè C++ è decisamente + complesso, non è completo in quanto librerie offerte di base come Java (che integra veramente di tutto nel pacchetto Sun senza andare a cercare altrove) e per progetti un po' grossini è un casino (non so a voi, ma a me il linker in particolare ha sempre dato errori assurdi con le QT ed altre librerie . Impiegavo ore solo per caprire che caxx voleva il linker :muro: )
Il C per me è buono perchè ti insegna anche a creare degli algoritmi per la gestione delle stringhe / liste dinamiche che invece in Java / C++ vengono offerti già prefatti (ad es ArrayList / LinkedList /String) stimolando poco l'impegno nell' apprendere "come progettare un algoritmo" , che invece dovrebbe stare alla base del percorso di apprendimento.
Ciao
^TiGeRShArK^
30-05-2007, 20:35
Il C per me è buono perchè ti insegna anche a creare degli algoritmi per la gestione delle stringhe / liste dinamiche che invece in Java / C++ vengono offerti già prefatti (ad es ArrayList / LinkedList /String) stimolando poco l'impegno nell' apprendere "come progettare un algoritmo" , che invece dovrebbe stare alla base del percorso di apprendimento.
Ciao
questo dovrebbe essere un passaggio ulteriore leggendo libri di algoritmi e strutture dati..
però si può fare solo una volta che sai programmare..
farlo all'inizio non ha alcun senso imho :p
qualche volta dovresti provare ad imparare ad usarla veramente quella crusca :D
Ho detto che fa schifo, non che io non lo sappia usare :D
^TiGeRShArK^
30-05-2007, 20:43
Ho detto che fa schifo, non che io non lo sappia usare :D
:ciapet:
è meglio il tuo notepad modificato che scommetto ha anche il supporto per la Type Hierarchy (F4) e per Find References in the Workspace (CTRL+SHIFT+G) :Prrr:
AnonimoVeneziano
30-05-2007, 20:45
questo dovrebbe essere un passaggio ulteriore leggendo libri di algoritmi e strutture dati..
però si può fare solo una volta che sai programmare..
farlo all'inizio non ha alcun senso imho :p
Per me invece è stato molto d'aiuto agli inizi :)
Dopotutto un programmatore alle prime armi cosa può fare?
Non può mettersi mica a fare un giochino o che diamine, può solo fare cose semplici, ad esempio piccoli programmini che implementano algoritmi base.
Io quando ho iniziato facevo le solite cose che credo abbiamo fatto tutti.
Trasposizione di matrice, gestione delle stringhe (ad esempio ricerca di una parola all'interno di un array di char ), gestione delle liste dinamiche , determinante di matrice , riempimento array bi-dimensionale, insomma, questa è la base che in in un modo o nell'altro ritorna sempre :)
Sono cose abbastanza semplici da essere capite da un aspirante programmatore leggendo il suo bel libro di C (e questi sono gli esempi tipici di programmi che si trovano in questi libri tra l'altro) e lo forgiano .
L'OOP invece per me è un concetto che si può apprendere solo DOPO aver imparato a programmare . IMHO non se ne sente proprio la necessità per i piccoli programmini che un programmatore alle prime armi fa per imparare e quindi risulterebbe un concetto sterile e non compreso . Addirittura anche per certi progetti un pochino + grossi ma semplici non se ne sente la necessità (anche tanti programmi professionali sono scritti in C , ad esempio Linux e GNOME) , il C invece contiene tutte le basi che bisogna sapere e una volta imparato quello si può passare a linguaggi + complessi che prevedono paradigmi più elaborati .
Prova a piazzare un programmatore novello davanti alla Javadoc della SUN Microsystem di Java 6 . Gli do 10 secondi, poi gli esplode la testa :)
Ciao
Secondo me invece è un bene iniziare con un linguaggio OOP per non apprendere brutte abitudine che dopo sono difficili da sradicare. Anche e soprattutto per le cose più semplici che ti permetteranno di capire le basi della OOP.
sonicologico
30-05-2007, 20:54
scusate oop per cosa sta? :mc:
Fenomeno85
30-05-2007, 20:57
Secondo me invece è un bene iniziare con un linguaggio OOP per non apprendere brutte abitudine che dopo sono difficili da sradicare. Anche e soprattutto per le cose più semplici che ti permetteranno di capire le basi della OOP.
ma alla fine mi sono sempre chiesto ... ma noi lavoriamo veramente in modo a oggetti o a funzioni? .. secondo me a funzioni
~§~ Sempre E Solo Lei ~§~
Fenomeno85
30-05-2007, 20:57
scusate oop per cosa sta? :mc:
http://en.wikipedia.org/wiki/Object-oriented_programming
~§~ Sempre E Solo Lei ~§~
AnonimoVeneziano
30-05-2007, 20:59
Secondo me invece è un bene iniziare con un linguaggio OOP per non apprendere brutte abitudine che dopo sono difficili da sradicare. Anche e soprattutto per le cose più semplici che ti permetteranno di capire le basi della OOP.
Non lo so, ormai non posso + dare un parere oggettivo , visto che ormai sono avviato , ma non mi sembra di aver dovuto sradicare nulla nella mia carriera di programmatore che il C mi ha insegnato.
Mi ricordo che però la prima volta che ho visto l'OOP lo compresi (oramai avevo una certa esperienza col C) , ma facevo fatica a trovarne una applicazione all'interno dei programmi, questo perchè è fatto per gestire con facilità grossi progetti (l'idea è quella, l'astrazione permette di vedere le cose più semplicemente alzando il livello si saturazione della mente riuscendo così a gestire più cose in contemporanea) , all'inizio non si fanno grossi progetti e quindi l'accettai così com'era senza approfondire ulteriormente. Quando poi iniziai il mio primo vero progetto personale mi resi conto che in effetti una utilità l'aveva eccome e me ne accorsi subito , ma è necessario avere la possibilità di provarne la potenza per poterlo apprezzare .
Ciao
AnonimoVeneziano
30-05-2007, 21:03
ma alla fine mi sono sempre chiesto ... ma noi lavoriamo veramente in modo a oggetti o a funzioni? .. secondo me a funzioni
~§~ Sempre E Solo Lei ~§~
Tu sei fuori ... :sofico: :ciapet:
ma alla fine mi sono sempre chiesto ... ma noi lavoriamo veramente in modo a oggetti o a funzioni? .. secondo me a funzioni
Se per "noi" intendi noi esseri umani la risposta odierna è un po' procedurale e un po' orientato agli oggetti, zero funzionale.
Il ragionamento è sincrono e procedurale mentre la rappresentazione dei fenomeni è il prodotto dell'applicazione di relazioni alle entità reali.
Come dire conosciamo in senso orientato agli oggetti ma lavoriamo con le nostre conoscenze in termini procedurali.
Se ti interessa puoi dare un'occhiata ad un bellissimo libro che tratta anche di questo, D. A. Norman, The Design Of Everyday Objects.
sonicologico
30-05-2007, 21:09
Tu sei fuori ... :sofico: :ciapet:
No..no spe qua quello fuori sono io..che cerco di seguirvi :sbonk:
^TiGeRShArK^
30-05-2007, 21:10
Secondo me invece è un bene iniziare con un linguaggio OOP per non apprendere brutte abitudine che dopo sono difficili da sradicare. Anche e soprattutto per le cose più semplici che ti permetteranno di capire le basi della OOP.
appunto ;)
in quel modo potresti già iniziare a fare il tuo programmino in funzione di oggetti..
che 'sso...
gli oggetti Prodotti che vengono venduti dall'oggetto Supermercato che contiene diversi Scaffali in cui sono disposti i prodotti.
IMHO iniziando direttamente in modo OOP viene anke + naturale :p
(da notare che io ho fatto esattamente il percorso inverso partendo dal BASIC passando dal C + ASSEMBLY, successivamente al C++ e poi FINALMENTE al JAVA.. inutile dire quello ke ho passato per cambiare il mio modo di ragionare ormia impostato in quel modo da anni e anni di programmazione :p)
Fenomeno85
30-05-2007, 21:11
Se per "noi" intendi noi esseri umani la risposta odierna è un po' procedurale e un po' orientato agli oggetti, zero funzionale.
Il ragionamento è sincrono e procedurale mentre la rappresentazione dei fenomeni è il prodotto dell'applicazione di relazioni alle entità reali.
Come dire conosciamo in senso orientato agli oggetti ma lavoriamo con le nostre conoscenze in termini procedurali.
Se ti interessa puoi dare un'occhiata ad un bellissimo libro che tratta anche di questo, D. A. Norman, The Design Of Everyday Objects.
si scusate procedurale ... son stanco si vede :)
grazie .. quando avrò un pò di tempo lo leggo
~§~ Sempre E Solo Lei ~§~
^TiGeRShArK^
30-05-2007, 21:13
ma alla fine mi sono sempre chiesto ... ma noi lavoriamo veramente in modo a oggetti o a funzioni? .. secondo me a funzioni
~§~ Sempre E Solo Lei ~§~
io durante i miei primi passi con Java lavoravo in maniera prettamente procedurale..
ora finalmente lavoro ad oggetti :p
Io sono partito da Basic, poi Pascal, poi Assembly, poi C, poi C++ fatto male, poi C++ fatto ancora peggio, poi una valida teoria degli oggetti in C++, a questo punto ho studiato i desgn patterns ed ho finalmente capito cosa vuol dire programmare ad oggetti (forse)...
^TiGeRShArK^
30-05-2007, 21:15
No..no spe qua quello fuori sono io..che cerco di seguirvi :sbonk:
oop vuol dire Object Oriented Programming.. ovvero Programmazione Orientata agli Oggetti :p
io durante i miei primi passi con Java lavoravo in maniera prettamente procedurale..
Infatti...e purtroppo in molti posti sono proprio gli insegnanti a programmare così...
:ciapet:
è meglio il tuo notepad modificato che scommetto ha anche il supporto per la Type Hierarchy (F4) e per Find References in the Workspace (CTRL+SHIFT+G) :Prrr:
Hey, questa non l'avevo letta. :D
Se una ha bisogno che sia l'ide a dirgli com'è fatto il programma che sta scrivendo allora è meglio che tenga le dita lontane dalla tastiera.
sonicologico
30-05-2007, 21:21
Grazie a tutti..siete riusciti a rovinarmi la giornata :incazzed:
Fenomeno85
30-05-2007, 21:23
Grazie a tutti..siete riusciti a rovinarmi la giornata :incazzed:
parti dal linguaggio che più di ispira .. ADA :asd:
~§~ Sempre E Solo Lei ~§~
^TiGeRShArK^
30-05-2007, 21:23
Hey, questa non l'avevo letta. :D
Se una ha bisogno che sia l'ide a dirgli com'è fatto il programma che sta scrivendo allora è meglio che tenga le dita lontane dalla tastiera.
Il problema è ke nel mio caso il programma l'hanno fatto veramente DI MERDA centinaia di persone che si sono succedute negli anni..
anche un centinaio di cinesi oltre agli italiani ci hanno messo le mani per circa due anni e mezzo..
ti lascio solo immaginare cosa un comune essere umano potrebbe capire senza Eclipse :p
Grazie a tutti..siete riusciti a rovinarmi la giornata :incazzed:
Su su...tranquillo. Dipende molto da cosa vuoi fare con il linguaggio che impari...qual'è il tuo obiettivo imparando a programmare ?
sonicologico
30-05-2007, 21:29
Bè puo sembrare stupido detto cosi..ma cercavo qualcosa di divertente e possibilmente immediato che guarda il futuro.
So che non c'entra na mazza con quello proposto fin'ora :read: ...ma pensavo seriamente al php tanto per cominciare a prenderci le misure
Ho detto una vaccata :confused:
AnonimoVeneziano
30-05-2007, 21:32
Ma qual'è il campo che ti interessa maggiormente, i siti web? (non che con il PHP si possa fare solo quello, per carità )
Oppure sei più interessato ad altri campi? (sistemi operativi , grafica 3D, applicativi da desktop ... etc)
Ciao
^TiGeRShArK^
30-05-2007, 21:34
Bè puo sembrare stupido detto cosi..ma cercavo qualcosa di divertente e possibilmente immediato che guarda il futuro.
So che non c'entra na mazza con quello proposto fin'ora :read: ...ma pensavo seriamente al php tanto per cominciare a prenderci le misure
Ho detto una vaccata :confused:
ehmmm..
divertente è anke divertente (io nonostante tutto mi diverto ancora un casino :D)..
ma immediato non penso proprio..
Imparare a programmare BENE è tutto fuorchè immediato.
Anch'io nonostante tutto so ke ci sono moltissime cose ke ancora devo imparare (e sono 16 anni che programmo :p).
Non per scoraggiarti, ma in questo campo non si finisce MAI di imparare.
Occorre aggiornarti sempre e imho la conoscenza della lingua inglese è un MUST se vuoi stare al passo dei tempi.
Se poi invece ti accontenti di fare quello ke fa la maggior parte dei comuni programmatori qui in italia.. bhè..
allora la cosa è qualche ordine di grandezza + facile :p
Fermo restando che cmq ci vuole davvero moltissima PAZIENZA e soprattutto non bisogna mai scoraggiarsi alla prima difficoltà :p
^TiGeRShArK^
30-05-2007, 21:36
Ma qual'è il campo che ti interessa maggiormente, i siti web? (non che con il PHP si possa fare solo quello, per carità )
Oppure sei più interessato ad altri campi? (sistemi operativi , grafica 3D, applicativi da desktop ... etc)
Ciao
ottima domanda ;)
sonicologico
30-05-2007, 21:51
Si..hai siti web..pensavo di prendere questa strada :p
Allora devi studiare grafica, non programmazione.
nico88desmo
30-05-2007, 21:55
per rispondere alla domanda iniziale...
io direi
C -> JAVA o C# -> C++;
Il C per me è alla base di tutto (lo studio da 3 anni e sono all'ultimo anno delle superiori) e devo dire che mi ha aiutato sia nel pensare a basso livello, sia a creare algoritmi, infine a gestire indirizzi di memoria, quindi puntatori, ecc...
poi sono passato al java e sinceramente non ho avuto molte difficoltà a pensare ad oggetti; all'inizio sembra di essere in qualcosa di totalmente diverso, però saper già programmare con un linguaggio procedurale mi ha aiutato parecchio
^TiGeRShArK^
30-05-2007, 21:56
Allora devi studiare grafica, non programmazione.
quoto :asd:
alla fine pure io mi sono rotto dell'approccio di PHP e di ASP.NET e per il sito che dovrò fare tra un pò (quando avrò finito il mio progettino) ho deciso il classico approccio a pagine statiche con Dreamweaver, inkscape e GIMP :p
Però qualke figata con i CSS ho intenzione di farla :asd:
^TiGeRShArK^
30-05-2007, 21:58
per rispondere alla domanda iniziale...
io direi
C -> JAVA o C# -> C++;
Il C per me è alla base di tutto (lo studio da 3 anni e sono all'ultimo anno delle superiori) e devo dire che mi ha aiutato sia nel pensare a basso livello, sia a creare algoritmi, infine a gestire indirizzi di memoria, quindi puntatori, ecc...
poi sono passato al java e sinceramente non ho avuto molte difficoltà a pensare ad oggetti; all'inizio sembra di essere in qualcosa di totalmente diverso, però saper già programmare con un linguaggio procedurale mi ha aiutato parecchio
ti èandata bene perchè hai fatto il passaggio in relativamente poco tempo e ancora non ti eri abituato alla programmazione procedurale come lo ero io...
cmq sicuro di sapere davvero programmare in tutto e per tutto ad oggetti?
ti assicuro ke in questo campo non si finisce mai di imparare e di scoprire cose nuove ;)
C'è una cosa che mi piacerebbe dire,così, della seria ascolta un cretino.
Se uno si trova bene con l'orientamento agli oggetti perchè conosce la programmazione procedurale allora o non ha capito la prospettiva procedurale o non ha capito la prospettiva orientata agli oggetti.
Perchè tra vedere un fenomeno come una sequenza parzialmente ordinata di operazioni elementari che manipolano valori immagazzinati in registri di memoria, aka prospettiva procedurale
e vedere un fenomeno come un insieme entità correlate, aka prospettiva orientata agli oggetti,
be', signori miei (incravattati :D), ce ne corre e anche parecchio.
sonicologico
30-05-2007, 22:05
Grafica??..sicuri?...non e' che domani mi dite di studiare musica...non perchè se è per quello..già lo sono musicista :read:
Va buon dai si scherza
AnonimoVeneziano
30-05-2007, 22:05
ti èandata bene perchè hai fatto il passaggio in relativamente poco tempo e ancora non ti eri abituato alla programmazione procedurale come lo ero io...
cmq sicuro di sapere davvero programmare in tutto e per tutto ad oggetti?
ti assicuro ke in questo campo non si finisce mai di imparare e di scoprire cose nuove ;)
Infatti è un procedimento che si impara sul campo, studiare serve per farsi una idea, ma certi concetti diventano perfettamente chiari solo sbattendoci la testa dopo più e più iterazioni :muro:
:)
AnonimoVeneziano
30-05-2007, 22:08
Grafica??..sicuri?...non e' che domani mi dite di studiare musica...non perchè se è per quello..già lo sono musicista :read:
Va buon dai si scherza
Beh, mi sembra che hai già in mente la tua strada :)
Vuoi fare siti, il C/ Java / C++ non ti servono a un tubazzo :ciapet:
Impara HTML , PHP, CSS e inizia a buttare giù le basi del tuo progetto :)
Non credo sia neanche necessario che impari a programmare in senso stretto del termine, usa programmi che ti aiutano nella progettazione del sito e vivi felice (i cosìddetti WYSIWYG) .
Ciao
C'è una cosa che mi piacerebbe dire,così, della seria ascolta un cretino.
Se uno si trova bene con l'orientamento agli oggetti perchè conosce la programmazione procedurale allora o non ha capito la prospettiva procedurale o non ha capito la prospettiva orientata agli oggetti.
Perchè tra vedere un fenomeno come una sequenza parzialmente ordinata di operazioni elementari che manipolano valori immagazzinati in registri di memoria, aka prospettiva procedurale
e vedere un fenomeno come un insieme entità correlate, aka prospettiva orientata agli oggetti,
be', signori miei (incravattati :D), ce ne corre e anche parecchio.
sapevo che sarebbe finita così comunque.. mi dispiace per solo sonicologico
comunque forse sei te che non hai capito la programmazione procedurale, di solito chi la odia è perchè non l'ha capita.
la programmazione procedurale è fatta di variabili, funzioni, cicli e if-then-else. c'è qualcosa da buttare? java non ha le variabili? non ha le funzioni? non ha i cicli? se uno impara a programmare in C si concentra su queste semplici cose, poi dopo per programmare a oggetti deve solo aggiungere il concetto di oggetto.
spiegami una cosa.. i metodi che implementi non sono pezzi di codice procedurale?
comunque io avevo solo dato la mia opinione e non penso di aver fatto male visto che voi avete dato la vostra
sonicologico
30-05-2007, 22:11
C'è una cosa che mi piacerebbe dire,così, della seria ascolta un cretino.
Se uno si trova bene con l'orientamento agli oggetti perchè conosce la programmazione procedurale allora o non ha capito la prospettiva procedurale o non ha capito la prospettiva orientata agli oggetti.
Perchè tra vedere un fenomeno come una sequenza parzialmente ordinata di operazioni elementari che manipolano valori immagazzinati in registri di memoria, aka prospettiva procedurale
e vedere un fenomeno come un insieme entità correlate, aka prospettiva orientata agli oggetti,
be', signori miei (incravattati :D), ce ne corre e anche parecchio.
Ahhh vabbe dai..questa l'ho capita giuro
Straquoto...
non faccio ironia..penso di averla capito davvero...in pratica PGI chiede..come è possibile che riuscite a sbucciare una mela con una forbici da cucina e tagliare un petto di pollo bello grosso con un coltellino per pelare la frutta
@sonicologico
allora se vuoi andare nel settore del web devi per forza iniziare con HTML perchè tutto si basa su quello :read:
AnonimoVeneziano
30-05-2007, 22:17
sapevo che sarebbe finita così comunque.. mi dispiace per solo sonicologico
comunque forse sei te che non hai capito la programmazione procedurale, di solito chi la odia è perchè non l'ha capita.
la programmazione procedurale è fatta di variabili, funzioni, cicli e if-then-else. c'è qualcosa da buttare? java non ha le variabili? non ha le funzioni? non ha i cicli? se uno impara a programmare in C si concentra su queste semplici cose, poi dopo per programmare a oggetti deve solo aggiungere il concetto di oggetto.
spiegami una cosa.. i metodi che implementi non sono pezzi di codice procedurale?
comunque io avevo solo dato la mia opinione e non penso di aver fatto male visto che voi avete dato la vostra
Quotissimo :)
Dopotutto , se vogliamo vederla con un esempio ad oggetti, la programmazione ad oggetti è una sottoclasse della programmazione procedurale :D
La programmazione ad oggetti possiede tutto ciò che ha la programmazione procedurale aggiungendo il concetto di oggetto e sviluppandola in quella direzione
Ciao
sonicologico
30-05-2007, 22:17
Kont non devi preoccuparti..anzi per quanto sia difficile seguire il 3d ...sto capendo un sacco di cose.....mi sa che e' meglio lasciar perdere :D ...e dedicarmi a linguaggi tipo php,css(come consiglia il buon anonimo)....dove i compilatori ( aho io li chiamo cosi..non cominciate :D ) ti correggono la grammatica ,cosi devi preoccuparti solo della parte creativa della cosa.
nico88desmo
30-05-2007, 22:18
ti èandata bene perchè hai fatto il passaggio in relativamente poco tempo e ancora non ti eri abituato alla programmazione procedurale come lo ero io...
cmq sicuro di sapere davvero programmare in tutto e per tutto ad oggetti?
ti assicuro ke in questo campo non si finisce mai di imparare e di scoprire cose nuove ;)
Diciamo che ho sicuramente le basi. Poi è ovvio..non si finisce mai di imparare :O
AnonimoVeneziano
30-05-2007, 22:23
Kont non devi preoccuparti..anzi per quanto sia difficile seguire il 3d ...sto capendo un sacco di cose.....mi sa che e' meglio lasciar perdere :D ...e dedicarmi a cose tipo php,css(come consiglia il buon anonimo)....dove i compilatori ( aho io li chiamo cosi..non cominciate :D ) ti correggono la grammatica ,cosi devi preoccuparti solo della parte creativa della cosa.
Il PHP non è compilato ...:stordita:
Comunque io ti ho detto di dedicarti a quello perchè se il tuo interesse sono i siti Web dei linguaggi di programmazione tipo C , Java, C++ , ADA, Fortran, Haskell, ... etc non te ne fai proprio nulla! Non puoi proprio fare un sito con questi linguaggi, al max un browser web (anche se col fortran e con l'haskell la vedo dura, per me esci di testa :D ) . Se impari il C e il tuo interesse sono i siti web ti trovi in una situazione in cui sai il C e non hai la minima idea da dove si inizia il sito web , per quello ti ho indirizzato in quella direzione .
Se il tuo campo di interesse era il funzionamento dei sistemi operativi allora la scelta era C/C++ , se il tuo campo era la grafica 3D potevi scegliere sia C , sia Java , sia C++ , se volevi programmare il software di controllo di un vettore spaziale allora ti avrei detto ADA :D , se invece volevi implementare software per calcoli matematici ad alte prestazioni Fortran, insomma, per ogni scopo un linguaggio :)
Siti web? HTML e PHP :)
Ciao
Quotissimo :)
Dopotutto , se vogliamo vederla con un esempio ad oggetti, la programmazione ad oggetti è una sottoclasse della programmazione procedurale :D
La programmazione ad oggetti possiede tutto ciò che ha la programmazione procedurale aggiungendo il concetto di oggetto e sviluppandola in quella direzione
Ciao
Ma certo. D'altronde cosa valgono le parole di noti cialtroni come Kay, Nygaard o Dhal di fronte alla grande teoria del Minestrone Totale. L'orientamento agli oggetti? Ma sii, è 'na specie de' variabbile, ma butta dentro e che te frega.
E' tutta da ridere 'sta programmazione, è tutta da ridere.
sonicologico
30-05-2007, 22:35
Bene grazie...quindi il flash e firefox sono linguaggi da seguire in secondo battuta ..dopo aver assimilato bene php e html ?
Ciao
AnonimoVeneziano
30-05-2007, 22:39
L'orientamento agli oggetti? Ma sii, è 'na specie de' variabbile, ma butta dentro e che te frega.
E' tutta da ridere 'sta programmazione, è tutta da ridere.
Questo è come uno impara male la programmazione ad oggetti, non significa che la si debba imparare così, io non l'ho imparata così partendo da linguaggi procedurali.
Ciao
AnonimoVeneziano
30-05-2007, 22:40
Bene grazie...quindi il flash e firefox sono linguaggi da seguire in secondo battuta ..dopo aver assimilato bene php e html ?
Ciao
Flash è utile se vuoi fare le varie animazioncine, inoltre è molto visuale come linguaggio (ha un editor WYSIWYG molto buono che ti permette di creare animazioni un baleno) , firefox non è un linguaggio , è un browser web a quanto ne so :stordita: (se esiste anche un linguaggio che si chiama firefox mea culpa :p)
Bene o male Java c'entra con il web e anche molto (Servlet e JSP), ma in questo caso dovrebbe essere l'ultimo passo da fare.
Prima di tutto HTML e CSS. Dopo JavaScript. Poi PHP e alla fine AJAX.
Poi se ti vuoi orientare più verso la grafica allora studiati anche Flash...anche se a me francamente sta sulle pelotas.
Se invece ti vuoi orientare più ai contenuti a questo punto ti dovresti studiare Java ed in particolare J2EE, Servlet e JSP.
sonicologico
30-05-2007, 22:53
Okkei raga grazie a tutti ....il tempo di riordinare le idee (un paio di settimane dovrebbero bastare:D )..e poi comincio ad attrezzarmi dei primi armamentari
si scusa Anonimo ho detto una porcata...ma che ce' voi fà...è l'orario
Notte a tutti :p
Ma certo. D'altronde cosa valgono le parole di noti cialtroni come Kay, Nygaard o Dhal di fronte alla grande teoria del Minestrone Totale. L'orientamento agli oggetti? Ma sii, è 'na specie de' variabbile, ma butta dentro e che te frega.
non mi sorprende la cosa.. c'è un cialtrone per ogni teoria in fondo. ti dirò.. mi sono imbattuto nel primo oggetto mentre programmavo in pascal (per cui tanto tempo fa)
@cionci
secondo me j2ee è spropositato per l'intento che ha sonicologico.. direi che al massimo dopo avere imparato le basi della programmazione web può impararsi qualcosa di SQL per dialogare con un database. non credo serva altro
c'è un cialtrone per ogni teoria in fondo
Devo cogliere un sottile riferimento? Non avere timore di essere esplicito, il confronto se è franco accetta anche termini forti.
Non sapevo che Pascal consentisse di trattare un valore per la relazione che potrebbe avere con un altro. Perchè se parli di oggetto allora è questo che hai incontrato in Pascal: un valore identico (cioè che possiede un'identità, qualcosa che lo distingue da ogni altro valore nel sistema che stai rappresentando) correlato, cioè che accanto alla sua identità dichiara anche la capacità di far parte di relazioni con valori di un tipo diverso dal proprio.
Lo dico senza sottintesi: io vorrei proprio vederlo un affare del genere scritto in Pascal.
^TiGeRShArK^
30-05-2007, 23:48
Questo è come uno impara male la programmazione ad oggetti, non significa che la si debba imparare così, io non l'ho imparata così partendo da linguaggi procedurali.
Ciao
Per curiosità..
come l'hai imparata..
xkè io onestamente ho avuto MOLTE difficoltà x imparare a programmare davvero ad oggetti partendo dalla procedurale..
e l'università non mi ha certo aiutato .. anzi :asd:
Il problema fondamentale è ke l'approccio è completamente diverso.. se prima eri abituato a ragionare in un determinato modo col procedurale con l'OO dovevi procedere in modo completamente diverso e soprattutto dovevi cambiare il modo di ragionare che avevi usato fino a quel momento :p
^TiGeRShArK^
30-05-2007, 23:51
Devo cogliere un sottile riferimento? Non avere timore di essere esplicito, il confronto se è franco accetta anche termini forti.
Non sapevo che Pascal consentisse di trattare un valore per la relazione che potrebbe avere con un altro. Perchè se parli di oggetto allora è questo che hai incontrato in Pascal: un valore identico (cioè che possiede un'identità, qualcosa che lo distingue da ogni altro valore nel sistema che stai rappresentando) correlato, cioè che accanto alla sua identità dichiara anche la capacità di far parte di relazioni con valori di un tipo diverso dal proprio.
Lo dico senza sottintesi: io vorrei proprio vederlo un affare del genere scritto in Pascal.
mi sa ke mi tocca quotarti...
Ehh, aspetta, aspetta. Sento già che stiamo per iniziare a rifletterci a pesci in faccia... :D
CVD
:asd:
AnonimoVeneziano
31-05-2007, 00:30
Bene grazie...quindi il flash e firefox sono linguaggi da seguire in secondo battuta ..dopo aver assimilato bene php e html ?
Ciao
Per curiosità..
come l'hai imparata..
xkè io onestamente ho avuto MOLTE difficoltà x imparare a programmare davvero ad oggetti partendo dalla procedurale..
e l'università non mi ha certo aiutato .. anzi :asd:
Il problema fondamentale è ke l'approccio è completamente diverso.. se prima eri abituato a ragionare in un determinato modo col procedurale con l'OO dovevi procedere in modo completamente diverso e soprattutto dovevi cambiare il modo di ragionare che avevi usato fino a quel momento :p
Mah, ripeto, l'ho imparata in senso lato, credo di aver appreso almeno le basi, ma come qualcuno ha ripetuto fino alla morte in questo thread non si finisce mai di imparare :)
Comunque passare dalla procedurale all' OOP non mi sembra sto casino . Dopo tutto l'OOP è una procedurale che migra le procedure alle varie classi.
Ci sono concetti come visibilità delle variabili e protezione dell'implementazione (REP invariant etc) che devono essere appresi leggendo la teoria , capire grosso modo in quali casi applicarli, quando sarebbe bene delegare una funzionalità ad un oggetto specifico (creando quindi quell'oggetto e impostandone gli attributi, ereditarietà metodi ... etc) , poi bisogna però applicarli cercando di fare qualche progetto ed è qui che si inizia a capire . Io credo di aver capito le basi in questo modo, ma non mi azzardo ad essere presuntuoso, so che mi manca ancora molta strada da fare :)
Certo, spesso si finisce col vedere i vari oggetti come struct con funzioni , ma basta farci un po' la mano per riuscire a vedere le cose come devono essere viste, ossia un gruppo di oggetti che eseguono azioni o subiscono azioni tramite i vari metodi
Ciao
@cionci
secondo me j2ee è spropositato per l'intento che ha sonicologico.. direi che al massimo dopo avere imparato le basi della programmazione web può impararsi qualcosa di SQL per dialogare con un database. non credo serva altro
infatti gliel'ho dato messo come ultima tappa dell'apprendimento...SQL lo davo per scontato insieme a PHP.
Comunque passare dalla procedurale all' OOP non mi sembra sto casino . Dopo tutto l'OOP è una procedurale che migra le procedure alle varie classi.
Eh no...è questo il problema. Se gli dai questa visione semplicistica comincerai a scrivere classi con 50 metodi e 50 linee per metodo ;) E non otterrai alcun vantaggio dalla programmazione OO...
AnonimoVeneziano
31-05-2007, 08:41
Eh no...è questo il problema. Se gli dai questa visione semplicistica comincerai a scrivere classi con 50 metodi e 50 linee per metodo ;) E non otterrai alcun vantaggio dalla programmazione OO...
:Prrr:
Non vedo il perchè di tutto questo assolutismo.
In senso puramente pratico l'OOP è proprio questo , poi l'uso ben benino dell'OOP non viene dalla definizione.
Sapere che ci sono degli oggetti, e ogni oggetto deve avere delle sue proprietà ed è possibile agire su queste attraverso l'uso di metodi che possiamo vedere come azioni che quest' oggetto può eseguire è una cosa , poi sapere come impostare un programma con questo paradigma è un altro . Dubito fortemente che si possa imparare solo sapendo la teoria, è una cosa che si impara scendendo in campo .
A mio parere non ha alcuna importanza come lo vedi all' inizio , la cosa diventa chiara solo dopo che hai iniziato ad usarlo per un progetto semi-serio.
Poi uno può capirlo o non capirlo, ma non credo derivi da una forma mentis sbagliata fatta in precedenza. Partendo dalla procedurale bisogna vedere le funzioni come "azioni degli oggetti" , partendo direttamente dall' OOP .... boh, personalmente proprio non lo so.
Se dovessi insegnare un linguaggio OOP a qualcuno , ad esempio Java , e questo non sa proprio NULLA di programmazione non saprei proprio che giri inventarmi senza passare per il concetto di "funzione" .
Boh, alla fine comunque , come ho già detto, oramai sono avviato e ho percorso una certa strada, non ho idea come sarebbe finita se ne avessi percorso un altra, ma per me un programmatore novello di "classi, visibilità , ereditarietà , polimorfismo , implementazione nascosta " e robe del genere non può assolutamente capire nulla
Ciao
sonicologico
31-05-2007, 10:54
Secondo me (tralasciando la situazione mia personale..più soft e hobbistica alla fine ) non è facile alle nuove leve preparare un discorso didattico assoluto.
Ai miei tempi(30 anni fà) già chi programmava in visual era considerato un grande...vi lascio immagginare chi cominciava con disinvoltura a districarsi col C....praticamente un mostro!:ave:
Oggi ci sono 198 tipi di linguaggi con diverse impostazioni da seguire al livello didatico :muro:.
B.o' ..volendo essere pessimisti guardate che è un DRAMMA in questa babilonia informatica districarsi per i più giovani a farne di un arte un mestiere :cool:
Penso che sia una questione di "cultura pop". Si prende un po' di formazione procedurale, gli si aggiungono due dita di architettura dei calcolatori, si scrive "class", si parla di incapsulamento e ci si convince che quella cosa incredibilmente complicata che salta fuori è orientamento agli oggetti.
E il problema non sta nel fatto che poi uno con idee così complicate vada a fare proselitismo, perchè fortunatamente vige la libertà di pensiero e di parola. Il problema nasce quando chi ascolta o legge lo fa senza spirito critico.
Così capita che nell'orientamento agli oggetti si parli tanto di ereditarietà, polimorfismo, incapsulamento, astrazione e mai di oggetto. E nessuno si chiede perchè. Come si in realtà si chiamasse "programmazione orientata all'ereditarietà, al polimorfismo, all'incapsulamento e all'astrazione".
Ora, sarà semplicistico :fagiano: ma secondo me se ha le piume e fa qua qua allora è un'anatra. Se uno ti parla di orientamento agli oggetti e non di dice cos'è un oggetto è perchè non lo sa.
E, a scanso di facili equivoci, un oggetto è un'identità correlata.
Devo cogliere un sottile riferimento? Non avere timore di essere esplicito, il confronto se è franco accetta anche termini forti.
Non sapevo che Pascal consentisse di trattare un valore per la relazione che potrebbe avere con un altro. Perchè se parli di oggetto allora è questo che hai incontrato in Pascal: un valore identico (cioè che possiede un'identità, qualcosa che lo distingue da ogni altro valore nel sistema che stai rappresentando) correlato, cioè che accanto alla sua identità dichiara anche la capacità di far parte di relazioni con valori di un tipo diverso dal proprio.
Lo dico senza sottintesi: io vorrei proprio vederlo un affare del genere scritto in Pascal.
mmm secondo me non è ancora chiaro quello che ho detto..
programmare a oggetti significa lavorare a un livello di astrazione più alto rispetto alla programmazione procedurale. in pratica quello che intendevo dire è che una volta che hai le tue classi e definisci le interazioni che ci sono tra loro.. beh quello che rimane è ancora programmazione procedurale. praticamente ad alto livello vedi gli oggetti che interagiscono tra di loro, ma se guardi dentro ogni oggetto è solo programmazione procedurale, al limite al posto di scrivere apriPorta(&p) si scriverà porta.apri(), ma è solo una differenza sintattica visto che il significato è lo stesso (pur riconoscendo la disarmante immediatezza della seconda).
forse tu non te ne rendi conto ma soprattutto nelle università arriva gente che non ha mai visto una riga di codice, gli sbattono davanti java e teoricamente si sentono bravissimi a programmare, fanno diagrammi uml per bene ecc... poi gli chiedi di implementarlo e crolla tutto. perchè? perchè se non sai maneggiare alla perfezione variabili, funzioni e costrutti base (che è la programmazione procedurale in fin dei conti) non sai nemmeno programmare a oggetti.
la programmazione a oggetti non è magia, non si è creata dal nulla ed è inutile far finta di non capire.
per il pascal non volevo certo dire che ho imparato a programmare a oggetti veramente in pascal, ho detto solo che ho capito cos'è un oggetto (non so che versione ma il compilatore della borland supportava gli oggetti). poi ovviamente ci vuole del tempo per saper fare qualcosa bene e direi che la maggiorparte delle nozioni sulla programmazione a oggetti le ho apprese con java e direi che da un pò programmo esclusivamente a oggetti.
Proviamo a prenderla da un'altra parte. "Costrutti" di base. Il ciclo while nella programmazione orientata agli oggetti fa la stessa cosa del ciclo while nella programmazione procedurale che fa la stessa cosa nel ciclo while della programmazione funzionale.
Ma sono la stessa cosa? La risposta è no. Vorrei dire ovviamente ma non mi sbilancio.
Nella programmazione orientata agli oggetti il ciclo while è un oggetto che soddisfa la relazione azione e condizione.
Nella programmazione funzionale il ciclo while è una relazione tra una condizione ed un'azione.
Nella programmazione procedurale è una specifica e particolare sequenza di istruzioni elementari.
Se mischiamo il while della programmazione procedurale con il while della programmazione orientata agli oggetti (o viceversa, ben inteso) salta fuori un mostro incomprensibile.
E' più evidente l'intoppo, messa in questi termini?
nel tuo esempio c'è il trucco :fagiano:
perchè quando parli di programmazione a oggetti racconti le cose a un livello di astrazione diverso da quando parli della programmazione procedurale?
in fondo nella testa del programmatore che programma in maniera procedurale può esserci una visione astratta dietro al significato del ciclo while che è del tutto equivalente alla visione che tu attribuisci soltanto a chi programma a oggetti. dall'altra parte anche nella programmazione a oggetti un while non è altro che la ripetizione di istruzioni elementari. il fatto che la programmazione a oggetti ti costringe a pensare alle istruzioni elementari come azioni svolte su determinati oggetti è un altro paio di maniche, ma non stiamo parlando di due cose diverse.
comunque è chiaro che uno che sa programmare in maniera procedurale non è affatto detto che sappia programmare a oggetti, su questo non ci piove, non per niente dicevo che la programmazione a oggetti contiene quella procedurale (nel senso che contiene di più)
Se la programmazione procedurale interpreta i fenomeni come sequenze parzialmente ordinate di istruzioni elementari che manipolano valori immagazzinati in registri di memoria non posso poi dire che il ciclo while è qualcosa di più o di meno di una siffatta sequenza.
Elementare non va inteso nel senso qualitativo (facile, che vale poco, 'na robetta eccetera) ma nel senso quantitativo: atomica, una, una sola.
In termini procedurali il ciclo while, senza le istruzioni eseguite durante i ciclo, è una particolare sequenza di istruzioni (al limite una sola istruzione). Il sacco da cui devo prelevare i termini per descrivere le cose è quello: non posso tirar fuori cose che non ci sono.
La relazione della programmazione funzionale va intesa come applicazione dei valori di un insieme A nei valori di un insieme B.
La relazione della programmazione orientata agli oggetto va intesa come condivisione di una qualità.
Sarò massimamente esplicito. Se Java non avesse un suo ciclo while il ciclo while in Java sarebbe (super condensato):
interface Condizione { boolean vero(); }
interface Azione { void esegui(); }
class While implements Condizione, Azione {
private final Condizione c;
private final Azione a;
public While(Condizione c, Azione A) {
this.c = c;
this.a = a;
}
public boolean vero() { return c.vero(); }
public void esegui() { if(vero()) { azione.esegui(); esegui(); }}
}
qualcosa che soddisfa una relazione tra una condizione ed una azione. E se uno guarda 'sta roba assumendo un punto di vista procedurale dirà: "ma che cavolo stai dicendo".
Se la programmazione procedurale interpreta i fenomeni come sequenze parzialmente ordinate di istruzioni elementari che manipolano valori immagazzinati in registri di memoria non posso poi dire che il ciclo while è qualcosa di più o di meno di una siffatta sequenza.
Elementare non va inteso nel senso qualitativo (facile, che vale poco, 'na robetta eccetera) ma nel senso quantitativo: atomica, una, una sola.
In termini procedurali il ciclo while, senza le istruzioni eseguite durante i ciclo, è una particolare sequenza di istruzioni (al limite una sola istruzione). Il sacco da cui devo prelevare i termini per descrivere le cose è quello: non posso tirar fuori cose che non ci sono.
La relazione della programmazione funzionale va intesa come applicazione dei valori di un insieme A nei valori di un insieme B.
La relazione della programmazione orientata agli oggetto va intesa come condivisione di una qualità.
Sarò massimamente esplicito. Se Java non avesse un suo ciclo while il ciclo while in Java sarebbe (super condensato):
interface Condizione { boolean vero(); }
interface Azione { void esegui(); }
class While implements Condizione, Azione {
private final Condizione c;
private final Azione a;
public While(Condizione c, Azione A) {
this.c = c;
this.a = a;
}
public boolean vero() { return c.vero(); }
public void esegui() { if(vero()) { azione.esegui(); esegui(); }}
}
qualcosa che soddisfa una relazione tra una condizione ed una azione. E se uno guarda 'sta roba assumendo un punto di vista procedurale dirà: "ma che cavolo stai dicendo".
dire che l'oggetto While è una Condizione e allo stesso tempo un'Azione, e infine che contiene una Condizione e un'Azione mi sembra comunque una porcheria anche a livello di programmazione a oggetti (ricordiamo sempre il pincipio di sostituibilità di liskov che dice: "A subtype must require no more and promise no less than its supertype"). a parte la definizione ricorsiva.. mi stai dicendo che io posso passare come argomenti al costruttore di While semplicemente altri 2 While, il che non ha il minimo senso.
è questo il motivo per cui la reazione è: "ma che cavolo stai dicendo"
così è già più comprensibile:
public class While {
private Condition condition;
private Action action;
public While(Condition condition, Action action) {
super();
this.condition = condition;
this.action = action;
}
public void loop() {
if(this.condition.evaluate()) {
this.action.execute();
this.loop();
}
}
}
rimane comunque il fatto che per ogni azione che vuoi compiere devi creare un'oggetto adhoc che eredita da Action e implementa l'azione.
addirittura in C verrebbe più semplice, infatti basterebbe implementare la funzione loop che richiede due argomenti (una struct che rappresenta la condizione da valutare e un puntatore a funzione) e si richiama ricorsivamente finchè la condizione è verificata eseguendo tutte le volte la funzione passata come argomento.
in fin dei conti non ho ancora capito quale sia la differenza tra il while in java e il while in C (se non nella testa del programmatore)
Che io sappia (e io sappia) il principio di sostituibilità di liskow tratta della conservazione degli invarianti nella teoria dei tipi.
Il tuo while è una struttura dati e la ragione di ciò è che esso non soddisfa alcuna relazione propria.
In verità una relazione è soddisfatta anche dal secondo while perchè in Java tutte le classi estendono Object. E' improprio quindi il mio "è una struttura dati" e me lo rimangio.
Quello che non capisco è perchè appaia straordinario che un While, azione ripetuta nel persistere di una conzione, possa essere usato come condizione e come azione.
Nell'annidamento, ad esempio, l'azione del primo while sarebbe un secondo while. E probabilmente si può fare anche un break con quel While azione-condizione.
vBulletin® v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.