This whole exchange about Gofer has been interesting. I don't just think
it's a random bump between two programmers. I think it's about two programmers who have different attitudes towards design. Do you build a tool for a specific purpose and no more? Or do you build it with the potential to be readily adapted to a future purpose? I believe Dale when he says that if you don't build all this Lukas-esque redundancy that a design is hard to modify. That you'd get locked up in the methods, when you want the flexibility of a design with lots of classes. But remember - Dale didn't design Gofer. He adapted it. Would he have built it with the academic rigor that is clearly Lukas's metier? Would his boss stand for that kind of fiddling? I'm willing to bet Dale benefits from this design attitude, but that he wouldn't do it himself from scratch. If people want to look for a difference between Squeak and Pharo, I think this is emerging as a possible difference. Neither is right or wrong. If you need a tool for a specific purpose and you're skilled -- you can build one in half an hour from scratch. Do you want to take five times that long to build something with more classes, so you can save time in the future by having to do less in the future? Neither is right, but I have sympathy for people who have strong feelings one way or another. For me Seaside suffers from an explosion of classes that I've begun to loathe. I don't want a framework that can be adapted to anything. I want one that does one specific thing. That's all. And Pier, as far as I can tell, does nothing. Zero. Some people will baulk at that statement. And I'm sure that if I understood it better, I'd see that Pier can do anything. And I'd only have to make a small series of adjustments to harness real power. I don't want that, though. I don't want to have to guess what the code is supposed to be for. When I read strange code I want to have it tell me in bold terms what its clear, stark intent is. I want it to be as blunt as I am. I want the code to scream at me: "This is what I do!" (Actually, I like code that says things like: "This is what I do, and if you don't like it, then you can...") And now that we've learned this interesting lesson, let's now resume detente, Perestroika, Entspannung, whatever. Chris |
Hi Chris,
There is also something to be said about simplicity. It makes sense to put the time into extensibility when you find you need to extend something. Before that point it can do more to obscure the code. If something becomes overly complex or opaque then the design might support expansion but people may opt for simplifying the design to make it easier to understand where they actually extended the code. Ron Teitelbaum > -----Original Message----- > From: [hidden email] [mailto:squeak- > [hidden email]] On Behalf Of Chris Cunnington > Sent: Thursday, December 16, 2010 11:42 PM > To: [hidden email] > Subject: [squeak-dev] Design Attitudes > > This whole exchange about Gofer has been interesting. I don't just think it's a > random bump between two programmers. I think it's about two > programmers who have different attitudes towards design. Do you build a > tool for a specific purpose and no more? Or do you build it with the potential > to be readily adapted to a future purpose? > > I believe Dale when he says that if you don't build all this Lukas-esque > redundancy that a design is hard to modify. That you'd get locked up in the > methods, when you want the flexibility of a design with lots of classes. But > remember - Dale didn't design Gofer. He adapted it. Would he have built it > with the academic rigor that is clearly Lukas's metier? > Would his boss stand for that kind of fiddling? I'm willing to bet Dale benefits > from this design attitude, but that he wouldn't do it himself from scratch. > > If people want to look for a difference between Squeak and Pharo, I think > this is emerging as a possible difference. Neither is right or wrong. If you > need a tool for a specific purpose and you're skilled -- you can build one in > half an hour from scratch. Do you want to take five times that long to build > something with more classes, so you can save time in the future by having to > do less in the future? > > Neither is right, but I have sympathy for people who have strong feelings > one way or another. For me Seaside suffers from an explosion of classes that > I've begun to loathe. I don't want a framework that can be adapted to > anything. I want one that does one specific thing. That's all. And Pier, as far as > I can tell, does nothing. Zero. > > Some people will baulk at that statement. And I'm sure that if I understood it > better, I'd see that Pier can do anything. And I'd only have to make a small > series of adjustments to harness real power. I don't want that, though. I > don't want to have to guess what the code is supposed to be for. > > When I read strange code I want to have it tell me in bold terms what its > clear, stark intent is. I want it to be as blunt as I am. I want the code to scream > at me: "This is what I do!" (Actually, I like code that says things like: "This is > what I do, and if you don't like it, then you > can...") > > And now that we've learned this interesting lesson, let's now resume > detente, Perestroika, Entspannung, whatever. > > Chris |
On 12/17/2010 9:36 AM, Ron Teitelbaum wrote:
> -----Original Message----- > From: [hidden email] [mailto:squeak- > [hidden email]] On Behalf Of Chris Cunnington > Sent: Thursday, December 16, 2010 11:42 PM > To: [hidden email] > Subject: [squeak-dev] Design Attitudes [snip] > Hi Chris, > > There is also something to be said about simplicity. It makes sense to put > the time into extensibility when you find you need to extend something. > Before that point it can do more to obscure the code. If something becomes > overly complex or opaque then the design might support expansion but people > may opt for simplifying the design to make it easier to understand where > they actually extended the code. > > Ron Teitelbaum YAGNI You aren't (ain't) gonna need it. http://en.wikipedia.org/wiki/You_ain%27t_gonna_need_it I find myself regularly wanting to do things in a manner which is more complex than necessary. When I do so I give myself 30 lashes with YAGNI. :) And then go back and refactor. Jimmie |
In reply to this post by Ron Teitelbaum
Ron Teitelbaum wrote:
> Hi Chris, > > There is also something to be said about simplicity. It makes sense to put > the time into extensibility when you find you need to extend something. > Before that point it can do more to obscure the code. If something becomes > overly complex or opaque then the design might support expansion but people > may opt for simplifying the design to make it easier to understand where > they actually extended the code. > > Ron Teitelbaum > > Exactly! Squeak suffers badly from this problem. Check Cuis: http://www.jvuletich.org/Cuis/Index.html . Cheers, Juan Vuletich |
In reply to this post by Chris Cunnington
Chris,
You make some very good points ... Though, if you look at the number of classes that I've used in Metacello, you might change your tune about how many classes would be in my gofer implementation:) I like to say that "there is more than one way to skin a cat, but in the end the cat is skinned". So I hate to be critical of _how_ someone decides to skin the cat, when they are the one doing the work and _maintaining_ the project. This discussion reminds me that in the late 80's and early 90's there was a bit of a trend where people were using Smalltalk to explore a problem space and evolve a design to the point where someone else could come in and implement the final solution in C. Once you've discovered the key to a good API there are any number of ways to implement that API ... However, when you are in the process of searching for a good API and understanding the problem space treating classes as if they are free is a good way to give your implementation the room to grow in the directions that it needs to to find that sweet spot and there's nothing like Smalltalk for this work. Once you've understood the problem the question then becomes "now that I know the solution, how would I implement it?" versus "now that I have a solution that is functional, is my time better spent doing something else?" I'm not saying that this what Lukas is/was thinking, but it works for me. Monticello was badly in need of both a scripting API _and_ and programming API (which is how Metacello uses Gofer) and Gofer filled both of those requirements, so as far as I'm concerned the "cat got skinned". The appeal of Smalltalk to me is that it is feasible to evolve systems using Smalltalk. As a software system evolves the assumptions that were made early on are no longer valid, so the challenge always seems to become "how do I add new functionality (and rewrite large chunks of the system) while maintaining fidelity to the original API"... Of course, there are multiple answers to that question:) Dale On 12/16/2010 08:41 PM, Chris Cunnington wrote: > This whole exchange about Gofer has been interesting. I don't just think > it's a random bump between two programmers. I think it's about two > programmers who have different attitudes towards design. Do you build a > tool for a specific purpose and no more? Or do you build it with the > potential to be readily adapted to a future purpose? > > I believe Dale when he says that if you don't build all this Lukas-esque > redundancy that a design is hard to modify. That you'd get locked up in > the methods, when you want the flexibility of a design with lots of > classes. But remember - Dale didn't design Gofer. He adapted it. Would > he have built it with the academic rigor that is clearly Lukas's metier? > Would his boss stand for that kind of fiddling? I'm willing to bet Dale > benefits from this design attitude, but that he wouldn't do it himself > from scratch. > > If people want to look for a difference between Squeak and Pharo, I > think this is emerging as a possible difference. Neither is right or > wrong. If you need a tool for a specific purpose and you're skilled -- > you can build one in half an hour from scratch. Do you want to take five > times that long to build something with more classes, so you can save > time in the future by having to do less in the future? > > Neither is right, but I have sympathy for people who have strong > feelings one way or another. For me Seaside suffers from an explosion of > classes that I've begun to loathe. I don't want a framework that can be > adapted to anything. I want one that does one specific thing. That's > all. And Pier, as far as I can tell, does nothing. Zero. > > Some people will baulk at that statement. And I'm sure that if I > understood it better, I'd see that Pier can do anything. And I'd only > have to make a small series of adjustments to harness real power. I > don't want that, though. I don't want to have to guess what the code is > supposed to be for. > > When I read strange code I want to have it tell me in bold terms what > its clear, stark intent is. I want it to be as blunt as I am. I want the > code to scream at me: "This is what I do!" (Actually, I like code that > says things like: "This is what I do, and if you don't like it, then you > can...") > > And now that we've learned this interesting lesson, let's now resume > detente, Perestroika, Entspannung, whatever. > > Chris > |
In reply to this post by Chris Cunnington
> If people want to look for a difference between Squeak and Pharo, I think
> this is emerging as a possible difference. Neither is right or wrong. If you Yes, this is the philosophical difference between Squeak and Pharo. Bill wrote: > There is also something to be said about simplicity. It makes sense to put > the time into extensibility when you find you need to extend something. Yes, that's true. It's also good to remember that these are modifiable systems, not Java. In Java, you *need* "ultimate frameworks" for even simple things so you can extend-without-modifying, since modifying the base code is not allowed. In the case of Squeak, it *is* the framework; a framework of being a complete, modifiable computing system (Pharo has the same capability, but I'm referring to philosophy). In a modifiable system TSTTCPW and YAGNI *can* be employed until the last possible moment; when the code no longer meets requirements and must be upgraded, but doing so is too difficult. A Squeak-developer's philosophy is, "I have very important things to work on and limited time. Although this code is ugly, it's still WORKING FOR ME, therefore I don't want to turn around and WORK FOR IT at this time." IOW, lazy, JIT upgrading rather than eager upgrading. --------------- I hope we can keep our rhetoric constructive and turn this distinction between our two camps into a strength instead of a brawl. I think Squeak could benefit from adopting Lukas' (and others') great work. No one has yet commented about my suggestion. Let me say it one more time: Strip Installer of functions redundant with Gofer so it's smaller, employ Gofer for those functions. We end up with not many more LOC than we need. Everyone can be happy about having minimal amount of code in our images...??? - Chris |
In reply to this post by Dale Henrichs
You must really hate cats... :)
On Fri, Dec 17, 2010 at 12:01 PM, Dale Henrichs <[hidden email]> wrote: > Chris, > > You make some very good points ... > > Though, if you look at the number of classes that I've used in Metacello, > you might change your tune about how many classes would be in my gofer > implementation:) > > I like to say that "there is more than one way to skin a cat, but in the end > the cat is skinned". So I hate to be critical of _how_ someone decides to > skin the cat, when they are the one doing the work and _maintaining_ the > project. > > This discussion reminds me that in the late 80's and early 90's there was a > bit of a trend where people were using Smalltalk to explore a problem space > and evolve a design to the point where someone else could come in and > implement the final solution in C. > > Once you've discovered the key to a good API there are any number of ways to > implement that API ... However, when you are in the process of searching for > a good API and understanding the problem space treating classes as if they > are free is a good way to give your implementation the room to grow in the > directions that it needs to to find that sweet spot and there's nothing like > Smalltalk for this work. > > Once you've understood the problem the question then becomes "now that I > know the solution, how would I implement it?" versus "now that I have a > solution that is functional, is my time better spent doing something else?" > > I'm not saying that this what Lukas is/was thinking, but it works for me. > Monticello was badly in need of both a scripting API _and_ and programming > API (which is how Metacello uses Gofer) and Gofer filled both of those > requirements, so as far as I'm concerned the "cat got skinned". > > The appeal of Smalltalk to me is that it is feasible to evolve systems using > Smalltalk. As a software system evolves the assumptions that were made early > on are no longer valid, so the challenge always seems to become "how do I > add new functionality (and rewrite large chunks of the system) while > maintaining fidelity to the original API"... > > Of course, there are multiple answers to that question:) > > Dale > > On 12/16/2010 08:41 PM, Chris Cunnington wrote: >> >> This whole exchange about Gofer has been interesting. I don't just think >> it's a random bump between two programmers. I think it's about two >> programmers who have different attitudes towards design. Do you build a >> tool for a specific purpose and no more? Or do you build it with the >> potential to be readily adapted to a future purpose? >> >> I believe Dale when he says that if you don't build all this Lukas-esque >> redundancy that a design is hard to modify. That you'd get locked up in >> the methods, when you want the flexibility of a design with lots of >> classes. But remember - Dale didn't design Gofer. He adapted it. Would >> he have built it with the academic rigor that is clearly Lukas's metier? >> Would his boss stand for that kind of fiddling? I'm willing to bet Dale >> benefits from this design attitude, but that he wouldn't do it himself >> from scratch. >> >> If people want to look for a difference between Squeak and Pharo, I >> think this is emerging as a possible difference. Neither is right or >> wrong. If you need a tool for a specific purpose and you're skilled -- >> you can build one in half an hour from scratch. Do you want to take five >> times that long to build something with more classes, so you can save >> time in the future by having to do less in the future? >> >> Neither is right, but I have sympathy for people who have strong >> feelings one way or another. For me Seaside suffers from an explosion of >> classes that I've begun to loathe. I don't want a framework that can be >> adapted to anything. I want one that does one specific thing. That's >> all. And Pier, as far as I can tell, does nothing. Zero. >> >> Some people will baulk at that statement. And I'm sure that if I >> understood it better, I'd see that Pier can do anything. And I'd only >> have to make a small series of adjustments to harness real power. I >> don't want that, though. I don't want to have to guess what the code is >> supposed to be for. >> >> When I read strange code I want to have it tell me in bold terms what >> its clear, stark intent is. I want it to be as blunt as I am. I want the >> code to scream at me: "This is what I do!" (Actually, I like code that >> says things like: "This is what I do, and if you don't like it, then you >> can...") >> >> And now that we've learned this interesting lesson, let's now resume >> detente, Perestroika, Entspannung, whatever. >> >> Chris >> > > > |
On 12/17/2010 10:06 AM, Chris Muller wrote:
> You must really hate cats... :) > Haha! Considering that I own 4 dogs .... yes I do hate cats:0 Dale |
Em 17-12-2010 16:10, Dale Henrichs escreveu:
> On 12/17/2010 10:06 AM, Chris Muller wrote: >> You must really hate cats... :) >> > > Haha! Considering that I own 4 dogs .... yes I do hate cats:0 > > Dale > > Last cat ate gold fish & was eaten by lab... Love the lab... LMAO. CdAB |
Free forum by Nabble | Edit this page |