È considerato pigro se uso un pacchetto di algebra lineare per C ++?

11

Per prima cosa, lasciatemi fare un po 'di background prima di esprimere effettivamente la domanda. Studio fisica e tutte le mie lezioni di programmazione sono state in linguaggi di programmazione semplici come MATLAB. Con facilità intendo che il linguaggio fa molto del pensiero per te ... Per i prossimi anni prenderò corsi di informatica e sto pensando di perseguire una carriera nella programmazione.

Considerando che molti corsi universitari sono in C ++, sarà considerato pigro un pacchetto di algebra lineare (Armadillo) con sintassi simile a MATLAB?

Sto codificando un algoritmo genetico in questo momento, e mentre è andato veloce in MATLAB sta prendendo molto tempo in C ++ senza l'aiuto di questi pacchetti.

Come funziona nella vita reale? Quali pacchetti puoi usare?

Ad esempio, non vorrei costruire la conoscenza del C ++ con armadillo e non avere una profonda conoscenza di altri pacchetti più usati come "vector.h" "algoritmo" "elenco" ecc.

    
posta DLV 18.09.2016 - 20:49
fonte

2 risposte

21

Il commento di Richard è già la maggior parte della risposta. Ogni volta che stai programmando per qualcosa di diverso da un esercizio di classe, ti consigliamo di riutilizzare il maggior numero possibile di codice esistente, con solo poche altre considerazioni da bilanciare.

I vantaggi del riutilizzo del codice sono:

  • Lavori più velocemente, perché alcuni lavori sono già stati eseguiti.
  • Il codice esistente ha buone possibilità di essere migliore di qualsiasi cosa tu voglia scrivere da zero, perché probabilmente è stato più lungo, è stato testato meglio e ottimizzato meglio.
  • Spesso, il codice esistente si trova in un dominio che non ti è familiare. Ad esempio, stai facendo simulazioni di fisica, ma questo non significa che tu sappia molto su come rendere efficiente l'algebra lineare da calcolare. Usare il codice scritto da altri significa che puoi appoggiarti alla loro esperienza.

Ci sono solo alcune cose da considerare:

  • Licensing. L'autore del codice che si desidera riutilizzare detiene il copyright e non è possibile utilizzare il codice senza la sua autorizzazione. Le librerie verranno fornite con una licenza che ti dice cosa puoi fare con loro, e se vuoi usare la libreria, devi rispettare la licenza. Armadillo è sotto la Mozilla Public License 2.0, il che significa che puoi usarlo liberamente.
  • Integrazione. Se il tuo progetto è più grande, potrebbe essere abbastanza complesso integrare librerie di terze parti. A seconda della quantità di utilizzo che si ottiene dalla libreria, potrebbe non valerne la pena.
  • Distribuzione. Se una libreria è disponibile solo come DLL o ha bisogno di una registrazione con il sistema, ma il tuo metodo di distribuzione deve consistere in "copia questo eseguibile da qualche parte", potresti non essere in grado di utilizzare la libreria.

Come dice il proverbio, in un programmatore, la pigrizia è una virtù.

    
risposta data 18.09.2016 - 21:54
fonte
1

Che cosa intendi per "permesso"? Credo che potrei aggiungere qualcosa qui che potrebbe aiutare a chiarire un equivoco di alcuni studenti principianti: ti viene chiesto di scrivere il tuo codice e gli algoritmi ecc. Ecc. Nell'università, perché stai imparando un corso e vuoi consolidare cosa hai imparato nelle classi scrivendo il codice tu stesso. Tale codifica è un aiuto al tuo processo di apprendimento . Ad esempio, dopo aver appreso una particolare struttura / algoritmo di dati, scrivi il tuo codice per vedere come funziona e approfondire la tua comprensione. Questo ha senso.

Quando stai realizzando un progetto di programmazione reale, non stai scrivendo codice come aiuto per l'apprendimento di alcuni concetti / conoscenze; stai cercando di produrre un prodotto di ingegneria. L'ingegneria non riguarda davvero l'invenzione, ma si basa sulle fondamenta già predisposte dagli altri, per rispondere a una particolare esigenza pratica. C'è un detto che la programmazione è l'80% che legge / riutilizza le librerie / codici degli altri e il 20% scrive il proprio. Potrebbe essere un po 'esagerato ma ottieni lo spirito.

Nel tuo caso, se stai facendo un progetto di programmazione per un corso e ti chiede esplicitamente di codificare il tuo algoritmo, non vorrai usare le librerie esterne. Se stai realizzando il tuo progetto di ingegneria, usa tutte le librerie possibili prima di provare a crearne uno tuo.

Rendi chiara questa distinzione e capirai cosa stai facendo.

    
risposta data 19.09.2016 - 20:00
fonte

Leggi altre domande sui tag