Domanda

Attualmente sto seguendo un corso di matematica al College chiamato " Scientific Computing " e il professore ci ha detto che C è il linguaggio più comune usato, beh, informatica scientifica e mi chiedo solo quanto sia preciso questo professore?

È stato utile?

Soluzione

Nella mia attività (fisica delle particelle) siamo passati praticamente da fortran 77 a c ++ e python. Quelli di noi che si preoccupano della programmazione sanno tutti c, ma è scritto solo per applicazioni di nicchia (schede DAQ integrate, driver per scopi speciali, ...).

Ma imparare c ti darà una solida base per la programmazione ed è raramente vantaggioso discutere con i professori.

Altri suggerimenti

Non credo che la risposta del tuo professore ti stia servendo bene anche se è corretta.

Nella mia esperienza come consulente per il calcolo scientifico e i sistemi di dati, C è sicuramente molto usato, ma lo sono anche Fortran e C ++. Python è di gran lunga il linguaggio di scripting più comunemente usato.

Penso che questo cambierà. Il grosso problema ora è l'elaborazione parallela e questo è doloroso (chiunque MPI?) Nelle lingue tradizionali che ho citato. La mia ipotesi è che gran parte della parallelizzazione verrà (e dovrebbe) essere spostata su macchine virtuali: Java o .NET; cioè, penso che la parallelizzazione dovrebbe essere il lavoro della SIC. Se ciò sarà abilitato, per esempio, con Fortress o uno dei lingue tradizionali, non lo so. Intel sta spingendo strumenti paralleli per C / C ++, ma Mi chiedo se qualcosa come Terracotta potrebbe migliorare a lungo termine (non ho sentito parlare di nessuno nella comunità scientifica che lo abbia provato, ma le grandi finanze hanno, ma non sono così aperte).

Se la domanda è cosa dovresti imparare a trovare un lavoro nel campo dell'informatica scientifica, la prima cosa che direi è che hai maggiori probabilità di essere assunto per le tue capacità scientifiche rispetto alle tue capacità di programmazione (che spiega parzialmente scusate lo stato di un sacco di codice scientifico, per ulteriori informazioni al riguardo vedere questa SO argomento ). Se stai per essere assunto per le tue capacità di programmazione (probabilmente HPC), allora considera che, secondo l'opinione di questo professore, questi potrebbero essere obsoleti per i nuovi progetti in un futuro non così lontano. Non sarebbe male conoscere un po 'di Python, incluso NumPy .

Da quello che ho sentito Fortran è molto comune per scopi scientifici, ma C è abbastanza generico che per alcuni è una buona soluzione per quasi tutti i tipi di programmazione.

Per la bioinformatica e la biologia computazionale, la C è molto popolare.

Molti "calcoli scientifici" è gestito in Mathematica, Matlab e altri strumenti simili.

Beh ... sotto il cofano, Matlab è scritto in C o C ++, penso, ma molte parti di Mathematica sono scritte in Mathematica stesso. A dire il vero, per ragioni storiche, e anche perché le caratteristiche intrinseche di C, molte librerie di software di calcolo scientifico e hi-tech e simili sono scritte in C / C ++.

Sospetto che C / C ++ continuerà a godere di un vantaggio favorevole per molte applicazioni in tempo reale e ad alte prestazioni, forse non tanto per il raw computing stesso (che non può essere espresso in linguaggi di livello superiore), ma per l'ottimizzazione locale di loop stretti e per l'interfacciamento con vari componenti, siano essi pezzi fisici di equipaggiamento o elementi software come ad esempio framework di calcolo parallelo.

Come ha sottolineato dmckee, lo studio di c fornisce una buona base per la programmazione in generale, almeno la programmazione procedurale. Ha anche applicazioni pratiche, quindi l'opinione del tuo professore ha un forte sostegno in questo momento. Ma, fallo! continua a sfidare, rispettosamente, la saggezza ricevuta dai tuoi professori e anziani, comprendendo che a volte, come i bravi maestri zen, ti mettono su un percorso, non tanto per la destinazione ma per il viaggio / processo.

C è ampiamente usato nella programmazione. La maggior parte di noi programmatori ha mai programmato in C soprattutto quando siamo al college. È solo la tua preferenza professore immagino :-)

  

C è davvero utilizzato per molti studi scientifici?

Il calcolo scientifico comprende molte cose diverse e, di conseguenza, molti linguaggi di programmazione diversi sono usati per il calcolo scientifico.

Tradizionalmente, il calcolo scientifico significava un calcolo ad alte prestazioni ed era limitato nell'ambito all'algebra prevalentemente lineare e ad alcuni metodi spettrali (ad es. FFT) e veniva svolto principalmente in Fortran. Da allora, l'ampiezza dell'informatica scientifica si è ampliata enormemente con molte persone che ora considerano l'informatica tecnica (ad es. Dati di massa, grafici, prototipi) che rientrano nella stessa voce e altre persone che raccolgono nuove forme di elaborazione ad alte prestazioni come i calcoli simbolici.

Lingue come Python, R, Mathematica e MATLAB sono comunemente usate per il calcolo tecnico. Lingue come C, C ++ e Fortran sono ancora utilizzate per lo scricchiolio dei numeri. Lingue come OCaml sono utilizzate per il calcolo simbolico su larga scala.

Come programmatore professionista che costruisce software per scienziati e ingegneri posso dire che quasi tutte le nostre metodologie numeriche sono scritte in C. Quindi nel nostro caso è certamente vero. Abbiamo tasche di C ++ e Fortran. In termini di prestazioni è difficile battere C ben codificato e un buon compilatore. Molto, molto occasionalmente, potremmo immergerci nell'assemblea.

Ma il mondo è cambiato molto. Python è un linguaggio meraviglioso, il linguaggio IMHO più bello e può chiamare librerie native. Poi c'è di nuovo un linguaggio interpretato da R ma con una vasta libreria di metodi numerici tutti compilati in C o C ++. Quindi aggiungi tutti i nuovi metodi con accelerazione hardware come openCL e le numerose associazioni ... C o Fortran non è più l'unica risposta. Ma per il numero di CPU tradizionale lo scricchiolio C e ASM è il migliore della categoria.

Dalla mia esperienza di lavoro in diversi laboratori e istituti di ricerca, direi che imparare un linguaggio informatico ti dà solo una base e un'introduzione alla programmazione. C o Java sarebbero un linguaggio favorevole da prendere come introduzione, quindi il tuo professore ha ragione fino ad un certo punto.

Essere in grado di applicare le tue conoscenze in 1 lingua in un'altra lingua è la chiave del successo nell'ambiente di lavoro computazionale / di sviluppo. Mentre passi attraverso diverse società / istituti / gruppi di laboratorio, scoprirai che ognuno di loro avrebbe le proprie preferenze in lingua / software. Essere in grado di apprendere rapidamente cose nuove è più importante che cercare di memorizzare la sintassi di una determinata lingua.

Naturalmente, se riesci a scegliere una lingua a tua scelta per un progetto, scegli 1 che ha le librerie di cui hai bisogno.

Sì, ANSI C accompagnato da MPI.

A volte le persone vogliono usare "obiettivo C", il che significa che mettono le funzioni in metodi di grande classe, e ogni esempio di esso verrà eseguito su un core separato. Nota che questo non è C ++, ma "C con oggetti". Nessuna delle funzionalità C ++ viene utilizzata ad eccezione del modello metodo-oggetto. Questo sta semplicemente avvolgendo la stessa vecchia C nel "modello di oggetti razionale", permette di usare strati intermedi e così via.

Buoni esempi di cui sopra: LAMMPS.

Charm ++ è un altro buon modo per ottenere "il buon vecchio C in modo moderno".

Su altre colline di linguaggi scientifici ci sono LISP, Haskell e altri gruppi meta-lang. Questo è altro, "morbido". mondo della programmazione scientifica, dove il tempo non è un problema, ma l'esistenza di una risposta.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top