• User

    Php ad oggetti

    Salve, volevo iniziare ad imparare Php in maniera Object orieted. Tuttavia ho visto che per Php Orientato agli oggetti sono praticamente inesistenti manuali/esercizi.
    Mi hanno detto che Php non è un buon linguaggio per quanto riguarda l'O.O. (ed infatti me ne sono accorto dalla mancanza di manuali).
    Mi hanno consigliato di studiare linguaggi seri come Java o Asp.net e di lasciar perdere Php che non è un buon prodotto.

    Voi che ne dite? Cosa ne dite di Pyton?

    Grazie


  • ModSenior

    Ciao bismark2005,
    di recente ci sono state diversi cambiamenti per quanto riguarda la programmazione ad oggetti in php, che mi sembra abbastanza completa, almeno per ciò che serve per la maggior parte dei siti web.
    Ho lavorato con java programmando ad oggetti e onestamente non ci sono granchè di differenze rispetto a php, o almeno nulla che a me sia servito.
    Ci sono da considerare sempre le prestazioni dei vari linguaggi.
    In ogni caso se un programmatore può definirsi tale, con qualsiasi linguaggio può ottenere un risultato ottimo, altrimenti può ottenere un risultato pessimo con qualsiasi linguaggio.

    La programmazione ad oggetti in generale all'inizio può dare l'impressione della mancanza di manuali in rete, in realtà sono ben poche le cose da capire, il problema vero è capirle.

    Php è forse quello con più documentazione, contrariamente a quanto hai detto, in quanto è il più diffuso in ambito web e trovi molto in giro per la rete. Sul manuale ufficiale trovi anche tanti esempi:
    http://php.net/manual/en/language.oop5.php

    A mio avviso puoi imparare a programmare ad oggetti in php, ma anche in qualsiasi altro linguaggio, in quanto appena capirai come funziona, capirai anche che puoi passare da un linguaggio all'altro e l'unica differenza riguarda la sintassi.

    Utilizzare anche dei framework php una volta studiata la teoria può essere molto utile per capire come applicare al meglio la programmazione ad oggetti.


  • User Newbie

    Ciao ragazzi,
    a scrivere è una persona che ha una storia "informatica" breve che non include la conoscenza del PHP però ho basi di Java e UML, e una conoscenza avanzata di actionscript 3.0, e dunque mi sento comunque di fare qualche considerazione.
    Per quanto riguarda il percorso didattico credo ci siano diverse variabili che determinano la correttezza, efficacia ed efficienza dello stesso:
    la prima è quella evidenziata da bismark ovvero la disponibilità di materiale didattico di qualità sia online che offline, e la presenza di documentazione ufficiale (e non) completa
    Secondo punto riguarda origini e natura del linguaggio, ci sono linguaggi più O meno orientati agli oggetti, ovvero linguaggi che nascono oop, e linguaggi che diventano oop, linguaggi che sono diventati oop da breve tempo e linguaggi che lo sono da un tempo abbastanza lungo.
    Io su questo mi sento di consigliare un linguaggio oop di nascita o quanto meno orientato agli oggetti in senso "forte" (nell'accezione giuridica del termine), questo in modo da evitare che il neofita oop si "culli" sulle conoscenze accumulate in altri paradigmi, e rimuova o non maturi, eventualmente, certe cattive abitudini concesse in altri paradigmi o certi linguaggi ibridi.
    Cattive abitudini che riguardano ad esempio la famosa questione del goto, oppure la mancata gestione delle eccezioni. (thedarkita) Hai pienamente ragione sul fatto che la qualità del codice dipenda da chi lo scrive, ma questa è un'osservazione "a valle" ovvero che si colloca alla fine del processo di apprendimento, il dubbio nasce, invece, a monte di quel processo stesso: come fare in modo che il programmatore scriva quel famoso codice di qualità di cui all'inizio? Diamo per scontato il famoso postulato della razionalità dell'individuo e pigrizia al seguito? Vogliamo dargli la possibilità di trovare delle scorciatoie ai problemi? Non si corre il rischio che quelle "scorciatoie" si candidino al rango di soluzioni ordinarie?
    Non è un caso che in ambiente accademico si siano diffusi determinati linguaggi piuttosto che altri: oltre la semplicità rispondono ad una esigenza, appunto, educativa del futuro programmatore, gli insegnano, attraverso l'imposizione, determinatate condotte che in condizioni di "libertà" scarterebbe d'impulso perchè faticose e frustranti nel breve periodo.

    In definitiva, alla luce di quanto detto sopra, e sulla base della mia esperienza, mi sento di dire che il linguaggio (o meglio uno dei linguaggi) che si candida meglio all'"iniziazzione oop" è Java:

    • è semplice
    • è strutturato oltre che orientato agli oggetti e dunque garantisce un codice solido
    • di conseguenza ai primi due punti è largamente diffuso in ambiente accademico (questo la dice lunga) e dunque la disponibilità di testi di alta qualità è vasta, sia in lingua italiana che in inglese (per iniziare consiglierei "Java - fondamenti di programmazione" di Deitel&Deitel, Apogeo)

    Sul php purtroppo non sono in grado di giudicare, ma spero di poterlo fare presto, ho chiesto consigli su quale testo acquistare proprio su questo forum e attendo una risposta prima di fare una scelta (visti i prezzi!)

    Saluti a tutti.


  • Consiglio Direttivo

    Mi permetto un breve intervento anch'io da hobbysta del Web.
    Giuste le osservazioni esposte da James Goldon ma in riferimento al discorso delle considerazioni "a monte" o "a valle", a monte bisogna soprattutto analizzare cosa mi servirà in futuro e con che cosa avrò a che fare.
    In ambito Web credo che come linguaggi di programmazione lato server i più diffusi siano Asp e PHP, pertanto studiarmi un linguaggio tipo Java (menziono questo perché è stato chiamato in causa come alternativa), per quanto sicuramente completo ed O.O. sin dalla sua nascita, domani mi tornerà di utilità dimezzata perché mi ritroverò davanti strutture con altre sintassi che dovrò andarmi a *ri-*studiare.
    Personalmente poi, se ho davanti le due strade ASP o PHP, scelgo senz'altro la seconda dato che, per le mie conoscenze, sono certo di poter balzellare da un server ad un altro, sia esso Win o Linux, incontrando minime, se non nulle, eccezioni di utilizzo, cosa che, leggendo in giro, non si può ben dire per ASP e ASP.NET (nonostante questi siano sicuramente più "sviluppati" sull'argomento rispetto a PHP che è ancora ai suoi inizi sull'O.O).
    Certo è, qualunque sia la scelta e secondo la mia opinione, che bisogna partire dalle basi di programmazione di qualunque linguaggio e non lanciarsi direttamente nell'O.O. se no si fa prima a farsi spiegare come includere le classi jQuery agli script e quando ho un problema o mi serve una modifica me la faccio risolvere. 😄

    Per quanto concerne "manuali e libri" riformulo la mia scelta espressa quì, ovvero questo che, per quanto ne sappia, almeno ai tempi, rientrava tra i testi universitari più quotati e come potete vedere dall'indice parte dalle basi di programmazione, alla programmazione ad oggetti, fino alle integrazioni con altri linguaggi e vari Db. Il passo ad un libro PHP O.O. specifico, di approfondimento, secondo me è da compiere dopo essersi fatto le ossa con qualcosa del genere, per non rientrare nelle tipologie di persone che mettono online un sito e non sanno nemmeno il significato del tag <p>... e ce ne sono molte grazie ai CMS e Dreamweaver. 😉


  • User

    Grazie per le risposte ragazzi. Rispondo con un po' di ritardo causa problemi. Allora... io ho acquistato ben 3 manuali su Php e devo dire che sono stati letteralmente soldi buttati. Tutti i manuali si riferiscono alla programmazione procedurale.
    Trovare un buon manuale sul Php ad oggetti è pressochè impossibile. Io volevo studiare un framework come symfony, però questo presuppone una conoscenza del Php ad oggetti. Quindi mi trovo in un circolo vizioso...***Non posso studiare Php ad oggetti causa mancanza di manuali>>>non posso studiare il framework. Sono praticamente bloccato e sto perdendo letteralmente tempo.


    Dato che questa situazione mi ha scocciato vorrei passare a qualche altro linguaggio.

    Ad esempio Java è pieno zeppo di buoni manuali (anche se forse non è proprio indicato per il web) anche asp.net e pyton hanno ottimi manuali (mi hanno detto che questi 2 sono linguaggi seri rispetto a php)

    Io volevo studiare Php perchè uso cms basati su questo linguaggio, ma data l'impossibilità di studiare questo linguaggio (causa buoni manuali OO) su quale linguaggio mi "butto" tra Java,Asp.net e Pyton?

    Grazie


  • ModSenior

    Su amazon si trovano alcuni libri dedicati esclusivamente alla programmazione ad oggetti in php. Forse li hai cercati solo in italiano?
    In realtà si può iniziare benissimo anche con il manuale su php.net ed iniziare con un framework tranquillamente, visto che non c'è molto da imparare come ho già detto.


  • User

    Altre persone mi hanno consigliato di studiare un framework (come symfony), ma io non sono un super esperto!!!

    Conosco solo la sintassi Php, e la teoria ad oggetti abbastanza bene (ma solo la teoria con la pratica sto a zero).

    Non è un azzardo studiare un framework come symfony? Va a finire che non ci capisco niente


  • ModSenior

    Symfony dovrebbe essere abbastanza complesso per iniziare(Non l'ho mai usato, ma solo dato uno sguardo parecchio tempo fà), potresti iniziare con codeigniter che è molto intuitivo e la documentazione è molto semplice da capire, e se hai dubbi particolari puoi aprire un thread apposito e ti aiuterò io.


  • User

    [...]

    In realtà anche codeigniter non è semplice. Le cose andrebbero fatte poco alla volta. Prima Php poi i framework. Ma data l'impossibilità di studiare php in maniera O.O......o ti mangi sta minestra o.....
    Asp.net è un linguaggio valido? Quasi quasi mi studio asp.net ho visto che ci sono ottimi manuali e non è incasinato come php


  • User Attivo

    Partendo dalla mia esperienza personale, se si conosce BENE php in modo procedurale e si ha chiara la programmazione a oggetti (classi, metodi, variabili globali, variabili di classe, metodi statici, classi astratte, etc.. ) di un qualunque linguaggio (vedi Java), la programmazione a oggetti in php vien praticamente da sola.
    Questo è a parer mio il motivo per cui non ci sono moltissimi manuali dedicati ESCLUSIVAMENTE alla programmazione a oggi in php.

    Io studiai Programmazione Orientata agli oOggetti all'università, e tra i millemila linguaggi che che si sarebbero potuti scegliere di esempio, il mio docente scelse Java per via della semplicità e diffusione.
    Quando mi ritrovai a programmare per il web, dovetti imparare il php e mi resi conto che la programmazione a oggetti non differisce praticamente in alcun linguaggio.

    Questa guida è a parer mio, più che sufficiente per inziare ad imparare a programmare ad oggetti in php: http://php.html.it/guide/leggi/167/guida-programmazione-ad-oggetti-con-php-5/

    Chiunque ti abbia detto che PHP è indietro rispetto ai linguaggi "seri" come ASP.net e Java per quanto riguarda la PROGRAMMAZIONE WEB, dovrebbe aggiornarsi.

    Solitamente le società che usano Java per il web, sono società molto grosse, che sfruttano questo linguaggio in quanto possono usarlo non solo per la programmazione server side, ma anche client side, quindi non necessitano di programmatori dedicati (andando ad utilizzare un solo linguaggio per la maggioranza dei progetti commissionati). Java sotto questo aspetto è sicuramente più flessibile.
    Si noti che i normali hosting non supportano Java, la diffusione come linguaggio web è molto bassa, ti serve quasi sicuramente un server dedicato per farlo girare.

    ASP.net se la contende bene. Il problema è che richiede licenza e funziona solo su server windows. Motivi più che validi per far cadere la mia personale scelta su PHP.
    Il PHP è uno dei linguaggi più facili da imparare, il quale deriva direttamente dal C e presenta una sintassi estremamente versatile e chiara. Inoltre, il solo fatto che non sia un linguaggio nativo O.O. , è a parer mio un vantaggio, in quando non sempre è necessaria la programmazione ad oggetti quando si lavora nel web (ti parlo di progetti piccoli, come siti web e piccole applicazioni).