Think about Loose Coupling | |
PerlMonks |
Polly wants some Numerical Computationby TomDLux (Vicar) |
on Mar 04, 2011 at 16:00 UTC ( [id://891478]=perlmeditation: print w/replies, xml ) | Need Help?? |
I came across a website called Software Carpentry which sets out to teach scientists to write good software. One of training sections at Software Carpentry discusses using numpy to numerical calculations and matrix operations --- the presumed alternative being hand-rolled code of questionable efficiency and accuracy, or ugly Fortran. Being a fully-robed vicar, I wished it was Perl & PDL, rather than Python, but I am pleased to see a sibling serve to improve science. It did remind me that one of the design goals of Parrot was to allow libraries to cross over implementation, so a single library could complement a program written in Perl, Python or Ruby. Mind you, the current bloom ( in an algae sense ) of Mojolicious, Dancer, Catalyst, etc. makes me think the presence of already function modules will not prevent the development of more modules to do the same thing. The numerical tutorials also made me wonder about the idea of math courses based on high-level software such as PDL or numpy. After all, computer programming courses do not begin with a detailed explanation of the interactions of emitter, base and collector in a transistor, or drain, source, gate in cmos components, or even with register, ALU, memory transfer. The computer is taken for granted, other than firing up the interpreter of choice. The underlying operations would still be relevant, to understand what something is. But it would be viewed as something the computer does, rather than something the student does over and over until it becomes ingrained. People interested in advanced math would have greater exposure to the detail, but for most people, engineers, numerical programers, etc, it's the result rather than process that matters. I speak as someone with a minor in Math, who perpetually made addition and multiplication errors in matrix operations. One significant benefit would be the ability to process much more complex, much more realistic problems. Any problem that requires human computation needs to be kept small, if any significant portion of the class is to pass the course. By quickly progressing through hand operations to the appropriate selection of different computerized methods, students would be able to handle realistic problems, and thus gain an appreciation for the relevance to real life. Of course, there would need to be some discussion of cumputational limits ... but it would help the general public to have some understanding of how calculations are performed, to go with the why. As Occam said: Entia non sunt multiplicanda praeter necessitatem.
Back to
Meditations
|
|