for i in range(1, len(self.u) - 1): x = self.u[i - 1] y = self.uold[i] z = self.uold[i + 1] self.u[i] = (self.up1[i][I](z - x) + self.up2[/I] y + self.up3[i]*(x - y + z)) / self.up4[i] for i in reversed(range(1, len(self.v) - 1)): y = self.vold[i] x = self.vold[i - 1] z = self.v[i + 1] self.v[i] = (self.down1[i] * (z - x) + self.down2[I]y + self.down3[i][/I](z - y + x)) / self.down4[i]
Interesting (and kind of scary). Green or red?are apples better than oranges?
On the other hand, I have seen (many) professional quants who wrote memory issue codes in C++.. use const_cast in order to make things easier for themselves.. forgot to initialize variable in constructor.. no concept of modulization so very long body of function or even worse copy paste code everywhere.. assign auto_ptr which causes the object to be destroyed(luckily we have unique_ptr now in C++ 11...)People tend to compare languages based on many kinds of metrics, e.g. cute features, easy to use, functionality etc.
A possible bad scenario is Python code becoming unmaintainable because those writing the software (for example, applied mathematicians) have had no exposure to design principles of Design Patterns.
C++ v Python? the latter is (much) more difficult to maintain. And there's an associated price tag.
Corollary: discussions on software maintainability tend to fall on deaf ears.
This is quite anecdotal.I minored in CS, didn’t learn any of that stuff. I think those are things you learn on the job.
There are many scenarios. One is that the originator of undocumented and unstructured code has moved on and someone has to maintain it.@Daniel Duffy what can we do as quants to get on the path of righteousness, short of CS studies?
The problems you mention seem like problems because I think you are credible, but I can’t say I understand them.
How much of the theory do we need? Where is the line?
I don’t want to be part of the problem.
LMAO, your comment just made my day... I have seen this everyday at my work.. even worse, there are idiots failing the regression tests but since such model feature is not used in production, they would sneakily remove the test case.There are many scenarios. One is that the originator of undocumented and unstructured code has moved on and someone has to maintain it.
Anonymous but real quote from the trenches...
"The usual suspect: obviously clever applied mathematician, but otherwise completely untrained as software developer “writes a script to do thing X”. As soon as this newly-born wonder has passed some tests (meaning that the program does not crash anymore) and taken into production, previously observed insignificant symptoms will be escalating over time into serious signs of deadly plague (runtime issues, maintainability issues, you name it).
People, who are usually so proudly describing themselves as “Applied Mathematician” are almost surely building some type of time bombs with their scripts, because they (usually, but there are exceptions) have no interest on software design issues on any level."
I also have a zillion examples from my own past.
It's just another language.How about Julia, the future king of machine learning? I didn't see no one mention it.