c++ scientific-computing

(Re) Comenzando con C++(para computación científica)



scientific-computing (5)

Tengo una gran cantidad de programación en varios idiomas. He estado implementando mis códigos de investigación con MATLAB (durante los últimos meses) y por primera vez realmente noté la diferencia en la velocidad de ejecución de MATLAB v $ C.

Estoy buscando recoger C ++ y empezar a usarlo en mi investigación. Soy consciente de OOP y he programado un poco de Java (relativamente largo) y C ++ (incluso más atrás). Me gustaría profundizar en C ++ ahora y, por lo tanto, necesitar sugerencias para recursos sobre el mismo:

  • ¿Qué cosas de C ++ necesito recoger (STL y.) Para hacer un buen uso de C ++?
  • ¿Qué es un buen tutorial / manual para comenzar?
  • ¿Cuáles son las bibliotecas numéricas / científicas para C ++? GSL? ¿Hay un equivalente (características) de Scipy / Numpy para C ++?

Estaré programando en Linux, así que usaré g ++.

Cualquier puntero a las preguntas anteriores de SO también apreciado.




Este tutorial es absolutamente increíble, pero tal vez no quieras abordarlo inicialmente.

http://www.parashift.com/c++-faq/

Asegúrese de leer sobre la STL (biblioteca de plantillas estándar) y otras cosas, usando sitios como:

http://cplusplus.com/

Y, echa un vistazo a la biblioteca de Boost:

http://www.boost.org/

Para hacer un buen uso de C ++, necesita aprender al menos el STL, ya que solo le ahorrará mucho tiempo, pero como menciones de parashift, C ++ OOP solo está programando con objetos, si no usa enlaces dinámicos.


TRNG es una biblioteca de generación paralela de números aleatorios. Le permite crear múltiples transmisiones independientes y fue diseñado para su uso en clústeres.


Usted querrá familiarizarse con la programación paralela lo más rápido posible. Para pasar el mensaje, me gusta este libro de Karniadakis y Kirby . De los libros sobre OpenMP, para programación de memoria distribuida, este es el mejor.

Si puede obtener acceso a ellos, entonces es bueno tener los Threading Building Blocks de Intel, Maths Kernel Library y Integrated Performance Primitives. Si no, hay muchas alternativas de código abierto, comience a buscar en Netlib .

Oh, casi me olvido de Netlib , que es un deber.