Текст написан в марте 2008 года для группы http://groups.google.com/group/matrixprogramming_ru
Совсем недавно вышла крайне интересная книга
The Science of Programming Matrix Computations
http://z.cs.utexas.edu/wiki/LA.wiki/books/TSoPMC/
Книга описывает метод программирования, используемый в FLAME (Formal Linear Algebra Method Environment)
http://www.cs.utexas.edu/~flame/
Пара комментариев идет ниже.
Первое, что приходит в голову при знакомстве с книгой, это «Безумству храбрых поем мы песню». BLAS и оптимизированный BLAS уже являются стандартом в использовании численных методов и разработка альтернативы тому, что уже широко используется на практике, является достаточно неблагодарным делом. Практики, как я например, просто используют то, что доступно в наличии. У разработчиков, как правило, просто нет времени в принципе. В общем, поезд мчится полным ходом и убедить находящихся там людей, что вот, можно это и лучше сделать, крайне непростая задача.
Пример из NA Digest. Там проф. Robert van de Geijn (автор книги) высказал свои соображения и получил в ответ от разработчика NASTRAN Louis Komzsik
I believe that the lively FORTRAN vs. MATLAB discussion exposed another disconnect between the academia and the industry. I assumed that the ultimate goal of this discussion was the education of industrially employable professionals and not a future generation of educators! With all due respect to the importance of abstraction and the convenience of APIs, the comment of «the indices rearing their ugly heads» by an esteemed professor from a very highly regarded institution has just demonstrated aforementioned disconnect.
Полный текст исходной записки и ответ находится здесь
http://www.cs.utexas.edu/users/flame/FORTRANvsMATLAB
Однако более детальное прочтение книги оставляет очень благоприятное впечатление. В книге описывается новый метод построения алгоритмов, при котором использовании верификации является органической частью разработки. Я помню, когда-то давно я читал Вирта «Алгоритмы+структуры данных=программы » и там в первый раз столкнулся с идеей верификации программ. Сама идея мне крайне понравилось, но как находить инвариант цикла, я так и не понял. На этом практическое использование идеи верификации в моей работе и закончилось. Книга The Science of Programming Matrix Computations показывает шаг за шагом, как идею верификации можно использовать для алгоритмов, связанных с матрицами.
Очень интересной является глава 5 «High Performance Algorithms». Вопрос достижения максимальной производительности уже затрагивался в нашей группе. Глава 5 книги дает хороший ответ на этот вопрос.
В заключение хочу отметить, что как естественное продолжение книги можно рассматривать следующую диссертацию
Paolo Bientinesi, Mechanical Derivation and Systematic Analysis of Correct Linear Algebra Algorithms. Ph.d. Dissertation, Department of Computer Sciences, University of Texas at Austin, August 2006.
http://www.cs.utexas.edu/~pauldj/pubs/thesis.pdf
Дискуссия:
http://groups.google.com/group/matrixprogramming_ru/t/802a5df04ea8c982