Question

Je suis en train de suivre un cours de mathématiques au Collège intitulé "Calcul scientifique". et le professeur nous a dit que C est la langue la plus utilisée pour, eh bien, l’informatique scientifique, et je me demande simplement quelle est la précision de ce professeur?

Était-ce utile?

La solution

Dans mon domaine (physique des particules), nous sommes passés du fortran 77 directement au c ++ et au python. Ceux d’entre nous qui s'intéressent à la programmation connaissent tous c, mais ce n’est écrit que pour des applications de niche (cartes DAQ intégrées, pilotes à usage spécifique, ...).

Mais apprendre c vous donnera une base solide pour la programmation, et il est rarement rentable de se disputer avec des professeurs.

Autres conseils

Je ne pense pas que la réponse de votre professeur vous serve bien même si elle est correcte.

Dans mon expérience de consultant en informatique scientifique et en systèmes de données, C est certes un outil très utilisé, tout comme Fortran et C ++. Python est de loin le langage de script le plus utilisé.

Je pense que cela va changer. Le gros problème est maintenant l’informatique parallèle et c’est douloureux (MPI, tout le monde?) Dans les langues traditionnelles que j’ai mentionnées. Ma spéculation est qu'une grande partie de la parallélisation sera (et devrait) être déplacée vers des machines virtuelles: Java ou .NET; c’est-à-dire que je pense que la mise en parallèle doit être la tâche de l’équipe commune. Si cela sera activé avec, disons, Fortress , ou l'un des deux langues traditionnelles, je ne sais pas. Intel utilise les outils parallèles pour C / C ++, mais Je me demande si quelque chose comme Terracotta pourrait être meilleur à long terme (je n'ai entendu parler de personne de la communauté scientifique qui l'ait essayée - la grande finance l'a fait, mais ils ne sont pas si ouverts).

Si vous voulez savoir comment trouver un emploi en informatique scientifique, la première chose à dire est que vous êtes plus susceptible d’être embauché pour vos compétences scientifiques que pour vos compétences en programmation (ce qui explique en partie la Désolé, il y a beaucoup de code scientifique. Pour plus de détails à ce sujet, voir ce SO sujet ). Si vous êtes sur le point d’être embauché pour vos compétences en programmation (probablement HPC), alors considérez que, de l’avis de ce professeur, celles-ci pourraient devenir obsolètes pour des projets plus récents dans un avenir pas si lointain. Cela ne ferait pas de mal de connaître certains Python, y compris NumPy .

D'après ce que j'ai entendu dire, Fortran est très courant à des fins scientifiques, mais C est assez général pour que ce soit une bonne solution pour la plupart des types de programmation.

Pour la bioinformatique et la biologie informatique, C est très populaire.

De nombreux "calculs scientifiques" est utilisé dans Mathematica, Matlab et d’autres outils similaires.

Eh bien ... sous le capot, Matlab est écrit en C ou C ++, je pense, mais de nombreuses parties de Mathematica sont écrites dans Mathematica lui-même. Certes, pour des raisons historiques et également à cause des caractéristiques intrinsèques de C, de nombreuses bibliothèques de logiciels d’informatique scientifique et de haute technologie, entre autres, sont écrites en C / C ++.

Je soupçonne que C / C ++ continuera de bénéficier d’un avantage concurrentiel pour de nombreuses applications en temps réel et hautes performances, peut-être pas autant pour le traitement brut (qui ne peut pas être exprimé dans des langages de niveau supérieur), mais pour l’optimisation locale de boucles étroites et d’interfaçage avec divers composants, qu’il s’agisse de pièces d’équipement physiques ou d’éléments logiciels tels que, par exemple, des infrastructures informatiques parallèles.

Comme Dmckee l’a fait remarquer, l’étude de c fournit une bonne base pour la programmation dans son ensemble, au moins la programmation procédurale. Il a également des applications pratiques, de sorte que l'opinion de votre professeur jouit d'un fort soutien en ce moment. Mais fais! Continuez à contester respectueusement la sagesse de vos professeurs et de vos anciens, en comprenant que, parfois, comme les bons maîtres zen, ils vous mettent sur la voie qui mène non pas à la destination mais au voyage / processus.

C est largement utilisé en programmation. La plupart d’entre nous, programmeurs, codent jamais en C, surtout au collège. Je suppose que c'est juste votre préférence de professeur: -)

  

C est-il vraiment utilisé pour beaucoup de calcul scientifique?

Le calcul scientifique englobe de nombreuses choses différentes et, par conséquent, de nombreux langages de programmation différents sont utilisés pour le calcul scientifique.

Traditionnellement, l’informatique scientifique était synonyme de hautes performances et ne concernait que l’algèbre linéaire et certaines méthodes spectrales (par exemple, les FFT) et était principalement réalisée en Fortran. Depuis lors, l'informatique scientifique a pris une ampleur considérable: de nombreuses personnes se tournent maintenant vers l'informatique technique (regroupement de données, représentation graphique, prototypage, etc.) et choisissent de nouvelles formes d'informatique haute performance, telles que le calcul symbolique. / p>

Des langages tels que Python, R, Mathematica et MATLAB sont couramment utilisés pour l’informatique technique. Des langages tels que C, C ++ et Fortran sont toujours utilisés pour le traitement des chiffres. Des langages comme OCaml sont utilisés pour le calcul symbolique à grande échelle.

En tant que programmeur professionnel pour la création de logiciels destinés aux scientifiques et aux ingénieurs, je peux dire que presque toutes nos méthodologies numériques sont écrites en C. C'est donc vrai dans notre cas. Nous avons des poches de C ++ et de Fortran. En termes de performances, il est difficile de battre un C bien codé et un bon compilateur. Très, très occasionnellement, nous pourrions plonger dans l’assemblée.

Mais le monde a beaucoup changé. Python est un langage merveilleux - le plus beau langage à mon humble avis et peut appeler des bibliothèques natives. Ensuite, il existe à nouveau un langage interprété par la source, mais avec une bibliothèque de méthodes numériques toutes compilées en C ou C ++. Ajoutez ensuite toutes les nouvelles méthodes à accélération matérielle telles que openCL et les nombreuses liaisons ... C ou Fortran n'est plus la seule réponse. Mais pour le calcul du nombre de processeurs traditionnel, C et ASM sont les meilleurs de leur catégorie.

D'après mon expérience de travail dans différents laboratoires et instituts de recherche, je dirais que l'apprentissage d'un langage informatique ne vous donne qu'une base et une introduction à la programmation. C ou Java serait un langage favorable à apprendre en introduction, votre professeur est donc correct dans une certaine mesure.

Pouvoir appliquer vos connaissances dans une langue à une autre est la clé du succès dans l’environnement de travail informatique / développement. En vous déplaçant dans différentes sociétés / instituts / groupes de laboratoires, vous constaterez que chacune d’elles aura ses propres préférences en termes de langue / logiciel. Pouvoir apprendre rapidement de nouvelles choses est plus important que d’essayer de mémoriser la syntaxe d’une langue donnée.

Bien sûr, si vous devez choisir la langue de votre choix pour un projet, choisissez-en une qui contient les bibliothèques dont vous avez besoin.

Oui, ANSI C accompagné de MPI.

Parfois, les gens veulent utiliser "l’objectif C", ce qui signifie qu’ils insèrent des fonctions dans des méthodes de grande classe, et chaque exemple de celui-ci fonctionnera sur un noyau séparé. Notez qu'il ne s'agit pas de C ++, mais de "C avec des objets". Aucune des fonctionnalités C ++ n'est utilisée à l'exception du modèle méthode-objet. C’est juste envelopper le même vieux C dans un "modèle objet rationnel", permet d’utiliser des couches intermédiaires, etc.

.

Bons exemples de ce qui précède: LAMMPS.

Charm ++ est un autre bon moyen d’obtenir un "bon vieux C de façon moderne".

Le LISP, le groupe Haskell et d’autres groupes méta-lang sont d’autres langues scientifiques. Ceci est autre, & soft; soft " monde de la programmation scientifique, où le temps n’est pas un problème, mais l’existence d’une réponse.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top