Story / advice sought
I'm a PhD math/stat guy by training, I guess I'd say sheepishly that my "coding cred" was SAS, Fortran, C, and even one summer of poor judgment in grad school spent in the near-death DEC Alpha assembler (showing my age). Recently transitioned from academia and theory work to management in a data science division. Mostly people work, but I still crave the abstract problem and infinite timeframes that may fall into my lap.
That's a long setup, but explains my reactions. Recently, one of these did arrive, when we had an unusual request from a research programmer to provide code for an algorithm in .NET. I wondered why, didn't they have frameworks for this? It was a pretty simple alternating least squares algorithm, mostly used in optimization work. Not a standard setup by any means (that I know of?), but also not that complicated to program. He said he wanted to "do timings" and improve performance on large scale data. I am guessing that he was doing cross-validation of solutions, and using ALS as a front end for convergence. [1] We set it aside as a luxury request, because no one was interested, but having studied ALS in grad school, I found it curious enough to investigate....
... and holy Christ in a weather balloon, you people are mad. :) This must be the common reaction to .NET from someone bathing their entire lives in the waters of procedural languages. Dear god, the SuperLongObjectNamesToDoThings, the console(writeln(format(strings, the lack of procedures. Oh where are my precious procedures? The very structure of my world was crashing around me.
This is obviously meant in humor about the ignorance of OOP, not a criticism of it. I suspect that .NET is jumping into the deep end if I have no OOP training, because I can see myself looking at example code, and trying to organize it into sections that aren't really there. I'm also mainly used to cobbling things up in an editor. Visual Studio looks like an impressive piece of software, but would be like piloting an imperial star destroyer after a Cessna.
Can anyone recommend introductory OOP materials that are specifically good as a transition point into .NET, or .NET materials FROM a non-OOP background? Many online resources seem to presume an understanding just above my level, or at least are of indistinguishable in difficulty TO my level, which suggests the former. I'd like to treat this as an opportunity to learn something new while solving an enjoyable problem. Less of a "Complete History of OOP and .Net", and more of a "How a civilian can land a 747 with .Net in a week" sort of deal. :)
Also, most of my early searches pointed me toward C#. But I'm seeing references to F# being used in optimization coding, and that may be a good entry point for learning. Does C#/F# matter?
Thanks for any suggestions!
[1] I'm deliberately obfuscating the request slightly to protect some identities from searches. I'd be happy to share details to the curious via PM, but I'm not so much interested in an exact solution, as understanding the traffic rules on the road to the solution.
0 comments:
Post a Comment