|
Re: Michael Feathers on Patronizing Language Design
|
Posted: Jul 15, 2009 2:28 PM
|
|
> > I think Michael Feathers likes what he likes and holds > > things he doesn't like in contempt. I don't get his > > reasoning in some cases. > > I don't think I feel contempt about anything in > programming. I just don't think about things in those > terms. > > For what it's worth, I'm not a dynamic language zealot at > all. In fact, Haskell is my favorite language today and I > spend a lot of time in C++, Java, and C#. > > Re reflection, yes, it is true that there is a cost issue, > but Stroustrup was quite clear at one point that he was > scared that it would be misused. He did later reconsider > and accept RTTI. >
And I granted you that. But that's certainly not the only reason for treading lightly on reflection and the post linked to makes it sound like that is THE reason that it wasn't available at all in C++. There were several reasons and I don't think you can discount backward comparability with C and performance as legitimate reasons for leaving it out for a long time given C++'s design goals.
> > > That post/article really feels like it is nothing more > > than the general "the stuff I like rules, the stuff I > > don't like sucks" garbage you see regarding technology > > these days. I think the assumption that language design > > decisions to restrict things, make some things hard to > do, > > or not implement some feature results in "a decreased > > sense of responsibility and ownership" is fundamentally > > flawed. > > I don't think so. Have you hung around Ruby or Python > people much? Or go to their conferences? It's > noticeable. >
Probably not as much as you, but I've spent some time with people from both communities. I still think the assumption is flawed. It seems like a big leap to say that Ruby people feel more responsible or take greater ownership of their code simply because the language is more flexible. I know people that have worked in a very wide variety of languages for a wide variety of reasons. Sense of ownership, in my experience, is a character trait and a very human one. It has little to do with the language one is working in. Some of the people i know that take the greatest pride in their work and complete ownership of everything they do work in Visual Basic of all things. It's what pays the bills. At best there is a weak correlation between language choice and sense of ownership and responsibility and I would say so weak as to not be worth considering.
> > One can easily turn his argument on its head and ask if > > Ruby makes one's sense of responsibility and ownership > > decreased because of a lack of manual memory > management? > > After all, Yaz has decided I don't need to worry about > > taking care of myself regarding how I use it. Does > Rails > > cause this problem with web apps? Rails is pretty damn > > particular in what it expects. You try not following > the > > Rails naming conventions and MVC pattern and see how > far > > you get. I'm sure Mr. Feathers will argue that these > > things are tools to help you get your job done in some > way > > that is "better" than you could get it done without > them. > > If they were <insert language other than Ruby here> > > features they would prevent you from being responsible > and > > owning your work. > > You seem to assume an awful lot about me. >
All I'm saying here is that your observations about other languages and your stated comments about ownership can very easily apply to Ruby. Ruby and Rails make lots of assumptions and do some things that you characterized as "reducing responsibility and ownership" of people that program in other languages.
If my assumptions are wrong, how are the design decisions in Ruby and Rails not doing the same thing? Rails especially. It's notorious for being a bear to work with once you tread a bit outside of CRUD apps. I've had dyed in the wool Rails folks admit to this, so it's not just my personal experience or bias that I base this statement on.
> > If you look at the comments following the post, you'll > see > > he backs up on some of his points and questions things > he > > doesn't seem to really understand, like how could > pointers > > really be useful. > > > > "Laurent: I knew someone would bring up that point. > > Although, I thought their example would be pointers > rather > > than goto. Frankly, I think goto is okay to have in a > > language for the odd cases when you feel you have to > use > > it. Raw pointers in a managed memory language, on the > > other hand, are a harder issue. The question is really > > whether you can do anything useful with them." > > I think you misunderstood that. I was talking about raw > pointers (pointers which can point anywhere) in a managed > environment.
That I misunderstood. The statement could go either way, thanks for clearing that up. I've had a couple of times I've had to use raw pointers in C# from .NET, so I've personally found a use, in a couple of special cases, for pointers in a managed environment.
I'm more curious a bit about this observation now. Most of the people I know that do a lot of Ruby, Python, pick your not-so-mainstream-language, tend to work at smaller companies or they are trying very hard to do their own thing and want the tool that gives them the most leverage (I'm unashamedly borrowing from Paul Graham here). They wear lots of hats and at the end of the day, they can't turn around and blame anybody because if something isn't delivered, it isn't delivered. What kind of groups or organizations did you have in mind when making these observations? I'm wondering, simply if some of this feeling, and perhaps a great majority of the feeling, has more to do with the types of projects and the size of the organization than the specific language choice.
I ask this because currently i work for a small company that does all of its work using Microsoft technologies. The job I had before this one did almost all of its work using almost all of the same technologies. The company I work for now has 15 employees. The company I used to work for has about 40,000. In the company of 40,000 you can pass things up the chain, blame vendors, get your vice president to call the vice president of Vendor X to try and get things ironed out and spend a lot of time and money on this sort of thing. In fact, in some departments I worked in, it was encourage to do this sort of thing. After all, you got paid the same whether you produced or not. Why work when you could schedule yet another meeting? And this kind of mentality drove me completely nuts.
Now I actually get to get things done. Same tools, different people with a different mindset. Generally speaking, larger corps only use the big mainstream languages and I wonder if this is most of your experience with people using the other languages you question, then what affect is that having on your observations? You aren't going to find Ruby or Python in your average fortune 500 company. You'll find lots of .NET and Java and C++. You'll also find those languages and platforms in smaller companies as well, where people have to take responsibility for what they do and they have to own it or the whole organization dies.
I think if the communities and the people that used languages like python, haskell, schem, ruby, etc. were of the same size as those that use C++ or VB then they would probably revert to the mean and exhibit, on average, a much lower tendency to take ownership for what they do. I think people in general are just wired that way. A lot of them want to get into work, get their job done and go home. They work with the tools that the employer has and if they had to work in brianfuck they would do that, too, and you could say brainfuck developers lacked a sense of responsibility and ownership.
Anyway, I've rambled on long enough. Language X zealots being inherently more responsible, especially when Language X has a relatively small user base, simply because that's the language they use seems like a big leap. I simply think those developers would be that way regardless of the language or tool they use. It's who they are. If Ruby becomes mainstream 10 years from now somebody will be writing about how some not quite as popular language XYZ folks are better programmers and Ruby programmers on average don't take much responsibility for their work.
|
|