java è un buon inizio per imparare OOP? [chiuso]

6

Ho un buon insegnante che capisce l'OOP. Tuttavia, il linguaggio di cui è esperto è Java e non voglio imparare Java.

La mia domanda è, credi che se imparassi OOP usando Java, perderei il mio tempo? E pensi che sia bello iniziare a imparare OOP?

    
posta Goma 18.06.2011 - 19:48
fonte

6 risposte

22

Java è un linguaggio OOP generalmente buono. Certo, è caduto in disgrazia dagli hacker hipster, ma è ancora uno dei linguaggi più utilizzati per la programmazione OOP nel mondo aziendale.

I principi OOP sono solidi e puoi fare confronti validi tra le sue scelte progettuali e altri linguaggi OOP popolari come C ++ e C # senza alcuna difficoltà. Inoltre, i modelli di progettazione applicabili in OOP hanno quasi sempre la loro versione Java.

Per riassumere, se hai un buon insegnante che è disposto a insegnarti OOP da Java, non rinuncerei mai a una così buona opportunità. Tuttavia, se lo desideri, potresti integrarlo con il confronto di ogni principio che ti viene insegnato con un paio di altre versioni di lingue OOP. Ciò ti aiuterà a ottenere una conoscenza OOP quasi agnostica, che faciliterebbe molto il salto verso linguaggi OOP più trendy.

    
risposta data 18.06.2011 - 20:04
fonte
13

Al momento, probabilmente direi di no. Ad esempio, Java non consente l'ereditarietà multipla perché l'implementazione è un po 'icky. Non c'è nulla nelle teorie OOP che affermi che non si dovrebbe consentire l'ereditarietà multipla - questo è Java, non OOP. L'ereditarietà multipla è una parte perfettamente valida di OOP che non puoi mai imparare a utilizzare Java.

Ancora più importante, non userei Java per insegnare OOP perché ti verrebbe fuori l'impressione che OOP risolva ogni problema ed è un martello e tutto è un chiodo, quando in realtà, la programmazione generica e la programmazione funzionale hanno entrambi un significato vantaggi in determinate situazioni. Imparare a conoscere OOP non significa solo imparare che può essere usato in situazioni X o Y, ma anche quando non dovrebbe essere applicato.

Insegnerà anche che l'orientamento dell'oggetto è collegato ad altri principi, ad esempio, gli oggetti possono essere allocati solo su heap. Cos'è un oggetto, e dove la memoria di un tipo è immagazzinata, sono due idee non correlate, ma Java unisce i due concetti - per non parlare di come accoppia anche la semantica di riferimento vs valore agli oggetti, e altre cose, che trovo ironico, perché l'orientamento dell'oggetto è tutto un accoppiamento decrescente.

Se vuoi conoscere OOP, anche quando non è così caldo o quando la sua implementazione va al di là di ciò che è palesemente ovvio, e non vuoi sapere tutte le cose specifiche di Java che hanno aggiunto, allora Java non è è la cosa giusta da fare Il C ++ sarebbe una scelta molto migliore, non ha paura di offrirti paradigmi alternativi e ti consente di fare la scelta. Se impari il C ++, imparerai molto, molto di più che se imparassi Java, e non ti confonderai tra l'orientamento degli oggetti e la gestione della memoria, o la semantica di orientamento agli oggetti e di riferimento rispetto al valore, e quel tipo di cose. Certo, è anche più difficile, quindi ottieni quello per cui paghi qui.

Ovviamente, il vantaggio di un vero insegnante non può essere sottovalutato.

    
risposta data 18.06.2011 - 21:05
fonte
3

Ho visto i primi aspetti della realtà dell'orientamento agli oggetti in C ++. Dopo essere passato a Java e ora sono un fan di C #.

In realtà ho sentito che SmallTalk è il vero oggetto orientato, ma non posso dire nulla per me stesso.

Sono d'accordo con celebrità che i buoni esempi di libri di modelli e blah blah siano in Java. per esempio Martin Fowler è un fan di Java, e non puoi assolutamente mancare ai suoi libri.

Alla fine, sì, non perdetevi un buon insegnante per Java. imparare non è poi così male:)

    
risposta data 18.06.2011 - 20:10
fonte
3

In primo luogo, mentre Java ti aiuterà a imparare OOP, non ne hai bisogno . Anche. Java non è solo OOP , ma generico, imperativo e strutturato. In teoria, la maggior parte dei linguaggi OOP ha una combinazione di altri paradigmi, ma OOP è la forma di stile principale / dominante .

Secondi, puoi imparare OOP da qualsiasi lingua che lo supporta. Detto questo, consiglierei di scegliere un "puro OOP" perché potresti combinare gli id OOP con gli idiomi di altri paradigmi (multi-paradigma). Esempi di "popolari" linguaggi OOP popolari che ti aiuteranno a mantenere l'attenzione su OO, potrebbero essere Scala e Ruby .

Infine, potresti scegliere un libro in agnostico su Object Oriented Analysis and Design (OOAD). Ciò ti aiuterà a disconnetterti da un OOP specifico della lingua e a pensare in termini più generici. Un libro facile e divertente (potrebbe essere troppo java centrico per te) da leggere per me era link

Armando.

    
risposta data 18.06.2011 - 23:30
fonte
1

Ho imparato Java dopo aver appreso VB.NET. Avrei desiderato di aver imparato Java prima, perché credo di aver imparato meglio i concetti base di OOP in Java. E Java (o C #) è il prossimo passo logico se hai già lavorato in linguaggi basati su C..

    
risposta data 18.06.2011 - 21:05
fonte
0

Java è un ottimo linguaggio OOP, quindi sarebbe una buona scelta per imparare i principi OOP. I principi che imparerai saranno applicabili praticamente in qualsiasi altro linguaggio OOP.

Uno dei vantaggi che Java ha dal punto di vista dell'insegnamento è una sintassi relativamente semplice, in modo che tu possa concentrarti sull'apprendimento dei principi dell'OOP di base piuttosto che preoccuparti troppo della complessità del linguaggio (che potrebbe essere un problema con C ++ , ad esempio, che contiene funzioni molto più sofisticate).

Anche Java è un buon linguaggio a sé stante. Ignora gli "oppositori" che hanno la tendenza a colpire Java a causa della sua sintassi "antiquata" e della mancanza di caratteristiche di tendenza: alte prestazioni, manutenibile, portatile, popolare e con il miglior ecosistema di librerie e strumenti di qualsiasi lingua .

Il mio suggerimento personale sarebbe quindi quello di imparare OOP con Java, quindi se davvero senti il bisogno di imparare un linguaggio più "trendy" in seguito puoi facilmente cogliere Clojure, Groovy o Scala (che hanno il vantaggio di basarsi sul Piattaforma Java)

    
risposta data 18.06.2011 - 21:09
fonte

Leggi altre domande sui tag