È essenziale imparare gli algoritmi per essere un vero programmatore? [chiuso]


21

Sono un programmatore di PHP e fino ad ora non ho avuto bisogno di imparare algoritmi ...

Ora sto iniziando a imparare Python (un vero linguaggio di programmazione), perché ho bisogno di usare matplotlib. Ha senso iniziare leggendo un libro dell'algoritmo Python e quindi imparare matplotlib e numpy o dovrei saltare a matplotlib e numpy?

I migliori saluti,


2
Se non si impara algoritmi, e capire ciò che è più appropriato per un determinato compito, si finisce con risposte come quelle su questa questione: stackoverflow.com/questions/5498865
kdgregory

1
Probabilmente hai già implementato alcuni algoritmi, senza effettivamente conoscere i loro nomi o la teoria dietro di loro. È difficile credere che chiunque possa fare qualche utile programmazione senza implementare alcuni algoritmi.
tdammers,

2
algoritmo è solo un senso comune di come fare le cose in modo ottimale . Nella programmazione è necessario utilizzare le risorse minime e garantire le prestazioni, quindi lo si utilizza sempre. A proposito, cosa significa Python (un vero linguaggio di programmazione) ??? PHP è buono come qualsiasi altra cosa. È solo che è più un linguaggio di scripting Web e, attenzione, è il migliore nel mondo degli affari per molto tempo.
Pankaj Upadhyay,

Risposte:


35

Assolutamente. Senza conoscere gli algoritmi, in che altro modo capirai come un programma fa quello che fa?

È essenziale comprendere lo sviluppo dell'algoritmo in modo da poter programmare in modo più efficiente e scrivere programmi migliori. All'inizio dovresti almeno conoscere le basi di concetti come il flusso di controllo (forse tramite l'automa dello stato, ma non è sempre necessario) e la notazione Big O e come può influire sulle prestazioni.


Mentre sono d'accordo, quanto si dovrebbe sapere sulla scala di passare un'introduzione agli algoritmi in un college della comunità locale la seconda volta ad essere Donald Knuth?
Giobbe

Buona vecchia notazione Big Ohno ...

1
Concordo con l'importanza di conoscere la complessità dell'algoritmo ("notazione O grande"). Tuttavia, sono fortemente in disaccordo con la risposta "assolutamente" alla "è essenziale imparare gli algoritmi per essere un vero programmatore"; in effetti, imparare bene Python è molto più utile che sapere come ordinare un elenco (dal momento che Python ordina gli elenchi per te) o come Python gestisce i dizionari (di cui il programmatore Python ha mai avuto bisogno per implementare un meccanismo di hash?), ecc. Storicamente, le persone hanno algoritmi appresi perché il loro linguaggio non li ha forniti immediatamente; l'era moderna è diversa.
Eric O Lebigot,

17

La risposta è sì e no. Non è necessario conoscere i dettagli di come funzionano i diversi algoritmi o la teoria che li sta dietro - questo è il lavoro degli informatici - ma è necessario conoscere le basi, come ad esempio quali algoritmi sono disponibili per risolvere un determinato compito e qual è il migliore per una determinata situazione.

Nel tuo caso, puoi semplicemente iniziare a usare le librerie che hai citato: sono state costruite da qualcuno solo per rendere la vita più facile agli altri. Certamente non è necessario conoscere gli algoritmi che hanno contribuito a costruirlo solo per usarlo.


2
+1 per un commento così "moderno". Gli algoritmi di apprendimento e insegnamento dovrebbero essere riservati alle persone che hanno davvero bisogno di implementarli.
Eric O Lebigot,

6

Sì, in modo da capire come applicare un approccio rispetto a un altro. Inoltre, non si desidera "reinventare la ruota" in quanto esistono già molti algoritmi che funzionano già. Se non sai che sono là fuori, perderai tempo a inventare una soluzione potenzialmente più debole e nemmeno capirai perché è più debole.


3

Gli algoritmi per un programmatore sono un martello per un fabbro. Sicuramente puoi cavartela senza e usare le alternative per fare il lavoro, ma se vuoi farlo bene e farlo bene è essenziale.

La cosa buona degli algoritmi è che è indipendente dal linguaggio di programmazione, quindi impara la teoria una volta e puoi implementarla in qualsiasi lingua. Ecco un buon sito Web che ho creato per iniziare a imparare da: www.ambesty.com Usano Java ma viene fornito con un codice di esempio da cui imparare. Offrono algoritmi ADT e di ordinamento semplici a quelli più complessi come gli algoritmi di compressione dei dati. Lettura molto interessante. In bocca al lupo


1

A seconda della tua esperienza con PHP, se sei nella fase in cui puoi adattare i concetti di base della programmazione da una lingua all'altra, fallo . Questo sarebbe il modo più efficiente per passare il tempo.

Leggere quello che devi fare per integrare Matplotlib , NumPy, e Python. E poi se rimani bloccato, continua a immergerti più in profondità. Consiglio questo ordine perché

  • richiede meno tempo
  • si probabilmente non sarà l'applicazione ogni algoritmo si legge su

1

Se stai sviluppando applicazioni aziendali (solo), impara solo le nozioni di base, come elenchi, code, ordinamento, ricerca di stringhe, ecc. In modo da apprendere la terminologia, come le prestazioni vengono influenzate e misurate e così via. Un uso migliore del tuo tempo sarebbe quello di concentrarti su nuove tecnologie, modelli OO, progettazione di database efficaci, app. metodologie di sviluppo e così via!


1

Ok - So che non è esattamente quello che volevi dire, ma sai già (come fare) gli algoritmi. A seconda della tua definizione puoi prendere ogni programma come esempio per un algoritmo.

Quindi non temere. È utile conoscere gli algoritmi di base, è più utile conoscere le strutture di dati di base, ma è ancora meglio conoscere i "modelli" di progettazione. Dopotutto gli algoritmi e le strutture di dati di base saranno implementati nel tuo quadro di scelta, ma i modelli molto probabilmente non ...


0

Impara prima Python, quindi se ne hai voglia puoi studiare algoritmi; Poiché gli algoritmi non sono specifici di Python, sono generali tutte le lingue.


0

Prima di iniziare all'università, credevo di essere un programmatore abbastanza decente e avevo un paio d'anni di esperienza lavorativa. Ma dopo aver appreso degli algoritmi e delle strutture di dati all'università, sento che è necessario sapere! È essenziale per tutto ciò che fai. Anche se potresti non utilizzare questa conoscenza direttamente ogni giorno, sarà comunque in cima alla tua testa e ti renderà un programmatore migliore.

Apprendi molto sulle prestazioni e, sebbene le prestazioni di solito non siano il numero uno, conoscere gli algoritmi ti impedirà di fare cose stupide, con prestazioni davvero pessime. Anche se la performance non è la numero uno, non vi è alcun motivo per non usare quella conoscenza per prendere le giuste decisioni.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.