tag:blogger.com,1999:blog-14853042.post112949146271828687..comments2024-02-06T20:44:32.502+05:30Comments on One Man Hacking: And Miles To Go - Part OneRavihttp://www.blogger.com/profile/03630087669712445498noreply@blogger.comBlogger2125tag:blogger.com,1999:blog-14853042.post-1129503182848750372005-10-17T04:23:00.000+05:302005-10-17T04:23:00.000+05:30Teju,I (think I) agree with most of what you say.1...Teju,<BR/>I (think I) agree with most of what you say.<BR/><BR/>1."Math is just a domain" I don't know what you understood from this. But my view (now) is that Math is a kind of meta domain. It most certainly is not "another domain" in the TW sense (e.g. "Leasing is a domain which a developer does not need to know")<BR/><BR/>2.I never said one needs math for "enterprise" code. Where did that come from?<BR/><BR/>3."Computer Science is different from Mathematics". Well Yeah. I never said otherwise. Depending on how you define "COmp Sci" .Some branches of Math (think Discrete Math) are very closesly tied up with "COmp Sci". Calculus probably isn't. SInce I never said one was teh other, I don't see where this came from?<BR/><BR/>4."So, after figuring out the underlying equations and the training routine, you will have to code it up right? I mean, there are nodes and layers in the network, and each of them indeed have certain behaviors."<BR/><BR/>Not really. And this is what I was trying to say. I ended up "modelling" the network as a series of matrices and matrix operations (distributed on various machines etc).<BR/><BR/>The "object way" of having a class Network, class Layer etc is not the only way. And that was exactly the point - If you aren't aware of the math underlying what you are doing (assuming you are working in one of these "tough" fields") you might end up modelling the "wrong" concepts. The objection is not to using objects vs (say) structures and functions.<BR/><BR/> It is about the "enterprise" habit of modelling what you see on the surface *and assuming that is enough*.<BR/><BR/>Unless you know what the heck is happening (here, a topology function and Linear Equation solution) you end up modelling the "surface" of the problem.<BR/><BR/>In other words, what is "happening underneath" in much of AI work is mathematical.And you need to be able to perceive that.You can't without learning/grokking the math. End point. :-)<BR/><BR/>Again I am not very sure we really disagree. <BR/>?Ravihttps://www.blogger.com/profile/03630087669712445498noreply@blogger.comtag:blogger.com,1999:blog-14853042.post-1129501970556586592005-10-17T04:02:00.000+05:302005-10-17T04:02:00.000+05:30Great article by Graham. Thanks for the link. Cont...Great article by Graham. Thanks for the link. <BR/><BR/>Contrary to what I thought at first, I will have to stick with your developer friend at Thoughtworks: that Math is still a domain that needs to be mastered. It might give you metaphors to think in, but those metaphors won't help you write better enterprise code; they might help you write better neural networks maybe, or maybe even better weather forecasters. But for domains that don't need math, you just don't need math. I mean advanced math like Calculus, Topology, Probabilistic Analysis, etc. For someone who is building a UI, Calculus is really not needed. Now, whether knowing Calculus makes one a better thinker overall - thats a different question. <BR/><BR/>The main point I am trying to make here is that Comptuer Science is different from Mathematics. I will elaborate on that at an abstract level after commenting on something else you have written which I don't agree with.<BR/><BR/><I><BR/>a Neural Network is a set of Equations and every training scheme solves a problem in Topology. There is no way I could have come to that understanding without harnessing the underlying math.<BR/></I><BR/><BR/>So, after figuring out the underlying equations and the training routine, you will have to code it up right? I mean, there are nodes and layers in the network, and each of them indeed have certain behaviors. Whether you want to make the node or layer an object, or a training sequence an object, or anything else an object, is what your classic OO designing problem is. Maybe OO doesn't fit here. Maybe you just need simple data structures with C-like functions. The fact that you have to code it up eventually to make a working program should tell you that you have to design it in one of the programming paradigms, and the choice you make should tell you how good you are at your domain (the math underlying neural networks) and software design (knowing the pros and cons of various programming paradigms).<BR/><BR/>Comptuer Science borrows heavily from Math, but is not the same. I am not qualified enough to elaborate the differences, but a simple attempt would be to think of NP-completeness, Approximation Algorithms, Algorithms themselves, data-structures, layered-architectures, parallelization, etc. These concepts are very computer sciene. Their analysis requires Math. <BR/><BR/>I realize that I am totally lost now. Writing is no easy business anyway. But here is my last ditch attempt at an overall point.<BR/><BR/>You had written earlier that you wanted to write "cooler" software, like the ones that drive robots, predict weather, or something on those lines. I think anything that is "fundamental" in nature, and involves some degree of sophistication, will need math. <BR/><BR/>Sorry about this. Maybe I will think it through and write it on my own blog. Great food for thought though.Tejaswihttps://www.blogger.com/profile/12566170957042360561noreply@blogger.com