2010-07-23 16 views
8

No importa qué tan competente sea en programación C o Java, debería considerar agregar programación de subprocesos múltiples a su conjunto de habilidades.¿Cómo se puede aprender la programación paralela de subprocesos múltiples?

Esto NO es algo que deba tratar de aprender por su cuenta. Es MUCHO más difícil de aprender que la programación secuencial. Si usted es un Gerente Técnico, DEBERÍA invertir en volver a capacitar a su personal clave en la programación de subprocesos múltiples. También puede supervisar las actividades de investigación en los lenguajes de programación simultáneos (como los enumerados anteriormente). Puede estar seguro de que sus competidores lo harán.

Esta es una cita de this article. Me imagino que la mayoría de nosotros aquí somos muy hábiles para enseñarnos diferentes idiomas, estructuras de datos, algoritmos, etc., y reconozco el cambio mental que debe ocurrir para hacer una programación paralela correcta.

Rechazo la idea de que uno no puede aprender la programación paralela "a la derecha" por su cuenta. Entonces, ¿cuál es la forma más responsable de enseñar programación paralela? ¿Qué libros y otros recursos se recomiendan?

Editar: Estos son algunos detalles más. En la mayoría de los casos, los aplicaría a la informática científica, pero buscaba material/asesoramiento general, independiente del idioma. También estoy buscando una dosis heathy de teoría práctica. Imagine que tiene un excelente desarrollador que adora las matemáticas y la informática, pero nunca tomó un curso sobre programación paralela. Ahora imagine que tiene un plazo para un problema (digamos 1 año), y debe darle los materiales para determinar si la paralelización sería útil y cómo implementarla correctamente. ¿Qué recursos le darías? Así es como yo (y espero que otros desarrolladores) estén interesados ​​en aprender paralelización/multi-threading.

Respuesta

5

Si dos aguas arriba en mi lugar de trabajo y esa pregunta me tiro un par de libros a usted:

Introduction to Parallel Computing y Parallel Scientific Computing

Su respuesta bien puede ser 'eso no es lo que yo quiero aprender acerca de !' así que regrese y sea un poco más específico en su pregunta y podremos ser un poco más específicos en nuestras respuestas.

Pero la forma más "responsable" de enseñarte estas cosas es la misma que la forma más responsable de enseñarte cualquier cosa de programación: obtener un problema, obtener una bolsa de herramientas, obtener una fecha límite y obtener grietas.

+0

¿Has leído esos libros tú mismo? ¿Has leído reseñas de estos libros, especialmente del segundo? ¡Es importante tener una base sólida para la recomendación de libros 100USD! – mloskot

+0

Sí, he leído los libros. También he trabajado en algunos de los problemas que plantean, he reflexionado sobre lo que dicen y sobre mis propias experiencias, comparé y contrastamos lo que dicen con otras fuentes de información y todo ese tipo de cosas. Y si trabajó aquí, proporcionamos copias de los libros para su estudio, y USD100 son botones en comparación con enviarlo a un curso para aprender lo mismo. PERO, escribí esta respuesta hace 2 años, y no pretendo que recomiende los mismos dos libros. –

+0

Simplemente le pregunto si lo recomienda según su propia experiencia, ya que no lo ha especificado en la respuesta. No estoy cuestionando nada. – mloskot

0

Para la tecnología de Microsoft, hay una gran cantidad de información en el portal de cómputo paralelo de MSDN here. Puede comenzar con los enlaces de Introducción.

0

Ese artículo es básicamente un anuncio de servicios de capacitación. Debe tratar la opinión de un vendedor sobre el valor de sus propios productos con cierto grado de circunspección.

No tengo idea de cómo aprendiste todo lo demás que ya sabes sobre computadoras, pero si eso funcionara para ti, me quedaría con el mismo enfoque para lo siguiente que quieras aprender.

No puedo recomendar ningún idioma/plataforma independiente de libros - sospecho que serían muy académicos de todos modos. Si está realmente en .NET, entonces Jeff Richter escribe muchas cosas buenas acerca de cómo enhebrar, y creo que la 3ª edición de su libro C#/CLR (las ediciones anteriores fueron excelentes) tiene mucho que ver con la programación paralela.

+0

Creo que aprender una programación paralela "a partir de ejemplos", comenzando con un lenguaje/OS/lib/API específico, es una mala manera. Esto no quiere decir que no puede funcionar, pero la comprensión de la teoría del problema es imprescindible. De lo contrario, es difícil prepararse para problemas de modelos de memoria débiles o comprender por qué los algoritmos de bloqueo son importantes o qué es inversión de prioridad. –

+0

Sospecho que es principalmente una preferencia personal. Personalmente, no creo que ninguno de esos conceptos sea complejo; de hecho, el problema con la programación paralela es que los problemas individuales son triviales de describir, por lo que la enorme falta de información que a menudo se produce cuando se ejecutan las cosas en paralelo es tal sorpresa para el recién llegado. Pero sí leí Dijkstra hace mucho tiempo, así que quizás ya estoy en tu campamento sin saberlo. –

0

si lee todo lo que Google encuentra para las cosas a continuación, tendrá un buen comienzo. Suponiendo aspectos de TI en general, etc. Estos son independientes del idioma o sistema operativo específico:

algoritmo atómicas y puesta a prueba de sección cita barreras de memoria críticos algoritmos sin bloqueo de Peterson

La base matemática de esta es probablemente la red de Petri.

Leer Dijkstra.

+1

Hmmm ... ¿Dijkstra? En sus "Notas sobre la Programación Estructurada", incluso enfatiza explícitamente que se limitará a los programas escritos para una máquina secuencial. Y esta restricción está en todas partes en la mayoría de los libros de esa edad. Dijkstra, Wirth, etc. ¿Extrañé algo? – Wildcat

+0

no, no lo hiciste. Eso fue solo un error de mi parte, no parece haber escrito nada sobre el tema –

Cuestiones relacionadas