Perché gli algoritmi e le strutture dati sono importanti? [duplicare]

-1

Sembra che molti programmi di scienze informatiche a livello universitario e interviste ai programmatori si concentrino pesantemente su algoritmi e strutture di dati. Sono curioso di sapere perché le università e i datori di lavoro attribuiscono molta importanza agli aspetti teorici dell'informatica piuttosto che a linguaggi e tecnologie specifici, che a mio parere sono molto più utili e importanti.

Non ha più senso cercare programmatori con un set di abilità specifico quando si tratta di assumere una posizione di lavoro aperta? Ad esempio i datori di lavoro dovrebbero richiedere la conoscenza di C ++, Java, ecc. Invece di tutta quella spazzatura teorica. La programmazione è una carriera professionale, dovresti sapere come usare determinati linguaggi e framework e la sintassi e la logica dietro di essi.

Ad esempio, se cerchi Google per "imparare a codificare" vedrai un gruppo di siti Web che ti insegnano come. Non ti insegnano su algoritmi o strutture dati, ma piuttosto sulla sintassi e le caratteristiche di ogni lingua. Allora perché A + DS è così importante?

    
posta Ryan 26.09.2013 - 02:09
fonte

3 risposte

14

Puoi suonare uno strumento musicale, ad esempio una chitarra, con uno standard ragionevole senza studiare tecnica, essere autodidatta, trovare accordi su Internet, suonare qualche canzone.

Se vuoi suonare velocemente, o suonare jazz, o suonare cose sufficientemente difficili con relativa facilità, la tecnica diventa importante. Diventa importante capire cosa stai facendo e come puoi farlo in modo più efficiente e "facilmente".

dove "facilità" di solito significa conservazione del movimento e dello sforzo. La chiave per fare le cose velocemente è fare less più spesso. Queste sono cose che richiedono direzione, pratica e comprensione.

Algoritmi, strutture dati e problem solving sono le tecniche dei programmatori. Puoi imparare a codificare semplicemente studiando la sintassi e il gioco di parole. Ma per essere un vero grande programmatore? devi capire l'arte, la tecnica. Il bel codice è semplice, diretto, proprio come suonare uno strumento con equilibrio e grazia.

Chiunque può scrivere codice, e chiunque può suonare E su una chitarra. Ma per definirti un programmatore queste sono le cose che devi padroneggiare.

    
risposta data 26.09.2013 - 02:30
fonte
0

L'apprendimento degli algoritmi ti consente di prendere decisioni più intelligenti su quale codice scrivere.

Immagina di voler visualizzare un elenco di nomi in ordine alfabetico. Come classifichi la lista? La risposta è un algoritmo. Ora, puoi semplicemente usare l'ordinamento associato a una libreria di strutture dati che stai utilizzando, e potrebbe andare bene. Supponiamo ora di avere 1 milione di nomi e di voler visualizzare i primi 20 dopo averli ordinati. E se fosse 100 milioni? Gli algoritmi definiscono come funziona il tuo programma, più sai più opzioni hai.

L'apprendimento delle strutture dati rende il tuo codice più efficiente.

Torna a quella domanda sui nomi. Come memorizzi 10 nomi in memoria? Che ne dici di 100 milioni? La risposta potrebbe essere diversa a seconda di cosa vuoi fare con i nomi. Se vuoi controllare rapidamente se è presente un nome, puoi usare un array e guardarlo, oppure usare un dizionario / hashmap e cercare il nome, oppure puoi usare un trie e memorizzare una quantità minima di informazioni per trovare i nomi molto velocemente. Il modo in cui tieni i dati determina quanti dati puoi avere e quanto velocemente puoi accedervi.

    
risposta data 26.09.2013 - 08:20
fonte
-1

Molte delle applicazioni che utilizziamo devono essere veloci e reattive. Prendiamo ad esempio Photoshop, app per la creazione 3D, videogiochi, programmi antivirus, ecc. Ecc. Tali app devono essere veloci, quindi i clienti possono essere più produttivi. Ma scrivere con una matematica semplice non sarebbe molto veloce anche nell'eseguire semplici compiti matematici dal codice. La matematica offre un gran numero di algoritmi, un semplice compito matematico può essere scritto in modi diversi, alcuni veloci, altri più lenti.

Prendi ad esempio un generatore principale, prendi i calcoli primitivi in cui dividi ogni numero sotto di esso per vedere se lascia qualsiasi modulo. Scrivilo e avvia il programma. Ora scrivi un programma di test preliminare (algoritmo) Miller-Rabin e osserva la differenza nella velocità. Ci vorrà più di un'ora per fornire due milioni di numeri primi con la prima funzione. Ma con l'algoritmo Miller-Rabin, puoi ottenere questi due milioni di numeri primi in meno di 10 minuti. Entrambe le funzioni stanno facendo esattamente la stessa cosa (al massimo), testano la primalità di un numero, ma la seconda funzione sta finendo il compito 10 volte più velocemente, grazie al buon ritmo.

La scrittura di codice grafico richiede anche algoritmi matematici, algoritmi di algebra veloce, in modo che il programma possa funzionare in modo fluido, veloce, reattivo e così via.

Alcuni degli algoritmi matematici sono veloci e scritti nella tua applicazione risulteranno in un'app migliore e più veloce. Quando uso il software 3D, voglio che sia più veloce come la luce, e non aspettare 3 ~ secondi ogni volta che provo a ruotare quel cubo (poligono).

    
risposta data 26.09.2013 - 06:08
fonte

Leggi altre domande sui tag