Je prends actuellement une classe de mathématiques au collège appelé "Computing scientifique" et le professeur nous a dit que c est la langue la plus courante utilisée pour, bien, informatique scientifique et je me demandant simplement de la précision de ce professeur? < / p>
10 Réponses :
D'après ce que j'ai entendu, Fortran est très courant à des fins scientifiques, mais C est assez général que pour certains, c'est une bonne solution pour la plupart des types de programmation. P>
Dans mon entreprise (Physique des particules) Nous sommes à peu éloignés de Fortran 77 directement à C ++ et à Python. Ceux d'entre nous qui CARE EM> sur la programmation Tous connaissent C, mais il est écrit que pour les applications de niche (cartes DAQ intégrées, conducteurs à usage spécial, ...). P>
Mais l'apprentissage C vous donnera une base ferme pour la programmation et il est rarement rentable de discuter avec des professeurs. P>
"Et c'est rarement rentable de discuter avec des professeurs" ... lol
+1 J'aurais écrit quelque chose de similaire (provenant d'un physicien de particules dans la formation ;-).
Je ne pense pas que la réponse de votre professeur vous convient bien même si c'est correct. P>
Dans mon expérience en tant que consultant pour l'informatique scientifique et les systèmes de données C est certainement utilisé beaucoup, mais les soient préférentiels et C ++. Python est de loin le langage de script le plus couramment utilisé. P>
Je pense que cela va changer. Le gros problème est maintenant informatique parallèle et c'est douloureux (MPI Quelqu'un?) Dans les langues traditionnelles que j'ai mentionnées. Ma spéculation est que beaucoup de parallélisation (et devraient) être déplacées vers des machines virtuelles: Java ou .NET; C'est-à-dire que je pense que la parallélisation devrait être le travail du JIT. Si cela sera activé avec, disons, forteresse , ou l'un des Les langues traditionnelles, je ne sais pas. Intel appuie Outils parallèles pour C / C ++, mais Je me demande si quelque chose comme la terre cuite pourrait mieux mieux à long terme (je n'ai entendu parler de personne dans la communauté scientifique qui l'a essayé --- Big Finance a, mais ils ne sont pas si ouverts). P>
Si la question est que devriez-vous apprendre à obtenir un emploi dans l'informatique scientifique, la première chose que je dirais, c'est que vous êtes plus susceptible d'être embauché pour vos compétences scientifiques que vos compétences de programmation (qui explique partiellement la désolé état de beaucoup de code scientifique, pour plus de choses sur cette vue . sujet ). Si vous sont EM> vont être embauchés pour vos compétences en programmation (probablement HPC), considérez-vous qu'à l'avis de ce professeur, ceux-ci peuvent être obsolètes pour les nouveaux projets dans l'avenir non si éloigné. Cela ne ferait pas mal de connaître un python, y compris Numpy . P>
C'est une notion intéressante. Pas le cas dans mon entreprise, tout à l'heure actuelle - une grande partie de notre gros crunching est l'IO Bound ou presque (beaucoup de tables de données et de résultats d'écriture à plusieurs étapes) - mais très intéressant. À l'heure actuelle, nous parallélisez sur une base de fichier en entrée et nous exécutons des clusters couplés de manière lâche. Ma boule de cristal est nuageuse, donc je ne peux pas dire quand cela pourrait changer.
Beaucoup de "calcul scientifique" est traité dans Mathematica, Matlab et d'autres outils similaires. p>
Bien ... sous le capot, Matlab est écrit en C ou C ++, je pense, mais de nombreuses parties de Mathematica sont écrites en mathématica même. Assurez-vous, pour des raisons historiques, ainsi que des caractéristiques intrinsèques de C, de nombreuses bibliothèques de logiciels informatiques scientifiques et de haute technologie et telles sont écrites en C / C ++. p>
Je soupçonne C / C ++ continuera à profiter d'un avantage favorable pour de nombreuses applications en temps réel et haute performance, peut-être pas tant pour la calcul brute elle-même (qui ne peut être exprimée dans des langues de niveau supérieur), mais pour l'optimisation locale des boucles serrées et pour interfacer avec divers composants, soyez-ils des pièces physiques d'équipements ou d'éléments logiciels tels que par exemple des cadres informatiques parallèles. P>
AS DMCKEE a souligné, l'étude de C fournit une bonne base de programmation à une programmation majeure, au moins une programmation procédurale. Il dispose également d'applications pratiques, de sorte que l'opinion de votre professeur a un soutien fort à ce moment-là. Mais faire! Continuez à contester, respectueusement, la sagesse reçue de vos professeurs et aînés, comprendre que parfois comme de bons maîtres zen, ils vous mettent sur un chemin, pas autant pour la destination, mais pour le voyage / processus. P>
Bien toute l'algèbre linéaire Heavy-levage de Matlab est déléguée à lapack, qui est construite sur Fortran. Donc, en utilisant MATLAB, vous utilisez implicitement un code compilé de Fortran pour la plupart des opérations de consommation de temps.
@Timlin FWIW, les routines FFT de Matlab sont générées par code source OCAML, par exemple.
C est largement utilisé dans la programmation. La plupart des programmeurs américains codant jamais dans C surtout quand nous sommes au collège. C'est juste votre préférence de votre professeur, je suppose: -) p>
Pour la bioinformatique et la biologie informatique, C est très populaire. P>
C est vraiment utilisé pour beaucoup de calcul scientifique? P> blockQuote>
L'informatique scientifique englobe de nombreuses choses différentes et, par conséquent, de nombreuses langues de programmation sont utilisées pour l'informatique scientifique. P>
Traditionnellement, l'informatique scientifique signifiait que l'informatique de haute performance était limitée à la plupart de l'algèbre linéaire et à certaines méthodes spectrales (par exemple FFTS) et était principalement faite en Fortran. Depuis lors, l'étendue de l'informatique scientifique s'est énormément étendue à de nombreuses personnes compte tenu de l'informatique technique (par exemple, des données de massing, du tracé graphique, du prototypage) relevant de la même rubrique et d'autres personnes qui ramassent de nouvelles formes de calcul de haute performance telles que des calculs symboliques. < / p>
Des langues comme Python, R, Mathematica et Matlab sont couramment utilisées pour l'informatique technique. Les langues comme C, C ++ et FORTRAN sont toujours utilisées pour le nombre de chiffres. Des langues comme OCAML sont utilisées pour un calcul symbolique à grande échelle. P>
De mon expérience travaillant dans différents laboratoires et instituts de recherche, je dirais que l'apprentissage d'une langue d'ordinateur ne vous donne une base et une introduction à la programmation. C ou Java seraient une langue favorable à ramasser comme introduction. Votre professeur est donc correct à certaines étendues. P>
Être capable d'appliquer vos connaissances en 1 langue à une autre langue est la clé du succès de l'environnement de travail de calcul / développement. Lorsque vous déménagez à travers différentes sociétés / Institutes / Lab Group, vous constaterez que chacun d'entre eux disposerait de leurs propres préférences en langage / logiciel. Être capable d'apprendre de nouvelles choses rapidement est plus important que d'essayer de mémoriser la syntaxe d'une langue particulière. p>
Bien sûr, si vous choisissez une langue de votre choix pour un projet, choisissez 1 qui possède les bibliothèques dont vous avez besoin. p>
En tant que logiciel de construction de programmeur professionnel pour scientifiques et ingénieurs, je peux dire que presque toutes nos méthodologies numériques sont écrites dans C. Donc, dans notre cas, il est certainement vrai. Nous avons des poches de C ++ et Fortran. En termes de performance, il est difficile de battre bien codé C et un bon compilateur. Très, très occasionnellement, nous pourrions plonger dans l'assemblage. p>
Mais le monde a beaucoup changé. Python est une langue merveilleuse - la plus belle langue imho et peut appeler des bibliothèques indigènes. Ensuite, il y a à nouveau une langue source interprétée, mais avec une bibliothèque massive de méthodes numériques entièrement compilées C ou C ++. Ajoutez ensuite toutes les nouvelles méthodes accélérées matérielles telles que OpenCL et les nombreuses liaisons ... C ou Fortran n'est plus la seule réponse. Mais pour le numéro de CPU traditionnel, Crunching C et ASM est le meilleur de la classe. P>
Oui, ANSI C accompagné de MPI. P>
Parfois, les gens veulent utiliser "l'objectif c", ce qui signifie qu'ils mettent des fonctions dans des méthodes de grande classe, et chaque examen d'examen de celui-ci sera exécuté sur un noyau séparé. Notez que ce n'est pas C ++, mais "C avec des objets". Aucune des fonctionnalités C ++ n'est utilisée à l'exception du modèle de méthode-objet. Cela vient d'envelopper le même ancien C dans "modèle d'objet rationnel", permet d'utiliser des couches intermédiaires et ainsi de suite. P>
bons exemples de ci-dessus: lammps. p>
Charm ++ est un autre bon moyen d'obtenir "bon vieux C de manière moderne". P>
sur une autre colline de langues scientifiques sont Lisp, Haskell et d'autres groupes de Meta-langang. C'est autre, «Soft», le monde de la programmation scientifique, où le temps n'est pas un problème, mais l'existence de la réponse. P>
Stackoverflow .com / questions / 38239 / ... .
Ce et Questions similaires sont souvent discutées à Science informatique . Pour quiconque trébuche sur ce fil, ça vaut la peine de regarder.