Qual è il miglior stile di programmazione per iniziare a imparare a programmare POP o OOP? [chiuso]

6

Se qualcuno deve iniziare a imparare a programmare, dove dovrebbe iniziare? Dovrebbe iniziare a scrivere programmi orientati alle procedure o passare a OOP?

    
posta Saurabh 08.09.2011 - 13:54
fonte

8 risposte

13

La cosa migliore che puoi fare è avere una mano su tutti i paradigmi. Suggerirei il seguente ordine:

  1. Programmazione procedurale semplice: basta scaricare le tecniche di programmazione sequenziale di base.
  2. Programmazione strutturata: design Top-Down, Tipi di dati astratti, Moduli.
  3. Programmazione funzionale: funziona senza effetti collaterali, funziona come oggetto di prima classe
  4. Programmazione orientata agli oggetti: astrazione, polimorfismo
  5. Programmazione di livello molto basso, ovvero linguaggio assembly: utilizzo dell'hardware, numero di registri, cache, memoria, istruzioni SIMD, ottimizzazione e, in generale, apprezzamento di quanto i compilatori e gli interpreti semplificano il nostro lavoro.
  6. Programmazione multiparadigm: combinare tutto quanto sopra usando lo strumento migliore per il lavoro quando appropriato

E poi puoi provare altri stili esoterici, come la programmazione logica (Prolog) e la programmazione simultanea (comunicazione di processi sincroni, OCCAM).

Puoi fare diversi passaggi in una lingua (Python coprirebbe la maggior parte delle basi), anche se probabilmente è meglio fare 3 in un linguaggio funzionale relativamente rigido (suggerirei Lisp) e 4 in un linguaggio OO relativamente rigoroso ( Java, C #). Non devi andare molto in profondità in nessuna delle lingue, fai un codice Kata o due in ciascuna per avere un'idea di i paradigmi.

Avere tutti (o solo diversi) di loro sotto la cintura ti renderà un programmatore più versatile, anche se non tornerai mai in profondità in un paradigma specifico.

    
risposta data 08.09.2011 - 14:56
fonte
3

Penso che quello che inizi con non è davvero importante. Ciò che è importante è che tu conosci entrambi e che fallisci con entrambi.

Perché fallirai. Impara da esso.

Tutti gli xOP sono qui per risolvere i problemi che i develloper incontrano durante la codifica o la manutenzione del software. Più grande è il software, più è importante. Puoi imparare OOP o POP, ma alla fine non capirai a cosa serve, a meno che tu non abbia seguito queste metodologie.

POP, OOP e altri non sono solo tecniche di codifica. Questo è un modo per pensare al tuo codice. Un nuovo modo di pensare si sviluppa per risolvere i problemi che ha avuto devellopper con il modo precedente di pensare a quello che fanno.

Acquisire questo richiede tempo, molto più che imparare semplici tecniche.

Ad ogni modo, ti consiglierò di iniziare con POP. Perché alla fine, non puoi fare qualcosa senza di esso. Se fai OOP, avrai clases, metodi, ma con i metodi, troverai una vecchia programmazione procedurale.

POP e OOP non pensano che dovrebbe essere pensato a livello di istruzione. A questo punto, stai proceduralmente, anche se fai OOP, fucntionnal o whatverer. Ma facendo solo POP, incontrerai problemi quando il tuo software cresce. OOP, functionnals e altri modi di pensare il tuo software nel suo insieme ti aiuteranno a gestire la complessità dell'incrasing del codice.

Si noti che questo può essere ottenuto in puro procedural, ma è piuttosto difficile, e non è largamente utilizzato nell'industria.

    
risposta data 08.09.2011 - 14:05
fonte
3

Penso che prima di iniziare a programmare oop dovresti avere una conoscenza di base della programmazione come prima. È importante per un programmatore sapere perché sta usando oop e penso che il modo più veloce per capirlo sia iniziare senza, iniziare con le basi della manipolazione della memoria e della matematica.

    
risposta data 08.09.2011 - 14:05
fonte
1

Suggerisco un ambiente semplice e non ostruttivo come Squeak o Ruby con Scarpe .

Non c'è motivo di iniziare a programmare in modo procedurale. Né la codifica più vicina al computer né la ricostruzione della storia della programmazione ti aiuteranno a trovare un buon punto di partenza per la programmazione.
Quando impari per la prima volta, come guidare, non lo farai in un motore a vapore, anche se è storicamente corretto e ti aiuterà a vedere realmente su quali principi base i motori sono basati.

Prima impara come farlo, raccogli alcune intuizioni e poi spingi avanti per una comprensione sempre più profonda.

    
risposta data 08.09.2011 - 15:47
fonte
0

Direi di andare a imparare entrambi. Se non sai ancora come programmare, chiudi gli occhi e scegli Python come prima lingua. Ti consente di inserire i concetti procedurali pur rimanendo orientato agli oggetti. Anche l'utilizzo di librerie / tipi standard Python ti darà un'idea di OOP e eccellerai nella scienza e nell'arte della programmazione. Quindi, una volta acquisita la sensazione della lingua stessa, segui i concetti di OO.

Una volta che hai concepts a destra, puoi dare a C ++ o anche a Java un colpo. Ma come principiante assoluto, raccomanderei prima Python.

OOP, programmazione procedurale, ecc. sono solo diversi modi per modellare e risolvere i problemi, e dovresti averli entrambi al sicuro.

saluti,

Yati Sagade

PS: la seconda persona nella risposta sopra si riferisce direttamente alla terza persona nella tua domanda:)

    
risposta data 08.09.2011 - 14:04
fonte
0

Vorrei raccomandare OOP prima, ecco perché:

Prima lingua

Vuoi iniziare con OOP. La ragione è che questo è principalmente ciò che viene usato nella parola reale, e tu è sempre più facile imparare un concetto come quello di prima lingua, invece di un secondo. Sento sempre persone che dicono di non capire il concetto di OOP, queste tesi sono in genere programmatori POP che stanno passando a OOP. La mia prima lingua era Java, che è un linguaggio di programmazione OOP, e non ho mai avuto problemi a capire il concetto, perché non sapevo nient'altro.

OOP può fare tutto ciò che POP può fare

L'altra cosa è che puoi sempre usare una lingua OOP come POP se vuoi. per esempio, in java, non devi usare più di una classe se non vuoi, e diventa abbastanza facile capire come sia POP (OOP ha tutte le caratteristiche di un linguaggio POP, ma è più dinamico e riutilizzabile, ma se non vuoi, non devi necessariamente sfruttare queste caratteristiche) lo stesso dovrebbe applicarsi con qualcosa come C ++ vs C

    
risposta data 08.09.2011 - 14:41
fonte
0

Ci sono molti modi per Roma, ma un approccio che mi sembra logico è seguire l'evoluzione dei linguaggi e dei paradigmi di programmazione. Quindi inizi con un linguaggio imperativo da vicino (probabilmente C). Poi hai costruito da lì, scoprendo le astrazioni che le persone hanno inventato per rendere più semplice la gestione del codice complesso. Quindi:

  1. imperativo
  2. Structured
  3. Strutturato, ma evitando lo stato globale
  4. Funzionale o OOP
  5. OOP o funzionale
  6. ad libitum: programmazione logica, orientata all'aspetto, guidata dai dati, metaprogrammazione

E, naturalmente, prendendo il meglio da ciascuno nelle situazioni di programmazione del mondo reale.

Al minimo, penso che un programmatore decente avrebbe dovuto avere un'esposizione ad almeno una lingua in ciascuno dei seguenti gruppi:

  • C
  • C ++, Java, C #, Objective-C, ...
  • Python, PHP, Perl, javascript, ...
  • Lisp, Haskell, ML, Scheme, Clojure, F #, ...
  • brainfuck, malbolge, befunge, intercal, ...

(Sono serio riguardo a quest'ultima categoria: mentre non eseguirai alcuna seria programmazione in nessuno di essi, esaminarli ti darà sicuramente informazioni sul modo in cui i computer e la mente umana funzionano)

    
risposta data 08.09.2011 - 15:36
fonte
0

Questa domanda è un po 'come chiedere agli uomini se pensano che essere circoncisi sia meglio di non essere circonciso - sembra esserci una notevole correlazione tra se sono circonciso e se pensano o meno che sia meglio. Certo, una volta che sei stato circonciso è difficile tornare indietro. ; -)

Come qualcuno che ha imparato la programmazione procedurale per la prima volta, io (e alcuni dei miei colleghi) inizialmente all'inizio ho lottato con l'OOP. Avendo parlato con persone la cui prima esperienza con la programmazione è stata OOP, sembra che abbiano trovato un modo molto più naturale di lavorare. Ciò potrebbe essere dovuto al fatto che non stavano cercando di adattarlo al loro approccio procedurale preesistente, cercando di imporlo, se lo vorrai. O potrebbe anche essere che erano più intelligenti di me e dei miei amici (molto probabilmente).

    
risposta data 08.09.2011 - 16:13
fonte

Leggi altre domande sui tag