July 9th, 2012, 12:33 pm
QuoteOriginally posted by: neuroguyQuoteOriginally posted by: exneratunriskneuroguy, interesting assessment.We are hybrid programmers, and this is what I though of Mathematica and Idealism vs Realism in Programming.From the beginning, we have implemented our pricing and calibration engines in C++. And we have integrated them into Mathematica enabling high level domain specific programming - instruments, models, methods (organized orthogonally) as foundations for building instrument and scenario groups, exploiting symbolic parallelism, driving CUDA over the grid, ... After 10 years experience we reinvent everything. Our core engines will be reimplemented in OpenCL and the domain-specific layer will become multi language. It will have representations in C++, Python and other general purpose languages, like, C#, Objective C, Java, .. and special purpose languages: Mathematica, MatLab .... We call this a reverse innovation - it was only possible because of the experiences with the Mathematica programming layer.What do you think (to me it sounds you have made a similar "Wittgenstein's Ladder" experience)?According to wikipedia, the statement in Tractatus Logico-Philosophicus that "Wittgensteins ladder" originates from is:"My propositions serve as elucidations in the following way: anyone who understands me eventually recognizes them as nonsensical, when he has used them - as steps - to climb beyond them. He must, so to speak, throw away the ladder after he has climbed up it."Which is a beautiful thing in its own right, but in the context of programming, I think it nicely encapsulates the ever present problem that there is no perfect programming language. One way around this is to build systems so that you can use different languages for different things. Coding extensions for MATLAB or Mathematica is a weak form of this. But if one is going to do this, it is not a big leap to discard MATLAB and mathematica completely and look to other high level languages to perform the same role. The advantage of this is that it provides flexibility. I probably have been through this process somewhat. I always used to be programing in one langauge at a time. I would find certain tasks easy, but others would either be obscured by the language or would become herculean to implement. As a result of working on neural simulators however I was exposed to the practice of everything having multiple interfaces. Hence there is usually more than one way (and language) to solve a given problem. This probably steepens the learning curve, but is certainly powerful. I guess with programming, once you discard the ladder, the actual language and platform becomes less important than the structure of the code you are able to write.Understand the essence of programming by programming? But still the paradigm seems to be important - in one paradigm, it does not seem to be difficult to generate interfaces from one to the other language...