Hi Grant - <br><br>Thanks.&nbsp; As you said, choosing the best abstraction for the job and that OOP is best today because it&#39;s most familiar - we are in agreement here.&nbsp; My question for asking these questions isn&#39;t to debate that point, but rather to educate myself on another paradigm (
i.e. FP), so I can intelligently choose the best abstractions - otherwise the best abstraction (i.e. OOP most of the time) is best only because it&#39;s most familiar. <br><br>Thanks,<br>yinso <br><br><div><span class="gmail_quote">



On 5/15/07, <b class="gmail_sendername">Grant Rettke</b> &lt;<a href="mailto:grettke@acm.org" target="_blank" onclick="return top.js.OpenExtLink(window,event,this)">grettke@acm.org</a>&gt; wrote:</span><blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;">



On 5/15/07, YC &lt;<a href="mailto:yinso.chen@gmail.com" target="_blank" onclick="return top.js.OpenExtLink(window,event,this)">yinso.chen@gmail.com</a>&gt; wrote:<br>&gt; Hi Grant -<br>&gt;<br>&gt; I am definitely interested in both as you described, but this is definitely
<br>&gt; about a question about design and changing of programming paradigm.
<br><br>The question is &quot;What is the best abstraction by which we may<br>represent both our problem and the solution to our problem?&quot;<br><br>&gt; Enterprise project is about moving data around, and you are right, at the
<br>&gt; end of the day it&#39;s not rocket science.&nbsp;&nbsp;But maybe because it&#39;s not rocket<br>&gt; science, it is just so much easier to conceive them as objects and classes,<br>&gt; along with dealing with data input, validation, persistence, and query.
<br>&gt; Boring, but works.<br><br>Is it easier or is it familiar? Remember that C was used for<br>enterprise projects for a long time and was considered to be &quot;normal&quot;.<br>Show one of those projects to todays enterprise programmers and
<br>they&#39;ll pass out. Collectively the industry has said that for %80 of<br>the work, OO is the abstraction we will use not matter if the solution<br>is a good fit or not. Luckily, it is a great fit more than %80 of the
<br>time when it comes to enterprise projects.<br><br>&gt; The complexity in enterprise projects come from the numerous object&#39;s<br>&gt; interdependencies and specializations, i.e. each object is just different<br>&gt; enough from another object that it requires additional code.&nbsp;&nbsp;Hence OOP&#39;s
<br>&gt; ability to couple data with behavior helps with code organization.<br><br>OO is a good way to abstract the solution, but I&#39;ve worked on plenty<br>of (small&nbsp;&nbsp;by many folks standards, 5-10 developers) projects that had
<br>200+ classes.<br><br>I don&#39;t know much about FP, but I do know that Scheme is all about<br>empowering the developer to choose the right abstraction. That is the<br>important thing whatever language you use, choose the right
<br>abstraction and your problem will be easier to solve.<br><br>For the project on which I am working, we are using Java, and there<br>are still plenty of abstractions from which to choose for the UI,<br>persistence, and data representation, to start with. It is all OO
<br>work, and it is a good fit. While there are definitely places where FP<br>could be an interesting fit, they fall into the area where %20 of the<br>work falls. They wouldn&#39;t be a good investment.<br></blockquote></div>



<br>