Pregunta

Actualmente estoy tomando una clase de matemáticas en la universidad llamada "Computación científica" y el profesor nos dijo que el C es el lenguaje más común utilizado para, bueno, la computación científica y me pregunto qué tan preciso es este profesor.

¿Fue útil?

Solución

En mi negocio (física de partículas) nos mudamos de fortran 77 directamente a c ++ y python. Aquellos de nosotros a quienes nos importa la programación todos sabemos c, pero solo está escrito para aplicaciones de nicho (placas DAQ integradas, controladores de propósito especial, ...).

Pero aprender c le dará una base sólida para la programación, y rara vez es rentable discutir con los profesores.

Otros consejos

No creo que la respuesta de tu profesor te esté sirviendo bien, incluso si es correcta.

En mi experiencia como consultor para computación científica y sistemas de datos, C ciertamente se usa mucho, pero también Fortran y C ++. Python es, con mucho, el lenguaje de script más utilizado.

Creo que esto va a cambiar. El gran problema ahora es la computación paralela y esto es doloroso (¿alguien con MPI?) En los idiomas tradicionales que he mencionado. Mi especulación es que gran parte de la paralelización (y debería) trasladarse a máquinas virtuales: Java o .NET; es decir, creo que la paralelización debería ser el trabajo del JIT. Si eso se habilitará con, por ejemplo, Fortaleza , o uno de los idiomas tradicionales, no lo sé. Intel está presionando herramientas paralelas para C / C ++, pero Me pregunto si algo como la terracota podría mejorar a largo plazo (no he oído hablar de nadie en la comunidad científica que lo haya intentado --- las grandes finanzas sí, pero no son tan abiertas).

Si la pregunta es qué debería aprender a conseguir un trabajo en informática científica, entonces lo primero que diría es que es más probable que lo contraten por sus habilidades científicas que por sus habilidades de programación (lo que explica parcialmente lamentamos el estado de una gran cantidad de código científico, para obtener más información sobre esto, consulte this SO tema ). Si va a ser contratado por sus habilidades de programación (probablemente HPC), considere que, en opinión de este profesor, pueden ser obsoletos para proyectos más nuevos en un futuro no muy lejano. Sin embargo, no estaría de más conocer un poco de Python, incluyendo NumPy .

Por lo que escuché, Fortran es muy común con fines científicos, pero C es lo suficientemente general como para que sea una buena solución para la mayoría de los tipos de programación.

Para bioinformática y biología computacional, C es muy popular.

Una gran cantidad de "computación científica" se maneja en Mathematica, Matlab y otras herramientas similares.

Bueno ... bajo el capó, Matlab está escrito en C o C ++, creo, pero muchas partes de Mathematica están escritas en Mathematica. Sin duda, por razones históricas, y también debido a las características intrínsecas de C, muchas bibliotecas de software informático científico y de alta tecnología están escritas en C / C ++.

Sospecho que C / C ++ continuará disfrutando de una ventaja favorable para muchas aplicaciones en tiempo real y de alto rendimiento, tal vez no tanto para la informática en sí misma (que no se puede expresar en lenguajes de nivel superior), sino para la optimización local de bucles estrechos y para interactuar con varios componentes, ya sean piezas físicas de equipo o elementos de software como, por ejemplo, marcos de computación paralelos.

Como señaló dmckee, el estudio de c proporciona una buena base para la programación en general, al menos la programación de procedimientos. También tiene aplicaciones prácticas, por lo que la opinión de su profesor tiene un fuerte respaldo en este momento. Pero, hazlo! continúe desafiando, respetuosamente, la sabiduría recibida de sus profesores y ancianos, entendiendo que a veces, como buenos maestros zen, lo ponen en el camino, no tanto para el destino sino para el viaje / proceso.

C es ampliamente utilizado en la programación. La mayoría de nosotros programadores alguna vez codificamos en C, especialmente cuando estamos en la universidad. Es solo tu preferencia de profesor, supongo :-)

  

¿C realmente se usa para mucha informática científica?

La informática científica abarca muchas cosas diferentes y, en consecuencia, se utilizan muchos lenguajes de programación diferentes para la informática científica.

Tradicionalmente, la computación científica significaba computación de alto rendimiento y tenía un alcance limitado a álgebra principalmente lineal y algunos métodos espectrales (por ejemplo, FFT) y se realizaba principalmente en Fortran. Desde entonces, la amplitud de la computación científica se ha expandido enormemente con muchas personas que ahora consideran que la computación técnica (por ejemplo, la acumulación de datos, el trazado de gráficos, la creación de prototipos) cae bajo el mismo título y que otras personas adquieren nuevas formas de computación de alto rendimiento, como los cálculos simbólicos. / p>

Los lenguajes como Python, R, Mathematica y MATLAB se usan comúnmente para la informática técnica. Los lenguajes como C, C ++ y Fortran todavía se usan para el procesamiento de números. Lenguajes como OCaml se utilizan para el cálculo simbólico a gran escala.

Como programador profesional que desarrolla software para científicos e ingenieros, puedo decir que casi todas nuestras metodologías numéricas están escritas en C. Entonces, en nuestro caso, ciertamente es cierto. Tenemos bolsillos de C ++ y Fortran. En términos de rendimiento, es difícil superar C bien codificado y un buen compilador. Muy, muy ocasionalmente podríamos sumergirnos en la asamblea.

Pero el mundo ha cambiado mucho. Python es un lenguaje maravilloso, el mejor lenguaje en mi humilde opinión y puede llamar a las bibliotecas nativas. Luego hay R nuevamente un lenguaje fuente interpretado pero con una biblioteca masiva de métodos numéricos todos compilados C o C ++. Luego agregue todos los nuevos métodos acelerados de hardware, como openCL y los muchos enlaces ... C o Fortran ya no es la única respuesta. Pero para el procesamiento tradicional de números de CPU, C y ASM son los mejores de su clase.

Desde mi experiencia trabajando en diferentes laboratorios e institutos de investigación, diría que aprender un lenguaje de computadora solo le da una base y una introducción a la programación. C o Java sería un lenguaje favorable para elegir como introducción, por lo que su profesor es correcto hasta cierto punto.

Ser capaz de aplicar su conocimiento en 1 idioma a otro idioma es la clave del éxito en el entorno de trabajo computacional / de desarrollo. A medida que avanza a través de diferentes compañías / institutos / grupos de laboratorio, encontrará que cada uno de ellos tendrá sus propias preferencias en idioma / software. Poder aprender cosas nuevas rápidamente es más importante que tratar de memorizar la sintaxis de un idioma en particular.

Por supuesto, si puede elegir un idioma de su elección para un proyecto, elija 1 que tenga las bibliotecas que necesita.

Sí, ANSI C acompañado de MPI.

A veces las personas quieren usar el "objetivo C", lo que significa que ponen funciones en métodos de gran clase, y cada ejemplo se ejecutará en un núcleo separado. Tenga en cuenta que esto no es C ++, sino "C con objetos". No se utiliza ninguna de las características de C ++, excepto el modelo de objeto y método. Esto es simplemente envolver la misma C anterior en el "modelo de objeto racional", permite usar capas intermedias, etc.

Buenos ejemplos de lo anterior: LÁMPARAS.

Charm ++ es otra buena forma de obtener " buena C antigua de manera moderna " ;.

En otra colina de lenguajes científicos están LISP, Haskell y otros grupos meta-lang. Este es otro, "suave" mundo de la programación científica, donde el tiempo no es problema, sino la existencia de respuesta.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top