(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.
En el lado de la biblioteca, echa un vistazo a Armadillo . Casi le proporciona la extensión completa de la sintaxis de manipulación de matrices de MATLAB y utiliza LAPACK y BLAS (ATLAS) bajo el capó.
En lo que respecta a cosas numéricas como Numpy, deberías echar un vistazo a ambos:
Blitz ++ http://www.oonumerics.org/blitz/
y
Jama / TNT http://math.nist.gov/tnt/download.html
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:
Y, echa un vistazo a la biblioteca de Boost:
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.